@camstack/system 1.2.390 → 1.2.391

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 (503) hide show
  1. package/dist/addon/addon-api-factory.d.ts +30 -30
  2. package/dist/addon-routes/addon-route-registry.d.ts +31 -31
  3. package/dist/addon-runner.js +1 -1
  4. package/dist/addon-runner.mjs +1 -1
  5. package/dist/addon-utils.d.ts +22 -22
  6. package/dist/auth/admin-token-manager.d.ts +37 -67
  7. package/dist/auth/api-key-manager.d.ts +8 -8
  8. package/dist/auth/auth-audit-log.d.ts +29 -49
  9. package/dist/auth/auth-manager.d.ts +127 -126
  10. package/dist/auth/cidr.d.ts +8 -8
  11. package/dist/auth/external-identity-manager.d.ts +46 -34
  12. package/dist/auth/jwt-signing-key.d.ts +14 -14
  13. package/dist/auth/login-session-manager.d.ts +95 -135
  14. package/dist/auth/parse-record.d.ts +13 -13
  15. package/dist/auth/scope-matcher.d.ts +7 -7
  16. package/dist/auth/scoped-token-manager.d.ts +62 -62
  17. package/dist/auth/token-expiry.d.ts +49 -26
  18. package/dist/auth/totp-manager.d.ts +48 -48
  19. package/dist/auth/user-management-internal.d.ts +67 -52
  20. package/dist/auth/user-manager.d.ts +58 -58
  21. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
  22. package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
  23. package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
  24. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
  25. package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
  26. package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
  27. package/dist/builtins/alerts/device-label.d.ts +6 -6
  28. package/dist/builtins/alerts/index.d.ts +1 -1
  29. package/dist/builtins/alerts/prune-policy.d.ts +36 -36
  30. package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
  31. package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
  32. package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
  33. package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
  34. package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
  35. package/dist/builtins/autotrack/frame-error.d.ts +38 -38
  36. package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
  37. package/dist/builtins/autotrack/index.d.ts +2 -2
  38. package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
  39. package/dist/builtins/autotrack/target-selection.d.ts +33 -47
  40. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
  41. package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
  42. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
  43. package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
  44. package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
  45. package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
  46. package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
  47. package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
  48. package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
  49. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
  50. package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
  51. package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
  52. package/dist/builtins/calendars/calendar-color.d.ts +5 -1
  53. package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
  54. package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
  55. package/dist/builtins/calendars/index.d.ts +1 -1
  56. package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
  57. package/dist/builtins/camera-grid/addon.d.ts +200 -174
  58. package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
  59. package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
  60. package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
  61. package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
  62. package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
  63. package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
  64. package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
  65. package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
  66. package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
  67. package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
  68. package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
  69. package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
  70. package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
  71. package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
  72. package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
  73. package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
  74. package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
  75. package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
  76. package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
  77. package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
  78. package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
  79. package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
  80. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
  81. package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
  82. package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
  83. package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
  84. package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
  85. package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
  86. package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
  87. package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
  88. package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
  89. package/dist/builtins/camera-grid/index.d.ts +44 -44
  90. package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
  91. package/dist/builtins/composer/claim-gate.d.ts +54 -27
  92. package/dist/builtins/composer/composed-device-set.d.ts +40 -26
  93. package/dist/builtins/composer/composed-device.d.ts +39 -17
  94. package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
  95. package/dist/builtins/composer/composer-grafts.d.ts +57 -38
  96. package/dist/builtins/composer/composer-live-set.d.ts +15 -15
  97. package/dist/builtins/composer/composer-plan.d.ts +76 -60
  98. package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
  99. package/dist/builtins/composer/composer-seeds.d.ts +20 -14
  100. package/dist/builtins/composer/composer-verdict.d.ts +28 -14
  101. package/dist/builtins/composer/composer.addon.d.ts +23 -9
  102. package/dist/builtins/composer/composer.d.ts +145 -100
  103. package/dist/builtins/composer/composition-declarations.d.ts +50 -39
  104. package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
  105. package/dist/builtins/composer/composition-runtime.d.ts +178 -125
  106. package/dist/builtins/composer/composition-target.d.ts +38 -34
  107. package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
  108. package/dist/builtins/composer/deadline-timer.d.ts +13 -13
  109. package/dist/builtins/composer/existing-target.d.ts +90 -73
  110. package/dist/builtins/composer/field-record.d.ts +26 -19
  111. package/dist/builtins/composer/graft-host.d.ts +56 -32
  112. package/dist/builtins/composer/held-claims.d.ts +26 -9
  113. package/dist/builtins/composer/index.d.ts +1 -1
  114. package/dist/builtins/composer/own-field-reads.d.ts +26 -15
  115. package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
  116. package/dist/builtins/composer/slice-assembler.d.ts +19 -3
  117. package/dist/builtins/composer/source-readings.d.ts +67 -61
  118. package/dist/builtins/composer/source-tracker.d.ts +133 -69
  119. package/dist/builtins/console-logging/console-destination.d.ts +15 -8
  120. package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
  121. package/dist/builtins/console-logging/index.d.ts +3 -3
  122. package/dist/builtins/core-blocks/block-package.d.ts +37 -37
  123. package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
  124. package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
  125. package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
  126. package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
  127. package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
  128. package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
  129. package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
  130. package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
  131. package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
  132. package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
  133. package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
  134. package/dist/builtins/core-blocks/index.d.ts +8 -8
  135. package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
  136. package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
  137. package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
  138. package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
  139. package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
  140. package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
  141. package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
  142. package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
  143. package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
  144. package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
  145. package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
  146. package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
  147. package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
  148. package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
  149. package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
  150. package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
  151. package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
  152. package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
  153. package/dist/builtins/device-manager/device-projection.d.ts +53 -67
  154. package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
  155. package/dist/builtins/device-manager/device-queries.d.ts +63 -63
  156. package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
  157. package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
  158. package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
  159. package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
  160. package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
  161. package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
  162. package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
  163. package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
  164. package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
  165. package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
  166. package/dist/builtins/device-manager/index.d.ts +2 -2
  167. package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
  168. package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
  169. package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
  170. package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
  171. package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
  172. package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
  173. package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
  174. package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
  175. package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
  176. package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
  177. package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
  178. package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
  179. package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
  180. package/dist/builtins/device-manager/write-lock.d.ts +13 -13
  181. package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
  182. package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
  183. package/dist/builtins/hub-forwarder/index.d.ts +3 -3
  184. package/dist/builtins/keychain/index.d.ts +1 -1
  185. package/dist/builtins/keychain/key-sources.d.ts +19 -19
  186. package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
  187. package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
  188. package/dist/builtins/keychain/keychain-service.d.ts +128 -128
  189. package/dist/builtins/keychain/keychain-store.d.ts +96 -87
  190. package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
  191. package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
  192. package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
  193. package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
  194. package/dist/builtins/liveness-monitor/index.d.ts +2 -2
  195. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
  196. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
  197. package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
  198. package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
  199. package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
  200. package/dist/builtins/local-auth/index.d.ts +1 -1
  201. package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
  202. package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
  203. package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
  204. package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
  205. package/dist/builtins/local-network/address-book.d.ts +61 -36
  206. package/dist/builtins/local-network/index.d.ts +2 -2
  207. package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
  208. package/dist/builtins/local-network/local-hostname.d.ts +10 -10
  209. package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
  210. package/dist/builtins/loki-logging/index.d.ts +4 -4
  211. package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
  212. package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
  213. package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
  214. package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
  215. package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
  216. package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
  217. package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
  218. package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
  219. package/dist/builtins/native-metrics/index.d.ts +2 -2
  220. package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
  221. package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
  222. package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
  223. package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
  224. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
  225. package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
  226. package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
  227. package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
  228. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
  229. package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
  230. package/dist/builtins/platform-probe/index.d.ts +38 -30
  231. package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
  232. package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
  233. package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
  234. package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
  235. package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
  236. package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
  237. package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
  238. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
  239. package/dist/builtins/shared/device-state-changed.d.ts +9 -9
  240. package/dist/builtins/shared/settle-sources.d.ts +16 -16
  241. package/dist/builtins/snapshot/index.d.ts +2 -2
  242. package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
  243. package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
  244. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
  245. package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
  246. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
  247. package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
  248. package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
  249. package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
  250. package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
  251. package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
  252. package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
  253. package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
  254. package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
  255. package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
  256. package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
  257. package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
  258. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
  259. package/dist/builtins/sqlite-storage/index.d.ts +12 -12
  260. package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
  261. package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
  262. package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
  263. package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
  264. package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
  265. package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
  266. package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
  267. package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
  268. package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
  269. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
  270. package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
  271. package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
  272. package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
  273. package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
  274. package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
  275. package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
  276. package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
  277. package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
  278. package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
  279. package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
  280. package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
  281. package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
  282. package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
  283. package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
  284. package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
  285. package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
  286. package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
  287. package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
  288. package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
  289. package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
  290. package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
  291. package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
  292. package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
  293. package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
  294. package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
  295. package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
  296. package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
  297. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
  298. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
  299. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
  300. package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
  301. package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
  302. package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
  303. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
  304. package/dist/builtins/system-config/index.d.ts +2 -2
  305. package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
  306. package/dist/builtins/system-config/system-config.addon.d.ts +57 -100
  307. package/dist/builtins/system-config/system-config.addon.js +37 -33
  308. package/dist/builtins/system-config/system-config.addon.mjs +37 -33
  309. package/dist/builtins/winston-logging/index.d.ts +3 -3
  310. package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
  311. package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
  312. package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Bnr8brru.js} +18 -0
  313. package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-mHO_6r0G.mjs} +1 -1
  314. package/dist/download/hosted-model-revisions.d.ts +8 -8
  315. package/dist/download/model-download-service.d.ts +32 -32
  316. package/dist/download/model-downloader.d.ts +88 -88
  317. package/dist/events/event-bus.d.ts +6 -6
  318. package/dist/events/system-event-bus.d.ts +11 -11
  319. package/dist/feature/feature-manager.d.ts +6 -6
  320. package/dist/http/asset-compression.d.ts +35 -73
  321. package/dist/http/authenticated-file-server.d.ts +32 -32
  322. package/dist/http/data-plane-registry.d.ts +49 -39
  323. package/dist/http/file-data-plane.d.ts +14 -14
  324. package/dist/http/lan-http-bind.d.ts +24 -13
  325. package/dist/http/reverse-proxy.d.ts +36 -24
  326. package/dist/index.d.ts +137 -137
  327. package/dist/index.js +4 -3
  328. package/dist/index.mjs +2 -4
  329. package/dist/kernel/addon-class-resolver.d.ts +1 -1
  330. package/dist/kernel/addon-engine-manager.d.ts +20 -20
  331. package/dist/kernel/addon-health-monitor.d.ts +151 -151
  332. package/dist/kernel/addon-installer.d.ts +609 -609
  333. package/dist/kernel/addon-loader.d.ts +133 -133
  334. package/dist/kernel/addon-manifest.d.ts +118 -118
  335. package/dist/kernel/addon-residue.d.ts +28 -32
  336. package/dist/kernel/array-buffer-census.d.ts +84 -88
  337. package/dist/kernel/bootstrap-config.d.ts +3 -3
  338. package/dist/kernel/cap-router-builder.d.ts +145 -101
  339. package/dist/kernel/capability-handle.d.ts +41 -41
  340. package/dist/kernel/capability-registry.d.ts +588 -576
  341. package/dist/kernel/config-manager.d.ts +199 -199
  342. package/dist/kernel/config-schema.d.ts +132 -128
  343. package/dist/kernel/custom-action-registry.d.ts +25 -25
  344. package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
  345. package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
  346. package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
  347. package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
  348. package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
  349. package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
  350. package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
  351. package/dist/kernel/deps/npm-command.d.ts +45 -45
  352. package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
  353. package/dist/kernel/deps/system-package-broker.d.ts +20 -20
  354. package/dist/kernel/deps/system-package-client.d.ts +3 -3
  355. package/dist/kernel/device-registry.d.ts +27 -27
  356. package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
  357. package/dist/kernel/event-plane-report.d.ts +174 -174
  358. package/dist/kernel/fs-utils.d.ts +70 -70
  359. package/dist/kernel/gc-census.d.ts +119 -119
  360. package/dist/kernel/heap-spaces.d.ts +87 -87
  361. package/dist/kernel/heap-watch.d.ts +706 -706
  362. package/dist/kernel/host-externals.d.ts +8 -8
  363. package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
  364. package/dist/kernel/index.d.ts +115 -113
  365. package/dist/kernel/inference/inference-resolver.d.ts +13 -13
  366. package/dist/kernel/infra-capabilities.d.ts +7 -7
  367. package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
  368. package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
  369. package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
  370. package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
  371. package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
  372. package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
  373. package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
  374. package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
  375. package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
  376. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
  377. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
  378. package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
  379. package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
  380. package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
  381. package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
  382. package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
  383. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
  384. package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
  385. package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
  386. package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
  387. package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
  388. package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
  389. package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
  390. package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
  391. package/dist/kernel/moleculer/event-bus.d.ts +73 -73
  392. package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
  393. package/dist/kernel/moleculer/hub-service.d.ts +42 -42
  394. package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
  395. package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
  396. package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
  397. package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
  398. package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
  399. package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
  400. package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
  401. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  402. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
  403. package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
  404. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
  405. package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
  406. package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
  407. package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
  408. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
  409. package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
  410. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
  411. package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
  412. package/dist/kernel/moleculer/node-registry.d.ts +120 -120
  413. package/dist/kernel/moleculer/process-context.d.ts +2 -2
  414. package/dist/kernel/moleculer/process-service.d.ts +168 -168
  415. package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
  416. package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
  417. package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
  418. package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
  419. package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
  420. package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
  421. package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
  422. package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
  423. package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
  424. package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
  425. package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
  426. package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
  427. package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
  428. package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
  429. package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
  430. package/dist/kernel/outbound-queue-watch.d.ts +74 -74
  431. package/dist/kernel/process-cpu-census.d.ts +55 -55
  432. package/dist/kernel/provider-kind-drift.d.ts +17 -8
  433. package/dist/kernel/restart-coordinator.d.ts +71 -71
  434. package/dist/kernel/settings-door-view.d.ts +36 -25
  435. package/dist/kernel/settings-read-error.d.ts +29 -31
  436. package/dist/kernel/settings-view-types.d.ts +100 -95
  437. package/dist/kernel/socket-plane-report.d.ts +214 -153
  438. package/dist/kernel/status-overlay.d.ts +31 -11
  439. package/dist/kernel/storage-location-registry.d.ts +50 -50
  440. package/dist/kernel/store-settings-view.d.ts +13 -13
  441. package/dist/kernel/system-settings-mirror.d.ts +40 -28
  442. package/dist/kernel/system-settings-policy.d.ts +15 -34
  443. package/dist/kernel/transport/cap-action-census.d.ts +183 -183
  444. package/dist/kernel/transport/cap-action-name.d.ts +84 -84
  445. package/dist/kernel/transport/cap-child-index.d.ts +41 -41
  446. package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
  447. package/dist/kernel/transport/cap-route.d.ts +139 -139
  448. package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
  449. package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
  450. package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
  451. package/dist/kernel/transport/create-local-transport.d.ts +5 -5
  452. package/dist/kernel/transport/frame-codec.d.ts +109 -109
  453. package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
  454. package/dist/kernel/transport/index.d.ts +36 -36
  455. package/dist/kernel/transport/local-child-client.d.ts +184 -184
  456. package/dist/kernel/transport/local-child-registry.d.ts +592 -592
  457. package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
  458. package/dist/kernel/transport/local-transport.d.ts +92 -92
  459. package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
  460. package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
  461. package/dist/kernel/transport/socket-channel.d.ts +110 -110
  462. package/dist/kernel/transport/socket-traffic.d.ts +96 -96
  463. package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
  464. package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
  465. package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
  466. package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
  467. package/dist/kernel/transport/uds-logger.d.ts +33 -33
  468. package/dist/kernel/utils/ring-buffer.d.ts +12 -12
  469. package/dist/kernel/workspace-detect.d.ts +7 -7
  470. package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
  471. package/dist/logging/formatter.d.ts +52 -25
  472. package/dist/logging/log-manager.d.ts +133 -133
  473. package/dist/logging/log-redactor.d.ts +22 -1
  474. package/dist/logging/log-ring-buffer.d.ts +57 -57
  475. package/dist/logging/logging-gate.d.ts +69 -25
  476. package/dist/logging/logging-gate.singleton.d.ts +12 -1
  477. package/dist/logging/partitioned-log-buffer.d.ts +161 -161
  478. package/dist/logging/scoped-logger.d.ts +14 -14
  479. package/dist/network/network-quality.d.ts +8 -8
  480. package/dist/notification/notification-service.d.ts +37 -37
  481. package/dist/notification/toast-service.d.ts +18 -18
  482. package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
  483. package/dist/pipeline/pipeline-runner.d.ts +6 -6
  484. package/dist/pipeline/pipeline-validator.d.ts +8 -8
  485. package/dist/process/proc-stat.d.ts +51 -51
  486. package/dist/process/resource-monitor.d.ts +19 -19
  487. package/dist/python/python-env-manager.d.ts +10 -10
  488. package/dist/repl/interfaces.d.ts +21 -21
  489. package/dist/repl/repl-engine.d.ts +6 -6
  490. package/dist/storage/fs-storage-backend.d.ts +35 -35
  491. package/dist/storage/storage-location-manager.d.ts +21 -21
  492. package/dist/storage/storage-manager.d.ts +68 -68
  493. package/dist/tls/boot-tls.d.ts +24 -24
  494. package/dist/tls/cert-evaluation.d.ts +25 -25
  495. package/dist/tls/cert-identity.d.ts +39 -39
  496. package/dist/tls/cert-issue.d.ts +37 -17
  497. package/dist/tls/cert-manager.d.ts +86 -84
  498. package/dist/tls/https-listener.d.ts +16 -16
  499. package/dist/tls/index.d.ts +8 -8
  500. package/dist/tls/tls-actions.d.ts +18 -18
  501. package/dist/tls/tls-status.d.ts +15 -15
  502. package/dist/tls/uploaded-cert.d.ts +9 -9
  503. package/package.json +9 -3
