@kici-dev/orchestrator 0.17.0 → 0.19.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 (592) 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 +137 -230
  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 +60 -60
  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 +8207 -10128
  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 +145 -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 +290 -526
  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 +62 -156
  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 +30 -46
  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 +19 -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 +49 -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 +8628 -13569
  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 +7670 -12402
  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 +9 -11
  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/job-status-forward-frame.d.ts +30 -0
  574. package/dist/ws/observer-registry.d.ts +14 -59
  575. package/dist/ws/outbound-frame-guard.d.ts +4 -0
  576. package/dist/ws/ownership-gate.d.ts +1 -1
  577. package/dist/ws/platform-client.d.ts +32 -31
  578. package/dist/ws/replay-chunker.d.ts +7 -10
  579. package/dist/ws/server-options.d.ts +5 -9
  580. package/dist/ws/test-relay-handlers.d.ts +45 -59
  581. package/dist/ws/test-run-log-cursor.d.ts +18 -0
  582. package/installer-image-digests.json +3 -3
  583. package/package.json +6 -5
  584. package/sbom.spdx.json +53 -53
  585. package/dist/__test-helpers__/fake-scaler-state-store.d.ts +0 -24
  586. package/dist/__test-helpers__/mock-db-query.d.ts +0 -129
  587. package/dist/__test-helpers__/mock-db.d.ts +0 -134
  588. package/dist/__test-helpers__/mock-ws.d.ts +0 -13
  589. package/dist/__test-helpers__/peer-mutual-auth.d.ts +0 -42
  590. package/dist/__test-helpers__/scratch-db.d.ts +0 -16
  591. package/dist/__test-helpers__/test-db.d.ts +0 -34
  592. 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,87 +27,81 @@ 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.
69
+ *
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.
86
73
  *
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.
74
+ * Also set when the agent itself reports `draining` on `agent.status` (a SIGUSR1
75
+ * drain, or a single-job agent that accepted its job); see {@link drainReported}.
90
76
  */
91
77
  draining: boolean;
78
+ /**
79
+ * The agent reported `draining` itself. Its drain is terminal for this connection,
80
+ * so {@link AgentRegistry.clearDraining} (the warm-pool undo) leaves it draining.
81
+ */
82
+ drainReported?: boolean;
92
83
  /**
93
84
  * Epoch ms until which the agent is held out of routing after it rejected a
94
85
  * dispatch as busy. Unset when no hold is in force. See {@link AgentRegistry.markBusyHeld}.
95
86
  */
96
87
  busyHeldUntil?: number;
97
- /** Number of jobs currently executing on this agent. */
98
88
  activeJobs: number;
99
- /** Maximum concurrent jobs this agent can handle (default 1). */
89
+ /** Default 1. */
100
90
  maxConcurrency: number;
101
- /** Unix epoch ms of the last heartbeat received. */
91
+ /** Unix epoch ms. */
102
92
  lastHeartbeatAt: number;
103
- /** Agent platform (os.platform(), e.g. 'linux', 'darwin', 'win32'). */
93
+ /** `os.platform()`, e.g. 'linux', 'darwin', 'win32'. */
104
94
  platform: string;
105
- /** Agent architecture (os.arch(), e.g. 'x64', 'arm64'). */
95
+ /** `os.arch()`, e.g. 'x64', 'arm64'. */
106
96
  arch: string;
107
- /** Unix epoch ms when the agent registered. */
97
+ /** Unix epoch ms. */
108
98
  registeredAt: number;
109
- /** Self-reported agent version (e.g. "0.0.1"). Null if not reported. */
99
+ /** Self-reported; null if not reported. */
110
100
  version: string | null;
111
101
  /**
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.
102
+ * The `agent_tokens.id` that authenticated this connection, `null` when auth mode is
103
+ * `none`. Indexed by `tokenIdIndex` so a synchronous revocation kick can enumerate
104
+ * every WS authenticated by a token.
116
105
  */
117
106
  tokenId: string | null;
118
107
  hostname: string | null;
@@ -127,10 +116,9 @@ export interface AgentEntry {
127
116
  memoryAvailableMb: number | null;
128
117
  uptimeSeconds: number | null;
129
118
  /**
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.
119
+ * The auth token's `agent_type` snapshot, `null` when auth mode is `none`. Drives the
120
+ * host roster's `lifecycle_class`: `static` rows persist and alarm on absence,
121
+ * `ephemeral` rows are GC'd past their ttl.
134
122
  */
135
123
  tokenAgentType: 'static' | 'ephemeral' | null;
136
124
  }
