@camstack/system 1.2.456 → 1.2.457

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 (117) hide show
  1. package/dist/addon-runner.js +96 -10
  2. package/dist/addon-runner.mjs +96 -10
  3. package/dist/{agent-https-fm4AR8XL.mjs → agent-https-CK9Z4sSR.mjs} +2 -2
  4. package/dist/{agent-https-yjxdfJDA.js → agent-https-CoyOZ3pC.js} +2 -2
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +2 -2
  10. package/dist/builtins/alerts/alerts.addon.mjs +2 -2
  11. package/dist/builtins/autotrack/index.js +1 -1
  12. package/dist/builtins/autotrack/index.mjs +1 -1
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  15. package/dist/builtins/calendars/calendars.addon.js +1 -1
  16. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  17. package/dist/builtins/camera-grid/index.js +1 -1
  18. package/dist/builtins/camera-grid/index.mjs +1 -1
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/console-destination.d.ts +1 -2
  22. package/dist/builtins/console-logging/index.js +1 -4
  23. package/dist/builtins/console-logging/index.mjs +1 -4
  24. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  25. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  26. package/dist/builtins/device-history/capture/capture-engine.d.ts +6 -0
  27. package/dist/builtins/device-history/device-history.addon.js +441 -83
  28. package/dist/builtins/device-history/device-history.addon.mjs +441 -83
  29. package/dist/builtins/device-history/query/history-query.d.ts +35 -9
  30. package/dist/builtins/device-history/query/point-shape.d.ts +33 -0
  31. package/dist/builtins/device-history/retention/retention.d.ts +1 -1
  32. package/dist/builtins/device-history/rollup/rollup-engine.d.ts +2 -0
  33. package/dist/builtins/device-history/rollup/rollup-math.d.ts +6 -0
  34. package/dist/builtins/device-history/store/history-store.d.ts +7 -0
  35. package/dist/builtins/device-history/store/series-registry.d.ts +26 -1
  36. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  37. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  38. package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +1 -2
  39. package/dist/builtins/hub-forwarder/index.js +1 -4
  40. package/dist/builtins/hub-forwarder/index.mjs +1 -4
  41. package/dist/builtins/keychain/index.js +4 -4
  42. package/dist/builtins/keychain/index.mjs +4 -4
  43. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  44. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  45. package/dist/builtins/local-auth/local-auth.addon.js +3 -3
  46. package/dist/builtins/local-auth/local-auth.addon.mjs +3 -3
  47. package/dist/builtins/local-network/local-network.addon.js +2 -2
  48. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  49. package/dist/builtins/loki-logging/index.js +323 -7
  50. package/dist/builtins/loki-logging/index.mjs +323 -7
  51. package/dist/builtins/loki-logging/loki-destination.d.ts +20 -3
  52. package/dist/builtins/loki-logging/loki-read.d.ts +51 -0
  53. package/dist/builtins/native-metrics/native-metrics.addon.js +290 -112
  54. package/dist/builtins/native-metrics/native-metrics.addon.mjs +290 -112
  55. package/dist/builtins/native-metrics/node-metrics-history-recorder.d.ts +106 -35
  56. package/dist/builtins/platform-probe/index.js +1 -1
  57. package/dist/builtins/platform-probe/index.mjs +1 -1
  58. package/dist/builtins/record-entries/index.js +1 -1
  59. package/dist/builtins/record-entries/index.mjs +1 -1
  60. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  61. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  62. package/dist/builtins/snapshot/index.js +1 -1
  63. package/dist/builtins/snapshot/index.mjs +1 -1
  64. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  65. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  66. package/dist/builtins/sqlite-storage/index.js +1 -1
  67. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  68. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  69. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  70. package/dist/builtins/storage-orchestrator/location-history-recorder.d.ts +76 -0
  71. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +9 -0
  72. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +144 -1
  73. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +144 -1
  74. package/dist/builtins/system-config/system-config.addon.js +3 -3
  75. package/dist/builtins/system-config/system-config.addon.mjs +3 -3
  76. package/dist/builtins/winston-logging/index.js +165 -3
  77. package/dist/builtins/winston-logging/index.mjs +165 -3
  78. package/dist/builtins/winston-logging/log-file-cursor.d.ts +12 -0
  79. package/dist/builtins/winston-logging/log-file-index-store.d.ts +11 -0
  80. package/dist/builtins/winston-logging/log-file-index.d.ts +77 -0
  81. package/dist/builtins/winston-logging/log-file-read-client.d.ts +44 -0
  82. package/dist/builtins/winston-logging/log-file-read-protocol.d.ts +41 -0
  83. package/dist/builtins/winston-logging/log-file-read-worker.d.ts +1 -0
  84. package/dist/builtins/winston-logging/log-file-reader.d.ts +51 -0
  85. package/dist/builtins/winston-logging/winston-destination.d.ts +20 -2
  86. package/dist/{composition-sources-Ds0Vr6eD.mjs → composition-sources-B_jeZDRJ.mjs} +1 -1
  87. package/dist/{composition-sources-gB4coDJR.js → composition-sources-qKyvMAvc.js} +1 -1
  88. package/dist/{constants-CavyKfHZ.js → constants-B_X9cWEK.js} +1 -1
  89. package/dist/{constants-i5oD_gLB.mjs → constants-cxKcZRMi.mjs} +1 -1
  90. package/dist/{device-ca-qz1Pmeu1.mjs → device-ca-BB6nHAL5.mjs} +1 -1
  91. package/dist/{device-ca-bpoEr0zG.js → device-ca-CVK3YcR_.js} +1 -1
  92. package/dist/{dist-BpqA2CT0.js → dist-C89nqNnn.js} +471 -47
  93. package/dist/{dist-BSF_C8W2.mjs → dist-Dhux90yB.mjs} +454 -48
  94. package/dist/file-host-worker.js +1 -1
  95. package/dist/file-host-worker.mjs +1 -1
  96. package/dist/{hub-mdns-ciao-CHaGDzyz.mjs → hub-mdns-ciao-B8olZqqd.mjs} +2 -2
  97. package/dist/{hub-mdns-ciao-CZlZRxxA.js → hub-mdns-ciao-DB1Y9agt.js} +2 -2
  98. package/dist/index.d.ts +1 -0
  99. package/dist/index.js +135 -20
  100. package/dist/index.mjs +129 -21
  101. package/dist/kernel/config-schema.d.ts +5 -0
  102. package/dist/kernel/moleculer/accessory-prune-gate.d.ts +55 -0
  103. package/dist/log-file-read-protocol-B7M3X3bT.mjs +785 -0
  104. package/dist/log-file-read-protocol-D0WcLbIV.js +817 -0
  105. package/dist/log-file-read-worker.js +64 -0
  106. package/dist/log-file-read-worker.mjs +64 -0
  107. package/dist/log-read-filter-Bi066jwU.js +134 -0
  108. package/dist/log-read-filter-D7Ev3zm-.mjs +93 -0
  109. package/dist/logging/log-manager.d.ts +10 -6
  110. package/dist/logging/log-read-filter.d.ts +43 -0
  111. package/dist/{phase6-declare-gate-n-IZRklX.js → phase6-declare-gate-BO-_jLh_.js} +1 -1
  112. package/dist/{phase6-declare-gate-B4yfsf2n.mjs → phase6-declare-gate-x9ZCbQJP.mjs} +1 -1
  113. package/dist/{restore-archive-B4QG7XmX.js → restore-archive-4DOUR5Gu.js} +1 -1
  114. package/dist/{restore-archive-BGUM4FKf.mjs → restore-archive-DyOaPeAr.mjs} +1 -1
  115. package/dist/{wal-maintenance-AerF4XE6.mjs → wal-maintenance-BMiX6UIa.mjs} +0 -0
  116. package/dist/{wal-maintenance-CNEs_I94.js → wal-maintenance-DVN-DiVP.js} +0 -0
  117. 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 { $n as procedureAuthKey, Ai as asJsonObject$1, Ca as userError, Dn as isVoidInput, En as isObjectInput, G as LOG_LEVEL_RANK, Jn as objectInputDeclaresRequiredDeviceId, Ki as expandCapMethods, Ln as logLevelAtMost, Mi as asString$1, Nn as lifecycleJobSchema, On as kebabToCamel$1, Qr as errMsg$1, Rn as looseSchema, Sn as isCollectionArrayMethod, Ta as EventCategory$1, Ui as defineRecordKinds, Wi as emitDownForOwnedCaps, _n as interpolate, _t as addonSettingsCapability, bi as ReadinessTimeoutError, ca as parseJsonUnknown, d as CATALOG_LANGS, dn as extractNestedAddonId, dr as resolveMethodAuth, fa as readinessKey, ga as scopeKey, hr as scopesAllowDeviceCap, ii as DEVICE_STATUS_METHOD, ji as asNumber, kr as supportedRuntimes, ma as resolveCapMount, mr as scopesAllowAddon, n as AGENT_MDNS_TXT_KEYS, ni as DATAPLANE_SECRET_HEADER$1, q as METHOD_ACCESS_MAP, qn as objectInputDeclaresAddonId, r as ALL_CAPABILITY_DEFINITIONS, ri as DEVICE_SETTINGS_CONTRIBUTION_METHODS, sa as parseJsonObject, t as AGENT_MDNS_SERVICE_TYPE, ti as CALLER_STAMPED_CAPABILITIES$1, v as CatalogFileSchema, vi as RUNTIME_DEFAULTS, wa as withoutCallerStamp, xn as isArrayOutputSchema, xr as splitTranslationRef, yi as ReadinessRegistry, zi as createEvent$1 } from "./dist-BSF_C8W2.mjs";