@@ -1,193 +1,240 @@
1
- import { ContainerMemorySnapshot, IScopedLogger } from '@camstack/types';
2
1
  /**
3
- * Which hierarchy answered. Reported so a reading is never ambiguous.
4
- *
5
- * Narrowed from {@link ContainerMemorySnapshot}'s own field rather than
6
- * re-declared: the shape is the capability's Zod schema and this file must not
7
- * own a second copy of it.
8
- */
9
- export type CgroupMemorySource = ContainerMemorySnapshot['source'];
2
+ * The container's own memory, read from the cgroup — the number no sum of
3
+ * per-process RSS can ever produce.
4
+ *
5
+ * ## Why this file exists
6
+ *
7
+ * Every memory number camstack had before it was PER PROCESS: the `[mem]`
8
+ * heartbeat per runner (`packages/system/src/kernel/heap-watch.ts`) and the
9
+ * `ps`-derived `memoryRssBytes` on each `NodeProcess`. On 2026-08-29 the hub's
10
+ * 39 processes summed to 15.81 GiB while the container reported 23.14 GiB, and
11
+ * the missing ~7 GiB was read for a leak. It was not one. `memory.stat` settled
12
+ * it in a single command:
13
+ *
14
+ * ```
15
+ * anon 19946409984 file 3642105856 shmem 1860067328 slab 95465928
16
+ * memory.current 24045301760 memory.max 34359738368
17
+ * ```
18
+ *
19
+ * **The sum of per-process RSS can never equal the container total.** Page
20
+ * cache (`file`), shared memory (`shmem`, which is where the i915 driver parks
21
+ * GPU buffers) and kernel slab belong to the cgroup, not to any process in the
22
+ * way `ps` counts. On this hub they are ~6 GiB of 23. Read once by hand they
23
+ * say nothing about direction; that is what this file is for.
24
+ *
25
+ * ## What it is NOT
26
+ *
27
+ * Measurement only. Nothing here reclaims, trims, drops caches or tunes an
28
+ * allocator. The operator's standing position is that memory ceilings and
29
+ * `malloc` variables are patches over deeper problems
30
+ * (`docs/design/plans/2026-08-29-remove-the-memory-ceilings.md`); this exists
31
+ * to make the deeper problem visible, never to paper over it.
32
+ *
33
+ * ## Absent is ABSENT
34
+ *
35
+ * Every unavailable number is `null`, never `0`. A node with no cgroup (a
36
+ * developer Mac, a bare-metal host, a container with the hierarchy hidden)
37
+ * produces `null` from {@link ContainerMemoryProbe.sample} and contributes no
38
+ * point at all — because a zero here is indistinguishable from a healthy
39
+ * container that happens to use no memory, which is the exact class of lie
40
+ * this repo has been bitten by.
41
+ *
42
+ * ## The reads are pure, the I/O is injected
43
+ *
44
+ * Every parse below is a pure function over text, so the shapes are testable
45
+ * against real `memory.stat` fixtures without a Linux kernel. The only impure
46
+ * surface is {@link CgroupFileReader}, one method wide.
47
+ */
48
+ import type { ContainerMemorySnapshot, IScopedLogger } from "@camstack/types";
49
+ /**
50
+ * Which hierarchy answered. Reported so a reading is never ambiguous.
51
+ *
52
+ * Narrowed from {@link ContainerMemorySnapshot}'s own field rather than
53
+ * re-declared: the shape is the capability's Zod schema and this file must not
54
+ * own a second copy of it.
55
+ */
56
+ export type CgroupMemorySource = ContainerMemorySnapshot["source"];
10
57
  /** The one impure surface. Returns `null` for anything unreadable. */