@@ -144,42 +132,30 @@ interface AgentMetadata {
144
132
  nodeVersion?: string;
145
133
  runningAsUser?: string;
146
134
  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
- */
135
+ /** `null` when auth mode is `none`. Indexed for `disconnectByTokenId(...)` revocation kicks. */
152
136
  tokenId?: string | null;
153
137
  /**
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.
138
+ * Set by `agent-handler.ts` from the scaler manager's `onAgentRegistered(...)` return
139
+ * value. Empty / undefined for static agents (no gate).
158
140
  */
159
141
  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
- */
142
+ /** Set by `agent-handler.ts` from the presence of the scaler registration metadata. */
165
143
  scalerManaged?: boolean;
166
144
  /**
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
145
+ * Threaded from `agent-handler.ts` so the host roster can snapshot it as the row's
169
146
  * `lifecycle_class`. `null` / undefined when auth mode is `none`.
170
147
  */
171
148
  tokenAgentType?: 'static' | 'ephemeral' | null;
172
149
  /**
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.
150
+ * Agent-reported typed host-vars (the `KICI_PROPERTIES` bag), passed into the roster
151
+ * upsert (shallow-merged with any operator-declared properties). Undefined ⇒ the
152
+ * agent reported none.
176
153
  */
177
154
  properties?: Record<string, string | number | boolean>;
178
155
  }
179
156
  /**
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.
157
+ * Subset of `HostRosterStore` the registry reconciles into. Optional: with no store
158
+ * injected (e.g. workers, which have no DB), the reconcile hooks are a no-op.
183
159
  */
