@camstack/system 1.2.452 → 1.2.453

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 (82) hide show
  1. package/dist/{agent-https-CMz4S56_.js → agent-https-DL2cFOQv.js} +2 -2
  2. package/dist/{agent-https-D6lRxHma.mjs → agent-https-XAZFJjOS.mjs} +2 -2
  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 +2 -2
  8. package/dist/builtins/alerts/alerts.addon.mjs +2 -2
  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 +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +2 -2
  18. package/dist/builtins/composer/composer.addon.mjs +2 -2
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-history/device-history.addon.js +1 -1
  24. package/dist/builtins/device-history/device-history.addon.mjs +1 -1
  25. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/keychain/index.js +4 -4
  30. package/dist/builtins/keychain/index.mjs +4 -4
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  33. package/dist/builtins/local-auth/local-auth.addon.js +3 -3
  34. package/dist/builtins/local-auth/local-auth.addon.mjs +3 -3
  35. package/dist/builtins/local-network/local-network.addon.js +2 -2
  36. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  37. package/dist/builtins/loki-logging/index.js +1 -1
  38. package/dist/builtins/loki-logging/index.mjs +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.js +15 -2
  40. package/dist/builtins/native-metrics/native-metrics.addon.mjs +15 -2
  41. package/dist/builtins/platform-probe/index.js +1 -1
  42. package/dist/builtins/platform-probe/index.mjs +1 -1
  43. package/dist/builtins/record-entries/index.js +1 -1
  44. package/dist/builtins/record-entries/index.mjs +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  46. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/snapshot/index.js +1 -1
  48. package/dist/builtins/snapshot/index.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  50. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/index.js +1 -1
  52. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  54. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  55. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  56. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  57. package/dist/builtins/system-config/system-config.addon.js +3 -3
  58. package/dist/builtins/system-config/system-config.addon.mjs +3 -3
  59. package/dist/builtins/winston-logging/index.js +1 -1
  60. package/dist/builtins/winston-logging/index.mjs +1 -1
  61. package/dist/{composition-sources-BQmhc3se.js → composition-sources-DwEvAg5Z.js} +1 -1
  62. package/dist/{composition-sources-DzuruDVY.mjs → composition-sources-jYNpYEhS.mjs} +1 -1
  63. package/dist/{constants-BPWA-r-Y.js → constants-B3fDUnJt.js} +1 -1
  64. package/dist/{constants-gzGZbnwO.mjs → constants-DGBB3tNi.mjs} +1 -1
  65. package/dist/{device-ca-D05nqNXE.mjs → device-ca-Dpkxg7px.mjs} +1 -1
  66. package/dist/{device-ca-75rt3U_U.js → device-ca-njpTMpJC.js} +1 -1
  67. package/dist/{dist-DV2ll9Hi.mjs → dist-B9C2v4SG.mjs} +89 -4
  68. package/dist/{dist-Ct88catN.js → dist-DyjNaeIj.js} +89 -4
  69. package/dist/file-host-worker.js +1 -1
  70. package/dist/file-host-worker.mjs +1 -1
  71. package/dist/{hub-mdns-ciao-BPOg2iyc.mjs → hub-mdns-ciao-B4wHDMvk.mjs} +2 -2
  72. package/dist/{hub-mdns-ciao-DAU1WttG.js → hub-mdns-ciao-DpdFaLz-.js} +2 -2
  73. package/dist/index.js +17 -9
  74. package/dist/index.mjs +17 -9
  75. package/dist/kernel/cap-router-builder.d.ts +9 -0
  76. package/dist/{phase6-declare-gate-C6WqagkC.js → phase6-declare-gate-BlTDMI3t.js} +1 -1
  77. package/dist/{phase6-declare-gate-BJplW6tX.mjs → phase6-declare-gate-CNxKbsvm.mjs} +1 -1
  78. package/dist/{restore-archive-Cprdh3P9.js → restore-archive-BeGP9IYs.js} +1 -1
  79. package/dist/{restore-archive-Jiz63mVB.mjs → restore-archive-D7HwsszI.mjs} +1 -1
  80. package/dist/{wal-maintenance-BNIaf3QP.mjs → wal-maintenance-HEmw2Fik.mjs} +0 -0
  81. package/dist/{wal-maintenance-BspX29jz.js → wal-maintenance-i3GRvmQW.js} +0 -0
  82. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { i as __require } from "./chunk-CNf5ZN-e.mjs";