11
58
  export interface CgroupFileReader {
12
- read(path: string): string | null;
59
+ read(path: string): string | null;
13
60
  }
14
61
  /** `readFileSync`, with every failure flattened to `null`. */
15
62
  export declare const nodeCgroupFileReader: CgroupFileReader;
16
63
  /** Where the v2 unified hierarchy is mounted, and where v1 hangs its controllers. */
17
64
  export declare const CGROUP_MOUNT_ROOT = "/sys/fs/cgroup";
18
65
  /**
19
- * The i915 GEM accounting file.
20
- *
21
- * **debugfs, and it is not mounted in our containers.** Verified on the live
22
- * hub on 2026-08-29: readable on the Unraid host (`6014 shrinkable [0 free]
23
- * objects, 1194934272 bytes`), `ENOENT` inside the `CamStack` container where
24
- * `native-metrics` actually runs. It is probed ONCE per process and latched —
25
- * a bind mount cannot appear under a running container — so an absent file
26
- * costs one failed `open` for the life of the runner and one log line, never a
27
- * failure per tick.
28
- *
29
- * Making it populate is a one-line change on the container, not here:
30
- * mounting `/sys/kernel/debug` read-only into `CamStack` fills this field on
31
- * the next sample with no code change.
32
- */
66
+ * The i915 GEM accounting file.
67
+ *
68
+ * **debugfs, and it is not mounted in our containers.** Verified on the live
69
+ * hub on 2026-08-29: readable on the Unraid host (`6014 shrinkable [0 free]
70
+ * objects, 1194934272 bytes`), `ENOENT` inside the `CamStack` container where
71
+ * `native-metrics` actually runs. It is probed ONCE per process and latched —
72
+ * a bind mount cannot appear under a running container — so an absent file
73
+ * costs one failed `open` for the life of the runner and one log line, never a
74
+ * failure per tick.
75
+ *
76
+ * Making it populate is a one-line change on the container, not here:
77
+ * mounting `/sys/kernel/debug` read-only into `CamStack` fills this field on
78
+ * the next sample with no code change.
79
+ */
33
80
  export declare const I915_GEM_OBJECTS_PATH = "/sys/kernel/debug/dri/0/i915_gem_objects";