184
160
  export interface RosterReconciler {
185
161
  upsert(input: {
@@ -204,57 +180,34 @@ export interface AgentRegistryDeps {
204
180
  instanceId?: string;
205
181
  }
206
182
  export declare class AgentRegistry {
207
- /** Primary: agentId -> AgentEntry */
208
183
  private readonly agents;
209
- /** Secondary: label -> Set<agentId> (reverse index for label-based queries) */
184
+ /** label -> agentIds, keyed on the canonical label. */
210
185
  private readonly labelIndex;
211
- /** Reverse: ws -> agentId (for fast lookup on WS events) */
212
186
  private readonly wsToAgentId;
213
187
  /**
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.
188
+ * tokenId -> agentIds, for synchronous revocation kicks: `disconnectByTokenId` closes
189
+ * each WS so a revoked token's in-flight connection loses data-plane authority at
190
+ * once instead of when the agent disconnects.
222
191
  */
223
192
  private readonly tokenIdIndex;
224
193
  /**
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.
194
+ * Per-tokenId TTL kick timer, armed by `scheduleExpiryKick` for a token with a
195
+ * non-null `expires_at`. Cleared when it fires, when a revocation calls
196
+ * `disconnectByTokenId` (no double kick when revoke races TTL), or when the last agent
197
+ * under the token unregisters (no timer leak on long-lived registries).
239
198
  */
240
199
  private readonly tokenExpiryTimers;
241
200
  /**
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`.
201
+ * Per-agent last roster `last_seen` stamp (epoch ms). Throttles the heartbeat write
202
+ * to one per agent per window: `grace`/`ttl` are minute-scale, so a throttled stamp
203
+ * is sufficient.
246
204
  */
247
205
  private readonly lastRosterStampAt;
248
206
  /** Minimum interval between coarse roster `last_seen` stamps per agent. */
249
207
  private readonly ROSTER_STAMP_THROTTLE_MS;
250
- /** Optional host-roster reconciler + this instance's id (see AgentRegistryDeps). */
251
208
  private readonly rosterStore?;
252
209
  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
- */
210
+ /** With no roster store (workers with no DB, unit tests), every reconcile hook is a no-op. */
258
211
  constructor(deps?: AgentRegistryDeps);
259
212
  /**
260
213
  * Triages the in-flight jobs of an agent this registry drops on its own (a
@@ -266,12 +219,11 @@ export declare class AgentRegistry {
266
219
  /** Install the job triage {@link disconnectByTokenId} runs for each agent it drops. */
267
220
  setDisconnectTriage(triage: (agentId: string) => Promise<unknown>): void;
268
221
  /**
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.
222
+ * Sockets whose `agent.register` is in flight (awaiting the scaler lookup), per agent
223
+ * id, with the agent token id each authenticated with (`null` without token auth).
224
+ * Kept here rather than in the WebSocket handler because the coordinator builds one
225
+ * handler per connection: a socket's close, and a registration's check against
226
+ * another agent token, must see a registration in flight on another connection.
275
227
  */
276
228
  private readonly registeringSockets;
277
229
  /** Record that `ws`, authenticated with `tokenId`, has started registering `agentId`. */
@@ -288,8 +240,7 @@ export declare class AgentRegistry {
288
240
  */
289
241
  isAgentIdHeldByOtherToken(agentId: string, tokenId: string, ws: WsLike): boolean;
290
242
  /**
291
- * Register an agent. If the agentId already exists, updates the existing
292
- * entry (agent reconnection scenario).
243
+ * Register an agent, replacing an existing entry for the same id (reconnect).
293
244
  *
294
245
  * @returns the socket the previous entry was bound to, when this register
295
246
  * replaced one bound to a *different* socket. The caller owns that socket's
@@ -300,123 +251,84 @@ export declare class AgentRegistry {
300
251
  * same socket.
301
252
  */
302
253
  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
- */
254
+ /** @returns the removed entry, or undefined if not found. */
307
255
  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
- */
256
+ /** For disconnect handling. @returns the removed entry, or undefined if not found. */
312
257
  unregisterByWs(ws: WsLike): AgentEntry | undefined;
313
258
  /**
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.
259
+ * Send a final `auth.failure` to every WS authenticated under `tokenId`, close it,
260
+ * and unregister the entry. Returns the count of kicked agents.
317
261
  *
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.
262
+ * `DELETE /api/v1/agent-tokens/:id` calls this synchronously after
263
+ * `tokenStore.revoke(id)`, so the in-flight WS loses data-plane authority before the
264
+ * handler returns.
323
265
  *
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.
266
+ * The close code is `WS_CLOSE_AGENT_AUTH_FAILED` (4010); the agent's reconnect loop
267
+ * treats both it and the `auth.failure` message as permanent and stops retrying.
327
268
  */
328
269
  disconnectByTokenId(tokenId: string): number;
329
270
  /**
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`.
271
+ * Schedule a one-shot `disconnectByTokenId` kick for `tokenId` at `expiresAt`, or at
272
+ * once when it is already past.
334
273
  *
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.
274
+ * Idempotent per `tokenId`: a token's `expires_at` doesn't change across reconnects,
275
+ * so re-scheduling would re-arm the same trigger.
339
276
  *
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.
277
+ * Called by the agent WS handler at register time when `agent_tokens.expires_at` is
278
+ * non-null. Static tokens have `expires_at = null` (no TTL by design) and are skipped
279
+ * at the call site.
346
280
  */
347
281
  scheduleExpiryKick(tokenId: string, expiresAt: Date): void;
348
282
  /**
349
- * Find available agents that match ALL required labels.
350
- * An agent is available when it has capacity (activeJobs < maxConcurrency).
351
- *
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.
283
+ * Find available agents that have ALL required labels.
284
+ * An agent is available when it is not draining and has a free slot
285
+ * ({@link agentHasFreeSlot}: activeJobs < maxConcurrency and no busy hold).
359
286
  *
360
- * @param requiredLabels - All labels the agent must have (intersection semantics).
361
- * @returns Array of matching available AgentEntry objects.
287
+ * Every label in the agent's `mandatoryLabels` must also appear in `requiredLabels`:
288
+ * the agent-side mirror of the scaler-side gate (`findBackendForLabels`). Without it,
289
+ * a queued job whose `runsOn` is a subset of a gated agent's labels but omits the
290
+ * gate label would be drained onto that agent the next time `onAgentAvailable` fires.
362
291
  */
363
292
  findAvailable(requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[]): AgentEntry[];
364
293
  /**
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).
294
+ * The per-agent label / exclude / mandatory gate of `findAvailable`, ignoring
295
+ * capacity. The host-fanout pin uses it to guard against roster label drift between
296
+ * resolution and dispatch.
369
297
  */
370
298
  agentSatisfies(agent: AgentEntry, requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[]): boolean;
371
299
  /**
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).
300
+ * Whether ANY registered agent matches, regardless of capacity: decides queue (agent
301
+ * exists but busy) vs reject (no agent at all).
374
302
  *
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.
303
+ * Applies the `mandatoryLabels` gate of `findAvailable`. Without it, the
304
+ * `queued-no-backend` decision in `dispatch()` would treat an off-gate agent as
305
+ * "matching but busy" and skip the peer reroute path, though that agent can never
306
+ * accept the job.
381
307
  */
382
308
  hasMatchingAgent(requiredLabels: string[], requiredPatterns?: LabelMatcher[], excludeLabels?: string[], excludePatterns?: LabelMatcher[],
383
309
  /**
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.
310
+ * Whether a label-matching agent can run the job at all, which its labels cannot
311
+ * express. An agent that never could is no reason to keep the job here rather
312
+ * than reroute it.
387
313
  */
388
314
  canRun?: (entry: AgentEntry) => boolean): boolean;
389
315
  /**
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.
316
+ * Agent ids that have every required label, or `null` when any label matches zero
317
+ * agents (so callers can short-circuit). An empty Set for no labels: the caller picks
318
+ * the walk strategy then.
395
319
  *
396
- * Takes canonical labels: the index it reads is keyed on the canonical form,
397
- * so a caller folds before it gets here.
320
+ * Takes canonical labels, since the index is keyed on the canonical form.
398
321
  */
399
322
  private intersectLabelCandidates;
400
- /**
401
- * Increment activeJobs for an agent.
402
- * @returns false if agent not found.
403
- */
323
+ /** @returns false if agent not found. */
404
324
  incrementActiveJobs(agentId: string): boolean;
405
- /**
406
- * Decrement activeJobs for an agent (min 0).
407
- * @returns false if agent not found.
408
- */
325
+ /** Floors at 0. @returns false if agent not found. */
409
326
  decrementActiveJobs(agentId: string): boolean;
410
- /**
411
- * Update the last heartbeat timestamp for an agent.
412
- */
413
327
  updateHeartbeat(agentId: string): boolean;
414
328
  /**
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.
329
+ * Cheap snapshot of every agent's routing facts, so the dispatcher can log WHY a job
330
+ * found no backend: `queued-no-backend` alone doesn't say whether the labels
331
+ * mismatched, the agent was at capacity, or no agent was connected.
420
332
  */
421
333
  agentSummaries(): Array<{
422
334
  agentId: string;
@@ -427,25 +339,20 @@ export declare class AgentRegistry {
427
339
  maxConcurrency: number;
428
340
  }>;
429
341
  /**
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.
342
+ * Distinct from `findAvailable` ("which agents could take this job"): the container
343
+ * orphan sweep needs only whether a running container's agent is present at all,
344
+ * busy or gated included.
438
345
  */
439
346
  isRegistered(agentId: string): boolean;
440
347
  /**
441
348
  * Condemn an agent: it stays registered and keeps finishing its current work,
442
349
  * but takes no new dispatches.
443
350
  *
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.
351
+ * Called before a warm-pool destroy is issued. An agent that reports its own
352
+ * drain goes through {@link markDrainReported} instead.
447
353
  *
448
- * @returns the agent's active-job count, or `undefined` when it is not registered
354
+ * @returns the agent's `activeJobs`, so the caller can see a job claimed between its
355
+ * idle check and this mark and back out; `undefined` when not registered
449
356
  */
450
357
  markDraining(agentId: string): number | undefined;
451
358
  /**
@@ -486,24 +393,24 @@ export declare class AgentRegistry {
486
393
  * free slot now.
487
394
  */
488
395
  clearExpiredBusyHold(agentId: string, now?: number): void;
489
- /** Undo {@link markDraining} — a destroy that was rejected leaves the agent alive. */
490
- clearDraining(agentId: string): void;
491
- get(agentId: string): AgentEntry | undefined;
492
396
  /**
493
- * Get an agent entry by its WebSocket reference.
397
+ * The agent reported on `agent.status` that it takes no new job: a drain, or a
398
+ * single-job agent that has accepted its job. Terminal for this connection.
494
399
  */
495
- getByWs(ws: WsLike): AgentEntry | undefined;
400
+ markDrainReported(agentId: string): void;
496
401
  /**
497
- * Total number of registered agents.
402
+ * Undo {@link markDraining} — a destroy that was rejected leaves the agent alive.
403
+ * An agent that reported its own drain stays draining.
498
404
  */
405
+ clearDraining(agentId: string): void;
406
+ get(agentId: string): AgentEntry | undefined;
407
+ getByWs(ws: WsLike): AgentEntry | undefined;
499
408
  getActiveCount(): number;
500
- /**
501
- * Iterator over all agent entries (for heartbeat checks, etc).
502
- */
503
409
  getAllEntries(): IterableIterator<AgentEntry>;
504
410
  /**
505
- * Remove an agent from the WS reverse map and label index.
506
- * Does NOT remove from the primary agents map.
411
+ * Remove an agent from the WS reverse map, the label index, the roster-stamp
412
+ * map and the token index (cancelling the token's TTL timer when no agent is
413
+ * left on it). Does NOT remove from the primary agents map.
507
414
  */
508
415
  private removeFromIndexes;
509
416
  }