@kici-dev/orchestrator 0.17.0 → 0.18.0

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 (589) hide show
  1. package/dist/agent/agent-version.d.ts +12 -21
  2. package/dist/agent/dispatcher.d.ts +283 -437
  3. package/dist/agent/host-roster-reaper.d.ts +8 -10
  4. package/dist/agent/host-roster.d.ts +77 -100
  5. package/dist/agent/ownership-refusal.d.ts +3 -5
  6. package/dist/agent/ownership-tracker.d.ts +42 -76
  7. package/dist/agent/registry.d.ts +121 -233
  8. package/dist/agent/token-store.d.ts +34 -77
  9. package/dist/agent-packaging/availability.d.ts +6 -9
  10. package/dist/agent-packaging/download.d.ts +6 -9
  11. package/dist/agent-packaging/install-closure.d.ts +9 -12
  12. package/dist/agent-packaging/node-binary.d.ts +6 -10
  13. package/dist/agent-packaging/node-runtime-members.d.ts +3 -5
  14. package/dist/agent-packaging/refresh.d.ts +12 -16
  15. package/dist/agent-packaging/store.d.ts +5 -6
  16. package/dist/agent-packaging/upload.d.ts +3 -4
  17. package/dist/app.d.ts +0 -3
  18. package/dist/approvals/apply-decision.d.ts +35 -52
  19. package/dist/approvals/approval-resolver.d.ts +11 -23
  20. package/dist/approvals/held-run-release-wiring.d.ts +14 -21
  21. package/dist/approvals/independent-wiring.d.ts +13 -20
  22. package/dist/approvals/resume-router.d.ts +1 -1
  23. package/dist/approvals/step-approval-bridge.d.ts +11 -21
  24. package/dist/approvals/triggerer-subject.d.ts +8 -10
  25. package/dist/artifacts/artifact-store.d.ts +55 -95
  26. package/dist/artifacts/failure-messages.d.ts +15 -20
  27. package/dist/audit/access-log.d.ts +27 -45
  28. package/dist/audit/sampling-rate-limiter.d.ts +11 -23
  29. package/dist/cache/agent-job-failed-error.d.ts +2 -3
  30. package/dist/cache/build-coordinator.d.ts +5 -28
  31. package/dist/cache/cache-upload-settle.d.ts +11 -11
  32. package/dist/cache/dep-cache.d.ts +32 -60
  33. package/dist/cache/dispatch-cache-ref-tracker.d.ts +15 -23
  34. package/dist/cache/global-eval-round-cache.d.ts +33 -41
  35. package/dist/cache/pending-builds.d.ts +2 -6
  36. package/dist/cache/pending-dynamics.d.ts +2 -7
  37. package/dist/cache/pending-global-evals.d.ts +9 -12
  38. package/dist/cache/pending-inits.d.ts +11 -22
  39. package/dist/cache/pending-precursor-db-watcher.d.ts +24 -32
  40. package/dist/cache/pending-tracker.d.ts +17 -45
  41. package/dist/cache/precursor-result.d.ts +17 -30
  42. package/dist/cache/source-cache.d.ts +36 -65
  43. package/dist/cache/user-cache.d.ts +21 -25
  44. package/dist/cancel/cancel-held-run.d.ts +13 -16
  45. package/dist/cancel/cancel-route-answer.d.ts +1 -2
  46. package/dist/cancel/cancel-run.d.ts +26 -50
  47. package/dist/cancel/dashboard-cancel-handler.d.ts +2 -2
  48. package/dist/cancel/peer-job-cancel.d.ts +11 -14
  49. package/dist/cancel/sweep-stuck-cancelling.d.ts +9 -13
  50. package/dist/cli/api-client.d.ts +25 -76
  51. package/dist/cli/commands/access-log.d.ts +4 -24
  52. package/dist/cli/commands/agent-package.d.ts +7 -15
  53. package/dist/cli/commands/agent-service/agent-env.d.ts +3 -6
  54. package/dist/cli/commands/agent-service/index.d.ts +4 -10
  55. package/dist/cli/commands/agent-service/install.d.ts +4 -11
  56. package/dist/cli/commands/agent-service/status.d.ts +4 -9
  57. package/dist/cli/commands/agent-service/upgrade.d.ts +4 -16
  58. package/dist/cli/commands/agent.d.ts +12 -25
  59. package/dist/cli/commands/api-key.d.ts +5 -12
  60. package/dist/cli/commands/attestations-list.d.ts +7 -17
  61. package/dist/cli/commands/attestations-retry.d.ts +5 -11
  62. package/dist/cli/commands/attestations-reverify.d.ts +4 -5
  63. package/dist/cli/commands/attestations.d.ts +3 -8
  64. package/dist/cli/commands/audit.d.ts +1 -5
  65. package/dist/cli/commands/backend.d.ts +2 -11
  66. package/dist/cli/commands/check-run.d.ts +7 -18
  67. package/dist/cli/commands/cluster-name.d.ts +5 -12
  68. package/dist/cli/commands/cluster-settings.d.ts +28 -53
  69. package/dist/cli/commands/cold-store.d.ts +7 -15
  70. package/dist/cli/commands/config.d.ts +9 -20
  71. package/dist/cli/commands/context.d.ts +8 -20
  72. package/dist/cli/commands/dashboard-encryption-key.d.ts +9 -14
  73. package/dist/cli/commands/db-backup.d.ts +17 -32
  74. package/dist/cli/commands/db.d.ts +3 -4
  75. package/dist/cli/commands/debug-bundle.d.ts +3 -10
  76. package/dist/cli/commands/diagnose.d.ts +3 -14
  77. package/dist/cli/commands/event-dlq.d.ts +4 -12
  78. package/dist/cli/commands/event-log.d.ts +2 -20
  79. package/dist/cli/commands/execution.d.ts +3 -9
  80. package/dist/cli/commands/firecracker/index.d.ts +3 -6
  81. package/dist/cli/commands/held-run.d.ts +23 -37
  82. package/dist/cli/commands/host.d.ts +4 -11
  83. package/dist/cli/commands/inspect-bundle.d.ts +3 -11
  84. package/dist/cli/commands/local-hook.d.ts +2 -10
  85. package/dist/cli/commands/local-trigger.d.ts +2 -2
  86. package/dist/cli/commands/orchestrator-service/drain.d.ts +3 -6
  87. package/dist/cli/commands/orchestrator-service/index.d.ts +6 -14
  88. package/dist/cli/commands/orchestrator-service/install-env.d.ts +25 -49
  89. package/dist/cli/commands/orchestrator-service/install.d.ts +2 -5
  90. package/dist/cli/commands/orchestrator-service/status.d.ts +10 -22
  91. package/dist/cli/commands/orchestrator-service/upgrade.d.ts +6 -15
  92. package/dist/cli/commands/org-settings.d.ts +5 -11
  93. package/dist/cli/commands/peer.d.ts +5 -10
  94. package/dist/cli/commands/queue.d.ts +3 -9
  95. package/dist/cli/commands/registration.d.ts +4 -8
  96. package/dist/cli/commands/remote-source.d.ts +6 -12
  97. package/dist/cli/commands/rotate.d.ts +1 -5
  98. package/dist/cli/commands/runs.d.ts +1 -30
  99. package/dist/cli/commands/scaler.d.ts +5 -12
  100. package/dist/cli/commands/secret.d.ts +1 -9
  101. package/dist/cli/commands/service-health.d.ts +5 -10
  102. package/dist/cli/commands/shared/admin-cli-access-log.d.ts +10 -19
  103. package/dist/cli/commands/shared/bare-metal-binary-check.d.ts +86 -0
  104. package/dist/cli/commands/shared/cli-action.d.ts +1 -4
  105. package/dist/cli/commands/shared/confirm.d.ts +5 -10
  106. package/dist/cli/commands/shared/db.d.ts +1 -12
  107. package/dist/cli/commands/shared/env-file-mode.d.ts +6 -9
  108. package/dist/cli/commands/shared/secret-input.d.ts +7 -21
  109. package/dist/cli/commands/shared/service-verbs.d.ts +6 -12
  110. package/dist/cli/commands/shared/unbound-context-warning.d.ts +2 -4
  111. package/dist/cli/commands/shared/upgrade-hooks.d.ts +7 -16
  112. package/dist/cli/commands/shared/upgrade-safety.d.ts +20 -31
  113. package/dist/cli/commands/shared/versioned-upgrade.d.ts +83 -161
  114. package/dist/cli/commands/signing-key.d.ts +4 -9
  115. package/dist/cli/commands/source-manifest.d.ts +11 -14
  116. package/dist/cli/commands/source.d.ts +7 -32
  117. package/dist/cli/commands/token.d.ts +4 -15
  118. package/dist/cli/commands/trust-policy.d.ts +35 -88
  119. package/dist/cli/commands/variable.d.ts +3 -5
  120. package/dist/cli/commands/workflow.d.ts +3 -24
  121. package/dist/cli/join.d.ts +3 -6
  122. package/dist/cli/kici-admin.d.ts +11 -29
  123. package/dist/cli/lazy-deps/cache.d.ts +1 -14
  124. package/dist/cli/lazy-deps/downloader.d.ts +4 -27
  125. package/dist/cli/lazy-deps/registry.d.ts +5 -25
  126. package/dist/cli/local-github-ingress-url.d.ts +5 -7
  127. package/dist/cli/loopback-callback.d.ts +6 -7
  128. package/dist/cli/open-browser.d.ts +4 -8
  129. package/dist/cli/root-option-routing.d.ts +17 -29
  130. package/dist/cli/service/backup-timer.d.ts +16 -39
  131. package/dist/cli/service/compose-path.d.ts +3 -7
  132. package/dist/cli/service/compose.d.ts +12 -30
  133. package/dist/cli/service/deploy-env.d.ts +6 -18
  134. package/dist/cli/service/entrypoint.d.ts +14 -25
  135. package/dist/cli/service/env-assignment.d.ts +6 -17
  136. package/dist/cli/service/image-digests.d.ts +6 -15
  137. package/dist/cli/service/index.d.ts +2 -18
  138. package/dist/cli/service/instance/index-file.d.ts +9 -16
  139. package/dist/cli/service/instance/manifest.d.ts +33 -59
  140. package/dist/cli/service/instance/resolve.d.ts +32 -68
  141. package/dist/cli/service/instance/types.d.ts +12 -29
  142. package/dist/cli/service/launchd.d.ts +29 -60
  143. package/dist/cli/service/platform-detect.d.ts +13 -68
  144. package/dist/cli/service/privilege.d.ts +12 -25
  145. package/dist/cli/service/shutdown-grace.d.ts +11 -20
  146. package/dist/cli/service/systemd.d.ts +7 -20
  147. package/dist/cli/service/types.d.ts +63 -114
  148. package/dist/cli/service/windows-acl.d.ts +14 -21
  149. package/dist/cli/service/windows-env-file.d.ts +10 -28
  150. package/dist/cli/service/windows.d.ts +15 -31
  151. package/dist/cli/webhook-url-notes.d.ts +4 -6
  152. package/dist/cli/wizard/agent-wizard.d.ts +3 -14
  153. package/dist/cli/wizard/orchestrator-wizard.d.ts +12 -37
  154. package/dist/cli/wizard/prompts.d.ts +6 -16
  155. package/dist/cli.js +4568 -6571
  156. package/dist/cluster/cluster-identity.d.ts +20 -32
  157. package/dist/cluster/cluster-settings-reader.d.ts +50 -77
  158. package/dist/cluster/coordinator-credential.d.ts +4 -5
  159. package/dist/cluster/coordinator.d.ts +76 -148
  160. package/dist/cluster/health-api.d.ts +2 -10
  161. package/dist/cluster/index.d.ts +1 -6
  162. package/dist/cluster/instance-heartbeat.d.ts +26 -42
  163. package/dist/cluster/join-client.d.ts +4 -7
  164. package/dist/cluster/join-handler.d.ts +3 -7
  165. package/dist/cluster/join-token.d.ts +13 -27
  166. package/dist/cluster/leader-gated-scheduler.d.ts +8 -17
  167. package/dist/cluster/orphan-recovery.d.ts +13 -35
  168. package/dist/cluster/peer-auth-coordinator.d.ts +2 -8
  169. package/dist/cluster/peer-client.d.ts +46 -76
  170. package/dist/cluster/peer-credentials.d.ts +24 -70
  171. package/dist/cluster/peer-crypto.d.ts +5 -26
  172. package/dist/cluster/peer-forget.d.ts +3 -3
  173. package/dist/cluster/peer-handler.d.ts +47 -71
  174. package/dist/cluster/peer-registry.d.ts +37 -106
  175. package/dist/cluster/plan-headroom-store.d.ts +4 -6
  176. package/dist/cluster/raft-state.d.ts +4 -13
  177. package/dist/cluster/raft.d.ts +18 -53
  178. package/dist/cluster/reconcile-identity.d.ts +8 -11
  179. package/dist/cluster/rerouted-job-guard.d.ts +7 -11
  180. package/dist/cluster/verified-issuer.d.ts +2 -3
  181. package/dist/cluster/worker-cluster-settings.d.ts +7 -10
  182. package/dist/cluster/worker-eviction.d.ts +16 -26
  183. package/dist/cold-store/load-access-log-range.d.ts +15 -31
  184. package/dist/cold-store/load-event-log-range.d.ts +13 -27
  185. package/dist/cold-store/load-secret-audit-log-range.d.ts +8 -12
  186. package/dist/cold-store/orchestrator-cold-store.d.ts +8 -28
  187. package/dist/cold-store/tables/access-log.d.ts +12 -14
  188. package/dist/cold-store/tables/event-log.d.ts +4 -8
  189. package/dist/cold-store/tables/execution-runs.d.ts +6 -11
  190. package/dist/cold-store/tables/secret-audit-log.d.ts +5 -12
  191. package/dist/concurrency/dispatch-next-queued.d.ts +13 -25
  192. package/dist/concurrency/queue-manager.d.ts +22 -54
  193. package/dist/concurrency/waiters.d.ts +15 -31
  194. package/dist/config/encryption.d.ts +0 -2
  195. package/dist/config/loader.d.ts +0 -1
  196. package/dist/config/reload.d.ts +0 -6
  197. package/dist/config/resolver.d.ts +0 -4
  198. package/dist/config/shared-store.d.ts +0 -2
  199. package/dist/config/types.d.ts +0 -3
  200. package/dist/content-requirements-cache.d.ts +0 -1
  201. package/dist/contexts/context-store.d.ts +0 -2
  202. package/dist/contexts/held-runs.d.ts +0 -2
  203. package/dist/contexts/variable-store.d.ts +0 -2
  204. package/dist/dashboard/attestation-filters.d.ts +13 -18
  205. package/dist/dashboard/handler.d.ts +143 -307
  206. package/dist/db/client.d.ts +2 -6
  207. package/dist/db/deferred-index-build.d.ts +8 -10
  208. package/dist/db/deferred-indexes.d.ts +15 -22
  209. package/dist/db/migration-provider.d.ts +2 -4
  210. package/dist/db/migration-test-harness.d.ts +26 -44
  211. package/dist/db/migrations/001_initial.d.ts +1 -4
  212. package/dist/db/migrations/002_config_versions_key_version.d.ts +5 -8
  213. package/dist/db/migrations/003_access_log.d.ts +10 -15
  214. package/dist/db/migrations/004_rename_bundle_to_source.d.ts +7 -9
  215. package/dist/db/migrations/005_cold_store_chunk_counter.d.ts +4 -10
  216. package/dist/db/migrations/006_runs_jobs_steps_archived_at.d.ts +9 -29
  217. package/dist/db/migrations/007_audit_logs_archived_at.d.ts +11 -30
  218. package/dist/db/migrations/008_event_log_archived_at.d.ts +14 -29
  219. package/dist/db/migrations/009_access_log_trigram.d.ts +4 -8
  220. package/dist/db/migrations/010_cold_store_chunks.d.ts +16 -26
  221. package/dist/db/migrations/011_drop_source_secrets_notify.d.ts +6 -14
  222. package/dist/db/migrations/012_peer_credentials_active_uniq.d.ts +9 -14
  223. package/dist/db/migrations/013_execution_log_bytes.d.ts +5 -13
  224. package/dist/db/migrations/014_kici_events_lease_retry.d.ts +14 -27
  225. package/dist/db/migrations/015_org_settings_customer_scoped.d.ts +12 -17
  226. package/dist/db/migrations/016_org_settings_allow_http_npm.d.ts +4 -6
  227. package/dist/db/migrations/019_generic_sources_change_notify.d.ts +13 -17
  228. package/dist/db/migrations/020_org_settings_dashboard_write_policy.d.ts +5 -8
  229. package/dist/db/migrations/021_check_run_tracking.d.ts +5 -17
  230. package/dist/db/migrations/022_scaler_manager_state.d.ts +10 -20
  231. package/dist/db/migrations/023_dispatch_queue_recovery_deadline.d.ts +7 -18
  232. package/dist/db/migrations/024_dispatch_queue_provisioning_error.d.ts +5 -11
  233. package/dist/db/migrations/025_init_failure.d.ts +5 -9
  234. package/dist/db/migrations/027_workflow_timeout.d.ts +5 -13
  235. package/dist/db/migrations/029_dispatch_queue_attempts.d.ts +4 -10
  236. package/dist/db/migrations/030_held_runs_env_set_null.d.ts +5 -6
  237. package/dist/db/migrations/031_dispatch_queue_ack_deadline.d.ts +6 -12
  238. package/dist/db/migrations/033_org_settings_approval.d.ts +7 -10
  239. package/dist/db/migrations/034_held_runs_generalize.d.ts +10 -18
  240. package/dist/db/migrations/035_pending_workflow_contexts.d.ts +4 -5
  241. package/dist/db/migrations/037_generic_sources_provider_type_local.d.ts +5 -6
  242. package/dist/db/migrations/038_remote_sources.d.ts +5 -7
  243. package/dist/db/migrations/045_host_properties.d.ts +5 -9
  244. package/dist/db/migrations/046_join_token_consumed_by_instance.d.ts +5 -10
  245. package/dist/db/migrations/048_host_reboot_pending.d.ts +6 -12
  246. package/dist/db/migrations/049_held_runs_payload.d.ts +3 -8
  247. package/dist/db/migrations/050_sources_slug.d.ts +4 -5
  248. package/dist/db/migrations/051_binding_host_pattern.d.ts +7 -10
  249. package/dist/db/migrations/052_host_reach_metadata.d.ts +8 -11
  250. package/dist/db/migrations/053_agent_token_single_use.d.ts +6 -10
  251. package/dist/db/migrations/054_local_working_tree.d.ts +4 -6
  252. package/dist/db/migrations/055_agent_token_mandatory_labels.d.ts +6 -11
  253. package/dist/db/migrations/056_execution_jobs_environments.d.ts +4 -11
  254. package/dist/db/migrations/064_execution_jobs_skipped_environments.d.ts +6 -9
  255. package/dist/db/migrations/065_pending_attestations.d.ts +9 -12
  256. package/dist/db/migrations/066_pending_attestations_rejected.d.ts +4 -7
  257. package/dist/db/migrations/068_request_idempotency.d.ts +7 -9
  258. package/dist/db/migrations/069_reroute_tunables.d.ts +6 -14
  259. package/dist/db/migrations/071_batch_accumulation.d.ts +8 -16
  260. package/dist/db/migrations/072_dispatch_queue_run_id_index.d.ts +3 -9
  261. package/dist/db/migrations/074_normalize_zero_concurrency_limit.d.ts +4 -7
  262. package/dist/db/migrations/076_artifacts.d.ts +7 -8
  263. package/dist/db/migrations/078_org_settings_backup_staleness.d.ts +3 -6
  264. package/dist/db/migrations/079_org_settings_scaler_spawn_timeout.d.ts +4 -8
  265. package/dist/db/migrations/080_cluster_settings.d.ts +6 -10
  266. package/dist/db/migrations/081_org_settings_queue_timeout.d.ts +7 -11
  267. package/dist/db/migrations/082_host_s3_reachable.d.ts +5 -10
  268. package/dist/db/migrations/083_org_settings_artifact_caps.d.ts +6 -8
  269. package/dist/db/migrations/084_orchestrator_signing_keys.d.ts +8 -13
  270. package/dist/db/migrations/085_cluster_settings_reroute_flap_grace_ms.d.ts +4 -5
  271. package/dist/db/migrations/086_cluster_settings_max_fanout_hosts.d.ts +3 -3
  272. package/dist/db/migrations/087_cluster_settings_event_router_rate_limit.d.ts +5 -3
  273. package/dist/db/migrations/088_cluster_settings_cache_max_tarball_bytes.d.ts +3 -3
  274. package/dist/db/migrations/089_cluster_settings_cache_ttl_days.d.ts +3 -5
  275. package/dist/db/migrations/090_cluster_settings_concurrency_wait_timeout_ms.d.ts +3 -6
  276. package/dist/db/migrations/091_cluster_settings_agent_token_ttl_ms.d.ts +3 -6
  277. package/dist/db/migrations/092_cluster_settings_version.d.ts +5 -9
  278. package/dist/db/migrations/094_dashboard_encryption_keys.d.ts +9 -14
  279. package/dist/db/migrations/095_dashboard_write_policy_tristate.d.ts +2 -6
  280. package/dist/db/migrations/099_cluster_settings_dashboard_verified_issuer.d.ts +8 -11
  281. package/dist/db/migrations/101_contexts_hold_expiry_drop_default.d.ts +9 -15
  282. package/dist/db/migrations/102_dispatch_queue_agent_id.d.ts +6 -11
  283. package/dist/db/migrations/103_cluster_settings_ownership_db_check_timeout_ms.d.ts +6 -12
  284. package/dist/db/migrations/104_check_run_terminal_sent.d.ts +8 -14
  285. package/dist/db/migrations/105_org_trust_policy.d.ts +5 -7
  286. package/dist/db/migrations/106_cluster_settings_check_run_tracking_ttl_days.d.ts +4 -12
  287. package/dist/db/migrations/107_check_run_tracking_updated_at_index.d.ts +8 -14
  288. package/dist/db/migrations/113_execution_runs_workflow_repo_index.d.ts +10 -19
  289. package/dist/db/migrations/115_global_workflows_cluster_switch.d.ts +2 -3
  290. package/dist/db/migrations/121_org_settings_allow_untrusted_dockerfile_builds.d.ts +7 -8
  291. package/dist/db/migrations/122_host_roster_scaler_managed.d.ts +9 -16
  292. package/dist/db/migrations/123_workflow_registrations_default_branch.d.ts +8 -16
  293. package/dist/db/migrations/125_org_trust_directory.d.ts +13 -21
  294. package/dist/db/migrations/126_held_runs_posted_pending_check.d.ts +10 -16
  295. package/dist/db/migrations/127_org_trust_policy_approval_expiry_seconds.d.ts +8 -16
  296. package/dist/db/migrations/128_execution_runs_global_eval_round.d.ts +6 -11
  297. package/dist/db/migrations/129_execution_runs_dispatch_routing_key.d.ts +8 -11
  298. package/dist/db/migrations/130_scaler_provision_outcomes.d.ts +13 -20
  299. package/dist/db/migrations/131_execution_jobs_git_credentials.d.ts +12 -22
  300. package/dist/db/migrations/132_execution_runs_trigger_event.d.ts +6 -16
  301. package/dist/db/migrations/133_dispatch_queue_source_tar_digest.d.ts +6 -9
  302. package/dist/db/migrations/140_dispatch_queue_canonical_labels.d.ts +22 -40
  303. package/dist/db/migrations/143_execution_jobs_precursor_result.d.ts +9 -18
  304. package/dist/db/migrations/144_execution_runs_registration_window.d.ts +12 -20
  305. package/dist/db/migrations/147_sealed_job_secrets.d.ts +5 -9
  306. package/dist/db/migrations/148_cluster_settings_sealed_secrets_retry_backoff_ms.d.ts +7 -13
  307. package/dist/db/migrations/150_execution_runs_status_epoch.d.ts +6 -11
  308. package/dist/db/migrations/152_org_settings_cache_upload_settle_timeout.d.ts +5 -8
  309. package/dist/db/migrations/157_host_roster_identity_source.d.ts +9 -13
  310. package/dist/db/migrations/159_org_id_widen_to_source_width.d.ts +5 -0
  311. package/dist/db/migrator.d.ts +17 -25
  312. package/dist/db/notify-listener.d.ts +8 -11
  313. package/dist/db/repos/dashboard-encryption-keys-repo.d.ts +9 -10
  314. package/dist/db/synthetic-job-ids.d.ts +6 -8
  315. package/dist/db/types.d.ts +531 -1058
  316. package/dist/deployment/deployment-identity.d.ts +42 -60
  317. package/dist/diagnostics/bundle-reader.d.ts +3 -15
  318. package/dist/diagnostics/bundle-writer.d.ts +5 -12
  319. package/dist/diagnostics/checks/agents.d.ts +1 -7
  320. package/dist/diagnostics/checks/backup.d.ts +7 -10
  321. package/dist/diagnostics/checks/certs.d.ts +1 -6
  322. package/dist/diagnostics/checks/config.d.ts +2 -5
  323. package/dist/diagnostics/checks/db.d.ts +1 -1
  324. package/dist/diagnostics/checks/disk.d.ts +1 -6
  325. package/dist/diagnostics/checks/firecracker-network.d.ts +3 -3
  326. package/dist/diagnostics/checks/index.d.ts +0 -6
  327. package/dist/diagnostics/checks/retention.d.ts +3 -6
  328. package/dist/diagnostics/checks/scaler.d.ts +3 -7
  329. package/dist/diagnostics/checks/ws.d.ts +1 -6
  330. package/dist/diagnostics/fleet-collector.d.ts +11 -14
  331. package/dist/diagnostics/fleet-constants.d.ts +1 -3
  332. package/dist/diagnostics/fleet-selection.d.ts +3 -7
  333. package/dist/diagnostics/fleet-topology.d.ts +2 -6
  334. package/dist/diagnostics/fleet-wiring.d.ts +6 -12
  335. package/dist/diagnostics/index.d.ts +0 -5
  336. package/dist/diagnostics/runner.d.ts +4 -8
  337. package/dist/diagnostics/types.d.ts +10 -21
  338. package/dist/drain/drain-controller.d.ts +16 -22
  339. package/dist/entry-helpers.d.ts +0 -2
  340. package/dist/events/circuit-breaker.d.ts +0 -3
  341. package/dist/events/event-router.d.ts +1 -2
  342. package/dist/events/event-store.d.ts +0 -9
  343. package/dist/events/trust-store.d.ts +0 -3
  344. package/dist/events/types.d.ts +0 -9
  345. package/dist/firecracker/host-network.d.ts +24 -30
  346. package/dist/firecracker/net-interfaces.d.ts +4 -7
  347. package/dist/helpers/rate-limiter.d.ts +0 -1
  348. package/dist/index.js +240 -482
  349. package/dist/metrics/agent-metrics-aggregator.d.ts +24 -67
  350. package/dist/metrics/metrics-reporter.d.ts +4 -13
  351. package/dist/metrics/prometheus.d.ts +47 -81
  352. package/dist/orchestrator-core.d.ts +3 -7
  353. package/dist/pipeline/content-filter.d.ts +20 -30
  354. package/dist/pipeline/cross-source-tally.d.ts +7 -8
  355. package/dist/pipeline/decorating-secret-resolver.d.ts +4 -8
  356. package/dist/pipeline/degraded-reason.d.ts +3 -4
  357. package/dist/pipeline/direct-ingress-deps.d.ts +15 -24
  358. package/dist/pipeline/dispatch-matched-workflow.d.ts +289 -525
  359. package/dist/pipeline/flatten-lock-steps.d.ts +4 -6
  360. package/dist/pipeline/global-dispatch-identity.d.ts +5 -10
  361. package/dist/pipeline/global-eval-round.d.ts +65 -151
  362. package/dist/pipeline/global-round-hold.d.ts +5 -7
  363. package/dist/pipeline/held-context-data.d.ts +5 -8
  364. package/dist/pipeline/held-round-registrations.d.ts +8 -11
  365. package/dist/pipeline/install-gate.d.ts +15 -25
  366. package/dist/pipeline/install-secrets-resolver.d.ts +24 -34
  367. package/dist/pipeline/internal-event-pipeline.d.ts +45 -62
  368. package/dist/pipeline/invoke-gate.d.ts +27 -40
  369. package/dist/pipeline/job-contexts.d.ts +19 -36
  370. package/dist/pipeline/manual-schedule.d.ts +7 -13
  371. package/dist/pipeline/needs-scheduler.d.ts +29 -46
  372. package/dist/pipeline/pending-workflow-context.d.ts +14 -28
  373. package/dist/pipeline/process-webhook.d.ts +88 -123
  374. package/dist/pipeline/processor.d.ts +209 -355
  375. package/dist/pipeline/remote-source-store.d.ts +5 -8
  376. package/dist/pipeline/request-idempotency.d.ts +10 -13
  377. package/dist/pipeline/rerun-global.d.ts +6 -7
  378. package/dist/pipeline/rerun-inputs.d.ts +23 -37
  379. package/dist/pipeline/rerun.d.ts +34 -57
  380. package/dist/pipeline/resolve-sandbox-grant.d.ts +5 -10
  381. package/dist/pipeline/resume-workflow.d.ts +28 -34
  382. package/dist/pipeline/route-or-dispatch-jobs.d.ts +19 -30
  383. package/dist/pipeline/run-event-context.d.ts +16 -21
  384. package/dist/pipeline/sandbox-allowlist-reader.d.ts +7 -11
  385. package/dist/pipeline/security-hold-check.d.ts +56 -80
  386. package/dist/pipeline/test-pipeline.d.ts +20 -46
  387. package/dist/pipeline/unbound-job-context.d.ts +6 -9
  388. package/dist/pipeline/undispatched-hold-checks.d.ts +4 -6
  389. package/dist/pipeline/wave-scheduler.d.ts +15 -22
  390. package/dist/pipeline/webhook-payload-store.d.ts +3 -10
  391. package/dist/pipeline/workflow-lock-at-sha.d.ts +14 -20
  392. package/dist/policy/dashboard-write-policy.d.ts +1 -1
  393. package/dist/provider-registry.d.ts +0 -19
  394. package/dist/providers/generic/index.d.ts +0 -2
  395. package/dist/providers/generic/normalizer.d.ts +0 -1
  396. package/dist/providers/generic/verification.d.ts +0 -8
  397. package/dist/providers/github/auth.d.ts +0 -1
  398. package/dist/providers/github/changed-files.d.ts +2 -1
  399. package/dist/providers/github/file-contents.d.ts +0 -4
  400. package/dist/providers/github/lock-file.d.ts +0 -4
  401. package/dist/providers/github/normalizer.d.ts +1 -9
  402. package/dist/providers/local/index.d.ts +1 -2
  403. package/dist/providers/local/lock-file-fetcher.d.ts +0 -4
  404. package/dist/providers/local/normalizer.d.ts +0 -10
  405. package/dist/providers/local/repo-url-builder.d.ts +0 -2
  406. package/dist/providers/universal-git/clone-token.d.ts +0 -2
  407. package/dist/providers/universal-git/lock-file.d.ts +0 -2
  408. package/dist/providers/universal-git/normalizer.d.ts +0 -2
  409. package/dist/queue/bootstrap.d.ts +3 -15
  410. package/dist/queue/cleanup.d.ts +29 -50
  411. package/dist/queue/depth-refresher.d.ts +21 -39
  412. package/dist/queue/job-queue.d.ts +112 -163
  413. package/dist/queue/retention.d.ts +23 -36
  414. package/dist/queue/scheduled-job.d.ts +17 -39
  415. package/dist/queue/terminalize-unroutable.d.ts +16 -18
  416. package/dist/queue/unroutable-probe.d.ts +15 -22
  417. package/dist/registration/extractor.d.ts +0 -6
  418. package/dist/registration/registration-index.d.ts +0 -6
  419. package/dist/registration/registration-store.d.ts +0 -9
  420. package/dist/reporting/agent-failure-category.d.ts +3 -5
  421. package/dist/reporting/check-run-reporter.d.ts +142 -316
  422. package/dist/reporting/check-run-summary.d.ts +16 -35
  423. package/dist/reporting/check-run-tracking-store.d.ts +54 -107
  424. package/dist/reporting/execution-tracker.d.ts +356 -526
  425. package/dist/reporting/fs-log-storage.d.ts +31 -33
  426. package/dist/reporting/job-check-run-completion.d.ts +14 -22
  427. package/dist/reporting/log-chunk-sink.d.ts +11 -16
  428. package/dist/reporting/log-pull-handler.d.ts +4 -13
  429. package/dist/reporting/log-retention.d.ts +3 -4
  430. package/dist/reporting/log-storage.d.ts +24 -52
  431. package/dist/reporting/log-writer.d.ts +28 -56
  432. package/dist/reporting/peer-log-normalize.d.ts +4 -8
  433. package/dist/reporting/run-aggregator.d.ts +6 -11
  434. package/dist/reporting/run-summary-fields.d.ts +5 -8
  435. package/dist/reporting/s3-log-storage.d.ts +31 -50
  436. package/dist/reporting/step-display-order.d.ts +11 -21
  437. package/dist/reporting/step-log-buffer.d.ts +7 -28
  438. package/dist/reporting/step-log-reader.d.ts +11 -19
  439. package/dist/routes/admin-access-log.d.ts +4 -6
  440. package/dist/routes/admin-auth.d.ts +17 -38
  441. package/dist/routes/admin-backends.d.ts +3 -14
  442. package/dist/routes/admin-cluster-name.d.ts +13 -21
  443. package/dist/routes/admin-cluster-settings.d.ts +6 -9
  444. package/dist/routes/admin-config.d.ts +7 -19
  445. package/dist/routes/admin-contexts.d.ts +6 -13
  446. package/dist/routes/admin-db.d.ts +5 -10
  447. package/dist/routes/admin-event-dlq.d.ts +3 -5
  448. package/dist/routes/admin-event-inspect.d.ts +3 -4
  449. package/dist/routes/admin-event-log.d.ts +3 -7
  450. package/dist/routes/admin-events.d.ts +16 -30
  451. package/dist/routes/admin-held-runs.d.ts +52 -76
  452. package/dist/routes/admin-maintenance.d.ts +3 -6
  453. package/dist/routes/admin-orchestrator-drain.d.ts +0 -2
  454. package/dist/routes/admin-org-settings.d.ts +8 -14
  455. package/dist/routes/admin-peer-forget.d.ts +0 -1
  456. package/dist/routes/admin-queue-execution.d.ts +3 -3
  457. package/dist/routes/admin-registrations.d.ts +3 -12
  458. package/dist/routes/admin-runs.d.ts +16 -29
  459. package/dist/routes/admin-scaler-orphans.d.ts +4 -4
  460. package/dist/routes/admin-scaler-reload.d.ts +5 -8
  461. package/dist/routes/admin-scheduled-jobs.d.ts +3 -4
  462. package/dist/routes/admin-sources.d.ts +20 -29
  463. package/dist/routes/admin-trust-policy.d.ts +31 -48
  464. package/dist/routes/admin.d.ts +67 -94
  465. package/dist/routes/caller-identity.d.ts +5 -12
  466. package/dist/routes/capabilities.d.ts +8 -13
  467. package/dist/routes/diagnostics.d.ts +2 -10
  468. package/dist/routes/fleet.d.ts +1 -2
  469. package/dist/routes/github-webhook.d.ts +2 -5
  470. package/dist/routes/health.d.ts +6 -19
  471. package/dist/routes/provenance-oidc.d.ts +3 -3
  472. package/dist/routes/uploads.d.ts +5 -11
  473. package/dist/routes/webhooks.d.ts +2 -24
  474. package/dist/scaler/agent-binary-location.d.ts +77 -0
  475. package/dist/scaler/agent-fit.d.ts +2 -2
  476. package/dist/scaler/backend-factory.d.ts +10 -18
  477. package/dist/scaler/bare-metal-backend.d.ts +28 -45
  478. package/dist/scaler/claim-store.d.ts +20 -43
  479. package/dist/scaler/config.d.ts +10 -37
  480. package/dist/scaler/container-backend.d.ts +22 -35
  481. package/dist/scaler/container-hostconfig.d.ts +10 -16
  482. package/dist/scaler/container-routing.d.ts +10 -13
  483. package/dist/scaler/disk-guard.d.ts +2 -3
  484. package/dist/scaler/event-backend.d.ts +33 -58
  485. package/dist/scaler/event-provision-reaper.d.ts +61 -84
  486. package/dist/scaler/failure-tracker.d.ts +6 -13
  487. package/dist/scaler/file-tail.d.ts +6 -19
  488. package/dist/scaler/firecracker-api.d.ts +19 -63
  489. package/dist/scaler/firecracker-backend.d.ts +142 -258
  490. package/dist/scaler/host-access.d.ts +7 -10
  491. package/dist/scaler/index.d.ts +3 -6
  492. package/dist/scaler/ip-allocator.d.ts +30 -82
  493. package/dist/scaler/label-matcher.d.ts +14 -35
  494. package/dist/scaler/log-forwarder.d.ts +6 -25
  495. package/dist/scaler/machine-ledger.d.ts +39 -86
  496. package/dist/scaler/manager.d.ts +517 -787
  497. package/dist/scaler/pending-scale-sweeper.d.ts +8 -11
  498. package/dist/scaler/reap-orphans.d.ts +8 -12
  499. package/dist/scaler/resolve-container-auth.d.ts +12 -21
  500. package/dist/scaler/scaler-events.d.ts +2 -5
  501. package/dist/scaler/scaler-state-store.d.ts +127 -189
  502. package/dist/scaler/spawn-errors.d.ts +1 -4
  503. package/dist/scaler/startup-orphan-sweep.d.ts +3 -4
  504. package/dist/scaler/startup-tools-check.d.ts +21 -0
  505. package/dist/scaler/types.d.ts +142 -255
  506. package/dist/scaler/vm-job-bindings.d.ts +5 -9
  507. package/dist/scaler/warm-pool.d.ts +46 -93
  508. package/dist/secrets/audit-logger.d.ts +0 -3
  509. package/dist/secrets/backend-health.d.ts +0 -9
  510. package/dist/secrets/backend-registry.d.ts +0 -9
  511. package/dist/secrets/cleanup.d.ts +0 -1
  512. package/dist/secrets/config.d.ts +0 -3
  513. package/dist/secrets/ephemeral-keys.d.ts +0 -3
  514. package/dist/secrets/pg-secret-store.d.ts +0 -3
  515. package/dist/secrets/rbac.d.ts +0 -6
  516. package/dist/secrets/secret-output-store.d.ts +0 -6
  517. package/dist/secrets/secret-resolver.d.ts +2 -6
  518. package/dist/secrets/token-manager.d.ts +0 -4
  519. package/dist/secrets/vault-secret-store.d.ts +0 -13
  520. package/dist/security/comment-handler.d.ts +0 -2
  521. package/dist/security/workflow-diff.d.ts +1 -1
  522. package/dist/server.js +7500 -12629
  523. package/dist/sources/source-manager.d.ts +0 -3
  524. package/dist/sources/source-store.d.ts +0 -9
  525. package/dist/sources/source-validator.d.ts +0 -3
  526. package/dist/stale-detector/all-terminal-runs.d.ts +8 -11
  527. package/dist/stale-detector/gate-deadline-detector.d.ts +14 -19
  528. package/dist/stale-detector/reboot-deadline-sweep.d.ts +7 -11
  529. package/dist/stale-detector/stale-dispatch-candidates.d.ts +13 -20
  530. package/dist/stale-detector/stale-run-detector.d.ts +74 -121
  531. package/dist/stale-detector/workflow-deadline-detector.d.ts +15 -43
  532. package/dist/standalone.js +7141 -11957
  533. package/dist/storage/blob-routes.d.ts +10 -19
  534. package/dist/storage/filesystem.d.ts +19 -29
  535. package/dist/storage/index.d.ts +2 -10
  536. package/dist/storage/key-discriminator.d.ts +8 -10
  537. package/dist/storage/loopback-guard.d.ts +27 -45
  538. package/dist/storage/s3.d.ts +25 -52
  539. package/dist/storage/sign-url.d.ts +7 -22
  540. package/dist/storage/types.d.ts +44 -70
  541. package/dist/webhook/event-log.d.ts +0 -2
  542. package/dist/webhook/generic-sources.d.ts +0 -21
  543. package/dist/webhook/ingest-admission.d.ts +0 -1
  544. package/dist/webhook/relay-buffer.d.ts +2 -2
  545. package/dist/webhook/verify-inbound.d.ts +0 -1
  546. package/dist/worker/in-memory-execution-tracker.d.ts +9 -31
  547. package/dist/worker/in-memory-job-queue.d.ts +32 -72
  548. package/dist/worker/peer-outbox.d.ts +5 -8
  549. package/dist/worker/reroute-dispatch.d.ts +4 -6
  550. package/dist/worker/static-agent-token-store.d.ts +6 -27
  551. package/dist/worker/worker-outbox-relay.d.ts +2 -2
  552. package/dist/worker/worker-status.d.ts +3 -20
  553. package/dist/ws/agent-api-registry.d.ts +8 -27
  554. package/dist/ws/agent-handler.d.ts +63 -110
  555. package/dist/ws/agent-heartbeat.d.ts +5 -12
  556. package/dist/ws/bringup-api.d.ts +31 -38
  557. package/dist/ws/dashboard-backends-handler.d.ts +12 -22
  558. package/dist/ws/dashboard-context-handler.d.ts +37 -80
  559. package/dist/ws/dashboard-diagnostics-handler.d.ts +8 -25
  560. package/dist/ws/dashboard-dispatch-guard.d.ts +3 -4
  561. package/dist/ws/dashboard-fleet-handler.d.ts +9 -13
  562. package/dist/ws/dashboard-fleet-write-handler.d.ts +7 -21
  563. package/dist/ws/dashboard-global-workflows-handler.d.ts +22 -44
  564. package/dist/ws/dashboard-registrations-handler.d.ts +10 -27
  565. package/dist/ws/dashboard-run-state-handler.d.ts +10 -13
  566. package/dist/ws/event-buffer.d.ts +3 -6
  567. package/dist/ws/execution-status-frame.d.ts +7 -10
  568. package/dist/ws/failure-messages.d.ts +9 -14
  569. package/dist/ws/fleet-agent-collector.d.ts +6 -12
  570. package/dist/ws/fleet-runs-on-all.d.ts +1 -6
  571. package/dist/ws/git-credential-relay.d.ts +12 -20
  572. package/dist/ws/inventory-api.d.ts +4 -5
  573. package/dist/ws/observer-registry.d.ts +14 -59
  574. package/dist/ws/ownership-gate.d.ts +1 -1
  575. package/dist/ws/platform-client.d.ts +21 -30
  576. package/dist/ws/replay-chunker.d.ts +7 -10
  577. package/dist/ws/server-options.d.ts +5 -9
  578. package/dist/ws/test-relay-handlers.d.ts +36 -60
  579. package/installer-image-digests.json +3 -3
  580. package/package.json +6 -5
  581. package/sbom.spdx.json +53 -53
  582. package/dist/__test-helpers__/fake-scaler-state-store.d.ts +0 -24
  583. package/dist/__test-helpers__/mock-db-query.d.ts +0 -129
  584. package/dist/__test-helpers__/mock-db.d.ts +0 -134
  585. package/dist/__test-helpers__/mock-ws.d.ts +0 -13
  586. package/dist/__test-helpers__/peer-mutual-auth.d.ts +0 -42
  587. package/dist/__test-helpers__/scratch-db.d.ts +0 -16
  588. package/dist/__test-helpers__/test-db.d.ts +0 -34
  589. package/dist/pipeline/dispatch-matched-workflow.test-helpers.d.ts +0 -121