34
81
  /** Where the numbers for one hierarchy live, once resolved. */
35
82
  export interface CgroupMemoryLayout {
36
- readonly source: CgroupMemorySource;
37
- /** Directory the three files below sit in. Kept for the resolution log line. */
38
- readonly directory: string;
39
- readonly currentPath: string;
40
- readonly limitPath: string;
41
- readonly statPath: string;
83
+ readonly source: CgroupMemorySource;
84
+ /** Directory the three files below sit in. Kept for the resolution log line. */
85
+ readonly directory: string;
86
+ readonly currentPath: string;
87
+ readonly limitPath: string;
88
+ readonly statPath: string;
42
89
  }
43
90
  /** What `/proc/self/cgroup` says about this process. */
44
91
  export interface CgroupSelfEntry {
45
- readonly version: 'v2' | 'v1';
46
- /** Path RELATIVE to the hierarchy root, always leading-slashed. */
47
- readonly path: string;
92
+ readonly version: "v2" | "v1";
93
+ /** Path RELATIVE to the hierarchy root, always leading-slashed. */
94
+ readonly path: string;
48
95
  }
49
96
  /**
50
- * Parse `/proc/self/cgroup`.
51
- *
52
- * Two formats, and the file may contain both on a hybrid host:
53
- *
54
- * ```
55
- * 0::/ ← v2 unified
56
- * 5:memory:/docker/9f3c… ← v1, memory controller
57
- * 4:cpu,cpuacct:/docker/9f3c… ← v1, other controllers
58
- * ```
59
- *
60
- * v2 wins when present: on a hybrid host the unified hierarchy is the one
61
- * carrying `memory.current`, and every camstack deployment is v2 (verified on
62
- * the live hub, which reports the single line `0::/`).
63
- *
64
- * Returns `null` when the file names no memory hierarchy at all — which is
65
- * also what a non-Linux host produces, because there is no file to read.
66
- */
97
+ * Parse `/proc/self/cgroup`.
98
+ *
99
+ * Two formats, and the file may contain both on a hybrid host:
100
+ *
101
+ * ```
102
+ * 0::/ ← v2 unified
103
+ * 5:memory:/docker/9f3c… ← v1, memory controller
104
+ * 4:cpu,cpuacct:/docker/9f3c… ← v1, other controllers
105
+ * ```
106
+ *
107
+ * v2 wins when present: on a hybrid host the unified hierarchy is the one
108
+ * carrying `memory.current`, and every camstack deployment is v2 (verified on
109
+ * the live hub, which reports the single line `0::/`).
110
+ *
111
+ * Returns `null` when the file names no memory hierarchy at all — which is
112
+ * also what a non-Linux host produces, because there is no file to read.
113
+ */
67
114
  export declare function parseCgroupSelf(text: string): CgroupSelfEntry | null;
