@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.
- 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 +137 -230
- 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 +35 -52
- 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 +25 -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 +5 -12
- 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 +60 -60
- 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 +8207 -10128
- 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 +145 -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 +240 -482
- 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 +290 -526
- 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 +62 -156
- 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 +20 -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 +16 -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 +17 -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 +5 -12
- 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/uploads.d.ts +5 -11
- 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 +30 -46
- 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 +19 -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 +49 -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 +0 -6
- 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 +0 -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 +8628 -13569
- 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 +7670 -12402
- 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 +25 -52
- package/dist/storage/sign-url.d.ts +7 -22
- package/dist/storage/types.d.ts +44 -70
- 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 +9 -11
- 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/job-status-forward-frame.d.ts +30 -0
- package/dist/ws/observer-registry.d.ts +14 -59
- package/dist/ws/outbound-frame-guard.d.ts +4 -0
- package/dist/ws/ownership-gate.d.ts +1 -1
- package/dist/ws/platform-client.d.ts +32 -31
- 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 +45 -59
- package/dist/ws/test-run-log-cursor.d.ts +18 -0
- 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
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebSocket handler for incoming peer connections from other orchestrators.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
4
|
+
* Performs ECDH key exchange and authenticates the peer with mutual-v2:
|
|
5
|
+
* `peer.hello` advertises the scheme, the peer proves its credential (or, on
|
|
6
|
+
* first join, its join token) with an HMAC over the handshake transcript, and
|
|
7
|
+
* this server answers with its own proof and switches to the application key.
|
|
8
|
+
* A join token never arrives here: the peer sends the token's routing segment,
|
|
9
|
+
* and the role and routing key come from the join_tokens row. A request in the
|
|
10
|
+
* scheme earlier releases used is refused with PEER_MUTUAL_AUTH_REQUIRED_REASON.
|
|
11
|
+
* Registers the peer in PeerRegistry, routes messages both ways, and sends
|
|
12
|
+
* periodic heartbeats.
|
|
13
13
|
*/
|
|
14
14
|
import { type PeerHeartbeat, type PeerToPeerMessage, type JobReroute, type JobProgress, type JobProgressAck, type PeerScalerEvent, type PeerJobCancel, type PeerLogChunk, type PeerCacheUploadRequest, type PeerCacheUploadResponse, type PeerConfigReload, type PeerConfigReloadResponse, type PeerScalerOrphansRequest, type PeerForgetRequest, type PeerForgetResponse, type PeerScalerOrphansResponse, type PeerClusterSettingsRequest, type WorkerClusterSettings, type PeerLogsCollectRequest, type PeerLeaving, type PeerAgentTokenRevoke, type RaftVoteRequest, type RaftVoteResponse, type RaftAppendEntries, type PeerScalerReloadRequest, type PeerScalerReloadResponse } from '@kici-dev/engine';
|
|
15
15
|
import { type PeerRegistry } from './peer-registry.js';
|
|
@@ -19,10 +19,7 @@ import type { PEER_REQUEST_TIMEOUT } from './peer-request-waiters.js';
|
|
|
19
19
|
import type { ScalerFileReload } from '../scaler/file-reload.js';
|
|
20
20
|
import type { PeerCredentialStore } from './peer-credentials.js';
|
|
21
21
|
import { type JoinTokenManager } from './join-token.js';
|
|
22
|
-
/**
|
|
23
|
-
* Minimal WebSocket interface for peer connections.
|
|
24
|
-
* Same pattern as agent/registry.ts WsLike, allowing mock testing.
|
|
25
|
-
*/
|
|
22
|
+
/** Minimal WebSocket surface (like agent/registry.ts WsLike), so tests can mock it. */
|
|
26
23
|
export interface PeerWsLike {
|
|
27
24
|
send(data: string): void;
|
|
28
25
|
close(code?: number, reason?: string): void;
|
|
@@ -30,63 +27,49 @@ export interface PeerWsLike {
|
|
|
30
27
|
readyState: number;
|
|
31
28
|
}
|
|
32
29
|
export interface PeerHandlerDeps {
|
|
33
|
-
/** Join token manager for validating first-time peer tokens. */
|
|
34
30
|
tokenManager: JoinTokenManager;
|
|
35
|
-
/** Credential store for session credential CRUD. */
|
|
36
31
|
credentialStore: PeerCredentialStore;
|
|
37
|
-
/**
|
|
32
|
+
/** Default: ['coordinator', 'worker'] (accept any). */
|
|
38
33
|
acceptedRoles?: Array<'coordinator' | 'worker'>;
|
|
39
|
-
/** This orchestrator's instance ID. */
|
|
40
34
|
instanceId: string;
|
|
41
|
-
/** Peer registry to track incoming peers. */
|
|
42
35
|
peerRegistry: PeerRegistry;
|
|
43
|
-
/**
|
|
36
|
+
/** This orchestrator's local agent inventory, sent in heartbeats. */
|
|
44
37
|
getLocalInventory: () => Omit<PeerHeartbeat, 'type'>;
|
|
45
38
|
/**
|
|
46
|
-
* The Platform-pushed worker ceiling
|
|
47
|
-
* when none was ever received (admit
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* known ceiling rather than resetting to unlimited.
|
|
39
|
+
* The Platform-pushed worker ceiling, read at each worker-peer admission;
|
|
40
|
+
* `null` when none was ever received (admit freely). Served from the
|
|
41
|
+
* persisted PlanHeadroomStore, so the last known ceiling survives a Platform
|
|
42
|
+
* disconnect rather than resetting to unlimited.
|
|
51
43
|
*/
|
|
52
44
|
getWorkerCeiling?: () => Promise<number | null>;
|
|
53
45
|
/** Heartbeat interval in ms. Default: 30000 (30s). */
|
|
54
46
|
heartbeatIntervalMs?: number;
|
|
55
47
|
/** Auth timeout in ms. Default: 15000 (15s). */
|
|
56
48
|
authTimeoutMs?: number;
|
|
57
|
-
/** Callback when a job reroute request is received from peer. */
|
|
58
49
|
onJobReroute: (msg: JobReroute) => Promise<void>;
|
|
59
|
-
/** Callback when a job progress update is received from peer. */
|
|
60
50
|
onJobProgress: (msg: JobProgress, fromPeerId: string, reply: (m: JobProgressAck) => void) => void;
|
|
61
|
-
/**
|
|
51
|
+
/** A scaler provisioning event a worker peer forwarded. */
|
|
62
52
|
onPeerScalerEvent?: (msg: PeerScalerEvent, fromPeerId: string) => void;
|
|
63
|
-
/** Callback when a job cancel request is received from peer. */
|
|
64
53
|
onJobCancel: (msg: PeerJobCancel) => void;
|
|
65
|
-
/**
|
|
54
|
+
/** A log chunk a worker peer relayed. */
|
|
66
55
|
onPeerLogChunk?: (chunk: PeerLogChunk, peerId: string) => void;
|
|
67
|
-
/**
|
|
56
|
+
/** A cache upload request from a worker peer. */
|
|
68
57
|
onPeerCacheUploadRequest?: (req: PeerCacheUploadRequest, peerId: string) => Promise<PeerCacheUploadResponse>;
|
|
69
|
-
/** Callback for Raft vote requests. */
|
|
70
58
|
onRaftVoteRequest?: (msg: RaftVoteRequest) => RaftVoteResponse;
|
|
71
|
-
/**
|
|
59
|
+
/** Forwarded to the Raft module. */
|
|
72
60
|
onRaftVoteResponse?: (msg: RaftVoteResponse) => void;
|
|
73
|
-
/**
|
|
61
|
+
/** Leader heartbeat. */
|
|
74
62
|
onRaftAppendEntries?: (msg: RaftAppendEntries) => void;
|
|
75
|
-
/** Callback when a peer.leaving announcement is received. */
|
|
76
63
|
onPeerLeaving?: (msg: PeerLeaving) => void;
|
|
77
64
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* to close every in-flight WS authenticated by the now-revoked token.
|
|
65
|
+
* Should call agentRegistry.disconnectByTokenId(tokenId) to close every
|
|
66
|
+
* in-flight WS authenticated by the revoked token.
|
|
81
67
|
*/
|
|
82
68
|
onAgentTokenRevoke?: (msg: PeerAgentTokenRevoke) => void;
|
|
83
69
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* If undefined, incoming reload requests are answered with success=false
|
|
89
|
-
* and an error explaining that reload is unavailable on this peer.
|
|
70
|
+
* Runs a local config reload; the result goes back via
|
|
71
|
+
* peer.config.reload.response. If undefined, requests are answered with
|
|
72
|
+
* success=false and an error saying reload is unavailable on this peer.
|
|
90
73
|
*/
|
|
91
74
|
onPeerConfigReload?: (msg: PeerConfigReload) => Promise<{
|
|
92
75
|
success: boolean;
|
|
@@ -96,41 +79,36 @@ export interface PeerHandlerDeps {
|
|
|
96
79
|
fieldsChanged?: string[];
|
|
97
80
|
}>;
|
|
98
81
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* peer.clusterSettings.response. If undefined, requests are answered with the
|
|
103
|
-
* config-default snapshot at version 0.
|
|
82
|
+
* Resolves a DB-less worker's settings snapshot and the cluster_settings
|
|
83
|
+
* version, sent back via peer.clusterSettings.response. If undefined,
|
|
84
|
+
* requests are answered with the config-default snapshot at version 0.
|
|
104
85
|
*/
|
|
105
86
|
onPeerClusterSettingsRequest?: (msg: PeerClusterSettingsRequest) => Promise<{
|
|
106
87
|
version: number;
|
|
107
88
|
settings: WorkerClusterSettings;
|
|
108
89
|
}>;
|
|
109
90
|
/**
|
|
110
|
-
*
|
|
111
|
-
* peer.
|
|
112
|
-
*
|
|
113
|
-
* If undefined, incoming collect requests are ignored.
|
|
91
|
+
* Builds this node's subtree bundle and streams it back through `send`
|
|
92
|
+
* (peer.logs.collect.chunk frames, or peer.logs.collect.error on failure).
|
|
93
|
+
* If undefined, collect requests are ignored.
|
|
114
94
|
*/
|
|
115
95
|
onLogsCollectRequest?: (msg: PeerLogsCollectRequest, send: (out: PeerToPeerMessage) => boolean) => Promise<void>;
|
|
116
96
|
/**
|
|
117
|
-
* Answers a peer.scaler.orphans.request
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* requests are answered with ok=false.
|
|
97
|
+
* Answers a forwarded peer.scaler.orphans.request (`kici-admin scaler orphans
|
|
98
|
+
* --target`). A non-coordinator peer's request is refused before it reaches
|
|
99
|
+
* the handler. If undefined, requests are answered with ok=false.
|
|
121
100
|
*/
|
|
122
101
|
onScalerOrphansRequest?: ScalerOrphansRequestHandler;
|
|
123
102
|
/**
|
|
124
|
-
* Reloads this node's scaler config
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* requests are answered `rejected`.
|
|
103
|
+
* Reloads this node's scaler config (`kici-admin scaler reload`). A
|
|
104
|
+
* non-coordinator peer's request is refused before it reaches the handler. If
|
|
105
|
+
* undefined, requests are answered `rejected`.
|
|
128
106
|
*/
|
|
129
107
|
onScalerReloadRequest?: ScalerFileReload;
|
|
130
108
|
/**
|
|
131
109
|
* Forgets a departed peer a sibling coordinator forgot (`kici-admin peer
|
|
132
|
-
* forget`). A
|
|
133
|
-
*
|
|
110
|
+
* forget`). A non-coordinator peer's request is refused. If undefined,
|
|
111
|
+
* requests are answered with outcome `error`.
|
|
134
112
|
*/
|
|
135
113
|
onPeerForgetRequest?: PeerForgetRequestHandler;
|
|
136
114
|
}
|
|
@@ -141,22 +119,20 @@ export declare const ADVERTISED_PEER_AUTH_SCHEMES: readonly string[];
|
|
|
141
119
|
* a proof or a token, or names no scheme.
|
|
142
120
|
*/
|
|
143
121
|
export declare function isLegacyPeerAuthRequest(raw: unknown): boolean;
|
|
144
|
-
/**
|
|
145
|
-
* Create a handler function for incoming peer WebSocket connections.
|
|
146
|
-
*
|
|
147
|
-
* Returns `handleConnection(ws, remoteIp?)` which should be called when a new
|
|
148
|
-
* WebSocket connection is upgraded on the peer endpoint.
|
|
149
|
-
*/
|
|
150
122
|
/**
|
|
151
123
|
* Whether a joining peer may be admitted against the plan ceiling.
|
|
152
124
|
*
|
|
153
125
|
* Only workers are gated: a coordinator peer holds its own Platform connection
|
|
154
126
|
* and is counted there, and a peer advertising no role registers as a
|
|
155
|
-
* coordinator (see PeerRegistry.addPeer)
|
|
156
|
-
*
|
|
157
|
-
*
|
|
127
|
+
* coordinator (see PeerRegistry.addPeer). A `null` ceiling (none ever received)
|
|
128
|
+
* admits freely. The ceiling is ABSOLUTE: admit only while the connected worker
|
|
129
|
+
* count is below it.
|
|
158
130
|
*/
|
|
159
131
|
export declare function shouldAdmitWorker(role: string | undefined, ceiling: number | null, connectedWorkerCount: number): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Returns `handleConnection(ws, remoteIp?)`, called for each WebSocket upgraded
|
|
134
|
+
* on the peer endpoint.
|
|
135
|
+
*/
|
|
160
136
|
export declare function createPeerHandler(deps: PeerHandlerDeps): {
|
|
161
137
|
handleConnection: (ws: PeerWsLike, remoteIp?: string) => void;
|
|
162
138
|
sendToPeer: (targetInstanceId: string, msg: PeerToPeerMessage) => boolean;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* In-memory
|
|
3
|
-
*
|
|
4
|
-
* Maintains peer state including agent inventories from heartbeats,
|
|
5
|
-
* enabling routing decisions without real-time queries. Follows the
|
|
6
|
-
* same label-matching semantics as agent/registry.ts for consistency.
|
|
2
|
+
* In-memory registry of cluster peers, including heartbeat agent inventories, so
|
|
3
|
+
* routing needs no real-time queries. Label matching follows agent/registry.ts.
|
|
7
4
|
*/
|
|
8
5
|
import type { PeerAuthScheme, PeerHeartbeat, PeerCapabilities, ScalerCapacitySummary } from '@kici-dev/engine';
|
|
9
6
|
/** Which side of a peer link authenticated: the peer dialled us, or we dialled it. */
|
|
@@ -24,17 +21,14 @@ export interface PeerAgentInfo {
|
|
|
24
21
|
platform: string;
|
|
25
22
|
arch: string;
|
|
26
23
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* a connected-agent entry only matches when every mandatory label appears
|
|
31
|
-
* in the required label set.
|
|
24
|
+
* Taint-style mandatory labels inherited from the spawning scaler; empty for
|
|
25
|
+
* static agents and warm-pool replenishment spawns. Cross-peer routing matches
|
|
26
|
+
* only when every one is in the required label set, like the local matcher.
|
|
32
27
|
*/
|
|
33
28
|
mandatoryLabels: string[];
|
|
34
29
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* dashboard can group a peer's agents under the correct scaler row.
|
|
30
|
+
* The spawning scaler backend, or null for static (stateful) agents; the
|
|
31
|
+
* dashboard groups a peer's agents under this scaler row.
|
|
38
32
|
*/
|
|
39
33
|
scalerName?: string | null;
|
|
40
34
|
}
|
|
@@ -60,9 +54,7 @@ export interface PeerInfo {
|
|
|
60
54
|
registryVersion: number;
|
|
61
55
|
/** Cluster-settings version reported by this peer (0 = unknown/legacy). */
|
|
62
56
|
clusterSettingsVersion: number;
|
|
63
|
-
/** Cluster role of the peer. */
|
|
64
57
|
role: 'coordinator' | 'worker';
|
|
65
|
-
/** The authentication scheme of each link direction. */
|
|
66
58
|
authScheme: PeerAuthSchemes;
|
|
67
59
|
hostname?: string;
|
|
68
60
|
osRelease?: string;
|
|
@@ -77,18 +69,15 @@ export interface PeerInfo {
|
|
|
77
69
|
version?: string | null;
|
|
78
70
|
}
|
|
79
71
|
export interface PeerRegistryOptions {
|
|
80
|
-
/**
|
|
72
|
+
/** Each `...VersionBehind` fires when a peer reports a higher version than local. */
|
|
81
73
|
onConfigVersionBehind?: (peerVersion: number) => void;
|
|
82
|
-
/** Called when a peer's registryVersion is higher than the local version. */
|
|
83
74
|
onRegistryVersionBehind?: (peerVersion: number) => void;
|
|
84
|
-
/** Called when a peer's clusterSettingsVersion is higher than the local version. */
|
|
85
75
|
onClusterSettingsVersionBehind?: (peerVersion: number) => void;
|
|
86
|
-
/** Called when a peer transitions to disconnected state. */
|
|
87
76
|
onPeerDisconnected?: (instanceId: string) => void;
|
|
88
77
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
78
|
+
* Fires when the connected set changes (fresh add or markDisconnected), so a
|
|
79
|
+
* coordinator re-reports `cluster.membership` to the Platform before the
|
|
80
|
+
* periodic interval.
|
|
92
81
|
*/
|
|
93
82
|
onMembershipChange?: () => void;
|
|
94
83
|
}
|
|
@@ -103,26 +92,15 @@ export declare class PeerRegistry {
|
|
|
103
92
|
private readonly onPeerDisconnected?;
|
|
104
93
|
private readonly onMembershipChange?;
|
|
105
94
|
constructor(options?: PeerRegistryOptions);
|
|
106
|
-
/**
|
|
107
|
-
* Update the local config version for comparison with peer heartbeats.
|
|
108
|
-
*/
|
|
109
95
|
setLocalConfigVersion(version: number): void;
|
|
110
|
-
/**
|
|
111
|
-
* Update the local registry version for comparison with peer heartbeats.
|
|
112
|
-
*/
|
|
113
96
|
setLocalRegistryVersion(version: number): void;
|
|
114
|
-
/**
|
|
115
|
-
* Update the local cluster-settings version for comparison with peer
|
|
116
|
-
* heartbeats. A worker sets this after pulling a snapshot so it stops
|
|
117
|
-
* re-firing the version-behind hook on every subsequent heartbeat.
|
|
118
|
-
*/
|
|
97
|
+
/** A worker sets this after pulling a snapshot, so the behind-hook stops re-firing. */
|
|
119
98
|
setLocalClusterSettingsVersion(version: number): void;
|
|
120
99
|
/**
|
|
121
|
-
* Add or update a peer
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* auth response or first heartbeat will populate fresh data.
|
|
100
|
+
* Add or update a peer as connected. An already-connected peer keeps its
|
|
101
|
+
* capabilities, so the incoming handler cannot reset what the outgoing client
|
|
102
|
+
* set; a fresh or disconnected peer starts empty until the auth response or
|
|
103
|
+
* first heartbeat fills it.
|
|
126
104
|
*/
|
|
127
105
|
addPeer(info: {
|
|
128
106
|
instanceId: string;
|
|
@@ -133,37 +111,20 @@ export declare class PeerRegistry {
|
|
|
133
111
|
}): void;
|
|
134
112
|
/** Record the scheme one direction of the link authenticated with, or null when it closed. */
|
|
135
113
|
setAuthScheme(instanceId: string, direction: PeerLinkDirection, scheme: PeerAuthScheme | null): void;
|
|
136
|
-
/**
|
|
137
|
-
* Remove a peer entirely from the registry.
|
|
138
|
-
*/
|
|
139
114
|
removePeer(instanceId: string): void;
|
|
140
115
|
/**
|
|
141
|
-
*
|
|
142
|
-
* Updates agent inventory, draining status, capabilities, term, leaderId,
|
|
143
|
-
* and lastHeartbeatAt timestamp.
|
|
116
|
+
* Apply a heartbeat to the peer's state.
|
|
144
117
|
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* every consumer of `PeerInfo` compares against folded job selectors, so a
|
|
149
|
-
* consumer that forgets to fold silently stops counting that peer's agents.
|
|
150
|
-
* Folding on arrival means a consumer cannot forget.
|
|
118
|
+
* Every label is folded here, on ingress, not at each comparison site: an older
|
|
119
|
+
* peer build sends the operator's case (`Docker`), and a `PeerInfo` consumer that
|
|
120
|
+
* forgot to fold would silently stop counting that peer's agents.
|
|
151
121
|
*
|
|
152
|
-
* Identifiers are
|
|
153
|
-
*
|
|
122
|
+
* Identifiers are NOT folded: `agentId`, `scalerName`, and the scaler's
|
|
123
|
+
* `name` / `type` are opaque and case-sensitive.
|
|
154
124
|
*/
|
|
155
125
|
updateHeartbeat(instanceId: string, heartbeat: PeerHeartbeat): void;
|
|
156
|
-
/**
|
|
157
|
-
* Get a single peer by instanceId.
|
|
158
|
-
*/
|
|
159
126
|
getPeer(instanceId: string): PeerInfo | undefined;
|
|
160
|
-
/**
|
|
161
|
-
* Get all tracked peers.
|
|
162
|
-
*/
|
|
163
127
|
getAllPeers(): PeerInfo[];
|
|
164
|
-
/**
|
|
165
|
-
* Get only connected peers.
|
|
166
|
-
*/
|
|
167
128
|
getConnectedPeers(): PeerInfo[];
|
|
168
129
|
/**
|
|
169
130
|
* Find peers whose agents or scaler backends match any of the given label
|
|
@@ -173,73 +134,43 @@ export declare class PeerRegistry {
|
|
|
173
134
|
* 1. Connected agents: at least one agent's labels are a superset of a
|
|
174
135
|
* required label set with activeJobs < maxConcurrency.
|
|
175
136
|
* 2. Scaler capacity: at least one scaler backend has activeCount < maxAgents
|
|
176
|
-
* AND its label sets
|
|
177
|
-
*
|
|
137
|
+
* AND one of its label sets is a superset of a required label set and
|
|
138
|
+
* passes that set's mandatory-label gate (the same subset-plus-gate check
|
|
139
|
+
* as agent matching).
|
|
178
140
|
*
|
|
179
141
|
* Excludes draining peers and disconnected peers.
|
|
180
|
-
*
|
|
181
|
-
* @param labelSets - Array of label sets. A peer matches if ANY of its
|
|
182
|
-
* agents or scaler backends match ANY of the label sets with capacity.
|
|
183
142
|
*/
|
|
184
143
|
findPeersWithCapacity(labelSets: string[][]): PeerInfo[];
|
|
185
144
|
/**
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
* from "peers exist but are at capacity".
|
|
189
|
-
*
|
|
190
|
-
* Excludes disconnected and draining peers.
|
|
145
|
+
* Like {@link findPeersWithCapacity} without the capacity filter, to tell "no
|
|
146
|
+
* peer handles this label" from "peers exist but are at capacity".
|
|
191
147
|
*/
|
|
192
148
|
findPeersWithLabels(labelSets: string[][]): PeerInfo[];
|
|
193
149
|
/**
|
|
194
|
-
*
|
|
195
|
-
*
|
|
150
|
+
* Evict capabilities immediately, with no grace period: a disconnected peer has
|
|
151
|
+
* no usable agents or scaler capacity.
|
|
196
152
|
*/
|
|
197
153
|
markDisconnected(instanceId: string): void;
|
|
198
|
-
/**
|
|
199
|
-
* Mark a peer as connected.
|
|
200
|
-
*/
|
|
201
154
|
markConnected(instanceId: string): void;
|
|
202
|
-
/**
|
|
203
|
-
* Check if a peer's last heartbeat is older than the given threshold.
|
|
204
|
-
*/
|
|
155
|
+
/** An unknown peer counts as stale. */
|
|
205
156
|
isStale(instanceId: string, thresholdMs: number): boolean;
|
|
206
|
-
/**
|
|
207
|
-
* Total number of tracked peers (connected + disconnected).
|
|
208
|
-
*/
|
|
157
|
+
/** Connected and disconnected. */
|
|
209
158
|
getPeerCount(): number;
|
|
210
|
-
/**
|
|
211
|
-
* Number of currently connected peers.
|
|
212
|
-
*/
|
|
213
159
|
getConnectedPeerCount(): number;
|
|
214
|
-
/**
|
|
215
|
-
* Get count of connected coordinator (non-worker) peers.
|
|
216
|
-
* Used for Raft quorum calculations — workers don't participate in elections.
|
|
217
|
-
*/
|
|
160
|
+
/** For Raft quorum: workers do not take part in elections. */
|
|
218
161
|
getConnectedCoordinatorPeerCount(): number;
|
|
219
162
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* Returns the list of evicted peer instanceIds.
|
|
223
|
-
*
|
|
224
|
-
* called on a timer by the coordinator
|
|
225
|
-
* (2 missed heartbeats at 30s interval = 60s default timeout).
|
|
163
|
+
* Mark peers past the heartbeat timeout disconnected; returns their ids. The
|
|
164
|
+
* coordinator calls it on a timer (2 missed heartbeats at 30s = 60s default).
|
|
226
165
|
*/
|
|
227
166
|
evictStalePeers(staleTimeoutMs: number): string[];
|
|
228
|
-
/**
|
|
229
|
-
* Get all peers with role=worker.
|
|
230
|
-
*/
|
|
231
167
|
getWorkerPeers(): PeerInfo[];
|
|
232
168
|
/**
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* so a worker predating the role field is not counted here. That under-counts,
|
|
237
|
-
* which errs permissive, and it self-heals as workers upgrade.
|
|
169
|
+
* A peer advertising no role registers as a coordinator (`addPeer`), so a worker
|
|
170
|
+
* predating the role field is not counted: under-counting errs permissive and
|
|
171
|
+
* self-heals as workers upgrade.
|
|
238
172
|
*/
|
|
239
173
|
getConnectedWorkerPeers(): PeerInfo[];
|
|
240
|
-
/**
|
|
241
|
-
* Get all peers with role=coordinator.
|
|
242
|
-
*/
|
|
243
174
|
getCoordinatorPeers(): PeerInfo[];
|
|
244
175
|
}
|
|
245
176
|
//# sourceMappingURL=peer-registry.d.ts.map
|
|
@@ -10,12 +10,10 @@ export interface StoredPlanHeadroom {
|
|
|
10
10
|
updatedAt: Date;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* ownership shape as `org_trust_policy`: the Platform writes it, the
|
|
18
|
-
* orchestrator only reads it back.
|
|
13
|
+
* Persisted cache of the Platform-owned worker ceiling, so a coordinator
|
|
14
|
+
* restarting during a Platform outage keeps the last known ceiling instead of
|
|
15
|
+
* unlimited. Like `org_trust_policy`, the Platform writes it and the orchestrator
|
|
16
|
+
* only reads it back.
|
|
19
17
|
*/
|
|
20
18
|
export declare class PlanHeadroomStore {
|
|
21
19
|
private readonly db;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Postgres-backed Raft state persistence.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* State is loaded on node startup and saved on term/vote/leader transitions.
|
|
4
|
+
* One raft_state row per cluster (default cluster_id = 'default'), loaded on
|
|
5
|
+
* node startup and saved on term/vote/leader transitions.
|
|
7
6
|
*/
|
|
8
7
|
import type { Kysely } from 'kysely';
|
|
9
8
|
import type { Database } from '../db/types.js';
|
|
@@ -19,14 +18,8 @@ export declare class RaftStateStore {
|
|
|
19
18
|
db: Kysely<Database>;
|
|
20
19
|
clusterId?: string;
|
|
21
20
|
});
|
|
22
|
-
/**
|
|
23
|
-
* Load persisted Raft state from the DB.
|
|
24
|
-
* Returns defaults (term=0, votedFor=null, leaderId=null) if no row exists.
|
|
25
|
-
*/
|
|
21
|
+
/** Returns term=0, votedFor=null, leaderId=null when no row exists. */
|
|
26
22
|
load(): Promise<RaftPersistentState>;
|
|
27
|
-
/**
|
|
28
|
-
* Upsert full Raft state into the DB.
|
|
29
|
-
*/
|
|
30
23
|
save(state: RaftPersistentState): Promise<void>;
|
|
31
24
|
/**
|
|
32
25
|
* Upsert full Raft state unless the stored term is newer. A coordinator that
|
|
@@ -34,9 +27,7 @@ export declare class RaftStateStore {
|
|
|
34
27
|
* coordinators may already have elected a leader in a newer term.
|
|
35
28
|
*/
|
|
36
29
|
saveUnlessNewerTerm(state: RaftPersistentState): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Update just the leader and term fields (lightweight update for heartbeat acceptance).
|
|
39
|
-
*/
|
|
30
|
+
/** Lightweight leader + term update on heartbeat acceptance. */
|
|
40
31
|
updateLeader(leaderId: string, term: number): Promise<void>;
|
|
41
32
|
}
|
|
42
33
|
//# sourceMappingURL=raft-state.d.ts.map
|
package/dist/cluster/raft.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ interface RaftNodeDeps {
|
|
|
32
32
|
electionTimeoutMinMs?: number;
|
|
33
33
|
electionTimeoutMaxMs?: number;
|
|
34
34
|
leaderHeartbeatMs?: number;
|
|
35
|
-
/** Grace period in ms before dormant-mode self-election. Default: 0
|
|
35
|
+
/** Grace period in ms before dormant-mode self-election. Default: 0. */
|
|
36
36
|
gracePeriodMs?: number;
|
|
37
37
|
}
|
|
38
38
|
export declare class RaftNode {
|
|
@@ -60,94 +60,59 @@ export declare class RaftNode {
|
|
|
60
60
|
private stopped;
|
|
61
61
|
private electionTimer;
|
|
62
62
|
private leaderHeartbeatTimer;
|
|
63
|
-
/** Votes received during the current election as candidate. */
|
|
64
63
|
private votesReceived;
|
|
65
64
|
/**
|
|
66
|
-
* Consecutive elections
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* but is actually dead).
|
|
65
|
+
* Consecutive elections no peer answered. Past the threshold the node
|
|
66
|
+
* force-self-elects: a safety valve against delayed WebSocket close detection
|
|
67
|
+
* (a dead peer still appears connected).
|
|
70
68
|
*/
|
|
71
69
|
private consecutiveUnansweredElections;
|
|
72
70
|
constructor(deps: RaftNodeDeps);
|
|
73
|
-
/**
|
|
74
|
-
* Start the Raft node. Loads persisted state from DB and starts
|
|
75
|
-
* as follower with election timer.
|
|
76
|
-
*/
|
|
71
|
+
/** Loads persisted state and starts as a follower with an election timer. */
|
|
77
72
|
start(): Promise<void>;
|
|
78
73
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* nothing.
|
|
74
|
+
* Clears the timers, ends leadership (so the leader-only services stop with
|
|
75
|
+
* it), and persists state. Every election input after this is ignored until
|
|
76
|
+
* the next {@link start}. A second call does nothing.
|
|
83
77
|
*/
|
|
84
78
|
stop(): Promise<void>;
|
|
85
|
-
/** Whether this node is the current leader. */
|
|
86
79
|
isLeader(): boolean;
|
|
87
|
-
/** Get the current known leader's instance ID. */
|
|
88
80
|
getLeaderId(): string | null;
|
|
89
|
-
/** Get the current Raft term. */
|
|
90
81
|
getCurrentTerm(): number;
|
|
91
|
-
/**
|
|
82
|
+
/** For testing and diagnostics. */
|
|
92
83
|
getRole(): RaftRole;
|
|
93
84
|
/**
|
|
94
|
-
* Handle a peer.leaving announcement
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* is done by the caller before calling this method).
|
|
85
|
+
* Handle a peer.leaving announcement. If the leaving peer is the leader, clear
|
|
86
|
+
* leaderId and start a new election at once; otherwise do nothing (the caller
|
|
87
|
+
* updates the peer registry first).
|
|
98
88
|
*/
|
|
99
89
|
handlePeerLeaving(instanceId: string): void;
|
|
100
|
-
/**
|
|
101
|
-
* Reset the election timer with a randomized timeout.
|
|
102
|
-
* On expiry, starts an election.
|
|
103
|
-
*/
|
|
90
|
+
/** Restart the election timer with a randomized timeout. */
|
|
104
91
|
resetElectionTimer(): void;
|
|
105
92
|
private clearElectionTimer;
|
|
106
93
|
/**
|
|
107
94
|
* Notify Raft that a peer disconnected. If this node is a follower or
|
|
108
95
|
* candidate, reset the election timer to a short value so Raft quickly
|
|
109
96
|
* re-evaluates whether it should self-elect (dormant mode).
|
|
110
|
-
* Without this, the node waits for the full election timeout (
|
|
97
|
+
* Without this, the node waits for the full election timeout (5-10s by default)
|
|
111
98
|
* before discovering all peers are gone.
|
|
112
99
|
*/
|
|
113
100
|
onPeerDisconnected(): void;
|
|
114
101
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* (dormant mode for single-orchestrator deployments).
|
|
102
|
+
* Increment the term, vote for self and request votes. With no peers
|
|
103
|
+
* connected, self-elect at once (dormant mode).
|
|
118
104
|
*/
|
|
119
105
|
private startElection;
|
|
120
|
-
/**
|
|
121
|
-
* Handle an incoming vote request from another candidate.
|
|
122
|
-
*/
|
|
123
106
|
handleVoteRequest(msg: RaftVoteRequest): RaftVoteResponse;
|
|
124
|
-
/**
|
|
125
|
-
* Handle a vote response from a peer.
|
|
126
|
-
*/
|
|
127
107
|
handleVoteResponse(msg: RaftVoteResponse): void;
|
|
128
|
-
/**
|
|
129
|
-
* Check if we have a majority of votes to become leader.
|
|
130
|
-
* Cluster size = connected peers + self.
|
|
131
|
-
*/
|
|
108
|
+
/** Cluster size = connected coordinator peers + self. */
|
|
132
109
|
private checkMajority;
|
|
133
|
-
/**
|
|
134
|
-
* Transition to leader role. Start heartbeat timer, persist state,
|
|
135
|
-
* call onBecomeLeader callback.
|
|
136
|
-
*/
|
|
137
110
|
private becomeLeader;
|
|
138
|
-
/**
|
|
139
|
-
* Step down from leader/candidate to follower.
|
|
140
|
-
*/
|
|
141
111
|
private stepDown;
|
|
142
|
-
/**
|
|
143
|
-
* Start sending periodic leader heartbeats (raft.append.entries).
|
|
144
|
-
*/
|
|
112
|
+
/** Periodic leader heartbeats (raft.append.entries). */
|
|
145
113
|
private startLeaderHeartbeat;
|
|
146
114
|
private sendHeartbeat;
|
|
147
115
|
private clearLeaderHeartbeat;
|
|
148
|
-
/**
|
|
149
|
-
* Handle an incoming append entries (heartbeat) from a leader.
|
|
150
|
-
*/
|
|
151
116
|
handleAppendEntries(msg: RaftAppendEntries): void;
|
|
152
117
|
}
|
|
153
118
|
export {};
|