2
- import { Dn as looseSchema, En as logLevelAtMost, Fi as expandCapMethods, G as METHOD_ACCESS_MAP, Gr as DATAPLANE_SECRET_HEADER$1, Hn as procedureAuthKey, In as objectInputDeclaresAddonId, Kr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Ln as objectInputDeclaresRequiredDeviceId, Mi as defineRecordKinds, Ni as emitDownForOwnedCaps, Oi as createEvent$1, Sn as lifecycleJobSchema, U as LOG_LEVEL_RANK, Vr as errMsg$1, Wr as CALLER_STAMPED_CAPABILITIES$1, Xi as parseJsonObject, Zi as parseJsonUnknown, _ as CatalogFileSchema, _n as kebabToCamel$1, aa as scopeKey, bi as asNumber, ci as ReadinessRegistry, d as CATALOG_LANGS, dn as isArrayOutputSchema, dt as addonSettingsCapability, er as resolveMethodAuth, fa as userError, fn as isCollectionArrayMethod, gn as isVoidInput, hn as isObjectInput, ir as scopesAllowDeviceCap, li as ReadinessTimeoutError, ln as interpolate, ma as EventCategory$1, n as AGENT_MDNS_TXT_KEYS, pa as withoutCallerStamp, qr as DEVICE_STATUS_METHOD, r as ALL_CAPABILITY_DEFINITIONS, ra as resolveCapMount, rn as extractNestedAddonId, rr as scopesAllowAddon, si as RUNTIME_DEFAULTS, t as AGENT_MDNS_SERVICE_TYPE, ta as readinessKey, ur as splitTranslationRef, vr as supportedRuntimes, xi as asString$1, yi as asJsonObject$1 } from "./dist-DV2ll9Hi.mjs";
2
+ import { Dn as looseSchema, En as logLevelAtMost, Fi as expandCapMethods, G as METHOD_ACCESS_MAP, Gr as DATAPLANE_SECRET_HEADER$1, Hn as procedureAuthKey, In as objectInputDeclaresAddonId, Kr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Ln as objectInputDeclaresRequiredDeviceId, Mi as defineRecordKinds, Ni as emitDownForOwnedCaps, Oi as createEvent$1, Sn as lifecycleJobSchema, U as LOG_LEVEL_RANK, Vr as errMsg$1, Wr as CALLER_STAMPED_CAPABILITIES$1, Xi as parseJsonObject, Zi as parseJsonUnknown, _ as CatalogFileSchema, _n as kebabToCamel$1, aa as scopeKey, bi as asNumber, ci as ReadinessRegistry, d as CATALOG_LANGS, dn as isArrayOutputSchema, dt as addonSettingsCapability, er as resolveMethodAuth, fa as userError, fn as isCollectionArrayMethod, gn as isVoidInput, hn as isObjectInput, ir as scopesAllowDeviceCap, li as ReadinessTimeoutError, ln as interpolate, ma as EventCategory$1, n as AGENT_MDNS_TXT_KEYS, pa as withoutCallerStamp, qr as DEVICE_STATUS_METHOD, r as ALL_CAPABILITY_DEFINITIONS, ra as resolveCapMount, rn as extractNestedAddonId, rr as scopesAllowAddon, si as RUNTIME_DEFAULTS, t as AGENT_MDNS_SERVICE_TYPE, ta as readinessKey, ur as splitTranslationRef, vr as supportedRuntimes, xi as asString$1, yi as asJsonObject$1 } from "./dist-B9C2v4SG.mjs";
3
3
  import { t as require_read_all_rows } from "./read-all-rows-TaPqdWNF.mjs";