68
115
  /**
69
- * Parse a `memory.stat` file — v1 or v2, both are `key value` per line.
70
- *
71
- * Unknown keys are KEPT rather than refused: a v2 `memory.stat` carries ~50
72
- * fields and we read five of them, and a kernel that adds a sixth must not
73
- * turn into a parse failure. A malformed line is skipped, not thrown on.
74
- */
116
+ * Parse a `memory.stat` file — v1 or v2, both are `key value` per line.
117
+ *
118
+ * Unknown keys are KEPT rather than refused: a v2 `memory.stat` carries ~50
119
+ * fields and we read five of them, and a kernel that adds a sixth must not
120
+ * turn into a parse failure. A malformed line is skipped, not thrown on.
121
+ */
75
122
  export declare function parseCgroupStat(text: string): ReadonlyMap<string, number>;
76
123
  /**
77
- * Parse a single-scalar cgroup file (`memory.current`, `memory.max`, …).
78
- *
79
- * `max` — v2's word for "no limit" — and v1's `V1_UNLIMITED_SENTINEL` both
80
- * become `null`, because a ceiling nothing can reach is not a ceiling and
81
- * charting it as 8 exabytes would flatten every real series to zero.
82
- */
124
+ * Parse a single-scalar cgroup file (`memory.current`, `memory.max`, …).
125
+ *
126
+ * `max` — v2's word for "no limit" — and v1's `V1_UNLIMITED_SENTINEL` both
127
+ * become `null`, because a ceiling nothing can reach is not a ceiling and
128
+ * charting it as 8 exabytes would flatten every real series to zero.
129
+ */
83
130
  export declare function parseCgroupScalar(text: string): number | null;
84
131
  /**
85
- * Parse the first line of `i915_gem_objects`.
86
- *
87
- * ```
88
- * 6014 shrinkable [0 free] objects, 1194934272 bytes
89
- * ```
90
- *
91
- * Only the byte total is taken. The format has changed across kernel releases
92
- * more than once, so a line that does not match reads `null` — an unrecognised
93
- * format is UNKNOWN, never zero.
94
- */
132
+ * Parse the first line of `i915_gem_objects`.
133
+ *
134
+ * ```
135
+ * 6014 shrinkable [0 free] objects, 1194934272 bytes
136
+ * ```
137
+ *
138
+ * Only the byte total is taken. The format has changed across kernel releases
139
+ * more than once, so a line that does not match reads `null` — an unrecognised
140
+ * format is UNKNOWN, never zero.
141
+ */
95
142
  export declare function parseI915GemObjects(text: string): number | null;
96
143
  /**
97
- * Find the cgroup from INSIDE this process — never a hard-coded path.
98
- *
99
- * The path the hub happens to have (`/sys/fs/cgroup/docker/<id>/memory.stat`
100
- * as seen from the Unraid host) is an artefact of where you are standing. From
101
- * inside the container the same cgroup is at the mount ROOT, because Docker
102
- * gives the container its own cgroup namespace and `/proc/self/cgroup` reports
103
- * `0::/`. Hard-coding either one breaks the other.
104
- *
105
- * So the resolution is: ask `/proc/self/cgroup` which hierarchy and which
106
- * path, then take the FIRST candidate directory that actually publishes the
107
- * usage file.
108
- *
109
- * - **v2** — `<mount><path>` then `<mount>`. The second candidate is the
110
- * namespaced case and the one that answers on our hub; the first is the
111
- * un-namespaced case (a host process, or `--cgroupns=host`).
112
- * - **v1** — `<mount>/memory<path>` then `<mount>/memory`, same reasoning.
113
- * - **neither** — `null`. macOS has no `/proc/self/cgroup` at all, so a
114
- * developer Mac lands here and reports nothing, which is the truth.
115
- */
144
+ * Find the cgroup from INSIDE this process — never a hard-coded path.
145
+ *
146
+ * The path the hub happens to have (`/sys/fs/cgroup/docker/<id>/memory.stat`
147
+ * as seen from the Unraid host) is an artefact of where you are standing. From
148
+ * inside the container the same cgroup is at the mount ROOT, because Docker
149
+ * gives the container its own cgroup namespace and `/proc/self/cgroup` reports
150
+ * `0::/`. Hard-coding either one breaks the other.
151
+ *
152
+ * So the resolution is: ask `/proc/self/cgroup` which hierarchy and which
153
+ * path, then take the FIRST candidate directory that actually publishes the
154
+ * usage file.
155
+ *
156
+ * - **v2** — `<mount><path>` then `<mount>`. The second candidate is the
157
+ * namespaced case and the one that answers on our hub; the first is the
158
+ * un-namespaced case (a host process, or `--cgroupns=host`).
159
+ * - **v1** — `<mount>/memory<path>` then `<mount>/memory`, same reasoning.
160
+ * - **neither** — `null`. macOS has no `/proc/self/cgroup` at all, so a
161
+ * developer Mac lands here and reports nothing, which is the truth.
162
+ */
116
163
  export declare function resolveCgroupMemoryLayout(fs: CgroupFileReader): CgroupMemoryLayout | null;
