@kici-dev/orchestrator 0.16.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.
- package/dist/agent/agent-version.d.ts +12 -21
- package/dist/agent/dispatcher.d.ts +283 -437
- package/dist/agent/host-roster-reaper.d.ts +8 -10
- package/dist/agent/host-roster.d.ts +77 -100
- package/dist/agent/ownership-refusal.d.ts +3 -5
- package/dist/agent/ownership-tracker.d.ts +42 -76
- package/dist/agent/registry.d.ts +121 -233
- package/dist/agent/token-store.d.ts +34 -77
- package/dist/agent-packaging/availability.d.ts +6 -9
- package/dist/agent-packaging/download.d.ts +6 -9
- package/dist/agent-packaging/install-closure.d.ts +9 -12
- package/dist/agent-packaging/node-binary.d.ts +6 -10
- package/dist/agent-packaging/node-runtime-members.d.ts +3 -5
- package/dist/agent-packaging/refresh.d.ts +12 -16
- package/dist/agent-packaging/store.d.ts +5 -6
- package/dist/agent-packaging/upload.d.ts +3 -4
- package/dist/app.d.ts +0 -3
- package/dist/approvals/apply-decision.d.ts +39 -45
- package/dist/approvals/approval-resolver.d.ts +11 -23
- package/dist/approvals/held-run-release-wiring.d.ts +14 -21
- package/dist/approvals/independent-wiring.d.ts +13 -20
- package/dist/approvals/resume-router.d.ts +1 -1
- package/dist/approvals/step-approval-bridge.d.ts +11 -21
- package/dist/approvals/triggerer-subject.d.ts +8 -10
- package/dist/artifacts/artifact-store.d.ts +55 -95
- package/dist/artifacts/failure-messages.d.ts +15 -20
- package/dist/audit/access-log.d.ts +27 -45
- package/dist/audit/sampling-rate-limiter.d.ts +11 -23
- package/dist/cache/agent-job-failed-error.d.ts +2 -3
- package/dist/cache/build-coordinator.d.ts +5 -28
- package/dist/cache/cache-upload-settle.d.ts +11 -11
- package/dist/cache/dep-cache.d.ts +32 -60
- package/dist/cache/dispatch-cache-ref-tracker.d.ts +15 -23
- package/dist/cache/global-eval-round-cache.d.ts +33 -41
- package/dist/cache/pending-builds.d.ts +2 -6
- package/dist/cache/pending-dynamics.d.ts +2 -7
- package/dist/cache/pending-global-evals.d.ts +9 -12
- package/dist/cache/pending-inits.d.ts +11 -22
- package/dist/cache/pending-precursor-db-watcher.d.ts +24 -32
- package/dist/cache/pending-tracker.d.ts +17 -45
- package/dist/cache/precursor-result.d.ts +17 -30
- package/dist/cache/source-cache.d.ts +36 -65
- package/dist/cache/user-cache.d.ts +21 -25
- package/dist/cancel/cancel-held-run.d.ts +13 -16
- package/dist/cancel/cancel-route-answer.d.ts +1 -2
- package/dist/cancel/cancel-run.d.ts +26 -50
- package/dist/cancel/dashboard-cancel-handler.d.ts +2 -2
- package/dist/cancel/peer-job-cancel.d.ts +11 -14
- package/dist/cancel/sweep-stuck-cancelling.d.ts +9 -13
- package/dist/cli/api-client.d.ts +33 -76
- package/dist/cli/commands/access-log.d.ts +4 -24
- package/dist/cli/commands/agent-package.d.ts +7 -15
- package/dist/cli/commands/agent-service/agent-env.d.ts +3 -6
- package/dist/cli/commands/agent-service/index.d.ts +4 -10
- package/dist/cli/commands/agent-service/install.d.ts +4 -11
- package/dist/cli/commands/agent-service/status.d.ts +4 -9
- package/dist/cli/commands/agent-service/upgrade.d.ts +4 -16
- package/dist/cli/commands/agent.d.ts +12 -25
- package/dist/cli/commands/api-key.d.ts +7 -7
- package/dist/cli/commands/attestations-list.d.ts +7 -17
- package/dist/cli/commands/attestations-retry.d.ts +5 -11
- package/dist/cli/commands/attestations-reverify.d.ts +4 -5
- package/dist/cli/commands/attestations.d.ts +3 -8
- package/dist/cli/commands/audit.d.ts +1 -5
- package/dist/cli/commands/backend.d.ts +2 -11
- package/dist/cli/commands/check-run.d.ts +7 -18
- package/dist/cli/commands/cluster-name.d.ts +5 -12
- package/dist/cli/commands/cluster-settings.d.ts +28 -53
- package/dist/cli/commands/cold-store.d.ts +7 -15
- package/dist/cli/commands/config.d.ts +9 -20
- package/dist/cli/commands/context.d.ts +8 -20
- package/dist/cli/commands/dashboard-encryption-key.d.ts +9 -14
- package/dist/cli/commands/db-backup.d.ts +17 -32
- package/dist/cli/commands/db.d.ts +3 -4
- package/dist/cli/commands/debug-bundle.d.ts +3 -10
- package/dist/cli/commands/diagnose.d.ts +3 -14
- package/dist/cli/commands/event-dlq.d.ts +4 -12
- package/dist/cli/commands/event-log.d.ts +2 -20
- package/dist/cli/commands/execution.d.ts +3 -9
- package/dist/cli/commands/firecracker/index.d.ts +3 -6
- package/dist/cli/commands/held-run.d.ts +23 -37
- package/dist/cli/commands/host.d.ts +4 -11
- package/dist/cli/commands/inspect-bundle.d.ts +3 -11
- package/dist/cli/commands/local-hook.d.ts +2 -10
- package/dist/cli/commands/local-trigger.d.ts +2 -2
- package/dist/cli/commands/orchestrator-service/drain.d.ts +3 -6
- package/dist/cli/commands/orchestrator-service/index.d.ts +6 -14
- package/dist/cli/commands/orchestrator-service/install-env.d.ts +25 -49
- package/dist/cli/commands/orchestrator-service/install.d.ts +2 -5
- package/dist/cli/commands/orchestrator-service/status.d.ts +10 -22
- package/dist/cli/commands/orchestrator-service/upgrade.d.ts +6 -15
- package/dist/cli/commands/org-settings.d.ts +5 -11
- package/dist/cli/commands/peer.d.ts +5 -10
- package/dist/cli/commands/queue.d.ts +3 -9
- package/dist/cli/commands/registration.d.ts +4 -8
- package/dist/cli/commands/remote-source.d.ts +6 -12
- package/dist/cli/commands/rotate.d.ts +1 -5
- package/dist/cli/commands/runs.d.ts +1 -30
- package/dist/cli/commands/scaler.d.ts +5 -12
- package/dist/cli/commands/secret.d.ts +1 -9
- package/dist/cli/commands/service-health.d.ts +5 -10
- package/dist/cli/commands/shared/admin-cli-access-log.d.ts +10 -19
- package/dist/cli/commands/shared/bare-metal-binary-check.d.ts +86 -0
- package/dist/cli/commands/shared/cli-action.d.ts +1 -4
- package/dist/cli/commands/shared/confirm.d.ts +5 -10
- package/dist/cli/commands/shared/db.d.ts +1 -12
- package/dist/cli/commands/shared/env-file-mode.d.ts +6 -9
- package/dist/cli/commands/shared/secret-input.d.ts +7 -21
- package/dist/cli/commands/shared/service-verbs.d.ts +6 -12
- package/dist/cli/commands/shared/unbound-context-warning.d.ts +2 -4
- package/dist/cli/commands/shared/upgrade-hooks.d.ts +7 -16
- package/dist/cli/commands/shared/upgrade-safety.d.ts +20 -31
- package/dist/cli/commands/shared/versioned-upgrade.d.ts +83 -161
- package/dist/cli/commands/signing-key.d.ts +4 -9
- package/dist/cli/commands/source-manifest.d.ts +11 -14
- package/dist/cli/commands/source.d.ts +7 -32
- package/dist/cli/commands/token.d.ts +4 -15
- package/dist/cli/commands/trust-policy.d.ts +35 -88
- package/dist/cli/commands/variable.d.ts +3 -5
- package/dist/cli/commands/workflow.d.ts +3 -24
- package/dist/cli/join.d.ts +3 -6
- package/dist/cli/kici-admin.d.ts +11 -29
- package/dist/cli/lazy-deps/cache.d.ts +1 -14
- package/dist/cli/lazy-deps/downloader.d.ts +4 -27
- package/dist/cli/lazy-deps/registry.d.ts +5 -25
- package/dist/cli/local-github-ingress-url.d.ts +5 -7
- package/dist/cli/loopback-callback.d.ts +6 -7
- package/dist/cli/open-browser.d.ts +4 -8
- package/dist/cli/root-option-routing.d.ts +17 -29
- package/dist/cli/service/backup-timer.d.ts +16 -39
- package/dist/cli/service/compose-path.d.ts +3 -7
- package/dist/cli/service/compose.d.ts +12 -30
- package/dist/cli/service/deploy-env.d.ts +6 -18
- package/dist/cli/service/entrypoint.d.ts +14 -25
- package/dist/cli/service/env-assignment.d.ts +6 -17
- package/dist/cli/service/image-digests.d.ts +6 -15
- package/dist/cli/service/index.d.ts +2 -18
- package/dist/cli/service/instance/index-file.d.ts +9 -16
- package/dist/cli/service/instance/manifest.d.ts +33 -59
- package/dist/cli/service/instance/resolve.d.ts +32 -68
- package/dist/cli/service/instance/types.d.ts +12 -29
- package/dist/cli/service/launchd.d.ts +29 -60
- package/dist/cli/service/platform-detect.d.ts +13 -68
- package/dist/cli/service/privilege.d.ts +12 -25
- package/dist/cli/service/shutdown-grace.d.ts +11 -20
- package/dist/cli/service/systemd.d.ts +7 -20
- package/dist/cli/service/types.d.ts +63 -114
- package/dist/cli/service/windows-acl.d.ts +14 -21
- package/dist/cli/service/windows-env-file.d.ts +10 -28
- package/dist/cli/service/windows.d.ts +15 -31
- package/dist/cli/webhook-url-notes.d.ts +4 -6
- package/dist/cli/wizard/agent-wizard.d.ts +3 -14
- package/dist/cli/wizard/orchestrator-wizard.d.ts +12 -37
- package/dist/cli/wizard/prompts.d.ts +6 -16
- package/dist/cli.js +4553 -6556
- package/dist/cluster/cluster-identity.d.ts +20 -32
- package/dist/cluster/cluster-settings-reader.d.ts +50 -77
- package/dist/cluster/coordinator-credential.d.ts +4 -5
- package/dist/cluster/coordinator.d.ts +76 -148
- package/dist/cluster/health-api.d.ts +2 -10
- package/dist/cluster/index.d.ts +1 -6
- package/dist/cluster/instance-heartbeat.d.ts +26 -42
- package/dist/cluster/join-client.d.ts +4 -7
- package/dist/cluster/join-handler.d.ts +3 -7
- package/dist/cluster/join-token.d.ts +13 -27
- package/dist/cluster/leader-gated-scheduler.d.ts +8 -17
- package/dist/cluster/orphan-recovery.d.ts +13 -35
- package/dist/cluster/peer-auth-coordinator.d.ts +2 -8
- package/dist/cluster/peer-client.d.ts +46 -76
- package/dist/cluster/peer-credentials.d.ts +24 -70
- package/dist/cluster/peer-crypto.d.ts +5 -26
- package/dist/cluster/peer-forget.d.ts +3 -3
- package/dist/cluster/peer-handler.d.ts +47 -71
- package/dist/cluster/peer-registry.d.ts +37 -106
- package/dist/cluster/plan-headroom-store.d.ts +4 -6
- package/dist/cluster/raft-state.d.ts +4 -13
- package/dist/cluster/raft.d.ts +18 -53
- package/dist/cluster/reconcile-identity.d.ts +8 -11
- package/dist/cluster/rerouted-job-guard.d.ts +7 -11
- package/dist/cluster/verified-issuer.d.ts +2 -3
- package/dist/cluster/worker-cluster-settings.d.ts +7 -10
- package/dist/cluster/worker-eviction.d.ts +16 -26
- package/dist/cold-store/load-access-log-range.d.ts +15 -31
- package/dist/cold-store/load-event-log-range.d.ts +13 -27
- package/dist/cold-store/load-secret-audit-log-range.d.ts +8 -12
- package/dist/cold-store/orchestrator-cold-store.d.ts +8 -28
- package/dist/cold-store/tables/access-log.d.ts +12 -14
- package/dist/cold-store/tables/event-log.d.ts +4 -8
- package/dist/cold-store/tables/execution-runs.d.ts +6 -11
- package/dist/cold-store/tables/secret-audit-log.d.ts +5 -12
- package/dist/concurrency/dispatch-next-queued.d.ts +13 -25
- package/dist/concurrency/queue-manager.d.ts +22 -54
- package/dist/concurrency/waiters.d.ts +15 -31
- package/dist/config/encryption.d.ts +0 -2
- package/dist/config/loader.d.ts +0 -1
- package/dist/config/reload.d.ts +0 -6
- package/dist/config/resolver.d.ts +0 -4
- package/dist/config/shared-store.d.ts +0 -2
- package/dist/config/types.d.ts +0 -3
- package/dist/content-requirements-cache.d.ts +0 -1
- package/dist/contexts/context-store.d.ts +0 -2
- package/dist/contexts/held-runs.d.ts +0 -2
- package/dist/contexts/variable-store.d.ts +0 -2
- package/dist/dashboard/attestation-filters.d.ts +13 -18
- package/dist/dashboard/handler.d.ts +143 -307
- package/dist/db/client.d.ts +2 -6
- package/dist/db/deferred-index-build.d.ts +8 -10
- package/dist/db/deferred-indexes.d.ts +15 -22
- package/dist/db/migration-provider.d.ts +2 -4
- package/dist/db/migration-test-harness.d.ts +26 -44
- package/dist/db/migrations/001_initial.d.ts +1 -4
- package/dist/db/migrations/002_config_versions_key_version.d.ts +5 -8
- package/dist/db/migrations/003_access_log.d.ts +10 -15
- package/dist/db/migrations/004_rename_bundle_to_source.d.ts +7 -9
- package/dist/db/migrations/005_cold_store_chunk_counter.d.ts +4 -10
- package/dist/db/migrations/006_runs_jobs_steps_archived_at.d.ts +9 -29
- package/dist/db/migrations/007_audit_logs_archived_at.d.ts +11 -30
- package/dist/db/migrations/008_event_log_archived_at.d.ts +14 -29
- package/dist/db/migrations/009_access_log_trigram.d.ts +4 -8
- package/dist/db/migrations/010_cold_store_chunks.d.ts +16 -26
- package/dist/db/migrations/011_drop_source_secrets_notify.d.ts +6 -14
- package/dist/db/migrations/012_peer_credentials_active_uniq.d.ts +9 -14
- package/dist/db/migrations/013_execution_log_bytes.d.ts +5 -13
- package/dist/db/migrations/014_kici_events_lease_retry.d.ts +14 -27
- package/dist/db/migrations/015_org_settings_customer_scoped.d.ts +12 -17
- package/dist/db/migrations/016_org_settings_allow_http_npm.d.ts +4 -6
- package/dist/db/migrations/019_generic_sources_change_notify.d.ts +13 -17
- package/dist/db/migrations/020_org_settings_dashboard_write_policy.d.ts +5 -8
- package/dist/db/migrations/021_check_run_tracking.d.ts +5 -17
- package/dist/db/migrations/022_scaler_manager_state.d.ts +10 -20
- package/dist/db/migrations/023_dispatch_queue_recovery_deadline.d.ts +7 -18
- package/dist/db/migrations/024_dispatch_queue_provisioning_error.d.ts +5 -11
- package/dist/db/migrations/025_init_failure.d.ts +5 -9
- package/dist/db/migrations/027_workflow_timeout.d.ts +5 -13
- package/dist/db/migrations/029_dispatch_queue_attempts.d.ts +4 -10
- package/dist/db/migrations/030_held_runs_env_set_null.d.ts +5 -6
- package/dist/db/migrations/031_dispatch_queue_ack_deadline.d.ts +6 -12
- package/dist/db/migrations/033_org_settings_approval.d.ts +7 -10
- package/dist/db/migrations/034_held_runs_generalize.d.ts +10 -18
- package/dist/db/migrations/035_pending_workflow_contexts.d.ts +4 -5
- package/dist/db/migrations/037_generic_sources_provider_type_local.d.ts +5 -6
- package/dist/db/migrations/038_remote_sources.d.ts +5 -7
- package/dist/db/migrations/045_host_properties.d.ts +5 -9
- package/dist/db/migrations/046_join_token_consumed_by_instance.d.ts +5 -10
- package/dist/db/migrations/048_host_reboot_pending.d.ts +6 -12
- package/dist/db/migrations/049_held_runs_payload.d.ts +3 -8
- package/dist/db/migrations/050_sources_slug.d.ts +4 -5
- package/dist/db/migrations/051_binding_host_pattern.d.ts +7 -10
- package/dist/db/migrations/052_host_reach_metadata.d.ts +8 -11
- package/dist/db/migrations/053_agent_token_single_use.d.ts +6 -10
- package/dist/db/migrations/054_local_working_tree.d.ts +4 -6
- package/dist/db/migrations/055_agent_token_mandatory_labels.d.ts +6 -11
- package/dist/db/migrations/056_execution_jobs_environments.d.ts +4 -11
- package/dist/db/migrations/064_execution_jobs_skipped_environments.d.ts +6 -9
- package/dist/db/migrations/065_pending_attestations.d.ts +9 -12
- package/dist/db/migrations/066_pending_attestations_rejected.d.ts +4 -7
- package/dist/db/migrations/068_request_idempotency.d.ts +7 -9
- package/dist/db/migrations/069_reroute_tunables.d.ts +6 -14
- package/dist/db/migrations/071_batch_accumulation.d.ts +8 -16
- package/dist/db/migrations/072_dispatch_queue_run_id_index.d.ts +3 -9
- package/dist/db/migrations/074_normalize_zero_concurrency_limit.d.ts +4 -7
- package/dist/db/migrations/076_artifacts.d.ts +7 -8
- package/dist/db/migrations/078_org_settings_backup_staleness.d.ts +3 -6
- package/dist/db/migrations/079_org_settings_scaler_spawn_timeout.d.ts +4 -8
- package/dist/db/migrations/080_cluster_settings.d.ts +6 -10
- package/dist/db/migrations/081_org_settings_queue_timeout.d.ts +7 -11
- package/dist/db/migrations/082_host_s3_reachable.d.ts +5 -10
- package/dist/db/migrations/083_org_settings_artifact_caps.d.ts +6 -8
- package/dist/db/migrations/084_orchestrator_signing_keys.d.ts +8 -13
- package/dist/db/migrations/085_cluster_settings_reroute_flap_grace_ms.d.ts +4 -5
- package/dist/db/migrations/086_cluster_settings_max_fanout_hosts.d.ts +3 -3
- package/dist/db/migrations/087_cluster_settings_event_router_rate_limit.d.ts +5 -3
- package/dist/db/migrations/088_cluster_settings_cache_max_tarball_bytes.d.ts +3 -3
- package/dist/db/migrations/089_cluster_settings_cache_ttl_days.d.ts +3 -5
- package/dist/db/migrations/090_cluster_settings_concurrency_wait_timeout_ms.d.ts +3 -6
- package/dist/db/migrations/091_cluster_settings_agent_token_ttl_ms.d.ts +3 -6
- package/dist/db/migrations/092_cluster_settings_version.d.ts +5 -9
- package/dist/db/migrations/094_dashboard_encryption_keys.d.ts +9 -14
- package/dist/db/migrations/095_dashboard_write_policy_tristate.d.ts +2 -6
- package/dist/db/migrations/099_cluster_settings_dashboard_verified_issuer.d.ts +8 -11
- package/dist/db/migrations/101_contexts_hold_expiry_drop_default.d.ts +9 -15
- package/dist/db/migrations/102_dispatch_queue_agent_id.d.ts +6 -11
- package/dist/db/migrations/103_cluster_settings_ownership_db_check_timeout_ms.d.ts +6 -12
- package/dist/db/migrations/104_check_run_terminal_sent.d.ts +8 -14
- package/dist/db/migrations/105_org_trust_policy.d.ts +5 -7
- package/dist/db/migrations/106_cluster_settings_check_run_tracking_ttl_days.d.ts +4 -12
- package/dist/db/migrations/107_check_run_tracking_updated_at_index.d.ts +8 -14
- package/dist/db/migrations/113_execution_runs_workflow_repo_index.d.ts +10 -19
- package/dist/db/migrations/115_global_workflows_cluster_switch.d.ts +2 -3
- package/dist/db/migrations/121_org_settings_allow_untrusted_dockerfile_builds.d.ts +7 -8
- package/dist/db/migrations/122_host_roster_scaler_managed.d.ts +9 -16
- package/dist/db/migrations/123_workflow_registrations_default_branch.d.ts +8 -16
- package/dist/db/migrations/125_org_trust_directory.d.ts +13 -21
- package/dist/db/migrations/126_held_runs_posted_pending_check.d.ts +10 -16
- package/dist/db/migrations/127_org_trust_policy_approval_expiry_seconds.d.ts +8 -16
- package/dist/db/migrations/128_execution_runs_global_eval_round.d.ts +6 -11
- package/dist/db/migrations/129_execution_runs_dispatch_routing_key.d.ts +8 -11
- package/dist/db/migrations/130_scaler_provision_outcomes.d.ts +13 -20
- package/dist/db/migrations/131_execution_jobs_git_credentials.d.ts +12 -22
- package/dist/db/migrations/132_execution_runs_trigger_event.d.ts +6 -16
- package/dist/db/migrations/133_dispatch_queue_source_tar_digest.d.ts +6 -9
- package/dist/db/migrations/140_dispatch_queue_canonical_labels.d.ts +22 -40
- package/dist/db/migrations/143_execution_jobs_precursor_result.d.ts +9 -18
- package/dist/db/migrations/144_execution_runs_registration_window.d.ts +12 -20
- package/dist/db/migrations/147_sealed_job_secrets.d.ts +5 -9
- package/dist/db/migrations/148_cluster_settings_sealed_secrets_retry_backoff_ms.d.ts +7 -13
- package/dist/db/migrations/150_execution_runs_status_epoch.d.ts +6 -11
- package/dist/db/migrations/152_org_settings_cache_upload_settle_timeout.d.ts +5 -8
- package/dist/db/migrations/157_host_roster_identity_source.d.ts +9 -13
- package/dist/db/migrations/159_org_id_widen_to_source_width.d.ts +5 -0
- package/dist/db/migrator.d.ts +17 -25
- package/dist/db/notify-listener.d.ts +8 -11
- package/dist/db/repos/dashboard-encryption-keys-repo.d.ts +9 -10
- package/dist/db/synthetic-job-ids.d.ts +6 -8
- package/dist/db/types.d.ts +531 -1058
- package/dist/deployment/deployment-identity.d.ts +42 -60
- package/dist/diagnostics/bundle-reader.d.ts +3 -15
- package/dist/diagnostics/bundle-writer.d.ts +5 -12
- package/dist/diagnostics/checks/agents.d.ts +1 -7
- package/dist/diagnostics/checks/backup.d.ts +7 -10
- package/dist/diagnostics/checks/certs.d.ts +1 -6
- package/dist/diagnostics/checks/config.d.ts +2 -5
- package/dist/diagnostics/checks/db.d.ts +1 -1
- package/dist/diagnostics/checks/disk.d.ts +1 -6
- package/dist/diagnostics/checks/firecracker-network.d.ts +3 -3
- package/dist/diagnostics/checks/index.d.ts +0 -6
- package/dist/diagnostics/checks/retention.d.ts +3 -6
- package/dist/diagnostics/checks/scaler.d.ts +3 -7
- package/dist/diagnostics/checks/ws.d.ts +1 -6
- package/dist/diagnostics/fleet-collector.d.ts +11 -14
- package/dist/diagnostics/fleet-constants.d.ts +1 -3
- package/dist/diagnostics/fleet-selection.d.ts +3 -7
- package/dist/diagnostics/fleet-topology.d.ts +2 -6
- package/dist/diagnostics/fleet-wiring.d.ts +6 -12
- package/dist/diagnostics/index.d.ts +0 -5
- package/dist/diagnostics/runner.d.ts +4 -8
- package/dist/diagnostics/types.d.ts +10 -21
- package/dist/drain/drain-controller.d.ts +16 -22
- package/dist/entry-helpers.d.ts +0 -2
- package/dist/events/circuit-breaker.d.ts +0 -3
- package/dist/events/event-router.d.ts +1 -2
- package/dist/events/event-store.d.ts +0 -9
- package/dist/events/trust-store.d.ts +0 -3
- package/dist/events/types.d.ts +0 -9
- package/dist/firecracker/host-network.d.ts +24 -30
- package/dist/firecracker/net-interfaces.d.ts +4 -7
- package/dist/helpers/rate-limiter.d.ts +0 -1
- package/dist/index.js +251 -486
- package/dist/metrics/agent-metrics-aggregator.d.ts +24 -67
- package/dist/metrics/metrics-reporter.d.ts +4 -13
- package/dist/metrics/prometheus.d.ts +47 -81
- package/dist/orchestrator-core.d.ts +3 -7
- package/dist/pipeline/content-filter.d.ts +20 -30
- package/dist/pipeline/cross-source-tally.d.ts +7 -8
- package/dist/pipeline/decorating-secret-resolver.d.ts +4 -8
- package/dist/pipeline/degraded-reason.d.ts +3 -4
- package/dist/pipeline/direct-ingress-deps.d.ts +15 -24
- package/dist/pipeline/dispatch-matched-workflow.d.ts +289 -525
- package/dist/pipeline/flatten-lock-steps.d.ts +4 -6
- package/dist/pipeline/global-dispatch-identity.d.ts +5 -10
- package/dist/pipeline/global-eval-round.d.ts +65 -151
- package/dist/pipeline/global-round-hold.d.ts +5 -7
- package/dist/pipeline/held-context-data.d.ts +5 -8
- package/dist/pipeline/held-round-registrations.d.ts +8 -11
- package/dist/pipeline/install-gate.d.ts +15 -25
- package/dist/pipeline/install-secrets-resolver.d.ts +24 -34
- package/dist/pipeline/internal-event-pipeline.d.ts +45 -62
- package/dist/pipeline/invoke-gate.d.ts +27 -40
- package/dist/pipeline/job-contexts.d.ts +19 -36
- package/dist/pipeline/manual-schedule.d.ts +7 -13
- package/dist/pipeline/needs-scheduler.d.ts +29 -46
- package/dist/pipeline/pending-workflow-context.d.ts +14 -28
- package/dist/pipeline/process-webhook.d.ts +88 -123
- package/dist/pipeline/processor.d.ts +209 -355
- package/dist/pipeline/remote-source-store.d.ts +5 -8
- package/dist/pipeline/request-idempotency.d.ts +10 -13
- package/dist/pipeline/rerun-global.d.ts +6 -7
- package/dist/pipeline/rerun-inputs.d.ts +23 -37
- package/dist/pipeline/rerun.d.ts +34 -57
- package/dist/pipeline/resolve-sandbox-grant.d.ts +5 -10
- package/dist/pipeline/resume-workflow.d.ts +28 -34
- package/dist/pipeline/route-or-dispatch-jobs.d.ts +19 -30
- package/dist/pipeline/run-event-context.d.ts +16 -21
- package/dist/pipeline/sandbox-allowlist-reader.d.ts +7 -11
- package/dist/pipeline/security-hold-check.d.ts +56 -80
- package/dist/pipeline/test-pipeline.d.ts +21 -46
- package/dist/pipeline/unbound-job-context.d.ts +6 -9
- package/dist/pipeline/undispatched-hold-checks.d.ts +4 -6
- package/dist/pipeline/wave-scheduler.d.ts +15 -22
- package/dist/pipeline/webhook-payload-store.d.ts +3 -10
- package/dist/pipeline/workflow-lock-at-sha.d.ts +14 -20
- package/dist/policy/dashboard-write-policy.d.ts +1 -1
- package/dist/provider-registry.d.ts +0 -19
- package/dist/providers/generic/index.d.ts +0 -2
- package/dist/providers/generic/normalizer.d.ts +0 -1
- package/dist/providers/generic/verification.d.ts +0 -8
- package/dist/providers/github/auth.d.ts +0 -1
- package/dist/providers/github/changed-files.d.ts +2 -1
- package/dist/providers/github/file-contents.d.ts +0 -4
- package/dist/providers/github/lock-file.d.ts +0 -4
- package/dist/providers/github/normalizer.d.ts +1 -9
- package/dist/providers/local/index.d.ts +1 -2
- package/dist/providers/local/lock-file-fetcher.d.ts +0 -4
- package/dist/providers/local/normalizer.d.ts +0 -10
- package/dist/providers/local/repo-url-builder.d.ts +0 -2
- package/dist/providers/universal-git/clone-token.d.ts +0 -2
- package/dist/providers/universal-git/lock-file.d.ts +0 -2
- package/dist/providers/universal-git/normalizer.d.ts +0 -2
- package/dist/queue/bootstrap.d.ts +3 -15
- package/dist/queue/cleanup.d.ts +29 -50
- package/dist/queue/depth-refresher.d.ts +21 -39
- package/dist/queue/job-queue.d.ts +112 -163
- package/dist/queue/retention.d.ts +23 -36
- package/dist/queue/scheduled-job.d.ts +17 -39
- package/dist/queue/terminalize-unroutable.d.ts +21 -18
- package/dist/queue/unroutable-probe.d.ts +15 -22
- package/dist/registration/extractor.d.ts +0 -6
- package/dist/registration/registration-index.d.ts +0 -6
- package/dist/registration/registration-store.d.ts +0 -9
- package/dist/reporting/agent-failure-category.d.ts +3 -5
- package/dist/reporting/check-run-reporter.d.ts +142 -316
- package/dist/reporting/check-run-summary.d.ts +16 -35
- package/dist/reporting/check-run-tracking-store.d.ts +54 -107
- package/dist/reporting/execution-tracker.d.ts +356 -526
- package/dist/reporting/fs-log-storage.d.ts +31 -33
- package/dist/reporting/job-check-run-completion.d.ts +14 -22
- package/dist/reporting/log-chunk-sink.d.ts +11 -16
- package/dist/reporting/log-pull-handler.d.ts +4 -13
- package/dist/reporting/log-retention.d.ts +3 -4
- package/dist/reporting/log-storage.d.ts +24 -52
- package/dist/reporting/log-writer.d.ts +28 -56
- package/dist/reporting/peer-log-normalize.d.ts +4 -8
- package/dist/reporting/run-aggregator.d.ts +6 -11
- package/dist/reporting/run-summary-fields.d.ts +5 -8
- package/dist/reporting/s3-log-storage.d.ts +31 -50
- package/dist/reporting/step-display-order.d.ts +11 -21
- package/dist/reporting/step-log-buffer.d.ts +7 -28
- package/dist/reporting/step-log-reader.d.ts +11 -19
- package/dist/routes/admin-access-log.d.ts +4 -6
- package/dist/routes/admin-auth.d.ts +19 -38
- package/dist/routes/admin-backends.d.ts +3 -14
- package/dist/routes/admin-cluster-name.d.ts +13 -21
- package/dist/routes/admin-cluster-settings.d.ts +6 -9
- package/dist/routes/admin-config.d.ts +7 -19
- package/dist/routes/admin-contexts.d.ts +6 -13
- package/dist/routes/admin-db.d.ts +5 -10
- package/dist/routes/admin-event-dlq.d.ts +3 -5
- package/dist/routes/admin-event-inspect.d.ts +3 -4
- package/dist/routes/admin-event-log.d.ts +3 -7
- package/dist/routes/admin-events.d.ts +16 -30
- package/dist/routes/admin-held-runs.d.ts +52 -76
- package/dist/routes/admin-maintenance.d.ts +3 -6
- package/dist/routes/admin-orchestrator-drain.d.ts +0 -2
- package/dist/routes/admin-org-settings.d.ts +8 -14
- package/dist/routes/admin-peer-forget.d.ts +0 -1
- package/dist/routes/admin-queue-execution.d.ts +3 -3
- package/dist/routes/admin-registrations.d.ts +3 -12
- package/dist/routes/admin-runs.d.ts +16 -29
- package/dist/routes/admin-scaler-orphans.d.ts +4 -4
- package/dist/routes/admin-scaler-reload.d.ts +5 -8
- package/dist/routes/admin-scheduled-jobs.d.ts +3 -4
- package/dist/routes/admin-sources.d.ts +20 -29
- package/dist/routes/admin-trust-policy.d.ts +31 -48
- package/dist/routes/admin.d.ts +67 -94
- package/dist/routes/caller-identity.d.ts +45 -0
- package/dist/routes/capabilities.d.ts +8 -13
- package/dist/routes/diagnostics.d.ts +2 -10
- package/dist/routes/fleet.d.ts +1 -2
- package/dist/routes/github-webhook.d.ts +2 -5
- package/dist/routes/health.d.ts +6 -19
- package/dist/routes/provenance-oidc.d.ts +3 -3
- package/dist/routes/test-direct.d.ts +46 -0
- package/dist/routes/uploads.d.ts +14 -19
- package/dist/routes/webhooks.d.ts +2 -24
- package/dist/scaler/agent-binary-location.d.ts +77 -0
- package/dist/scaler/agent-fit.d.ts +2 -2
- package/dist/scaler/backend-factory.d.ts +10 -18
- package/dist/scaler/bare-metal-backend.d.ts +28 -45
- package/dist/scaler/claim-store.d.ts +20 -43
- package/dist/scaler/config.d.ts +10 -37
- package/dist/scaler/container-backend.d.ts +22 -35
- package/dist/scaler/container-hostconfig.d.ts +10 -16
- package/dist/scaler/container-routing.d.ts +10 -13
- package/dist/scaler/disk-guard.d.ts +2 -3
- package/dist/scaler/event-backend.d.ts +33 -58
- package/dist/scaler/event-provision-reaper.d.ts +61 -84
- package/dist/scaler/failure-tracker.d.ts +6 -13
- package/dist/scaler/file-tail.d.ts +6 -19
- package/dist/scaler/firecracker-api.d.ts +19 -63
- package/dist/scaler/firecracker-backend.d.ts +142 -258
- package/dist/scaler/host-access.d.ts +7 -10
- package/dist/scaler/index.d.ts +3 -6
- package/dist/scaler/ip-allocator.d.ts +30 -82
- package/dist/scaler/label-matcher.d.ts +14 -35
- package/dist/scaler/log-forwarder.d.ts +6 -25
- package/dist/scaler/machine-ledger.d.ts +39 -86
- package/dist/scaler/manager.d.ts +517 -787
- package/dist/scaler/pending-scale-sweeper.d.ts +8 -11
- package/dist/scaler/reap-orphans.d.ts +8 -12
- package/dist/scaler/resolve-container-auth.d.ts +12 -21
- package/dist/scaler/scaler-events.d.ts +2 -5
- package/dist/scaler/scaler-state-store.d.ts +127 -189
- package/dist/scaler/spawn-errors.d.ts +1 -4
- package/dist/scaler/startup-orphan-sweep.d.ts +3 -4
- package/dist/scaler/startup-tools-check.d.ts +21 -0
- package/dist/scaler/types.d.ts +142 -255
- package/dist/scaler/vm-job-bindings.d.ts +5 -9
- package/dist/scaler/warm-pool.d.ts +46 -93
- package/dist/secrets/audit-logger.d.ts +0 -3
- package/dist/secrets/backend-health.d.ts +0 -9
- package/dist/secrets/backend-registry.d.ts +0 -9
- package/dist/secrets/cleanup.d.ts +0 -1
- package/dist/secrets/config.d.ts +0 -3
- package/dist/secrets/ephemeral-keys.d.ts +0 -3
- package/dist/secrets/pg-secret-store.d.ts +0 -3
- package/dist/secrets/rbac.d.ts +5 -7
- package/dist/secrets/routing-key-scope.d.ts +1 -0
- package/dist/secrets/secret-output-store.d.ts +0 -6
- package/dist/secrets/secret-resolver.d.ts +2 -6
- package/dist/secrets/token-manager.d.ts +1 -4
- package/dist/secrets/vault-secret-store.d.ts +0 -13
- package/dist/security/comment-handler.d.ts +0 -2
- package/dist/security/workflow-diff.d.ts +1 -1
- package/dist/server.js +49004 -53782
- package/dist/sources/source-manager.d.ts +0 -3
- package/dist/sources/source-store.d.ts +0 -9
- package/dist/sources/source-validator.d.ts +0 -3
- package/dist/stale-detector/all-terminal-runs.d.ts +8 -11
- package/dist/stale-detector/gate-deadline-detector.d.ts +14 -19
- package/dist/stale-detector/reboot-deadline-sweep.d.ts +7 -11
- package/dist/stale-detector/stale-dispatch-candidates.d.ts +13 -20
- package/dist/stale-detector/stale-run-detector.d.ts +74 -121
- package/dist/stale-detector/workflow-deadline-detector.d.ts +15 -43
- package/dist/standalone.js +9342 -13077
- package/dist/storage/blob-routes.d.ts +10 -19
- package/dist/storage/filesystem.d.ts +19 -29
- package/dist/storage/index.d.ts +2 -10
- package/dist/storage/key-discriminator.d.ts +8 -10
- package/dist/storage/loopback-guard.d.ts +27 -45
- package/dist/storage/s3.d.ts +26 -53
- package/dist/storage/sign-url.d.ts +7 -22
- package/dist/storage/types.d.ts +46 -72
- package/dist/webhook/event-log.d.ts +0 -2
- package/dist/webhook/generic-sources.d.ts +0 -21
- package/dist/webhook/ingest-admission.d.ts +0 -1
- package/dist/webhook/relay-buffer.d.ts +2 -2
- package/dist/webhook/verify-inbound.d.ts +0 -1
- package/dist/worker/in-memory-execution-tracker.d.ts +9 -31
- package/dist/worker/in-memory-job-queue.d.ts +32 -72
- package/dist/worker/peer-outbox.d.ts +5 -8
- package/dist/worker/reroute-dispatch.d.ts +4 -6
- package/dist/worker/static-agent-token-store.d.ts +6 -27
- package/dist/worker/worker-outbox-relay.d.ts +2 -2
- package/dist/worker/worker-status.d.ts +3 -20
- package/dist/ws/agent-api-registry.d.ts +8 -27
- package/dist/ws/agent-handler.d.ts +63 -110
- package/dist/ws/agent-heartbeat.d.ts +5 -12
- package/dist/ws/bringup-api.d.ts +31 -38
- package/dist/ws/dashboard-backends-handler.d.ts +12 -22
- package/dist/ws/dashboard-context-handler.d.ts +37 -80
- package/dist/ws/dashboard-diagnostics-handler.d.ts +8 -25
- package/dist/ws/dashboard-dispatch-guard.d.ts +3 -4
- package/dist/ws/dashboard-fleet-handler.d.ts +9 -13
- package/dist/ws/dashboard-fleet-write-handler.d.ts +7 -21
- package/dist/ws/dashboard-global-workflows-handler.d.ts +22 -44
- package/dist/ws/dashboard-registrations-handler.d.ts +10 -27
- package/dist/ws/dashboard-run-state-handler.d.ts +10 -13
- package/dist/ws/event-buffer.d.ts +3 -6
- package/dist/ws/execution-status-frame.d.ts +7 -10
- package/dist/ws/failure-messages.d.ts +9 -14
- package/dist/ws/fleet-agent-collector.d.ts +6 -12
- package/dist/ws/fleet-runs-on-all.d.ts +1 -6
- package/dist/ws/git-credential-relay.d.ts +12 -20
- package/dist/ws/inventory-api.d.ts +4 -5
- package/dist/ws/observer-registry.d.ts +14 -59
- package/dist/ws/ownership-gate.d.ts +1 -1
- package/dist/ws/platform-client.d.ts +21 -30
- package/dist/ws/replay-chunker.d.ts +7 -10
- package/dist/ws/server-options.d.ts +5 -9
- package/dist/ws/test-relay-handlers.d.ts +46 -63
- package/installer-image-digests.json +3 -3
- package/package.json +6 -5
- package/sbom.spdx.json +53 -53
- package/dist/__test-helpers__/fake-scaler-state-store.d.ts +0 -24
- package/dist/__test-helpers__/mock-db-query.d.ts +0 -129
- package/dist/__test-helpers__/mock-db.d.ts +0 -134
- package/dist/__test-helpers__/mock-ws.d.ts +0 -13
- package/dist/__test-helpers__/peer-mutual-auth.d.ts +0 -42
- package/dist/__test-helpers__/scratch-db.d.ts +0 -16
- package/dist/__test-helpers__/test-db.d.ts +0 -34
- package/dist/pipeline/dispatch-matched-workflow.test-helpers.d.ts +0 -121
- package/dist/scaler/container-spawn.d.ts +0 -28
package/dist/agent/registry.d.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* In-memory agent registry with label-based lookup and capacity tracking
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
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
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
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
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
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
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* `
|
|
82
|
-
*
|
|
83
|
-
*
|
|
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:
|
|
88
|
-
*
|
|
89
|
-
*
|
|
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
|
-
/**
|
|
81
|
+
/** Default 1. */
|
|
100
82
|
maxConcurrency: number;
|
|
101
|
-
/** Unix epoch ms
|
|
83
|
+
/** Unix epoch ms. */
|
|
102
84
|
lastHeartbeatAt: number;
|
|
103
|
-
/**
|
|
85
|
+
/** `os.platform()`, e.g. 'linux', 'darwin', 'win32'. */
|
|
104
86
|
platform: string;
|
|
105
|
-
/**
|
|
87
|
+
/** `os.arch()`, e.g. 'x64', 'arm64'. */
|
|
106
88
|
arch: string;
|
|
107
|
-
/** Unix epoch ms
|
|
89
|
+
/** Unix epoch ms. */
|
|
108
90
|
registeredAt: number;
|
|
109
|
-
/** Self-reported
|
|
91
|
+
/** Self-reported; null if not reported. */
|
|
110
92
|
version: string | null;
|
|
111
93
|
/**
|
|
112
|
-
* The `agent_tokens.id`
|
|
113
|
-
* `
|
|
114
|
-
*
|
|
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`
|
|
131
|
-
*
|
|
132
|
-
* `
|
|
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
|
-
*
|
|
155
|
-
*
|
|
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
|
-
*
|
|
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),
|
|
174
|
-
*
|
|
175
|
-
*
|
|
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
|
|
181
|
-
*
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
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,
|
|
226
|
-
* `
|
|
227
|
-
* when
|
|
228
|
-
*
|
|
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
|
|
243
|
-
*
|
|
244
|
-
*
|
|
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
|
-
*
|
|
271
|
-
*
|
|
272
|
-
* handler
|
|
273
|
-
*
|
|
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
|
|
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
|
-
*
|
|
315
|
-
*
|
|
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
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
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
|
|
325
|
-
*
|
|
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
|
|
331
|
-
*
|
|
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`:
|
|
336
|
-
*
|
|
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
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
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
|
|
350
|
-
* An agent is available when it has
|
|
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
|
-
*
|
|
353
|
-
* the agent
|
|
354
|
-
*
|
|
355
|
-
*
|
|
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
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
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
|
-
*
|
|
373
|
-
*
|
|
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
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
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
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
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
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
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
|
|
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
|
-
*
|
|
416
|
-
*
|
|
417
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
445
|
-
*
|
|
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
|
|
506
|
-
*
|
|
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
|
}
|