2
+ import { An as isVoidInput, Bn as logLevelAtMost, Ci as ReadinessTimeoutError, Da as withoutCallerStamp, Ea as userError, Fi as asString$1, Hi as createEvent$1, In as lifecycleJobSchema, J as METHOD_ACCESS_MAP, K as LOG_LEVEL_RANK, Ki as defineRecordKinds, Mr as supportedRuntimes, Ni as asJsonObject$1, Oa as EventCategory$1, Pi as asNumber, Si as ReadinessRegistry, Tn as isCollectionArrayMethod, Vn as looseSchema, Xn as objectInputDeclaresAddonId, Yi as expandCapMethods, Zn as objectInputDeclaresRequiredDeviceId, _a as resolveCapMount, _r as scopesAllowAddon, ai as DATAPLANE_SECRET_HEADER$1, bn as interpolate, bt as addonSettingsCapability, d as CATALOG_LANGS, da as parseJsonUnknown, ha as readinessKey, ii as CALLER_STAMPED_CAPABILITIES$1, jn as kebabToCamel$1, kn as isObjectInput, mn as extractNestedAddonId, mr as resolveMethodAuth, n as AGENT_MDNS_TXT_KEYS, nr as procedureAuthKey, oi as DEVICE_SETTINGS_CONTRIBUTION_METHODS, qi as emitDownForOwnedCaps, r as ALL_CAPABILITY_DEFINITIONS, si as DEVICE_STATUS_METHOD, t as AGENT_MDNS_SERVICE_TYPE, ti as errMsg$1, ua as parseJsonObject, v as CatalogFileSchema, vr as scopesAllowDeviceCap, wn as isArrayOutputSchema, wr as splitTranslationRef, xi as RUNTIME_DEFAULTS, ya as scopeKey } from "./dist-Dhux90yB.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-qz1Pmeu1.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-BB6nHAL5.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";
@@ -22,25 +22,26 @@ import { LivenessMonitorAddon } from "./builtins/liveness-monitor/liveness-monit
22
22
  import "./builtins/liveness-monitor/index.mjs";
23
23
  import { LocalAuthAddon, _ as SettingsReadUnavailableError, a as attachUserManagementInternal, c as DeviceCaStore, d as onSessionsRevoked, f as DeviceCredentialManager, g as parseTokenExpiry, h as AuthManager, i as USER_MANAGEMENT_INTERNAL, l as LoginSessionManager, m as AuthAuditLog, n as FIRST_BOOT_ADMIN_USERNAME, o as getUserManagementInternal, p as PREVIOUS_LEAF_GRACE_MS, r as UserManager, s as preferencesLimitReasonOf, t as FIRST_BOOT_ADMIN_PASSWORD, u as REFRESH_TOKEN_PREFIX, v as isSettingsReadUnavailable, y as ApiKeyManager } from "./builtins/local-auth/local-auth.addon.mjs";
24
24
  import "./builtins/local-auth/index.mjs";
25
+ import { a as lineContainsText, i as levelRank, n as compileLogFilter, o as lineMatches, r as filterIsEmpty, s as originNodeOf, t as bareAddonOf } from "./log-read-filter-D7Ev3zm-.mjs";
25
26
  import { LokiDestination, LokiLoggingAddon } from "./builtins/loki-logging/index.mjs";