117
164
  /**
118
- * Turn one layout's three files into a snapshot.
119
- *
120
- * Pure over the text, so the whole mapping — including a v2 `memory.stat` full
121
- * of fields we do not read — is testable against a real fixture.
122
- *
123
- * v1's `memory.stat` names the same quantities differently and publishes fewer
124
- * of them: `rss` is the anonymous charge, `cache` is the page cache, and there
125
- * is no slab accounting at all. Mapping them onto the same field names is what
126
- * makes a v1 node and a v2 node comparable; reporting `slabBytes: null` on v1
127
- * is what stops that comparison from lying.
128
- */
165
+ * Turn one layout's three files into a snapshot.
166
+ *
167
+ * Pure over the text, so the whole mapping — including a v2 `memory.stat` full
168
+ * of fields we do not read — is testable against a real fixture.
169
+ *
170
+ * v1's `memory.stat` names the same quantities differently and publishes fewer
171
+ * of them: `rss` is the anonymous charge, `cache` is the page cache, and there
172
+ * is no slab accounting at all. Mapping them onto the same field names is what
173
+ * makes a v1 node and a v2 node comparable; reporting `slabBytes: null` on v1
174
+ * is what stops that comparison from lying.
175
+ */
129
176
  export declare function buildContainerMemorySnapshot(input: {
130
- readonly source: CgroupMemorySource;
131
- readonly currentText: string;
132
- readonly limitText: string | null;
133
- readonly statText: string | null;
134
- readonly gpuShmemBytes: number | null;
177
+ readonly source: CgroupMemorySource;
178
+ readonly currentText: string;
179
+ readonly limitText: string | null;
180
+ readonly statText: string | null;
181
+ readonly gpuShmemBytes: number | null;
135
182
  }): ContainerMemorySnapshot | null;
136
183
  export interface ContainerMemoryProbeDeps {
137
- readonly logger: IScopedLogger;
138
- readonly fs?: CgroupFileReader;
139
- /** Set `false` to skip the debugfs probe entirely. Default `true`. */
140
- readonly readGpu?: boolean;
184
+ readonly logger: IScopedLogger;
185
+ readonly fs?: CgroupFileReader;
186
+ /** Set `false` to skip the debugfs probe entirely. Default `true`. */
187
+ readonly readGpu?: boolean;
141
188
  }
142
189
  /**
143
- * The sampler. Resolves once, latches, and logs TRANSITIONS only.
144
- *
145
- * Three states are worth a line and none of them is worth one per tick:
146
- *
147
- * 1. **Resolution** — once, at the first sample. Either the layout that
148
- * answered, or "no cgroup on this node", which is a fact about the node and
149
- * not an error.
150
- * 2. **GPU probe** — once, at the first sample. Absent debugfs is the normal
151
- * case inside a container and is stated as such, then never retried: a bind
152
- * mount cannot appear under a running container.
153
- * 3. **Read failing / recovering** — a cgroup that resolved and then stopped
154
- * answering is a real change and says so, once in each direction. A tick
155
- * that fails while already failing is silent, because the first line
156
- * already said it.
157
- *
158
- * The silence is bounded by design: at the 10 s snapshot cadence a per-tick
159
- * warning would be 8 640 lines a day on a node that simply is not Linux.
160
- */
190
+ * The sampler. Resolves once, latches, and logs TRANSITIONS only.
191
+ *
192
+ * Three states are worth a line and none of them is worth one per tick:
193
+ *
194
+ * 1. **Resolution** — once, at the first sample. Either the layout that
195
+ * answered, or "no cgroup on this node", which is a fact about the node and
196
+ * not an error.
197
+ * 2. **GPU probe** — once, at the first sample. Absent debugfs is the normal
198
+ * case inside a container and is stated as such, then never retried: a bind
199
+ * mount cannot appear under a running container.
200
+ * 3. **Read failing / recovering** — a cgroup that resolved and then stopped
201
+ * answering is a real change and says so, once in each direction. A tick
202
+ * that fails while already failing is silent, because the first line
203
+ * already said it.
204
+ *
205
+ * The silence is bounded by design: at the 10 s snapshot cadence a per-tick
206
+ * warning would be 8 640 lines a day on a node that simply is not Linux.
207
+ */
161
208
  export declare class ContainerMemoryProbe {
162
- private readonly logger;
163
- private readonly fs;
164
- private readonly wantGpu;
165
- private resolved;
166
- private layout;
167
- private gpuProbed;
168
- private gpuReadable;
169
- /** `null` until the first sample — so the FIRST outcome is a transition too. */
170
- private lastReadOk;
171
- constructor(deps: ContainerMemoryProbeDeps);
172
- /** Did this node resolve a cgroup at all? Absent is a reportable fact. */
173
- get available(): boolean;
174
- /**
175
- * One reading, or `null` when this node has no cgroup or the cgroup stopped
176
- * answering. `null` is ABSENT — the caller contributes no point, and no
177
- * point is what a chart must show, never a zero.
178
- */
179
- sample(): ContainerMemorySnapshot | null;
180
- /** Resolve on first use and never again — a cgroup does not move under a pid. */
181
- private resolveOnce;
182
- /**
183
- * The GPU number, probed once.
184
- *
185
- * It is host-wide and lives in debugfs, so it is absent far more often than
186
- * it is present — inside every camstack container today. One `open` decides
187
- * it for the life of the process; after that an unreadable file costs
188
- * nothing at all, not even a syscall.
189
- */
190
- private readGpuShmem;
191
- /** Log a read outcome only when it CHANGES. Never once per tick. */
192
- private noteRead;
209
+ private readonly logger;
210
+ private readonly fs;
211
+ private readonly wantGpu;
212
+ private resolved;
213
+ private layout;
214
+ private gpuProbed;
215
+ private gpuReadable;
216
+ /** `null` until the first sample — so the FIRST outcome is a transition too. */
217
+ private lastReadOk;
218
+ constructor(deps: ContainerMemoryProbeDeps);
219
+ /** Did this node resolve a cgroup at all? Absent is a reportable fact. */
220
+ get available(): boolean;
221
+ /**
222
+ * One reading, or `null` when this node has no cgroup or the cgroup stopped
223
+ * answering. `null` is ABSENT — the caller contributes no point, and no
224
+ * point is what a chart must show, never a zero.
225
+ */
226
+ sample(): ContainerMemorySnapshot | null;
227
+ /** Resolve on first use and never again — a cgroup does not move under a pid. */
228
+ private resolveOnce;
229
+ /**
230
+ * The GPU number, probed once.
231
+ *
232
+ * It is host-wide and lives in debugfs, so it is absent far more often than
233
+ * it is present — inside every camstack container today. One `open` decides
234
+ * it for the life of the process; after that an unreadable file costs
235
+ * nothing at all, not even a syscall.
236
+ */
237
+ private readGpuShmem;
238
+ /** Log a read outcome only when it CHANGES. Never once per tick. */
239
+ private noteRead;
193
240
  }