@@ -1,12 +1,7 @@
1
1
  /**
2
- * In-memory agent registry with label-based lookup and capacity tracking.
3
- *
4
- * Follows the Platform ConnectionRegistry dual-map pattern:
5
- * - Primary map: agentId -> AgentEntry (direct agent lookup)
6
- * - Secondary map: label -> Set<agentId> (reverse index for label-based dispatch queries)
7
- * - WS reverse map: ws -> agentId (fast lookup on WS events)
8
- *
9
- * No persistence needed -- agents re-register on reconnect.
2
+ * In-memory agent registry with label-based lookup and capacity tracking, following the
3
+ * Platform ConnectionRegistry dual-map pattern. No persistence needed: agents re-register
4
+ * on reconnect.
10
5
  */
11
6
  import { type CanonicalLabel, type LabelMatcher } from '@kici-dev/engine';
12
7
  import type { WsLike } from '@kici-dev/engine';
@@ -32,61 +27,49 @@ export declare enum BusyHoldOutcome {
32
27
  */
33
28
  export declare function agentHasFreeSlot(entry: AgentEntry, now?: number): boolean;
34
29
  export type { WsLike } from '@kici-dev/engine';
35
- /**
36
- * A single tracked agent connection.
37
- */
30
+ /** A single tracked agent connection. */
38
31
  export interface AgentEntry {
39
- /** Unique agent identifier. */
40
32
  agentId: string;
41
- /** The underlying WebSocket (or mock). */
42
33
  ws: WsLike;
43
34
  /**
44
- * Set of labels this agent provides (e.g., "linux", "gpu", "docker"), folded
45
- * to canonical form by `register()`. The label reverse index is keyed the
35
+ * Folded to canonical form by `register()`. The label reverse index is keyed the
46
36
  * same way, so a lookup must fold its query before it reaches either.
47
37
  */
48
38
  labels: Set<CanonicalLabel>;
49
39
  /**
50
- * Kubernetes-taint-style mandatory labels inherited from the scaler that
51
- * spawned this agent. A job is only dispatched to this agent when every
52
- * label in `mandatoryLabels` appears in `runsOnLabels` (in addition to the
53
- * existing subset/exclusion checks).
40
+ * Kubernetes-taint-style gate copied from the spawning scaler's `mandatoryLabels`
41
+ * block: a job is dispatched here only when every one of these appears in its
42
+ * `runsOnLabels`, on top of the subset/exclusion checks. Empty for static agents and
43
+ * warm-pool replenishment spawns (no gate).
54
44
  *
55
- * Empty for static agents and warm-pool replenishment spawns — those have
56
- * no opt-in gate and behave exactly as before. Populated only when the
57
- * spawning scaler declared a `mandatoryLabels` block; the value is a copy
58
- * of the scaler's gate (the scaler-side gate in `findBackendForLabels` is
59
- * not enough — once the agent registers, the queue-drain path
60
- * (`onAgentAvailable` → `dequeueForLabels`) sees only the agent's labels
61
- * and would otherwise pull a queued job whose `runsOn` is a subset of the
62
- * agent's labels but does not satisfy the gate).
45
+ * The scaler-side gate in `findBackendForLabels` is not enough: once the agent
46
+ * registers, the queue-drain path (`onAgentAvailable` → `dequeueForLabels`) sees only
47
+ * the agent's labels and would pull a queued job whose `runsOn` is a subset of them
48
+ * but does not satisfy the gate.
63
49
  *
64
- * Folded to canonical form by `register()`, so a scaler that declared `GPU`
65
- * gates the same jobs a scaler that declared `gpu` does.
50
+ * Folded to canonical form by `register()`, so a scaler that declared `GPU` gates the
51
+ * same jobs one that declared `gpu` does.
66
52
  */
67
53
  mandatoryLabels: Set<CanonicalLabel>;
68
54
  /**
69
- * True when this agent was spawned by a scaler backend. Scaler-managed
70
- * agents are single-use: the scaler destroys them on disconnect, so they
71
- * can never reconnect to reclaim recovering jobs. The dispatcher uses
72
- * this to triage disconnects (requeue / fail-fast) instead of starting a
73
- * recovery window that cannot succeed.
55
+ * Scaler-spawned agents are single-use: the scaler destroys them on disconnect, so
56
+ * they never reconnect to reclaim recovering jobs. The dispatcher triages their
57
+ * disconnects (requeue / fail-fast) instead of starting a recovery window that
58
+ * cannot succeed.
74
59
  */
75
60
  scalerManaged: boolean;
76
61
  /**
77
62
  * True while this agent is being torn down and must receive no new work.
78
63
  *
79
- * The warm pool decides an agent is idle, marks it, then awaits a destroy
80
- * that takes seconds — a container `stop({ t: 5 })`, or a Firecracker
81
- * `SendCtrlAltDel` plus its grace. The registry entry survives until the
82
- * agent's WebSocket actually closes, so without this flag `findAvailable`
83
- * kept returning the agent throughout: a job arriving in that window was
84
- * dispatched onto a container that was already exiting, and failed as a
85
- * spurious infrastructure error on a healthy system.
64
+ * A warm-pool destroy takes seconds (a container `stop({ t: 5 })`, or a Firecracker
65
+ * `SendCtrlAltDel` plus its grace), and the entry survives until the WebSocket closes.
66
+ * Without this flag `findAvailable` keeps returning the agent, and a job arriving in
67
+ * that window lands on an exiting container and fails as a spurious infrastructure
68
+ * error.
86
69
  *
87
- * In memory rather than DB-backed, unlike reboot-pending: a warm-pool
88
- * destroy is issued by this process, lasts seconds, and ends with the
89
- * WebSocket close that removes the entry — there is nothing to outlive.
70
+ * In memory rather than DB-backed, unlike reboot-pending: the destroy is issued by
71
+ * this process, lasts seconds, and ends with the WebSocket close that removes the
72
+ * entry — there is nothing to outlive.
90
73
  */
91
74
  draining: boolean;
92
75
  /**
@@ -94,25 +77,23 @@ export interface AgentEntry {
94
77
  * dispatch as busy. Unset when no hold is in force. See {@link AgentRegistry.markBusyHeld}.
95
78
  */
96
79
  busyHeldUntil?: number;
97
- /** Number of jobs currently executing on this agent. */
98
80
  activeJobs: number;
99
- /** Maximum concurrent jobs this agent can handle (default 1). */
81
+ /** Default 1. */
100
82
  maxConcurrency: number;
101
- /** Unix epoch ms of the last heartbeat received. */
83
+ /** Unix epoch ms. */
102
84
  lastHeartbeatAt: number;
103
- /** Agent platform (os.platform(), e.g. 'linux', 'darwin', 'win32'). */
85
+ /** `os.platform()`, e.g. 'linux', 'darwin', 'win32'. */
104
86
  platform: string;
105
- /** Agent architecture (os.arch(), e.g. 'x64', 'arm64'). */
87
+ /** `os.arch()`, e.g. 'x64', 'arm64'. */
106
88
  arch: string;
107
- /** Unix epoch ms when the agent registered. */
89
+ /** Unix epoch ms. */
108
90
  registeredAt: number;
109
- /** Self-reported agent version (e.g. "0.0.1"). Null if not reported. */
91
+ /** Self-reported; null if not reported. */
110
92
  version: string | null;
111
93
  /**
112
- * The `agent_tokens.id` row used to authenticate this connection, or
113
- * `null` when auth mode is `none`. Indexed by `tokenIdIndex` so a
114
- * synchronous revocation kick can enumerate every WS authenticated by
115
- * a given token.
94
+ * The `agent_tokens.id` that authenticated this connection, `null` when auth mode is
95
+ * `none`. Indexed by `tokenIdIndex` so a synchronous revocation kick can enumerate
96
+ * every WS authenticated by a token.
116
97
  */
117
98
  tokenId: string | null;
118
99
  hostname: string | null;
@@ -127,10 +108,9 @@ export interface AgentEntry {
127
108
  memoryAvailableMb: number | null;
128
109
  uptimeSeconds: number | null;
129
110
  /**
130
- * The auth token's `agent_type` (`'static'` | `'ephemeral'`) snapshot, or
131
- * `null` when auth mode is `none`. Drives the host roster's
132
- * `lifecycle_class` — `static` rows persist + alarm on absence, `ephemeral`
133
- * rows are GC'd past their ttl.
111
+ * The auth token's `agent_type` snapshot, `null` when auth mode is `none`. Drives the
112
+ * host roster's `lifecycle_class`: `static` rows persist and alarm on absence,
113
+ * `ephemeral` rows are GC'd past their ttl.
134
114
  */
135
115
  tokenAgentType: 'static' | 'ephemeral' | null;
136
116
  }
@@ -144,42 +124,30 @@ interface AgentMetadata {
144
124
  nodeVersion?: string;
145
125
  runningAsUser?: string;
146
126
  runningAsUid?: number;
147
- /**
148
- * The `agent_tokens.id` row used to authenticate this connection.
149
- * `null` when auth mode is `none` (no token-based auth applied).
150
- * Indexed for `disconnectByTokenId(...)` revocation kicks.
151
- */
127
+ /** `null` when auth mode is `none`. Indexed for `disconnectByTokenId(...)` revocation kicks. */
152
128
  tokenId?: string | null;
153
129
  /**
154
- * Kubernetes-taint-style mandatory labels inherited from the scaler that
155
- * spawned this agent. Empty / undefined for static agents (no opt-in
156
- * gate). Populated by `agent-handler.ts` from the scaler manager's
157
- * `onAgentRegistered(...)` return value.
130
+ * Set by `agent-handler.ts` from the scaler manager's `onAgentRegistered(...)` return
131
+ * value. Empty / undefined for static agents (no gate).
158
132
  */
159
133
  mandatoryLabels?: string[];
160
- /**
161
- * True when a scaler backend spawned this agent (single-use; destroyed
162
- * on disconnect). Set by `agent-handler.ts` from the presence of the
163
- * scaler registration metadata.
164
- */
134
+ /** Set by `agent-handler.ts` from the presence of the scaler registration metadata. */
165
135
  scalerManaged?: boolean;
166
136
  /**
167
- * The auth token's `agent_type` (`'static'` | `'ephemeral'`), threaded from
168
- * `agent-handler.ts` so the host roster can snapshot it as the row's
137
+ * Threaded from `agent-handler.ts` so the host roster can snapshot it as the row's
169
138
  * `lifecycle_class`. `null` / undefined when auth mode is `none`.
170
139
  */
171
140
  tokenAgentType?: 'static' | 'ephemeral' | null;
172
141
  /**
173
- * Agent-reported typed host-vars (the `KICI_PROPERTIES` bag), threaded from
174
- * the `agent.register` message into the roster upsert (shallow-merged with
175
- * any operator-declared properties). Undefined ⇒ the agent reported none.
142
+ * Agent-reported typed host-vars (the `KICI_PROPERTIES` bag), passed into the roster
143
+ * upsert (shallow-merged with any operator-declared properties). Undefined ⇒ the
144
+ * agent reported none.
176
145
  */
177
146
  properties?: Record<string, string | number | boolean>;
178
147
  }
179
148
  /**
180
- * Subset of `HostRosterStore` the registry reconciles into. Optional — when no
181
- * store is injected (e.g. workers, which have no DB), the reconcile hooks are
182
- * a no-op and the in-memory registry behaves exactly as before.
149
+ * Subset of `HostRosterStore` the registry reconciles into. Optional: with no store
150
+ * injected (e.g. workers, which have no DB), the reconcile hooks are a no-op.
183
151
  */
184
152
  export interface RosterReconciler {
185
153
  upsert(input: {
@@ -204,57 +172,34 @@ export interface AgentRegistryDeps {
204
172
  instanceId?: string;
205
173
  }
206
174
  export declare class AgentRegistry {
207
- /** Primary: agentId -> AgentEntry */
208
175
  private readonly agents;
209
- /** Secondary: label -> Set<agentId> (reverse index for label-based queries) */
176
+ /** label -> agentIds, keyed on the canonical label. */
210
177
  private readonly labelIndex;
211
- /** Reverse: ws -> agentId (for fast lookup on WS events) */
212
178
  private readonly wsToAgentId;
213
179
  /**
214
- * Reverse: tokenId -> Set<agentId> (for synchronous revocation kicks).
215
- *
216
- * Populated when `register()` is called with a non-null `tokenId`,
217
- * cleaned up by `removeFromIndexes()` on `unregister()` /
218
- * re-registration. `disconnectByTokenId(tokenId)` walks the matching
219
- * set, closes each WS, and unregisters the entry — closing the
220
- * gap where a revoked token's in-flight WS retained data-plane
221
- * authority until the agent itself disconnected.
180
+ * tokenId -> agentIds, for synchronous revocation kicks: `disconnectByTokenId` closes
181
+ * each WS so a revoked token's in-flight connection loses data-plane authority at
182
+ * once instead of when the agent disconnects.
222
183
  */
223
184
  private readonly tokenIdIndex;
224
185
  /**
225
- * Per-tokenId TTL kick timer, keyed by `tokenId`. Scheduled by
226
- * `scheduleExpiryKick(tokenId, expiresAt)` at agent register-time
227
- * when the auth token has a non-null `expires_at`. Fires
228
- * `disconnectByTokenId(tokenId)` when the token's TTL elapses, and
229
- * is cleared when (a) the timer fires, (b) `disconnectByTokenId` is
230
- * called explicitly via revocation (no double-kick when revoke
231
- * races TTL), or (c) the last agent under the tokenId unregisters
232
- * naturally (avoid timer leaks on long-lived registries).
233
- *
234
- * Idempotent: re-scheduling the same tokenId is a no-op as long as
235
- * a timer is still queued — a token's `expires_at` doesn't shift
236
- * across reconnects of the same agent. Revocation kicks a token's
237
- * in-flight WS connections at once; these timers do the same when
238
- * the token reaches its natural TTL.
186
+ * Per-tokenId TTL kick timer, armed by `scheduleExpiryKick` for a token with a
187
+ * non-null `expires_at`. Cleared when it fires, when a revocation calls
188
+ * `disconnectByTokenId` (no double kick when revoke races TTL), or when the last agent
189
+ * under the token unregisters (no timer leak on long-lived registries).
239
190
  */
240
191
  private readonly tokenExpiryTimers;
241
192
  /**
242
- * Per-agent last roster `last_seen` stamp time (epoch ms). Throttles the
243
- * coarse heartbeat write so we don't issue a DB write per agent per
244
- * heartbeat — `grace`/`ttl` are minute-scale, so a throttled stamp is
245
- * sufficient. Cleaned up alongside the agent in `removeFromIndexes`.
193
+ * Per-agent last roster `last_seen` stamp (epoch ms). Throttles the heartbeat write
194
+ * to one per agent per window: `grace`/`ttl` are minute-scale, so a throttled stamp
195
+ * is sufficient.
246
196
  */
247
197
  private readonly lastRosterStampAt;
248
198
  /** Minimum interval between coarse roster `last_seen` stamps per agent. */
249
199
  private readonly ROSTER_STAMP_THROTTLE_MS;
250
- /** Optional host-roster reconciler + this instance's id (see AgentRegistryDeps). */
251
200
  private readonly rosterStore?;
252
201
  private readonly instanceId?;
253
- /**
254
- * The roster reconcile seam is optional: when no store is injected (workers
255
- * with no DB, unit tests), every reconcile hook is a no-op and the in-memory
256
- * registry behaves exactly as before.
257
- */
202
+ /** With no roster store (workers with no DB, unit tests), every reconcile hook is a no-op. */
258
203
  constructor(deps?: AgentRegistryDeps);
259
204
  /**
260
205
  * Triages the in-flight jobs of an agent this registry drops on its own (a
@@ -266,12 +211,11 @@ export declare class AgentRegistry {
266
211
  /** Install the job triage {@link disconnectByTokenId} runs for each agent it drops. */
267
212
  setDisconnectTriage(triage: (agentId: string) => Promise<unknown>): void;
268
213
  /**
269
- * Sockets whose `agent.register` is in flight (awaiting the scaler lookup),
270
- * per agent id, with the id of the agent token each authenticated with
271
- * (`null` without token auth). Kept here rather than in the WebSocket
272
- * handler because the coordinator builds one handler per connection: a
273
- * socket's close, and the check a registration makes against another agent
274
- * token, must see a registration in flight on another connection.
214
+ * Sockets whose `agent.register` is in flight (awaiting the scaler lookup), per agent
215
+ * id, with the agent token id each authenticated with (`null` without token auth).
216
+ * Kept here rather than in the WebSocket handler because the coordinator builds one
217
+ * handler per connection: a socket's close, and a registration's check against
218
+ * another agent token, must see a registration in flight on another connection.
275
219
  */
276
220
  private readonly registeringSockets;
277
221
  /** Record that `ws`, authenticated with `tokenId`, has started registering `agentId`. */
@@ -288,8 +232,7 @@ export declare class AgentRegistry {
288
232
  */
289
233
  isAgentIdHeldByOtherToken(agentId: string, tokenId: string, ws: WsLike): boolean;
290
234
  /**
291
- * Register an agent. If the agentId already exists, updates the existing
292
- * entry (agent reconnection scenario).
235
+ * Register an agent, replacing an existing entry for the same id (reconnect).
293
236
  *
294
237
  * @returns the socket the previous entry was bound to, when this register
295
238
  * replaced one bound to a *different* socket. The caller owns that socket's
@@ -300,123 +243,84 @@ export declare class AgentRegistry {
300
243
  * same socket.
301
244
  */
302
245
  register(agentId: string, ws: WsLike, labels: string[], platform?: string, arch?: string, version?: string, maxConcurrency?: number, metadata?: AgentMetadata): WsLike | undefined;
303
- /**
304
- * Unregister an agent by ID. Removes from all indexes.
305
- * @returns The removed AgentEntry, or undefined if not found.
306
- */
246
+ /** @returns the removed entry, or undefined if not found. */
307
247
  unregister(agentId: string): AgentEntry | undefined;
308
- /**
309
- * Unregister an agent by its WebSocket reference (for disconnect handling).
310
- * @returns The removed AgentEntry, or undefined if not found.
311
- */
248
+ /** For disconnect handling. @returns the removed entry, or undefined if not found. */
312
249
  unregisterByWs(ws: WsLike): AgentEntry | undefined;
313
250
  /**
314
- * Close every WS authenticated under `tokenId`, send a final
315
- * `auth.failure` message, then unregister the entry. Returns the
316
- * count of kicked agents.
251
+ * Send a final `auth.failure` to every WS authenticated under `tokenId`, close it,
252
+ * and unregister the entry. Returns the count of kicked agents.
317
253
  *
318
- * Closes the gap on the agent->orchestrator leg: when an admin
319
- * revokes a token via `DELETE /api/v1/agent-tokens/:id`, the route
320
- * calls this synchronously after `tokenStore.revoke(id)` so the
321
- * in-flight WS loses data-plane authority before the handler
322
- * returns.
254
+ * `DELETE /api/v1/agent-tokens/:id` calls this synchronously after
255
+ * `tokenStore.revoke(id)`, so the in-flight WS loses data-plane authority before the
256
+ * handler returns.
323
257
  *
324
- * The WS close code is `WS_CLOSE_AGENT_AUTH_FAILED` (4010); the
325
- * agent's reconnect loop treats both the `auth.failure` message and
326
- * this close code as permanent and stops retrying.
258
+ * The close code is `WS_CLOSE_AGENT_AUTH_FAILED` (4010); the agent's reconnect loop
259
+ * treats both it and the `auth.failure` message as permanent and stops retrying.
327
260
  */
328
261
  disconnectByTokenId(tokenId: string): number;
329
262
  /**
330
- * Schedule a one-shot TTL kick for `tokenId` at `expiresAt`. When
331
- * the timer fires (or if `expiresAt` is already past), every
332
- * in-flight WS authenticated under the token is closed via
333
- * `disconnectByTokenId`.
263
+ * Schedule a one-shot `disconnectByTokenId` kick for `tokenId` at `expiresAt`, or at
264
+ * once when it is already past.
334
265
  *
335
- * Idempotent per `tokenId`: if a timer is already scheduled for
336
- * this token, the call is a no-op. A token's `expires_at` doesn't
337
- * change across reconnects, so re-scheduling would just re-arm the
338
- * same trigger.
266
+ * Idempotent per `tokenId`: a token's `expires_at` doesn't change across reconnects,
267
+ * so re-scheduling would re-arm the same trigger.
339
268
  *
340
- * Caller is the agent WS handler at register-time, when the token's
341
- * `agent_tokens.expires_at` column is non-null. Static tokens have
342
- * `expires_at = null` and are skipped at the call site (they have
343
- * no TTL by design). Revocation kicks a token's in-flight WS
344
- * connections at once; this timer does the same at the token's
345
- * natural TTL.
269
+ * Called by the agent WS handler at register time when `agent_tokens.expires_at` is
270
+ * non-null. Static tokens have `expires_at = null` (no TTL by design) and are skipped
271
+ * at the call site.
346
272
  */
347
273
  scheduleExpiryKick(tokenId: string, expiresAt: Date): void;
348
274
  /**
349
- * Find available agents that match ALL required labels.
350
- * An agent is available when it has capacity (activeJobs < maxConcurrency).
275
+ * Find available agents that have ALL required labels.
276
+ * An agent is available when it is not draining and has a free slot
277
+ * ({@link agentHasFreeSlot}: activeJobs < maxConcurrency and no busy hold).
351
278
  *
352
- * In addition to the subset + exclusion filters, every label declared in
353
- * the agent's `mandatoryLabels` must appear in `requiredLabels`. This is
354
- * the agent-side mirror of the scaler-side mandatory-labels gate
355
- * (`findBackendForLabels`). Without it, a queued job whose `runsOn` is a
356
- * subset of a gated agent's labels but does not list the gate label
357
- * would be drained onto that agent the next time `onAgentAvailable`
358
- * fires — sidestepping the opt-in semantics the gate is meant to enforce.
359
- *
360
- * @param requiredLabels - All labels the agent must have (intersection semantics).
361
- * @returns Array of matching available AgentEntry objects.
279
+ * Every label in the agent's `mandatoryLabels` must also appear in `requiredLabels`:
280
+ * the agent-side mirror of the scaler-side gate (`findBackendForLabels`). Without it,
281
+ * a queued job whose `runsOn` is a subset of a gated agent's labels but omits the
282
+ * gate label would be drained onto that agent the next time `onAgentAvailable` fires.
362
283
  */
363
284
  findAvailable(requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[]): AgentEntry[];
364
285
  /**
365
- * Whether a specific agent satisfies the same label / exclude / mandatory
366
- * gate `findAvailable` applies per-agent, ignoring capacity. Used by the
367
- * host-fanout pin to verify the resolved agent still matches before pinning
368
- * (guards against roster label drift between resolution and dispatch).
286
+ * The per-agent label / exclude / mandatory gate of `findAvailable`, ignoring
287
+ * capacity. The host-fanout pin uses it to guard against roster label drift between
288
+ * resolution and dispatch.
369
289
  */
370
290
  agentSatisfies(agent: AgentEntry, requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[]): boolean;
371
291
  /**
372
- * Check if ANY registered agent matches the required labels, regardless of capacity.
373
- * Used to decide whether to queue (agent exists but busy) vs reject (no agent at all).
292
+ * Whether ANY registered agent matches, regardless of capacity: decides queue (agent
293
+ * exists but busy) vs reject (no agent at all).
374
294
  *
375
- * Applies the same `mandatoryLabels` gate as `findAvailable` — a gated
376
- * agent only counts as "matching" when every label in its
377
- * `mandatoryLabels` is present in `requiredLabels`. Without this, the
378
- * dispatcher's `queued-no-backend` decision in `dispatch()` would treat
379
- * an off-gate gated agent as "matching but busy" and skip the peer
380
- * reroute path even though the local agent can never accept the job.
295
+ * Applies the `mandatoryLabels` gate of `findAvailable`. Without it, the
296
+ * `queued-no-backend` decision in `dispatch()` would treat an off-gate agent as
297
+ * "matching but busy" and skip the peer reroute path, though that agent can never
298
+ * accept the job.
381
299
  */
382
300
  hasMatchingAgent(requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[],
383
301
  /**
384
- * An extra test a label-matching agent must pass: whether it can run the
385
- * job at all, which its labels cannot express. An agent that matches but
386
- * never could is not a reason to keep the job here rather than reroute it.
302
+ * Whether a label-matching agent can run the job at all, which its labels cannot
303
+ * express. An agent that never could is no reason to keep the job here rather
304
+ * than reroute it.
387
305
  */
388
306
  canRun?: (entry: AgentEntry) => boolean): boolean;
389
307
  /**
390
- * Internal helper: intersect the per-label candidate sets to find agentIds
391
- * that satisfy `requiredLabels`. Returns `null` when any required label
392
- * matches zero agents (so callers can short-circuit). Returns an empty
393
- * Set on `requiredLabels.length === 0` since the caller decides the
394
- * walk strategy in that case.
308
+ * Agent ids that have every required label, or `null` when any label matches zero
309
+ * agents (so callers can short-circuit). An empty Set for no labels: the caller picks
310
+ * the walk strategy then.
395
311
  *
396
- * Takes canonical labels: the index it reads is keyed on the canonical form,
397
- * so a caller folds before it gets here.
312
+ * Takes canonical labels, since the index is keyed on the canonical form.
398
313
  */
399
314
  private intersectLabelCandidates;
400
- /**
401
- * Increment activeJobs for an agent.
402
- * @returns false if agent not found.
403
- */
315
+ /** @returns false if agent not found. */
404
316
  incrementActiveJobs(agentId: string): boolean;
405
- /**
406
- * Decrement activeJobs for an agent (min 0).
407
- * @returns false if agent not found.
408
- */
317
+ /** Floors at 0. @returns false if agent not found. */
409
318
  decrementActiveJobs(agentId: string): boolean;
410
- /**
411
- * Update the last heartbeat timestamp for an agent.
412
- */
413
319
  updateHeartbeat(agentId: string): boolean;
414
320
  /**
415
- * Compact, allocation-cheap snapshot of every registered agent's routing
416
- * facts. Used by the dispatcher to log WHY a job found no backend (required
417
- * labels vs each agent's labels / capacity), which is otherwise invisible —
418
- * a `queued-no-backend` outcome alone doesn't say whether the label set
419
- * mismatched, the agent was at capacity, or no agent was connected at all.
321
+ * Cheap snapshot of every agent's routing facts, so the dispatcher can log WHY a job
322
+ * found no backend: `queued-no-backend` alone doesn't say whether the labels
323
+ * mismatched, the agent was at capacity, or no agent was connected.
420
324
  */
421
325
  agentSummaries(): Array<{
422
326
  agentId: string;
@@ -427,25 +331,17 @@ export declare class AgentRegistry {
427
331
  maxConcurrency: number;
428
332
  }>;
429
333
  /**
430
- * Get a single agent entry by ID.
431
- */
432
- /**
433
- * Whether one agent id is currently registered.
434
- *
435
- * Distinct from `findAvailable`, which answers "which agents could take this
436
- * job" — the container orphan sweep needs to know only whether a running
437
- * container's agent is present at all, including one that is busy or gated.
334
+ * Distinct from `findAvailable` ("which agents could take this job"): the container
335
+ * orphan sweep needs only whether a running container's agent is present at all,
336
+ * busy or gated included.
438
337
  */
439
338
  isRegistered(agentId: string): boolean;
440
339
  /**
441
- * Condemn an agent: it stays registered and keeps finishing its current work,
442
- * but takes no new dispatches.
340
+ * Condemn an agent before a warm-pool destroy: it stays registered and finishes its
341
+ * current work, but takes no new dispatches.
443
342
  *
444
- * Called before a warm-pool destroy is issued. Returns the agent's current
445
- * `activeJobs` so the caller can see a job that was claimed between its idle
446
- * check and this mark, and back out.
447
- *
448
- * @returns the agent's active-job count, or `undefined` when it is not registered
343
+ * @returns the agent's `activeJobs`, so the caller can see a job claimed between its
344
+ * idle check and this mark and back out; `undefined` when not registered
449
345
  */
450
346
  markDraining(agentId: string): number | undefined;
451
347
  /**
@@ -489,21 +385,13 @@ export declare class AgentRegistry {
489
385
  /** Undo {@link markDraining} — a destroy that was rejected leaves the agent alive. */
490
386
  clearDraining(agentId: string): void;
491
387
  get(agentId: string): AgentEntry | undefined;
492
- /**
493
- * Get an agent entry by its WebSocket reference.
494
- */
495
388
  getByWs(ws: WsLike): AgentEntry | undefined;
496
- /**
497
- * Total number of registered agents.
498
- */
499
389
  getActiveCount(): number;
500
- /**
501
- * Iterator over all agent entries (for heartbeat checks, etc).
502
- */
503
390
  getAllEntries(): IterableIterator<AgentEntry>;
504
391
  /**
505
- * Remove an agent from the WS reverse map and label index.
506
- * Does NOT remove from the primary agents map.
392
+ * Remove an agent from the WS reverse map, the label index, the roster-stamp
393
+ * map and the token index (cancelling the token's TTL timer when no agent is
394
+ * left on it). Does NOT remove from the primary agents map.
507
395
  */
508
396
  private removeFromIndexes;
509
397
  }