26
27
  import NativeMetricsAddon, { a as NativeMetricsProvider, n as nodeProcReader, r as parseProcStat } from "./builtins/native-metrics/native-metrics.addon.mjs";
27
28
  import { DeviceHistoryAddon } from "./builtins/device-history/device-history.addon.mjs";
28
29
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
29
- import { l as SqliteSettingsBackend } from "./wal-maintenance-AerF4XE6.mjs";
30
+ import { l as SqliteSettingsBackend } from "./wal-maintenance-BMiX6UIa.mjs";
30
31
  import { SqliteSettingsAddon } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
31
32
  import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
32
33
  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
34
  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-i5oD_gLB.mjs";
35
- import { $ as generateMeshCa, A as buildNameConstraintSet, B as setProcessAgentHttpsNames, C as LEAF_RENEWAL_WINDOW_DAYS, E as evaluateExistingCert, F as readNameConstraints, G as RENEWAL_ABANDONED, H as MESH_NODE_CERTIFICATES_COLLECTION, I as AGENT_HTTPS_NAMES_COLLECTION, J as setProcessMeshCertificateRegistry, K as describeMeshLeaf, L as AGENT_HTTPS_NAMES_COLUMNS, M as isLocalOnlyHostname, N as permitsIdentity, O as PERMITTED_DNS_SUFFIXES, P as permitsName, Q as exportMeshPrivateKeyPem, R as AgentHttpsNames, S as CA_VALIDITY_DAYS, T as SERVER_AUTH_OID, U as MESH_NODE_CERTIFICATES_COLUMNS, W as MeshCertificateRegistry, X as caFingerprintCompact, Y as caFingerprint, Z as createMeshCsrPem, a as collectAgentNames, b as collectCertIdentity, c as installAgentHttps, d as issueAgentHttpsLeaf, et as generateMeshKeyPair, f as loadAgentHttps, h as CA_COMMON_NAME, i as certificateNames, it as loadMeshCa, j as isConstrainedCa, k as PERMITTED_IP_RANGES, l as isContainerBridgeAddress, m as pinnedHttpsCaFingerprint, n as acceptAgentSans, nt as issueMeshLeafForNode, o as createAgentHttpsRequest, p as pemDigest, q as getProcessMeshCertificateRegistry, r as agentHttpsPaths, rt as issueMeshLeafFromCsr, s as describeHttpsLeaf, t as AgentHttpsInstallError, tt as isValidAgentNodeId, u as isPrivateAddress, w as MAX_LEAF_VALIDITY_DAYS, x as systemHostFacts, y as localCaCommonName, z as getProcessAgentHttpsNames } from "./agent-https-fm4AR8XL.mjs";
35
+ 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-cxKcZRMi.mjs";
36
+ import { $ as generateMeshCa, A as buildNameConstraintSet, B as setProcessAgentHttpsNames, C as LEAF_RENEWAL_WINDOW_DAYS, E as evaluateExistingCert, F as readNameConstraints, G as RENEWAL_ABANDONED, H as MESH_NODE_CERTIFICATES_COLLECTION, I as AGENT_HTTPS_NAMES_COLLECTION, J as setProcessMeshCertificateRegistry, K as describeMeshLeaf, L as AGENT_HTTPS_NAMES_COLUMNS, M as isLocalOnlyHostname, N as permitsIdentity, O as PERMITTED_DNS_SUFFIXES, P as permitsName, Q as exportMeshPrivateKeyPem, R as AgentHttpsNames, S as CA_VALIDITY_DAYS, T as SERVER_AUTH_OID, U as MESH_NODE_CERTIFICATES_COLUMNS, W as MeshCertificateRegistry, X as caFingerprintCompact, Y as caFingerprint, Z as createMeshCsrPem, a as collectAgentNames, b as collectCertIdentity, c as installAgentHttps, d as issueAgentHttpsLeaf, et as generateMeshKeyPair, f as loadAgentHttps, h as CA_COMMON_NAME, i as certificateNames, it as loadMeshCa, j as isConstrainedCa, k as PERMITTED_IP_RANGES, l as isContainerBridgeAddress, m as pinnedHttpsCaFingerprint, n as acceptAgentSans, nt as issueMeshLeafForNode, o as createAgentHttpsRequest, p as pemDigest, q as getProcessMeshCertificateRegistry, r as agentHttpsPaths, rt as issueMeshLeafFromCsr, s as describeHttpsLeaf, t as AgentHttpsInstallError, tt as isValidAgentNodeId, u as isPrivateAddress, w as MAX_LEAF_VALIDITY_DAYS, x as systemHostFacts, y as localCaCommonName, z as getProcessAgentHttpsNames } from "./agent-https-CK9Z4sSR.mjs";
36
37
  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
38
  import "./builtins/system-config/index.mjs";
38
39
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
39
40
  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-CHaGDzyz.mjs";
41
+ 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-B8olZqqd.mjs";
41
42
  import { n as getPlatformKeychainKey, r as setPlatformKeychainKey, t as clearPlatformKeychainKey } from "./platform-key-source-BWlq0jjn.mjs";
42
43
  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-BGUM4FKf.mjs";
44
+ 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-DyOaPeAr.mjs";
44
45
  import { z } from "zod";
45
46
  import * as crypto$1 from "node:crypto";
46
47
  import { createHash, randomBytes, randomUUID } from "node:crypto";
@@ -4436,6 +4437,16 @@ var ScopedLogger = class ScopedLogger {
4436
4437
  };
4437
4438
  }
4438
4439
  };