@@ -1,112 +1,159 @@
1
- import { IScopedLogger } from '@camstack/types';
2
- import { CgroupFileReader } from './cgroup-memory.js';
1
+ /**
2
+ * The container's pid ceiling — the limit that stops work without an error
3
+ * anyone reads.
4
+ *
5
+ * ## Why this file exists
6
+ *
7
+ * A container cgroup counts **THREADS**, not processes. This hub runs with
8
+ * `pids.max` 2048 and was measured refusing 22 `clone()` calls in 45 minutes.
9
+ * A refused clone is not an exception that travels: an ffmpeg child that
10
+ * cannot start its decode threads runs degraded or dies, a worker pool comes
11
+ * up short, a spawn fails — and what the operator SEES is media that stopped.
12
+ * Nothing in the product read the counter, so the only trace of the ceiling
13
+ * was the damage it did.
14
+ *
15
+ * Live hub, 2026-09-18, verbatim:
16
+ *
17
+ * ```
18
+ * /sys/fs/cgroup/pids.current → 973
19
+ * /sys/fs/cgroup/pids.max → 2048
20
+ * /sys/fs/cgroup/pids.events → max 0
21
+ * ```
22
+ *
23
+ * ## `pids.events` is the proof, `pids.current` is only the weather
24
+ *
25
+ * `pids.current` says how close we are. `pids.events`' `max` counter says how
26
+ * many times the kernel ALREADY said no — it is monotonic for the life of the
27
+ * cgroup, so a rise between two samples is a refusal that happened in that
28
+ * window, and nothing else can produce it. That is the difference between "it
29
+ * looks tight" and "we lost work", and only the second one is worth waking
30
+ * someone for.
31
+ *
32
+ * ## What it is NOT
33
+ *
34
+ * Measurement only. Nothing here raises a limit, kills a process or trims a
35
+ * pool. The ceiling is the operator's (`--pids-limit` on the container) and
36
+ * the thread counts are the subsystems' own; this file exists so that both are
37
+ * decided on a number instead of a hunch.
38
+ *
39
+ * ## Absent is ABSENT
40
+ *
41
+ * A node with no cgroup — a developer Mac, a bare-metal host — produces
42
+ * `null`, never zero, exactly as {@link ContainerMemoryProbe} does. `max` of
43
+ * `max` (no ceiling) is `null` too: a fraction of no ceiling is not 0 %.
44
+ *
45
+ * The parsing is pure and the I/O is the same injected {@link CgroupFileReader}
46
+ * the memory probe uses, so every shape here is testable against real files.
47
+ */
48
+ import type { IScopedLogger } from "@camstack/types";
49
+ import type { CgroupFileReader } from "./cgroup-memory.js";
3
50
  /** Which hierarchy answered — reported so a reading is never ambiguous. */
4
- export type CgroupPidsSource = 'cgroup-v2' | 'cgroup-v1';
51
+ export type CgroupPidsSource = "cgroup-v2" | "cgroup-v1";
5
52
  /** One reading of the ceiling and our distance from it. */
6
53
  export interface ContainerPidsSnapshot {
7
- readonly source: CgroupPidsSource;
8
- /** Threads (not processes) charged to this cgroup right now. */
9
- readonly current: number;
10
- /** The ceiling, or `null` when there is none. */
11
- readonly max: number | null;
12
- /** `current / max`, or `null` without a ceiling. */
13
- readonly usedFraction: number | null;
14
- /** Lifetime count of REFUSED forks, or `null` when the kernel does not say. */
15
- readonly refusals: number | null;
54
+ readonly source: CgroupPidsSource;
55
+ /** Threads (not processes) charged to this cgroup right now. */
56
+ readonly current: number;
57
+ /** The ceiling, or `null` when there is none. */
58
+ readonly max: number | null;
59
+ /** `current / max`, or `null` without a ceiling. */
60
+ readonly usedFraction: number | null;
61
+ /** Lifetime count of REFUSED forks, or `null` when the kernel does not say. */
62
+ readonly refusals: number | null;
16
63
  }
17
64
  /** Where the files for one hierarchy live, once resolved. */
18
65
  export interface CgroupPidsLayout {
19
- readonly source: CgroupPidsSource;
20
- readonly directory: string;
21
- readonly currentPath: string;
22
- readonly maxPath: string;
23
- readonly eventsPath: string;
66
+ readonly source: CgroupPidsSource;
67
+ readonly directory: string;
68
+ readonly currentPath: string;
69
+ readonly maxPath: string;
70
+ readonly eventsPath: string;
24
71
  }
25
72
  /**
26
- * `pids.max` is either a number or the word `max`.
27
- *
28
- * `max` means NO ceiling, and that is `null` — not `Infinity`, not a huge
29
- * number. A ceiling nothing can reach is not a ceiling, and reporting one
30
- * would make every utilisation fraction on an unlimited node read as 0 %.
31
- */
73
+ * `pids.max` is either a number or the word `max`.
74
+ *
75
+ * `max` means NO ceiling, and that is `null` — not `Infinity`, not a huge
76
+ * number. A ceiling nothing can reach is not a ceiling, and reporting one
77
+ * would make every utilisation fraction on an unlimited node read as 0 %.
78
+ */
32
79
  export declare function parsePidsMax(text: string): number | null;
33
80
  /**
34
- * `pids.events` is `key value` per line; we read exactly one key:
35
- *
36
- * ```
37
- * max 22
38
- * ```
39
- *
40
- * `max` is the number of times a fork was refused because the limit was hit.
41
- * A kernel that publishes only `pids.events.local`, or a file we cannot make
42
- * sense of, answers `null` — unknown, never zero, because zero here means "no
43
- * refusals have ever happened" and that is a claim.
44
- */
81
+ * `pids.events` is `key value` per line; we read exactly one key:
82
+ *
83
+ * ```
84
+ * max 22
85
+ * ```
86
+ *
87
+ * `max` is the number of times a fork was refused because the limit was hit.
88
+ * A kernel that publishes only `pids.events.local`, or a file we cannot make
89
+ * sense of, answers `null` — unknown, never zero, because zero here means "no
90
+ * refusals have ever happened" and that is a claim.
91
+ */
45
92
  export declare function parsePidsEvents(text: string): number | null;