4
- import { d as JWT_SIGNING_KEY_REF, f as JwtSigningKeyUnavailableError, g as processJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, p as SYSTEM_SECRET_OWNER, s as loadDeviceCa, u as verifyDeviceSignature, v as staticJwtSigningKey } from "./device-ca-D05nqNXE.mjs";
4
+ import { d as JWT_SIGNING_KEY_REF, f as JwtSigningKeyUnavailableError, g as processJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, p as SYSTEM_SECRET_OWNER, s as loadDeviceCa, u as verifyDeviceSignature, v as staticJwtSigningKey } from "./device-ca-Dpkxg7px.mjs";
5
5
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
6
6
  import "./builtins/alerts/index.mjs";
7
7
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -26,21 +26,21 @@ import { LokiDestination, LokiLoggingAddon } from "./builtins/loki-logging/index
26
26
  import NativeMetricsAddon, { a as NativeMetricsProvider, n as nodeProcReader, r as parseProcStat } from "./builtins/native-metrics/native-metrics.addon.mjs";
27
27
  import { DeviceHistoryAddon } from "./builtins/device-history/device-history.addon.mjs";
28
28
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
29
- import { l as SqliteSettingsBackend } from "./wal-maintenance-BNIaf3QP.mjs";
29
+ import { l as SqliteSettingsBackend } from "./wal-maintenance-HEmw2Fik.mjs";
30
30
  import { SqliteSettingsAddon } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
31
31
  import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
32
32
  import { StorageOrchestratorAddon, a as stripForwardedCaller, i as createHubCapForwardService, l as STORAGE_DRAIN_STATE_LEGACY, n as HUB_CAP_FWD_ACTION, o as buildStorageLocationRegistry, r as HUB_CAP_FWD_SERVICE, t as StorageOrchestratorService, u as storageOrchestratorRecordKinds } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
33
33
  import "./builtins/storage-orchestrator/index.mjs";