4440
+ //#endregion
4441
+ //#region src/logging/log-manager.ts
4442
+ /**
4443
+ * A short id for one process lifetime: the first half of every entry `id`.
4444
+ * Base-36 epoch ms plus a random suffix, so two boots of the same process in
4445
+ * the same millisecond still mint different ids.
4446
+ */
4447
+ function newBootId() {
4448
+ return `${Date.now().toString(36)}${Math.floor(Math.random() * 36 ** 4).toString(36).padStart(4, "0")}`;
4449
+ }
4439
4450
  var LogManager = class {
4440
4451
  ringBuffer;
4441
4452
  /**
@@ -4472,6 +4483,14 @@ var LogManager = class {
4472
4483
  */
4473
4484
  gate = getLoggingGate();
4474
4485
  /**
4486
+ * Entry identity (D898): `<bootId>.<seq>`, stamped once, here, on every line
4487
+ * this process accepts — so the in-memory tail, the live subscription and
4488
+ * the rotated file carry the SAME id and a page read from disk dedupes
4489
+ * exactly against the lines pushed live.
4490
+ */
4491
+ bootId = newBootId();
4492
+ seq = 0;
4493
+ /**
4475
4494
  * `perAddonCapacity` bounds EACH addon's bucket, not the total — a chatty addon
4476
4495
  * evicts only its own lines, so quiet addons keep their sparse history.
4477
4496
  *
@@ -4504,7 +4523,10 @@ var LogManager = class {
4504
4523
  }
4505
4524
  createLogger(scope) {
4506
4525
  return new ScopedLogger(scope, (entry) => {
4507
- const enriched = redactLogEntry(this.enrichDeviceName(entry));
4526
+ const enriched = {
4527
+ ...redactLogEntry(this.enrichDeviceName(entry)),
4528
+ id: `${this.bootId}.${String(++this.seq)}`
4529
+ };
4508
4530
  if (this.isDestinationEnabled?.("log-buffer") !== false) this.ringBuffer.push(enriched);
4509
4531
  if (this.gate.allowsDestination(enriched)) for (const entry of this.destinations) {
4510
4532
  if (entry.addonId !== void 0 && this.isDestinationEnabled?.(entry.addonId) === false) continue;
@@ -16046,6 +16068,67 @@ function createChildrenBatchLoader(opts) {
16046
16068
  } };
16047
16069
  }
16048
16070
  //#endregion
16071
+ //#region src/kernel/moleculer/accessory-prune-gate.ts
16072
+ function isSpecList(answer) {
16073
+ return Array.isArray(answer);
16074
+ }
16075
+ function classifyAccessoryRead(answer, ctx) {
16076
+ if (isSpecList(answer)) {
16077
+ if (!ctx.online) return {
16078
+ kind: "unknown",
16079
+ reason: "parent offline",
16080
+ children: answer
16081
+ };
16082
+ if (ctx.probedAt === 0) return {
16083
+ kind: "unknown",
16084
+ reason: "probe not yet completed",
16085
+ children: answer
16086
+ };
16087
+ return {
16088
+ kind: "successful",
16089
+ children: answer
16090
+ };
16091
+ }
16092
+ if (answer.kind === "unknown") return {
16093
+ kind: "unknown",
16094
+ reason: answer.reason,
16095
+ children: answer.known ?? []
16096
+ };
16097
+ return {
16098
+ kind: "successful",
16099
+ children: answer.children
16100
+ };
16101
+ }
16102
+ /** One per parent registration; in-memory on purpose (a restart starts over — the safe direction). */
16103
+ var AccessoryShrinkGate = class {
16104
+ /** childId → the probe (`lastProbedAt`) of the first successful read that lacked it. */
16105
+ #firstMissing = /* @__PURE__ */ new Map();
16106
+ /**
16107
+ * `missing` = the managed children a SUCCESSFUL read no longer lists. Never
16108
+ * call this for an unknown read.
16109
+ */
16110
+ decide(missing, probedAt) {
16111
+ const missingSet = new Set(missing);
16112
+ for (const id of [...this.#firstMissing.keys()]) if (!missingSet.has(id)) this.#firstMissing.delete(id);
16113
+ const prune = [];
16114
+ const deferred = [];
16115
+ for (const id of missing) {
16116
+ const first = this.#firstMissing.get(id);
16117
+ if (first !== void 0 && probedAt > first) {
16118
+ prune.push(id);
16119
+ this.#firstMissing.delete(id);
16120
+ continue;
16121
+ }
16122
+ if (first === void 0) this.#firstMissing.set(id, probedAt);
16123
+ deferred.push(id);
16124
+ }
16125
+ return {
16126
+ prune,
16127
+ deferred
16128
+ };
16129
+ }
16130
+ };
16131
+ //#endregion
16049
16132
  //#region src/kernel/moleculer/runtime-state-load.ts
16050
16133
  /** A device build refused because its runtime state could not be loaded. */
16051
16134
  var RuntimeStateLoadError = class extends Error {
@@ -16768,6 +16851,7 @@ function createBrokerDeviceManagerApi(opts) {
16768
16851
  throw err;
16769
16852
  }
16770
16853
  const lifecycleHost = device;
16854
+ const shrinkGate = new AccessoryShrinkGate();
16771
16855
  const runReconcile = async () => {
16772
16856
  try {
16773
16857
  await callDeviceManager(api, "registerDevice", {
@@ -16791,7 +16875,12 @@ function createBrokerDeviceManagerApi(opts) {
16791
16875
  });
16792
16876
  }
16793
16877
  if (typeof lifecycleHost.getAccessoryChildren !== "function") return;
16794
- const specs = lifecycleHost.getAccessoryChildren();
16878
+ const probedAt = device.runtimeState?.getCapState("feature-probe")?.lastProbedAt ?? 0;
16879
+ const read = classifyAccessoryRead(lifecycleHost.getAccessoryChildren(), {
16880
+ online: device.online,
16881
+ probedAt
16882
+ });
16883
+ const specs = read.children;
16795
16884
  const expected = new Set(specs.map((s) => `${device.stableId}-${s.stableIdSuffix}`));
16796
16885
  await runBounded(specs, ACCESSORY_SPAWN_CONCURRENCY, async (spec) => {
16797
16886
  try {
@@ -16809,24 +16898,42 @@ function createBrokerDeviceManagerApi(opts) {
16809
16898
  });
16810
16899
  }
16811
16900
  });
16812
- if ((device.runtimeState?.getCapState("feature-probe")?.lastProbedAt ?? 0) === 0 && specs.length === 0) {
16813
- opts.logger.debug("Accessory orphan reconciliation skipped — probe not yet completed", { tags: {
16814
- parentDeviceId: device.id,
16815
- parentStableId: device.stableId
16816
- } });
16901
+ if (read.kind === "unknown") {
16902
+ opts.logger.info("Accessory orphan reconciliation skipped — child list unknown", {
16903
+ tags: {
16904
+ deviceId: device.id,
16905
+ parentStableId: device.stableId
16906
+ },
16907
+ meta: {
16908
+ reason: read.reason,
16909
+ probedAt
16910
+ }
16911
+ });
16817
16912
  return;
16818
16913
  }
16819
16914
  try {
16820
- const currentChildren = await childrenLoader.load(device.id);
16821
- for (const child of currentChildren) {
16822
- if (child.linkDeviceId !== device.id) continue;
16823
- if (expected.has(child.stableId)) continue;
16915
+ const missing = (await childrenLoader.load(device.id)).filter((child) => child.linkDeviceId === device.id && !expected.has(child.stableId));
16916
+ const decision = shrinkGate.decide(missing.map((child) => child.id), probedAt);
16917
+ if (decision.deferred.length > 0) opts.logger.info("Accessory children missing from a complete read — kept until a later probe agrees", {
16918
+ tags: {
16919
+ deviceId: device.id,
16920
+ parentStableId: device.stableId
16921
+ },
16922
+ meta: {
16923
+ childDeviceIds: [...decision.deferred],
16924
+ probedAt
16925
+ }
16926
+ });
16927
+ const confirmed = new Set(decision.prune);
16928
+ for (const child of missing) {
16929
+ if (!confirmed.has(child.id)) continue;
16824
16930
  const live = registry.getById(child.id);
16825
16931
  try {
16826
16932
  if (live) await deviceApi.remove(child.id);
16827
16933
  else await callDeviceManager(api, "removeDevice", { deviceId: child.id });
16828
16934
  opts.logger.info("Removed orphan accessory child no longer in parent specs", {
16829
16935
  tags: {
16936
+ deviceId: child.id,
16830
16937
  parentDeviceId: device.id,
16831
16938
  parentStableId: device.stableId
16832
16939
  },
@@ -16839,6 +16946,7 @@ function createBrokerDeviceManagerApi(opts) {
16839
16946
  } catch (err) {
16840
16947
  opts.logger.warn("Failed to remove orphan accessory child", {
16841
16948
  tags: {
16949
+ deviceId: child.id,
16842
16950
  parentDeviceId: device.id,
16843
16951
  parentStableId: device.stableId,
16844
16952
  childDeviceId: child.id
@@ -21298,7 +21406,7 @@ var LEVEL_ORDER = {
21298
21406
  warn: 2,
21299
21407
  error: 3
21300
21408
  };
21301
- function levelRank(level) {
21409
+ function levelRank$1(level) {
21302
21410
  return LEVEL_ORDER[level] ?? 0;
21303
21411
  }
21304
21412
  function createUdsLoggerWithState(client, addonId, nodeId, levelState, scope, tags = {}) {
@@ -21310,7 +21418,7 @@ function createUdsLoggerWithState(client, addonId, nodeId, levelState, scope, ta
21310
21418
  ...tags
21311
21419
  };
21312
21420
  function log(level, message, extras) {
21313
- if (levelRank(level) < levelRank(levelState.current)) return;
21421
+ if (levelRank$1(level) < levelRank$1(levelState.current)) return;
21314
21422
  const mergedTags = extras?.tags ? {
21315
21423
  ...baseTags,
21316
21424
  ...extras.tags
@@ -27578,4 +27686,4 @@ function resetCatalogRegistryForTests() {
27578
27686
  }
27579
27687
  //#endregion
27580
27688
  var readAllRows = import_read_all_rows.readAllRows;
27581
- export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_DASHBOARD_ORIGINS_FIELD, AGENT_HTTPS_NAMES_COLLECTION, AGENT_HTTPS_NAMES_COLUMNS, AGENT_READINESS_SERVICE_NAME, AGENT_UI_UNLOCK_TTL_MS, AGENT_UI_UNLOCK_TYP, AGENT_UI_UNLOCK_USE, AGENT_UI_UNLOCK_VERSION, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRefusedError, AddonRouteRegistry, AgentHttpsInstallError, AgentHttpsNames, AgentMdnsAdvertiser, AgentMeshIdentityGate, AgentPairing, AlertCenterAddon, ApiKeyManager, AuthAuditLog, AuthManager, BackupDecryptError, BackupKeyFormatError, BackupKeyMismatchError, BackupKeyRequiredError, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CAP_METHOD_NOT_IMPLEMENTED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_NODE_HISTORY_COLLECTION, CORE_CAP_SERVICE_NAME, CalendarsAddon, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, CatalogRegistry, ClusterNodeHistoryBodySchema, ComposerAddon, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_HUB_TLS_TCP_PORT, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_CA_KEY_REF, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceCaStore, DeviceCredentialManager, DeviceHistoryAddon, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FIRST_BOOT_ADMIN_PASSWORD, FIRST_BOOT_ADMIN_USERNAME, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, GET_STATUS_METHOD, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, HubPairing, INFRA_CAPABILITIES, INTEGRATIONS_LEGACY, INTEGRATION_SETTINGS_LEGACY, IntegrationRegistry, JWT_SIGNING_KEY_REF, JobJournal, JwtSigningKeyUnavailableError, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LoginSessionManager, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_ACTION_FORBIDDEN_TYPE, MESH_CA_FIELD, MESH_CA_KEY_REF, MESH_CA_SETTINGS_KEY, MESH_NODE_CERTIFICATES_COLLECTION, MESH_NODE_CERTIFICATES_COLUMNS, MESH_NODE_UNAUTHENTICATED_TYPE, MESH_QUEUE_TOP_N, MESH_TLS_PORT_HELLO_FIELD, METHOD_ACCESS_MAP, MeshCaKeeper, MeshCertificateRegistry, MeshCrl, MeshIdentityGate, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PAIRING_CODE_DIGITS, PAIRING_MAX_CODE_ATTEMPTS, PAIRING_MAX_SESSIONS, PAIRING_PATHS, PAIRING_PIN_DIGITS, PAIRING_PROTOCOL, PAIRING_TTL_MS, PARENT_ROUTED_PROVIDER_ADDON_ID, PERMITTED_DNS_SUFFIXES, PERMITTED_IP_RANGES, PREVIOUS_LEAF_GRACE_MS, PYTHON_VERSION, PairingHttpError, PeerAnsweredError, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, REFRESH_TOKEN_PREFIX, RENEWAL_ABANDONED, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SERVER_NAMESPACE, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, STORAGE_DRAIN_STATE_LEGACY, STORE_READABLE_BOOTSTRAP_KEYS, SYSTEM_SECRET_OWNER, ScopedLogger, SettingsReadUnavailableError, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemBackupService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, TlsTcpTransporter, ToastService, UDS_NO_ROUTE_PREFIX, UNCLAIMED, UNMIGRATED_SETTINGS_CODE, UNMIGRATED_SETTINGS_REMEDY, UPLOADED_CA_FILE, USER_MANAGEMENT_INTERNAL, UdsLocalTransportClient, UdsLocalTransportServer, UnlockTicketJtiStore, UnmigratedSettingsError, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, acceptAgentSans, adaptBrokerToCluster, addonSettingsCapability, adoptModelRevisions, afterWorkerOnlineAnnounce, agentHttpsPaths, allFamiliesListenHost, answerClaimedGetStatus, applyCertificateToListener, applyLanHttp, asBrokerLike, assertLegacyBlobsMigrated, attachUserManagementInternal, attributeStall, backupOrchestratorRecordKinds, backupRecordStoresOf, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildAgentAnnouncement, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNameConstraintSet, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, buildTransporter, builderMountedCapNames, caFingerprint, caFingerprintCompact, caReplacementMarkerFile, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, catalogNamespaceOf, certificateNames, chainsToPublicRoot, checkUploadedCa, classifyAddonDir, classifyCapRoute, clearHttpsListener, clearPendingRestart, clearPlatformKeychainKey, closeLanHttp, clusterAgentRecordKinds, clusterEventTopic, clusterNodeHistoryRecordKind, collectAgentNames, collectCertIdentity, collectModelFiles, computePairingCommitment, computePairingSas, connectBrokerTransport, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonPeerBytesFacility, createAddonService, createAgentEventScope, createAgentHttpsRequest, createAgentTransport, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCiaoPublisher, createCidrMatcher, createCoreCapService, createCoreCatalogRegistry, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createKernelInferenceEngine, createLocalTransport, createLoopDelayMeter, createMeshAccessMiddleware, createMeshCsrPem, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, currentBrokerTransporter, deleteModelFromDisk, deriveAgentListenPort, describeCsr, describeHttpsLeaf, describeMeshLeaf, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, deviceOfGetStatus, diffCapActionCensus, diffEventPlane, diffSocketPlane, disconnectBrokerTransport, downloadBinary, downloadFile, downloadModel, dropProcessPeer, emitDownForOwnedCaps, emitHeapDiagnosticReport, emitProcessNodeRegistered, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, exportMeshPrivateKeyPem, fetchJson, findAddonRefusal, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, generateBackupKeyPair, generateDeviceCa, generateMeshCa, generateMeshKeyPair, getBrokerEventBus, getBrokerTlsTransporter, getCapUsageRegistry, getCatalogRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPlatformKeychainKey, getProcessAgentHttpsNames, getProcessJwtSigningKeyState, getProcessMeshCaState, getProcessMeshCertificateRegistry, getProcessMeshTlsListenerState, getProcessNodeMeshTransport, getProcessPeerLeaf, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getUserManagementInternal, getWorkerDeviceRegistry, hasDotNode, heapSpaceField, hostNodeIdOf, hubHostFromMeshAddress, hubMainRssBudget, installAgentHttps, installBrokerTransporter, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, integrationRegistryRecordKinds, ipcParentLink, isAddonDeploySource, isAllowedAgentDashboardReturnTo, isArrayBufferCensusReport, isArrayOutputSchema, isCollectionArrayMethod, isConstrainedCa, isContainerBridgeAddress, isCredentialKeyName, isInfraCapability, isInstalledTransporter, isLocalOnlyHostname, isModelDownloaded, isPeerEventPacket, isPrivateAddress, isProcessVerifiedMeshPeer, isRemoteForbiddenAction, isRemoteForbiddenOnAgent, isSettingsReadUnavailable, isSourceNewer, isValidAgentNodeId, isolatedBuiltinPhase, issueAgentHttpsLeaf, issueDeviceLeaf, issueMeshLeafForNode, issueMeshLeafFromCsr, keyFingerprintShort, leafFingerprintOf, loadAgentHttps, loadDeviceCa, loadMeshCa, loadTlsCert, localCaCommonName, localEndpointPath, localProviderLink, localSupportedPythonRuntimes, mapSignalsToInferenceHardware, meshErrorType, mintAgentUiUnlockTicket, mountNativeCapService, nextRssBudgetState, normalizeIp, onProcessNodeRegistered, onSessionsRevoked, openMeshTlsWhenRevocationsLoaded, overlayGetStatus, parseAgentDashboardOrigins, parseCapAction, parseCidrList, parseRangeHeader, parseRssBudgetMb, parseTokenExpiry, parseTokenizedUrl, partitionIsolatedBuiltinIds, pemDigest, permitsIdentity, permitsName, pinnedHttpsCaFingerprint, preferencesLimitReasonOf, prepareBootTls, prepareRestoreArchive, probePlatform, processJwtSigningKey, processMeshCrl, proxyToUpstream, quarantineAddonResidue, readAllRows, readBackupEncryptionHeader, readCidrSetting, readExtraSans, readHeapSpaces, readLanHttpState, readNameConstraints, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, redactLogEntry, redactLogMeta, redactLogText, regenerateCertificate, registerEventBusService, registerHttpsListener, registerLanHttpHandler, reissueTlsLeaf, reloadHttpsListener, renewMeshCertificate, replaceUnconstrainedLocalCa, requireProcessMeshCa, resetCatalogRegistryForTests, resolveFilePath, resolveFormatRevision, resolveHwAccel, resolveNpmInvocation, retirePreviousLocalCa, revertToGeneratedCertificate, revisionWeightUrl, revokeMeshCertificate, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, servedHttpsLeafFingerprint, setHubConnected, setNodeEventInterest, setPlatformKeychainKey, setProcessAgentHttpsNames, setProcessMeshCertificateRegistry, setProcessMeshPeerTransportLookup, setProcessMeshTlsEnabler, setProcessMeshTlsListenerState, setWrapperActive, shouldReclaim, signPairingProof, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, splitPemCertificates, stampCallerAddonId, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, staticJwtSigningKey, storageOrchestratorRecordKinds, storeMayAnswer, storeUploadedCertificate, strandedMb, stripCamstackDeps, stripForgedIdentity, stripForwardedCaller, subscribePassthrough, systemHostFacts, udsChildLogToWorkerEntry, useStoredUploadedCertificate, validateProviderRegistrations, validateUploadedTls, verifyAgentUiUnlockTicket, verifyDeviceLeaf, verifyDeviceSignature, verifyPairingProof, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
27689
+ export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_DASHBOARD_ORIGINS_FIELD, AGENT_HTTPS_NAMES_COLLECTION, AGENT_HTTPS_NAMES_COLUMNS, AGENT_READINESS_SERVICE_NAME, AGENT_UI_UNLOCK_TTL_MS, AGENT_UI_UNLOCK_TYP, AGENT_UI_UNLOCK_USE, AGENT_UI_UNLOCK_VERSION, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRefusedError, AddonRouteRegistry, AgentHttpsInstallError, AgentHttpsNames, AgentMdnsAdvertiser, AgentMeshIdentityGate, AgentPairing, AlertCenterAddon, ApiKeyManager, AuthAuditLog, AuthManager, BackupDecryptError, BackupKeyFormatError, BackupKeyMismatchError, BackupKeyRequiredError, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CAP_METHOD_NOT_IMPLEMENTED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_NODE_HISTORY_COLLECTION, CORE_CAP_SERVICE_NAME, CalendarsAddon, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, CatalogRegistry, ClusterNodeHistoryBodySchema, ComposerAddon, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_HUB_TLS_TCP_PORT, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_CA_KEY_REF, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceCaStore, DeviceCredentialManager, DeviceHistoryAddon, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FIRST_BOOT_ADMIN_PASSWORD, FIRST_BOOT_ADMIN_USERNAME, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, GET_STATUS_METHOD, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, HubPairing, INFRA_CAPABILITIES, INTEGRATIONS_LEGACY, INTEGRATION_SETTINGS_LEGACY, IntegrationRegistry, JWT_SIGNING_KEY_REF, JobJournal, JwtSigningKeyUnavailableError, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LoginSessionManager, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_ACTION_FORBIDDEN_TYPE, MESH_CA_FIELD, MESH_CA_KEY_REF, MESH_CA_SETTINGS_KEY, MESH_NODE_CERTIFICATES_COLLECTION, MESH_NODE_CERTIFICATES_COLUMNS, MESH_NODE_UNAUTHENTICATED_TYPE, MESH_QUEUE_TOP_N, MESH_TLS_PORT_HELLO_FIELD, METHOD_ACCESS_MAP, MeshCaKeeper, MeshCertificateRegistry, MeshCrl, MeshIdentityGate, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PAIRING_CODE_DIGITS, PAIRING_MAX_CODE_ATTEMPTS, PAIRING_MAX_SESSIONS, PAIRING_PATHS, PAIRING_PIN_DIGITS, PAIRING_PROTOCOL, PAIRING_TTL_MS, PARENT_ROUTED_PROVIDER_ADDON_ID, PERMITTED_DNS_SUFFIXES, PERMITTED_IP_RANGES, PREVIOUS_LEAF_GRACE_MS, PYTHON_VERSION, PairingHttpError, PeerAnsweredError, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, REFRESH_TOKEN_PREFIX, RENEWAL_ABANDONED, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SERVER_NAMESPACE, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, STORAGE_DRAIN_STATE_LEGACY, STORE_READABLE_BOOTSTRAP_KEYS, SYSTEM_SECRET_OWNER, ScopedLogger, SettingsReadUnavailableError, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemBackupService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, TlsTcpTransporter, ToastService, UDS_NO_ROUTE_PREFIX, UNCLAIMED, UNMIGRATED_SETTINGS_CODE, UNMIGRATED_SETTINGS_REMEDY, UPLOADED_CA_FILE, USER_MANAGEMENT_INTERNAL, UdsLocalTransportClient, UdsLocalTransportServer, UnlockTicketJtiStore, UnmigratedSettingsError, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, acceptAgentSans, adaptBrokerToCluster, addonSettingsCapability, adoptModelRevisions, afterWorkerOnlineAnnounce, agentHttpsPaths, allFamiliesListenHost, answerClaimedGetStatus, applyCertificateToListener, applyLanHttp, asBrokerLike, assertLegacyBlobsMigrated, attachUserManagementInternal, attributeStall, backupOrchestratorRecordKinds, backupRecordStoresOf, bareAddonOf, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildAgentAnnouncement, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNameConstraintSet, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, buildTransporter, builderMountedCapNames, caFingerprint, caFingerprintCompact, caReplacementMarkerFile, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, catalogNamespaceOf, certificateNames, chainsToPublicRoot, checkUploadedCa, classifyAddonDir, classifyCapRoute, clearHttpsListener, clearPendingRestart, clearPlatformKeychainKey, closeLanHttp, clusterAgentRecordKinds, clusterEventTopic, clusterNodeHistoryRecordKind, collectAgentNames, collectCertIdentity, collectModelFiles, compileLogFilter, computePairingCommitment, computePairingSas, connectBrokerTransport, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonPeerBytesFacility, createAddonService, createAgentEventScope, createAgentHttpsRequest, createAgentTransport, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCiaoPublisher, createCidrMatcher, createCoreCapService, createCoreCatalogRegistry, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createKernelInferenceEngine, createLocalTransport, createLoopDelayMeter, createMeshAccessMiddleware, createMeshCsrPem, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, currentBrokerTransporter, deleteModelFromDisk, deriveAgentListenPort, describeCsr, describeHttpsLeaf, describeMeshLeaf, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, deviceOfGetStatus, diffCapActionCensus, diffEventPlane, diffSocketPlane, disconnectBrokerTransport, downloadBinary, downloadFile, downloadModel, dropProcessPeer, emitDownForOwnedCaps, emitHeapDiagnosticReport, emitProcessNodeRegistered, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, exportMeshPrivateKeyPem, fetchJson, filterIsEmpty, findAddonRefusal, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, generateBackupKeyPair, generateDeviceCa, generateMeshCa, generateMeshKeyPair, getBrokerEventBus, getBrokerTlsTransporter, getCapUsageRegistry, getCatalogRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPlatformKeychainKey, getProcessAgentHttpsNames, getProcessJwtSigningKeyState, getProcessMeshCaState, getProcessMeshCertificateRegistry, getProcessMeshTlsListenerState, getProcessNodeMeshTransport, getProcessPeerLeaf, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getUserManagementInternal, getWorkerDeviceRegistry, hasDotNode, heapSpaceField, hostNodeIdOf, hubHostFromMeshAddress, hubMainRssBudget, installAgentHttps, installBrokerTransporter, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, integrationRegistryRecordKinds, ipcParentLink, isAddonDeploySource, isAllowedAgentDashboardReturnTo, isArrayBufferCensusReport, isArrayOutputSchema, isCollectionArrayMethod, isConstrainedCa, isContainerBridgeAddress, isCredentialKeyName, isInfraCapability, isInstalledTransporter, isLocalOnlyHostname, isModelDownloaded, isPeerEventPacket, isPrivateAddress, isProcessVerifiedMeshPeer, isRemoteForbiddenAction, isRemoteForbiddenOnAgent, isSettingsReadUnavailable, isSourceNewer, isValidAgentNodeId, isolatedBuiltinPhase, issueAgentHttpsLeaf, issueDeviceLeaf, issueMeshLeafForNode, issueMeshLeafFromCsr, keyFingerprintShort, leafFingerprintOf, levelRank, lineContainsText, lineMatches, loadAgentHttps, loadDeviceCa, loadMeshCa, loadTlsCert, localCaCommonName, localEndpointPath, localProviderLink, localSupportedPythonRuntimes, mapSignalsToInferenceHardware, meshErrorType, mintAgentUiUnlockTicket, mountNativeCapService, nextRssBudgetState, normalizeIp, onProcessNodeRegistered, onSessionsRevoked, openMeshTlsWhenRevocationsLoaded, originNodeOf, overlayGetStatus, parseAgentDashboardOrigins, parseCapAction, parseCidrList, parseRangeHeader, parseRssBudgetMb, parseTokenExpiry, parseTokenizedUrl, partitionIsolatedBuiltinIds, pemDigest, permitsIdentity, permitsName, pinnedHttpsCaFingerprint, preferencesLimitReasonOf, prepareBootTls, prepareRestoreArchive, probePlatform, processJwtSigningKey, processMeshCrl, proxyToUpstream, quarantineAddonResidue, readAllRows, readBackupEncryptionHeader, readCidrSetting, readExtraSans, readHeapSpaces, readLanHttpState, readNameConstraints, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, redactLogEntry, redactLogMeta, redactLogText, regenerateCertificate, registerEventBusService, registerHttpsListener, registerLanHttpHandler, reissueTlsLeaf, reloadHttpsListener, renewMeshCertificate, replaceUnconstrainedLocalCa, requireProcessMeshCa, resetCatalogRegistryForTests, resolveFilePath, resolveFormatRevision, resolveHwAccel, resolveNpmInvocation, retirePreviousLocalCa, revertToGeneratedCertificate, revisionWeightUrl, revokeMeshCertificate, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, servedHttpsLeafFingerprint, setHubConnected, setNodeEventInterest, setPlatformKeychainKey, setProcessAgentHttpsNames, setProcessMeshCertificateRegistry, setProcessMeshPeerTransportLookup, setProcessMeshTlsEnabler, setProcessMeshTlsListenerState, setWrapperActive, shouldReclaim, signPairingProof, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, splitPemCertificates, stampCallerAddonId, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, staticJwtSigningKey, storageOrchestratorRecordKinds, storeMayAnswer, storeUploadedCertificate, strandedMb, stripCamstackDeps, stripForgedIdentity, stripForwardedCaller, subscribePassthrough, systemHostFacts, udsChildLogToWorkerEntry, useStoredUploadedCertificate, validateProviderRegistrations, validateUploadedTls, verifyAgentUiUnlockTicket, verifyDeviceLeaf, verifyDeviceSignature, verifyPairingProof, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
@@ -117,6 +117,11 @@ export type AppConfig = BootstrapConfig & {
117
117
  * means "evict anything", which defeats the point.
118
118
  */
119
119
  logBufferPruneLevel?: "debug" | "info" | "warn" | "error";
120
+ /**
121
+ * Entries the hub keeps in memory once `winston-logging` holds the history
122
+ * (D898). Default 2000; the files serve everything older.
123
+ */
124
+ logTailSize?: number;
120
125
  };
121
126
  retention: {
122
127
  detectionEventsDays: number;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * When may the kernel DELETE a parent's accessory children? (D49, 2026-10-21)
3
+ *
4
+ * Deleting an accessory is destructive: its id, bindings and history go with
5
+ * it, and a re-spawn gets a NEW id. Dreame without credentials answered
6
+ * `getAccessoryChildren()` with only the core child and the kernel pruned 97
7
+ * accessories. The contract:
8
+ *
9
+ * 1. A prune is only ever the result of a SUCCESSFUL read — the provider
10
+ * positively says "connected, and this is the complete list". Missing
11
+ * credentials, a disconnected parent, a failed or partial read, a boot
12
+ * before the first successful connect: all UNKNOWN, and unknown prunes
13
+ * nothing (nor does it confirm or cancel an earlier shrink).
14
+ * - `{ kind: 'complete', children }` is a successful read.
15
+ * - `{ kind: 'unknown', reason, known? }` is unknown; `known` children are
16
+ * still spawned (spawning is idempotent and destroys nothing).
17
+ * - a bare array (the legacy answer) is successful only while the parent
18
+ * reports itself `online` AND its feature probe has completed.
19
+ * 2. A SHRINK needs a second agreeing successful read on a LATER probe
20
+ * (`feature-probe.lastProbedAt` advanced). The first read that lacks a
21
+ * child only records it; the child is pruned when a successful read of a
22
+ * later probe still lacks it. A successful read that lists it again
23
+ * forgets the record.
24
+ */
25
+ import type { AccessoryChildrenAnswer, AccessoryChildSpec } from "@camstack/types";
26
+ export type AccessoryReadVerdict = {
27
+ readonly kind: "successful";
28
+ readonly children: readonly AccessoryChildSpec[];
29
+ } | {
30
+ readonly kind: "unknown";
31
+ readonly reason: string;
32
+ /** What may still be SPAWNED (spawning is idempotent and never destroys). */
33
+ readonly children: readonly AccessoryChildSpec[];
34
+ };
35
+ export interface AccessoryReadContext {
36
+ readonly online: boolean;
37
+ /** `feature-probe.lastProbedAt`; 0 = the probe never completed. */
38
+ readonly probedAt: number;
39
+ }
40
+ export declare function classifyAccessoryRead(answer: AccessoryChildrenAnswer, ctx: AccessoryReadContext): AccessoryReadVerdict;
41
+ export interface ShrinkDecision {
42
+ /** Confirmed by a successful read of a later probe: delete these. */
43
+ readonly prune: readonly number[];
44
+ /** Missing for the first time (or again on the same probe): kept, recorded. */
45
+ readonly deferred: readonly number[];
46
+ }
47
+ /** One per parent registration; in-memory on purpose (a restart starts over — the safe direction). */
48
+ export declare class AccessoryShrinkGate {
49
+ #private;
50
+ /**
51
+ * `missing` = the managed children a SUCCESSFUL read no longer lists. Never
52
+ * call this for an unknown read.
53
+ */
54
+ decide(missing: readonly number[], probedAt: number): ShrinkDecision;
55
+ }