46
93
  /** Turn one layout's files into a snapshot. Pure over the text. */
47
94
  export declare function buildContainerPidsSnapshot(input: {
48
- readonly source: CgroupPidsSource;
49
- readonly currentText: string;
50
- readonly maxText: string | null;
51
- readonly eventsText: string | null;
95
+ readonly source: CgroupPidsSource;
96
+ readonly currentText: string;
97
+ readonly maxText: string | null;
98
+ readonly eventsText: string | null;
52
99
  }): ContainerPidsSnapshot | null;
53
100
  /**
54
- * Find the pids cgroup from INSIDE this process, never a hard-coded path —
55
- * same reasoning as the memory layout: from inside the container the cgroup is
56
- * at the mount ROOT (`0::/`), from the host it is `<mount>/docker/<id>`, and
57
- * hard-coding either one breaks the other.
58
- */
101
+ * Find the pids cgroup from INSIDE this process, never a hard-coded path —
102
+ * same reasoning as the memory layout: from inside the container the cgroup is
103
+ * at the mount ROOT (`0::/`), from the host it is `<mount>/docker/<id>`, and
104
+ * hard-coding either one breaks the other.
105
+ */
59
106
  export declare function resolveCgroupPidsLayout(fs: CgroupFileReader): CgroupPidsLayout | null;
60
107
  export interface ContainerPidsProbeDeps {
61
- readonly logger: IScopedLogger;
62
- readonly fs?: CgroupFileReader;
63
- readonly now?: () => number;
64
- /** How often the heartbeat line is written. Default 60 s. */
65
- readonly heartbeatMs?: number;
66
- /** Utilisation at which the heartbeat becomes a WARN. Default 0.8. */
67
- readonly pressureFraction?: number;
108
+ readonly logger: IScopedLogger;
109
+ readonly fs?: CgroupFileReader;
110
+ readonly now?: () => number;
111
+ /** How often the heartbeat line is written. Default 60 s. */
112
+ readonly heartbeatMs?: number;
113
+ /** Utilisation at which the heartbeat becomes a WARN. Default 0.8. */
114
+ readonly pressureFraction?: number;
68
115
  }
69
116
  /**
70
- * The sampler.
71
- *
72
- * Its logging is deliberately different from the memory probe's, because the
73
- * operator asked for a DAY of regular readings before deciding whether to
74
- * raise the ceiling: there is a heartbeat, on its own cadence, whatever the
75
- * sampling tick is. Three lines exist and no more:
76
- *
77
- * 1. **Resolution**, once — the hierarchy that answered, or "no cgroup here",
78
- * which is a fact about the node and not an error.
79
- * 2. **Heartbeat**, every `heartbeatMs` — current, ceiling, utilisation and
80
- * the lifetime refusal count. INFO while there is room, WARN while we are
81
- * above `pressureFraction`, and one INFO when it comes back down, so the
82
- * log carries BOTH edges of a pressure episode rather than only its start.
83
- * 3. **A refusal**, immediately — the `pids.events` counter rose, so the
84
- * kernel said no that many times since the last sample and some subsystem
85
- * silently did without a thread. This one never waits for the heartbeat.
86
- */
117
+ * The sampler.
118
+ *
119
+ * Its logging is deliberately different from the memory probe's, because the
120
+ * operator asked for a DAY of regular readings before deciding whether to
121
+ * raise the ceiling: there is a heartbeat, on its own cadence, whatever the
122
+ * sampling tick is. Three lines exist and no more:
123
+ *
124
+ * 1. **Resolution**, once — the hierarchy that answered, or "no cgroup here",
125
+ * which is a fact about the node and not an error.
126
+ * 2. **Heartbeat**, every `heartbeatMs` — current, ceiling, utilisation and
127
+ * the lifetime refusal count. INFO while there is room, WARN while we are
128
+ * above `pressureFraction`, and one INFO when it comes back down, so the
129
+ * log carries BOTH edges of a pressure episode rather than only its start.
130
+ * 3. **A refusal**, immediately — the `pids.events` counter rose, so the
131
+ * kernel said no that many times since the last sample and some subsystem
132
+ * silently did without a thread. This one never waits for the heartbeat.
133
+ */
87
134
  export declare class ContainerPidsProbe {
88
- private readonly logger;
89
- private readonly fs;
90
- private readonly now;
91
- private readonly heartbeatMs;
92
- private readonly pressureFraction;
93
- private resolved;
94
- private layout;
95
- private lastHeartbeatAt;
96
- private lastRefusals;
97
- private underPressure;
98
- constructor(deps: ContainerPidsProbeDeps);
99
- /** Did this node resolve a pids cgroup at all? Absent is a reportable fact. */
100
- get available(): boolean;
101
- /** One reading, or `null` where there is no cgroup or it stopped answering. */
102
- sample(): ContainerPidsSnapshot | null;
103
- private resolveOnce;
104
- private report;
105
- /**
106
- * The counter only ever rises, so a rise is a refusal that happened in this
107
- * window. Reported the moment it is seen — never held for the heartbeat,
108
- * because this is the line that says work was lost.
109
- */
110
- private reportRefusals;
111
- private meta;
135
+ private readonly logger;
136
+ private readonly fs;
137
+ private readonly now;
138
+ private readonly heartbeatMs;
139
+ private readonly pressureFraction;
140
+ private resolved;
141
+ private layout;
142
+ private lastHeartbeatAt;
143
+ private lastRefusals;
144
+ private underPressure;
145
+ constructor(deps: ContainerPidsProbeDeps);
146
+ /** Did this node resolve a pids cgroup at all? Absent is a reportable fact. */
147
+ get available(): boolean;
148
+ /** One reading, or `null` where there is no cgroup or it stopped answering. */
149
+ sample(): ContainerPidsSnapshot | null;
150
+ private resolveOnce;
151
+ private report;
152
+ /**
153
+ * The counter only ever rises, so a rise is a refusal that happened in this
154
+ * window. Reported the moment it is seen — never held for the heartbeat,
155
+ * because this is the line that says work was lost.
156
+ */
157
+ private reportRefusals;
158
+ private meta;
112
159
  }