34
- import { a as MESH_CA_KEY_REF, i as MESH_CA_FIELD, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY } from "./constants-gzGZbnwO.mjs";
35
- import { $ as generateMeshKeyPair, A as isConstrainedCa, C as MAX_LEAF_VALIDITY_DAYS, D as PERMITTED_DNS_SUFFIXES, F as AGENT_HTTPS_NAMES_COLLECTION, G as describeMeshLeaf, H as MESH_NODE_CERTIFICATES_COLUMNS, I as AGENT_HTTPS_NAMES_COLUMNS, J as caFingerprint, K as getProcessMeshCertificateRegistry, L as AgentHttpsNames, M as permitsIdentity, N as permitsName, O as PERMITTED_IP_RANGES, P as readNameConstraints, Q as generateMeshCa, R as getProcessAgentHttpsNames, S as LEAF_RENEWAL_WINDOW_DAYS, T as evaluateExistingCert, U as MeshCertificateRegistry, V as MESH_NODE_CERTIFICATES_COLLECTION, W as RENEWAL_ABANDONED, X as createMeshCsrPem, Y as caFingerprintCompact, Z as exportMeshPrivateKeyPem, a as collectAgentNames, b as systemHostFacts, c as installAgentHttps, d as issueAgentHttpsLeaf, et as isValidAgentNodeId, f as loadAgentHttps, h as CA_COMMON_NAME, i as certificateNames, j as isLocalOnlyHostname, k as buildNameConstraintSet, l as isContainerBridgeAddress, m as pinnedHttpsCaFingerprint, n as acceptAgentSans, nt as issueMeshLeafFromCsr, o as createAgentHttpsRequest, p as pemDigest, q as setProcessMeshCertificateRegistry, r as agentHttpsPaths, rt as loadMeshCa, s as describeHttpsLeaf, t as AgentHttpsInstallError, tt as issueMeshLeafForNode, u as isPrivateAddress, w as SERVER_AUTH_OID, x as CA_VALIDITY_DAYS, y as collectCertIdentity, z as setProcessAgentHttpsNames } from "./agent-https-D6lRxHma.mjs";
34
+ import { a as MESH_CA_KEY_REF, i as MESH_CA_FIELD, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY } from "./constants-DGBB3tNi.mjs";
35
+ import { $ as generateMeshKeyPair, A as isConstrainedCa, C as MAX_LEAF_VALIDITY_DAYS, D as PERMITTED_DNS_SUFFIXES, F as AGENT_HTTPS_NAMES_COLLECTION, G as describeMeshLeaf, H as MESH_NODE_CERTIFICATES_COLUMNS, I as AGENT_HTTPS_NAMES_COLUMNS, J as caFingerprint, K as getProcessMeshCertificateRegistry, L as AgentHttpsNames, M as permitsIdentity, N as permitsName, O as PERMITTED_IP_RANGES, P as readNameConstraints, Q as generateMeshCa, R as getProcessAgentHttpsNames, S as LEAF_RENEWAL_WINDOW_DAYS, T as evaluateExistingCert, U as MeshCertificateRegistry, V as MESH_NODE_CERTIFICATES_COLLECTION, W as RENEWAL_ABANDONED, X as createMeshCsrPem, Y as caFingerprintCompact, Z as exportMeshPrivateKeyPem, a as collectAgentNames, b as systemHostFacts, c as installAgentHttps, d as issueAgentHttpsLeaf, et as isValidAgentNodeId, f as loadAgentHttps, h as CA_COMMON_NAME, i as certificateNames, j as isLocalOnlyHostname, k as buildNameConstraintSet, l as isContainerBridgeAddress, m as pinnedHttpsCaFingerprint, n as acceptAgentSans, nt as issueMeshLeafFromCsr, o as createAgentHttpsRequest, p as pemDigest, q as setProcessMeshCertificateRegistry, r as agentHttpsPaths, rt as loadMeshCa, s as describeHttpsLeaf, t as AgentHttpsInstallError, tt as issueMeshLeafForNode, u as isPrivateAddress, w as SERVER_AUTH_OID, x as CA_VALIDITY_DAYS, y as collectCertIdentity, z as setProcessAgentHttpsNames } from "./agent-https-XAZFJjOS.mjs";
36
36
  import { $ as parseCidrList, A as setProcessMeshPeerTransportLookup, B as requireProcessMeshCa, C as setProcessMeshTlsEnabler, D as getProcessPeerLeaf, E as getProcessNodeMeshTransport, F as setProcessMeshTlsListenerState, G as AGENT_UI_UNLOCK_VERSION, H as AGENT_UI_UNLOCK_TTL_MS, I as MeshCrl, J as mintAgentUiUnlockTicket, K as UnlockTicketJtiStore, L as processMeshCrl, M as revokeMeshCertificate, N as getProcessMeshTlsListenerState, O as isProcessVerifiedMeshPeer, P as openMeshTlsWhenRevocationsLoaded, Q as normalizeIp, R as MeshCaKeeper, S as ServiceBroker, SystemConfigAddon, T as emitProcessNodeRegistered, U as AGENT_UI_UNLOCK_TYP, V as AGENT_DASHBOARD_ORIGINS_FIELD, W as AGENT_UI_UNLOCK_USE, X as verifyAgentUiUnlockTicket, Y as parseAgentDashboardOrigins, Z as createCidrMatcher, _ as signPairingProof, a as hubHostFromMeshAddress, b as TlsTcpTransporter, c as PAIRING_MAX_SESSIONS, d as PAIRING_PROTOCOL, et as readCidrSetting, f as PAIRING_TTL_MS, g as keyFingerprintShort, h as describeCsr, i as AgentPairing, j as renewMeshCertificate, k as onProcessNodeRegistered, l as PAIRING_PATHS, m as computePairingSas, n as HubPairing, o as PAIRING_CODE_DIGITS, p as computePairingCommitment, q as isAllowedAgentDashboardReturnTo, r as PairingHttpError, s as PAIRING_MAX_CODE_ATTEMPTS, u as PAIRING_PIN_DIGITS, v as verifyPairingProof, w as dropProcessPeer, x as Errors, y as MESH_TLS_PORT_HELLO_FIELD, z as getProcessMeshCaState } from "./builtins/system-config/system-config.addon.mjs";
37
37
  import "./builtins/system-config/index.mjs";
38
38
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
39
39
  import { C as isModelDownloaded, T as revisionWeightUrl, _ as downloadFile, a as startEventLoopStallMonitor, b as fetchJson, c as createAuthenticatedFileServer, d as resolveFilePath, f as ModelDownloadService, g as deleteModelFromDisk, h as collectModelFiles, i as attributeStall, l as parseRangeHeader, m as adoptModelRevisions, n as STALL_REPORT_MS, o as createFileDataPlaneHandler, r as STALL_TICK_MS, s as contentTypeFor, t as CustomActionRegistry, u as parseTokenizedUrl, v as downloadModel, w as resolveFormatRevision, x as getModelFilePath, y as ensureModel } from "./custom-action-registry-stpC3Zy-.mjs";
40
- import { A as allFamiliesListenHost, C as caReplacementMarkerFile, D as replaceUnconstrainedLocalCa, E as reissueTlsLeaf, F as registerLanHttpHandler, M as bindPendingLanHttp, N as closeLanHttp, O as retirePreviousLocalCa, P as readLanHttpState, S as validateUploadedTls, T as loadTlsCert, _ as splitPemCertificates, a as storeUploadedCertificate, b as chainsToPublicRoot, c as leafFingerprintOf, d as servedHttpsLeafFingerprint, f as prepareBootTls, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, l as registerHttpsListener, m as readExtraSans, n as applyCertificateToListener, o as useStoredUploadedCertificate, p as UPLOADED_CA_FILE, r as regenerateCertificate, s as clearHttpsListener, t as createCiaoPublisher, u as reloadHttpsListener, v as writeExtraSans, w as ensureTlsCert, x as checkUploadedCa, y as writeTlsMode } from "./hub-mdns-ciao-BPOg2iyc.mjs";
40
+ import { A as allFamiliesListenHost, C as caReplacementMarkerFile, D as replaceUnconstrainedLocalCa, E as reissueTlsLeaf, F as registerLanHttpHandler, M as bindPendingLanHttp, N as closeLanHttp, O as retirePreviousLocalCa, P as readLanHttpState, S as validateUploadedTls, T as loadTlsCert, _ as splitPemCertificates, a as storeUploadedCertificate, b as chainsToPublicRoot, c as leafFingerprintOf, d as servedHttpsLeafFingerprint, f as prepareBootTls, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, l as registerHttpsListener, m as readExtraSans, n as applyCertificateToListener, o as useStoredUploadedCertificate, p as UPLOADED_CA_FILE, r as regenerateCertificate, s as clearHttpsListener, t as createCiaoPublisher, u as reloadHttpsListener, v as writeExtraSans, w as ensureTlsCert, x as checkUploadedCa, y as writeTlsMode } from "./hub-mdns-ciao-B4wHDMvk.mjs";
41
41
  import { n as getPlatformKeychainKey, r as setPlatformKeychainKey, t as clearPlatformKeychainKey } from "./platform-key-source-BWlq0jjn.mjs";
42
42
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Di9daRwI.mjs";
43
- import { c as backupOrchestratorRecordKinds, f as BackupDecryptError, g as generateBackupKeyPair, l as backupRecordStoresOf, m as BackupKeyMismatchError, p as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, t as BackupKeyRequiredError, v as readBackupEncryptionHeader } from "./restore-archive-Jiz63mVB.mjs";
43
+ import { c as backupOrchestratorRecordKinds, f as BackupDecryptError, g as generateBackupKeyPair, l as backupRecordStoresOf, m as BackupKeyMismatchError, p as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, t as BackupKeyRequiredError, v as readBackupEncryptionHeader } from "./restore-archive-D7HwsszI.mjs";
44
44
  import { z } from "zod";
45
45
  import * as crypto$1 from "node:crypto";
46
46
  import { createHash, randomBytes, randomUUID } from "node:crypto";
@@ -11606,8 +11606,16 @@ function buildOneCapRouter(def, primitives, services) {
11606
11606
  const nodeId = typeof picked.nodeId === "string" ? picked.nodeId : void 0;
11607
11607
  const topLevelAddonId = typeof picked.addonId === "string" ? picked.addonId : void 0;
11608
11608
  const canRecoverNestedAddonId = !isArrayOutputSchema(method.schema.output) && !objectInputDeclaresAddonId(method.schema.input);
11609
- const addonId = topLevelAddonId ?? (canRecoverNestedAddonId ? extractNestedAddonId(rest) : void 0);
11610
- return invokeCapMethod(resolveProviderForCall(capName, nodeId, () => getLocal(ctx, addonId), services, topLevelAddonId), method, method.callerRequired ? injectCaller(rest, ctx, capName, method.name, services) : rest, capName, isCollection, services);
11609
+ let addonId = topLevelAddonId ?? (canRecoverNestedAddonId ? extractNestedAddonId(rest) : void 0);
11610
+ const resolveAndInvoke = async () => {
11611
+ let refusePin = topLevelAddonId;
11612
+ if (addonId === void 0 && !method.isArrayOutput && services.inferCollectionAddonPin) {
11613
+ addonId = await Promise.resolve(services.inferCollectionAddonPin(capName, method.name, rest));
11614
+ if (addonId !== void 0) refusePin = addonId;
11615
+ }
11616
+ return invokeCapMethod(resolveProviderForCall(capName, nodeId, () => getLocal(ctx, addonId), services, refusePin), method, method.callerRequired ? injectCaller(rest, ctx, capName, method.name, services) : rest, capName, isCollection, services);
11617
+ };
11618
+ return resolveAndInvoke();
11611
11619
  }
11612
11620
  const { rest, picked } = stripKeys(input, ["nodeId"]);
11613
11621
  return invokeCapMethod(resolveProviderForCall(capName, typeof picked.nodeId === "string" ? picked.nodeId : void 0, () => getLocal(ctx), services), method, method.callerRequired ? injectCaller(rest, ctx, capName, method.name, services) : rest, capName, isCollection, services);
@@ -136,6 +136,15 @@ export interface CapRouterServices {
136
136
  */
137
137
  readonly rejectUnresolvedAddonPin?: (capName: string, addonId: string) => void;
138
138
  /**
139
+ * When a collection cap call has no top-level `{ addonId }` pin (and nested
140
+ * recovery did not apply), the server may infer the owning provider from the
141
+ * method payload — e.g. `device-adoption` maps `integrationId` → addon via the
142
+ * integrations store, or `camDeviceId` → addon via the device registry for
143
+ * `resync`. Return `undefined` to keep the cap's default collection routing;
144
+ * implementations that cannot infer MUST throw via {@link badRequest}.
145
+ */
146
+ readonly inferCollectionAddonPin?: (capName: string, methodName: string, methodInput: Record<string, unknown>) => string | undefined | Promise<string | undefined>;
147
+ /**
139
148
  * Raise the canonical error for a resolved provider that does NOT
140
149
  * implement `method` (Task 7.5d). Before this existed the router called
141
150
  * `provider[method.name]?.(payload)` — an optional call that let a missing
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-Ct88catN.js");
1
+ const require_dist = require("./dist-DyjNaeIj.js");
2
2
  //#region src/builtins/records/legacy-table-row-count.ts
3
3
  /** Row count for a physical settings-db table (matches the records engine `legacyRowCount`). */
4
4
  function legacyTableRowCountFromList(tables, collection) {
@@ -1,4 +1,4 @@
1
- import { Ai as declarationsOf } from "./dist-DV2ll9Hi.mjs";
1
+ import { Ai as declarationsOf } from "./dist-B9C2v4SG.mjs";
2
2
  //#region src/builtins/records/legacy-table-row-count.ts
3
3
  /** Row count for a physical settings-db table (matches the records engine `legacyRowCount`). */
4
4
  function legacyTableRowCountFromList(tables, collection) {
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-Ct88catN.js");
2
+ const require_dist = require("./dist-DyjNaeIj.js");
3
3
  const require_read_all_rows$1 = require("./read-all-rows-CVoO1ONM.js");
4
4
  let zod = require("zod");
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { A as DataStoreDatabaseSchema, Mi as defineRecordKinds, b as DATABASE_SNAPSHOT_SUFFIX } from "./dist-DV2ll9Hi.mjs";
1
+ import { A as DataStoreDatabaseSchema, Mi as defineRecordKinds, b as DATABASE_SNAPSHOT_SUFFIX } from "./dist-B9C2v4SG.mjs";
2
2
  import { t as require_read_all_rows } from "./read-all-rows-TaPqdWNF.mjs";
3
3
  import { z } from "zod";
4
4
  import { createCipheriv, createDecipheriv, createHash, createPrivateKey, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.452",
3
+ "version": "1.2.453",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",