@kici-dev/orchestrator 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +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 +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 +4568 -6571
- 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 +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 +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 +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 +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 +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 +7500 -12629
- 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 +7141 -11957
- 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 +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 +36 -60
- 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,11 +1,9 @@
|
|
|
1
1
|
import { type LockStep, type LockStepEntry } from '@kici-dev/engine';
|
|
2
2
|
/**
|
|
3
|
-
* Flatten a lock job's `steps`
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* — the flat-stepIndex invariant: `flattenLockSteps(job.steps)[i]` is the step at
|
|
8
|
-
* agent `stepIndex i`.
|
|
3
|
+
* Flatten a lock job's `steps` for `stepIndex` iteration: a `parallel` group's
|
|
4
|
+
* children are inlined in order and the wrapper takes no index. Invariant,
|
|
5
|
+
* matching the agent's `extractAndNormalizeSteps`:
|
|
6
|
+
* `flattenLockSteps(job.steps)[i]` is the step at agent `stepIndex i`.
|
|
9
7
|
*/
|
|
10
8
|
export declare function flattenLockSteps(steps: readonly LockStepEntry[]): readonly LockStep[];
|
|
11
9
|
//# sourceMappingURL=flatten-lock-steps.d.ts.map
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { ProviderBundle } from '../provider-registry.js';
|
|
12
12
|
import type { WorkflowRepoProvenance } from '../reporting/execution-tracker.js';
|
|
13
|
-
/** The workflow repository of a run whose workflow is defined in another repository. */
|
|
14
13
|
export interface GlobalDispatchIdentity {
|
|
15
14
|
/** `owner/repo` that defines the workflow. */
|
|
16
15
|
readonly workflowRepoIdentifier: string;
|
|
@@ -24,7 +23,6 @@ export interface GlobalDispatchIdentity {
|
|
|
24
23
|
readonly workflowProviderContext: Record<string, unknown>;
|
|
25
24
|
/** The workflow repository's provider bundle (may differ from the inbound one). */
|
|
26
25
|
readonly workflowBundle: ProviderBundle | undefined;
|
|
27
|
-
/** Credentials minted for the workflow repository. */
|
|
28
26
|
readonly workflowCredentials: Record<string, unknown>;
|
|
29
27
|
}
|
|
30
28
|
interface IdentityCtx {
|
|
@@ -54,19 +52,16 @@ export declare function policyRoutingKey(ctx: {
|
|
|
54
52
|
/** Provenance recorded on the run row; `undefined` for a same-repo run. */
|
|
55
53
|
export declare function workflowRepoProvenance(ctx: IdentityCtx): WorkflowRepoProvenance | undefined;
|
|
56
54
|
/**
|
|
57
|
-
* The dual-checkout job-config fields
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* clone URL: a global job without a workflow-repository URL cannot run.
|
|
55
|
+
* The dual-checkout job-config fields, with the workflow repository's clone URL
|
|
56
|
+
* built by its own provider bundle. Empty for a same-repository dispatch. Throws
|
|
57
|
+
* when that bundle cannot build a clone URL.
|
|
61
58
|
*/
|
|
62
59
|
export declare function globalJobConfigFor(ctx: IdentityCtx): Record<string, unknown>;
|
|
63
60
|
/** Job-config fields the agent uses for the dual checkout. */
|
|
64
61
|
export declare function globalJobConfigFields(ctx: IdentityCtx, workflowRepoUrl: string): Record<string, unknown>;
|
|
65
62
|
/**
|
|
66
|
-
* The part of a {@link GlobalDispatchIdentity} a held run stores
|
|
67
|
-
*
|
|
68
|
-
* resume re-derives from `workflowRoutingKey`. The commit, branch and provider
|
|
69
|
-
* context are the ones captured when the run was held, so a resumed run
|
|
63
|
+
* The part of a {@link GlobalDispatchIdentity} a held run stores; a resume
|
|
64
|
+
* re-derives bundle and credentials from `workflowRoutingKey`. A resumed run
|
|
70
65
|
* executes the workflow commit it was held at, not the live registration's.
|
|
71
66
|
*/
|
|
72
67
|
export type SerializableGlobalDispatchIdentity = Omit<GlobalDispatchIdentity, 'workflowBundle' | 'workflowCredentials'>;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tier-2 global eval round — orchestrator side.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* repo and the source repo once, runs every candidate's filter and then its
|
|
10
|
-
* generators, and reports a verdict per candidate.
|
|
4
|
+
* The orchestrator never runs author code, so global candidates with a `filter`
|
|
5
|
+
* or `DynamicJobFn` generators go to ONE pre-run job per
|
|
6
|
+
* (event × workflow repo × registered SHA). That job checks out both repos once,
|
|
7
|
+
* runs each candidate's filter then its generators, and reports a verdict per
|
|
8
|
+
* candidate.
|
|
11
9
|
*
|
|
12
|
-
* The round precedes any run row by design:
|
|
13
|
-
*
|
|
14
|
-
* it.
|
|
10
|
+
* The round precedes any run row by design: it decides which global workflows
|
|
11
|
+
* produce a run at all.
|
|
15
12
|
*
|
|
16
|
-
* This module owns the partition, the grouping, and the dispatch-and-await
|
|
17
|
-
* caller
|
|
13
|
+
* This module owns the partition, the grouping, and the dispatch-and-await; the
|
|
14
|
+
* caller acts on the verdicts.
|
|
18
15
|
*/
|
|
19
16
|
import type { GlobalEvalCandidateResult, LockJobOrFactory, LockWorkflow, SimulatedEvent, WorkflowDecision } from '@kici-dev/engine';
|
|
20
17
|
import { type GlobalEvalRoundCache } from '../cache/global-eval-round-cache.js';
|
|
@@ -55,27 +52,21 @@ export interface GlobalEvalCandidate {
|
|
|
55
52
|
reg: RegisteredWorkflow;
|
|
56
53
|
lockEntry: LockWorkflow;
|
|
57
54
|
/**
|
|
58
|
-
* The trigger-match decision
|
|
59
|
-
*
|
|
60
|
-
* never reads it — only the caller that explains an exclusion does.
|
|
55
|
+
* The trigger-match decision, carried so the verdict can be appended to its
|
|
56
|
+
* trace. Optional: only the caller that explains an exclusion reads it.
|
|
61
57
|
*/
|
|
62
58
|
decision?: WorkflowDecision;
|
|
63
59
|
}
|
|
64
60
|
/**
|
|
65
|
-
* Stable identity for one candidate across a round's results.
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* lookup reads honestly at the call site and a malformed registration with a
|
|
69
|
-
* blank id still separates two workflows.
|
|
61
|
+
* Stable identity for one candidate across a round's results. The workflow name
|
|
62
|
+
* is appended so a malformed registration with a blank id still separates two
|
|
63
|
+
* workflows.
|
|
70
64
|
*/
|
|
71
65
|
export declare function candidateKey(candidate: GlobalEvalCandidate): string;
|
|
72
66
|
/**
|
|
73
67
|
* True for a `DynamicJobFn` entry the pre-run round runs: a generator with no
|
|
74
|
-
* upstream `needs`.
|
|
75
|
-
*
|
|
76
|
-
* A result-aware generator (`resultAware`, or any declared `needs`) reads its
|
|
77
|
-
* upstreams' outputs, which do not exist before the run starts. It runs on the
|
|
78
|
-
* run's deferred path instead, once those upstreams complete.
|
|
68
|
+
* upstream `needs`. A result-aware generator (`resultAware`, or any `needs`)
|
|
69
|
+
* reads upstream outputs that do not exist yet, so it runs on the deferred path.
|
|
79
70
|
*/
|
|
80
71
|
export declare function isRoundGenerator(job: LockJobOrFactory): boolean;
|
|
81
72
|
/** True for a `DynamicJobFn` entry that runs on the deferred path, never in the round. */
|
|
@@ -83,29 +74,21 @@ export declare function isDeferredGenerator(job: LockJobOrFactory): boolean;
|
|
|
83
74
|
/** True when the workflow carries at least one generator the round must NOT run. */
|
|
84
75
|
export declare function hasDeferredGenerator(lockEntry: LockWorkflow): boolean;
|
|
85
76
|
/**
|
|
86
|
-
* Split matched global candidates into
|
|
87
|
-
* those that must go through an eval round first.
|
|
77
|
+
* Split matched global candidates into immediate dispatch and eval-round.
|
|
88
78
|
*
|
|
89
|
-
* A candidate needs the round when it declares a `filter
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* else — static jobs, and result-aware generators the run evaluates later — is
|
|
94
|
-
* handed to the dispatch pipeline as declared, so routing it through a round
|
|
95
|
-
* would add a job dispatch and an agent round trip for nothing.
|
|
79
|
+
* A candidate needs the round when it declares a `filter`, carries a needs-free
|
|
80
|
+
* `DynamicJobFn` (only the agent may run either), or matched with deferred
|
|
81
|
+
* `paths` (only the agent's clone holds the diff). Static jobs and result-aware
|
|
82
|
+
* generators dispatch as declared; a round would add a dispatch for nothing.
|
|
96
83
|
*/
|
|
97
84
|
export declare function partitionCandidates(candidates: readonly GlobalEvalCandidate[]): {
|
|
98
85
|
immediate: GlobalEvalCandidate[];
|
|
99
86
|
needsRound: GlobalEvalCandidate[];
|
|
100
87
|
};
|
|
101
88
|
/**
|
|
102
|
-
* Group by workflow repo, routing key, and registered SHA.
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* the exact tree the round checks out, so two registrations of one repo at
|
|
106
|
-
* different commits can never share a checkout; the routing key pins which
|
|
107
|
-
* provider bundle mints the clone credentials, so two providers owning the same
|
|
108
|
-
* repo path stay separate.
|
|
89
|
+
* Group by workflow repo, routing key, and registered SHA. Repo and SHA pin the
|
|
90
|
+
* tree the round checks out; the routing key pins the provider bundle that mints
|
|
91
|
+
* clone credentials, so two providers owning one repo path stay separate.
|
|
109
92
|
*/
|
|
110
93
|
export declare function groupCandidates(candidates: readonly GlobalEvalCandidate[]): Map<string, GlobalEvalCandidate[]>;
|
|
111
94
|
/** Minimal dispatcher surface the round needs (the real one is the job dispatcher). */
|
|
@@ -114,16 +97,12 @@ export interface GlobalEvalDispatcher {
|
|
|
114
97
|
status: string;
|
|
115
98
|
jobId: string;
|
|
116
99
|
}>;
|
|
117
|
-
/**
|
|
118
|
-
* Take a still-queued round job out of the queue when nobody is waiting for
|
|
119
|
-
* it any more. Optional so a test double can omit it.
|
|
120
|
-
*/
|
|
100
|
+
/** Drop a still-queued round job nobody waits for. Optional for test doubles. */
|
|
121
101
|
cancelQueuedJob?(jobId: string, reason: string): Promise<void>;
|
|
122
102
|
}
|
|
123
103
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* can live behind different providers.
|
|
104
|
+
* Resolves the bundle owning a routing key: the workflow repo and the event's
|
|
105
|
+
* source repo can live behind different providers.
|
|
127
106
|
*/
|
|
128
107
|
export interface GlobalEvalProviderRegistry {
|
|
129
108
|
getByRoutingKey(routingKey: string): ProviderBundle | undefined;
|
|
@@ -145,30 +124,18 @@ export interface GlobalEvalAgentRegistry {
|
|
|
145
124
|
}
|
|
146
125
|
/**
|
|
147
126
|
* First agent release whose job runner understands a `globalEvalRound`
|
|
148
|
-
* dispatch.
|
|
149
|
-
*
|
|
150
|
-
* Below it the agent has no round branch at all: the job falls through to the
|
|
151
|
-
* standard executor, whose `jobConfig` carries no `source.file`, so it either
|
|
152
|
-
* fails outright or reports success without the `globalEvalComplete` the
|
|
153
|
-
* orchestrator is waiting for. Either way the round never settles.
|
|
127
|
+
* dispatch. An older agent runs it through the standard executor, which fails
|
|
128
|
+
* or succeeds without sending `globalEvalComplete`, so the round never settles.
|
|
154
129
|
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* recognise, because the damage is not confined to the new feature. A global
|
|
159
|
-
* workflow that merely *contains* a generator now routes through the round, so
|
|
160
|
-
* an unrecognised round means static jobs that ran yesterday stop running.
|
|
130
|
+
* An orchestrator ahead of its fleet is a supported state, but this module must
|
|
131
|
+
* recognise it: a global workflow that merely *contains* a generator routes
|
|
132
|
+
* through the round, so its static jobs would stop running too.
|
|
161
133
|
*/
|
|
162
134
|
export declare const MIN_GLOBAL_EVAL_AGENT_VERSION = "0.5.0";
|
|
163
135
|
export interface GlobalEvalRoundDeps {
|
|
164
136
|
dispatcher: GlobalEvalDispatcher;
|
|
165
137
|
pendingGlobalEvals: PendingGlobalEvalTracker;
|
|
166
|
-
/**
|
|
167
|
-
* Required, unlike the three optional deps below: it is what resolves the
|
|
168
|
-
* WORKFLOW repo's own provider bundle. Omitting it would leave the round with
|
|
169
|
-
* no clone URL for the workflow repo at all, so it is not a dep that can
|
|
170
|
-
* degrade quietly.
|
|
171
|
-
*/
|
|
138
|
+
/** Required: without it the round has no clone URL for the WORKFLOW repo. */
|
|
172
139
|
providerRegistry: GlobalEvalProviderRegistry;
|
|
173
140
|
clusterSettings?: ClusterSettingsReader;
|
|
174
141
|
globalEvalCache?: GlobalEvalRoundCache;
|
|
@@ -201,99 +168,58 @@ export interface GlobalEvalRoundArgs {
|
|
|
201
168
|
/**
|
|
202
169
|
* Why a fleet cannot decide a round, or `null` when it might.
|
|
203
170
|
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
171
|
+
* Refuses only when every registered init-runner reports a readable version
|
|
172
|
+
* below the minimum. An empty fleet is not refused (the queue's unroutable
|
|
173
|
+
* handling covers it), nor is a fleet with even ONE unreadable version: refusing
|
|
174
|
+
* suppresses every global workflow for the delivery, so it must rest on proof.
|
|
206
175
|
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* covers a round nobody picks up.
|
|
210
|
-
*
|
|
211
|
-
* A fleet containing even ONE agent whose version cannot be read is not refused
|
|
212
|
-
* either, and the bar is deliberately that strict rather than "all unknown".
|
|
213
|
-
* Refusing suppresses every global workflow for the delivery — the exact damage
|
|
214
|
-
* this function exists to prevent — so it must rest on proof, not on ignorance
|
|
215
|
-
* about part of the fleet. Getting it wrong in the other direction merely costs
|
|
216
|
-
* a slow failure with a less useful message.
|
|
217
|
-
*
|
|
218
|
-
* Refusing here rather than at dispatch is deliberate. A too-old fleet does not
|
|
219
|
-
* clear within a retry, so dispatching would spend two full wait ceilings of
|
|
220
|
-
* inline webhook latency to reach the same verdict — and reach it with a
|
|
221
|
-
* timeout message that says nothing about agent versions.
|
|
176
|
+
* Refusing before dispatch saves two full wait ceilings of inline webhook
|
|
177
|
+
* latency and yields a message that names agent versions.
|
|
222
178
|
*/
|
|
223
179
|
export declare function unsupportedFleetReason(agentRegistry?: GlobalEvalAgentRegistry): string | null;
|
|
224
180
|
/**
|
|
225
181
|
* Narrow one wire verdict into a value the dispatch path can trust.
|
|
226
182
|
*
|
|
227
|
-
* The round-result schema
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
* coerced, and a generated job missing a usable `name` makes the whole candidate
|
|
232
|
-
* indeterminate rather than being dropped silently. Fail-closed is the right
|
|
233
|
-
* direction — a generator whose output we cannot read is a generator whose
|
|
234
|
-
* verdict we cannot act on, and half-dispatching its jobs would be worse than
|
|
235
|
-
* reporting that we could not decide.
|
|
183
|
+
* The round-result schema passes `jobs` through unvalidated (`LockJob` has no
|
|
184
|
+
* Zod mirror), so every field is re-checked: `run` is compared, not coerced, and
|
|
185
|
+
* a generated job without a usable `name` makes the whole candidate
|
|
186
|
+
* indeterminate. Fail-closed: half-dispatching unreadable output is worse.
|
|
236
187
|
*/
|
|
237
188
|
export declare function narrowVerdict(raw: unknown, workflowName: string): GlobalEvalCandidateResult;
|
|
238
189
|
/**
|
|
239
|
-
* Cap on the joined reason string a decided-nothing round reports.
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
* check's `output.summary`, which GitHub caps at 65535 characters. An overflow
|
|
244
|
-
* is rejected with a 422 that the best-effort post swallows, so the check
|
|
245
|
-
* disappears in exactly the case it exists for. Realistic reasons are one short
|
|
246
|
-
* sentence each; this bound makes that structural instead of lucky.
|
|
190
|
+
* Cap on the joined reason string a decided-nothing round reports. Reasons come
|
|
191
|
+
* from author code, unbounded, and land in the commit check's `output.summary`,
|
|
192
|
+
* which GitHub caps at 65535 characters; an overflow 422 is swallowed by the
|
|
193
|
+
* best-effort post, so the check would vanish.
|
|
247
194
|
*/
|
|
248
195
|
export declare const MAX_ROUND_REASON_CHARS = 4000;
|
|
249
196
|
/**
|
|
250
197
|
* Truncate `text` to at most `max` UTF-16 code units, marking that it was cut.
|
|
251
198
|
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
* - A `max` smaller than the marker would make `max - marker.length` negative,
|
|
256
|
-
* and appending the marker to an empty slice then returns a string LONGER
|
|
257
|
-
* than `max`. Such a `max` cannot carry both content and a marker, so the
|
|
258
|
-
* marker itself is truncated instead.
|
|
259
|
-
* - Slicing at an arbitrary index can cut a surrogate pair in half, leaving a
|
|
260
|
-
* lone surrogate that is not valid text. The cut backs off by one unit when
|
|
261
|
-
* it lands between the halves of a pair.
|
|
199
|
+
* - A `max` no larger than the marker returns the truncated marker, never a
|
|
200
|
+
* string longer than `max`.
|
|
201
|
+
* - The cut backs off one unit rather than split a surrogate pair.
|
|
262
202
|
*/
|
|
263
203
|
export declare function truncateReasonText(text: string, max: number): string;
|
|
264
204
|
/**
|
|
265
|
-
* One round that produced no verdicts after every attempt
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
* There is exactly one of these per failed round — never one per candidate. The
|
|
269
|
-
* round exists to collapse N candidate workflows into a single pre-run job, so
|
|
270
|
-
* fanning its failure back out into N run rows and N checks would undo the fan-out
|
|
271
|
-
* reduction the whole design is for. `workflowNames` is what makes the single
|
|
272
|
-
* record honest: it names every workflow the failure suppressed.
|
|
205
|
+
* One round that produced no verdicts after every attempt. Exactly one per
|
|
206
|
+
* failed round, never one per candidate (the round exists to collapse N
|
|
207
|
+
* workflows into one job); `workflowNames` names every suppressed workflow.
|
|
273
208
|
*/
|
|
274
209
|
export interface GlobalEvalRoundFailure {
|
|
275
210
|
/** The last attempt's round-job run id — what an errored run row is written under. */
|
|
276
211
|
runId: string;
|
|
277
|
-
/** Repo the suppressed workflows are authored in. */
|
|
278
212
|
workflowRepoIdentifier: string;
|
|
279
213
|
/** Every candidate workflow this round suppressed. */
|
|
280
214
|
workflowNames: string[];
|
|
281
215
|
/** The last attempt's error. */
|
|
282
216
|
error: string;
|
|
283
|
-
/**
|
|
217
|
+
/** `0` ⇒ never dispatched. */
|
|
284
218
|
attempts: number;
|
|
285
219
|
/**
|
|
286
|
-
* True when the round
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
* Recorded as its own record rather than folded into a total failure because
|
|
290
|
-
* the two read differently to an author: a total failure means nothing from
|
|
291
|
-
* this repo ran, a partial one means their workflow specifically could not be
|
|
292
|
-
* decided while its neighbours ran fine. Without it, whether a broken filter
|
|
293
|
-
* is visible at all depends on how many unrelated global workflows happen to
|
|
294
|
-
* share a workflow repo — a per-candidate budget breach in a group of one
|
|
295
|
-
* produces a check, and the identical fault in a group of two produces
|
|
296
|
-
* nothing.
|
|
220
|
+
* True when the round completed but left only {@link workflowNames}
|
|
221
|
+
* undecided. Kept distinct from a total failure so a broken filter surfaces
|
|
222
|
+
* whether or not other global workflows share its workflow repo.
|
|
297
223
|
*/
|
|
298
224
|
partial?: boolean;
|
|
299
225
|
}
|
|
@@ -308,29 +234,17 @@ export interface GlobalEvalRoundsOutcome {
|
|
|
308
234
|
* Run every eval round the candidate set needs and return one verdict per
|
|
309
235
|
* candidate, plus one failure record per round that produced none.
|
|
310
236
|
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
* The failures are returned rather than recorded here: this module owns the
|
|
317
|
-
* partition, the grouping, and the dispatch-and-await, and has neither a
|
|
318
|
-
* database handle nor the inbound provider bundle a commit check must be posted
|
|
319
|
-
* through.
|
|
237
|
+
* Groups run sequentially (several workflow repos per push is uncommon). A
|
|
238
|
+
* failed group marks only its own candidates indeterminate. Failures are
|
|
239
|
+
* returned, not recorded: this module has no database handle nor the inbound
|
|
240
|
+
* bundle a commit check posts through.
|
|
320
241
|
*/
|
|
321
242
|
export declare function runGlobalEvalRounds(args: GlobalEvalRoundArgs): Promise<GlobalEvalRoundsOutcome>;
|
|
322
243
|
/**
|
|
323
|
-
* Meter candidates a round never got to decide on
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
* suppress EVERY global workflow for that delivery. That is this subsystem's
|
|
328
|
-
* most severe outcome, and without this call it appeared in none of its
|
|
329
|
-
* metrics: one `logger.warn` was the whole record.
|
|
330
|
-
*
|
|
331
|
-
* Counted as `indeterminate` because that is exactly what happened — nothing
|
|
332
|
-
* evaluated the workflows — which also keeps `candidates` equal to the sum of
|
|
333
|
-
* the verdicts on every path.
|
|
244
|
+
* Meter candidates a round never got to decide on: the caller's fail-closed
|
|
245
|
+
* paths (no pending-eval tracker) return before {@link runGlobalEvalRounds} and
|
|
246
|
+
* suppress EVERY global workflow for the delivery. Counted `indeterminate`,
|
|
247
|
+
* which keeps `candidates` equal to the sum of the verdicts on every path.
|
|
334
248
|
*/
|
|
335
249
|
export declare function recordUnrunCandidates(count: number): void;
|
|
336
250
|
//# sourceMappingURL=global-eval-round.d.ts.map
|
|
@@ -10,9 +10,8 @@ export interface HoldGlobalEvalRoundsArgs {
|
|
|
10
10
|
info: WebhookInfo;
|
|
11
11
|
deps: ProcessingDeps;
|
|
12
12
|
event: SimulatedEvent;
|
|
13
|
-
/** The candidates that needed the round. */
|
|
14
13
|
candidates: readonly GlobalEvalCandidate[];
|
|
15
|
-
/** The source repository
|
|
14
|
+
/** The source repository. */
|
|
16
15
|
repoIdentifier: string;
|
|
17
16
|
/** The event's commit SHA. */
|
|
18
17
|
ref: string;
|
|
@@ -30,12 +29,11 @@ export interface HoldGlobalEvalRoundsArgs {
|
|
|
30
29
|
}>;
|
|
31
30
|
}
|
|
32
31
|
/**
|
|
33
|
-
* Hold the
|
|
34
|
-
*
|
|
32
|
+
* Hold the round of every workflow repository among `candidates`; returns the
|
|
33
|
+
* held run ids in workflow-repository order.
|
|
35
34
|
*
|
|
36
|
-
* One run per workflow repository, not per
|
|
37
|
-
*
|
|
38
|
-
* dispatch its workflows twice.
|
|
35
|
+
* One run per workflow repository, not per SHA: the release re-evaluates the
|
|
36
|
+
* whole repository, so two rows would dispatch its workflows twice.
|
|
39
37
|
*/
|
|
40
38
|
export declare function holdGlobalEvalRounds(args: HoldGlobalEvalRoundsArgs): Promise<string[]>;
|
|
41
39
|
//# sourceMappingURL=global-round-hold.d.ts.map
|
|
@@ -88,11 +88,9 @@ interface LogFields {
|
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Resolve the merged variables and secrets of `entries`, then the container
|
|
91
|
-
* registry credentials, writing each onto `into` as soon as it resolves
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* Writing progressively keeps what already resolved when a later step throws,
|
|
95
|
-
* which is what the dispatch path's catch relies on.
|
|
91
|
+
* registry credentials, writing each onto `into` as soon as it resolves, so the
|
|
92
|
+
* dispatch path's catch keeps what resolved before a later step throws. A
|
|
93
|
+
* context with no scope binding is named in a warning log line.
|
|
96
94
|
*/
|
|
97
95
|
export declare function resolveContextJobData(args: {
|
|
98
96
|
deps: ContextDataDeps;
|
|
@@ -127,9 +125,8 @@ export declare function withoutContextData(jobInput: QueuedJobInput, runWideFlat
|
|
|
127
125
|
* The job's own contexts are not re-gated: it passed their rules, or its hold
|
|
128
126
|
* was released. Throws when the record is malformed, the stores are
|
|
129
127
|
* unavailable, a bound context is gone or replaced, or a lookup fails, so the
|
|
130
|
-
* caller fails the job rather than dispatching it without
|
|
131
|
-
*
|
|
132
|
-
* credentials, as dispatch does.
|
|
128
|
+
* caller fails the job rather than dispatching it without its bound secrets.
|
|
129
|
+
* A registry-auth refusal only drops registry credentials, as dispatch does.
|
|
133
130
|
*/
|
|
134
131
|
export declare function resolveReleasedJobInput(args: {
|
|
135
132
|
jobInput: QueuedJobInput;
|
|
@@ -14,18 +14,15 @@ export interface HeldRoundRow {
|
|
|
14
14
|
export declare function heldRoundWorkflowsOf(triggerDecision: string | null): string[] | undefined;
|
|
15
15
|
/**
|
|
16
16
|
* The workflow repository's organization-wide registrations for the held
|
|
17
|
-
* event, as they were at the held commit
|
|
17
|
+
* event, as they were at the held commit: every live registration of a covered
|
|
18
|
+
* workflow, one per source, as the pass the round was held from evaluates them.
|
|
18
19
|
*
|
|
19
|
-
* Throws, naming the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* with that reason and dispatches nothing — never a partial round.
|
|
26
|
-
*
|
|
27
|
-
* Every live registration of a covered workflow is returned, one per source
|
|
28
|
-
* that registers it, as the pass the round was held from evaluates them.
|
|
20
|
+
* Throws, naming the repository and the workflows, when the release cannot run
|
|
21
|
+
* what the approver approved: the repository registers nothing any more, its
|
|
22
|
+
* lock file at the held commit cannot be read, a covered workflow has no live,
|
|
23
|
+
* enabled registration still subscribed to the event, or the held commit's
|
|
24
|
+
* lock file does not define it as organization-wide for the event. The release
|
|
25
|
+
* then fails the held run and dispatches nothing — never a partial round.
|
|
29
26
|
*
|
|
30
27
|
* The covered set is the one the hold recorded. A row held before that record
|
|
31
28
|
* existed falls back to the held commit's round-shaped workflows, which cannot
|
|
@@ -2,17 +2,14 @@
|
|
|
2
2
|
* The workflow install gate: the protection rules of every context a
|
|
3
3
|
* workflow's `registries:` / `installEnv:` references name.
|
|
4
4
|
*
|
|
5
|
-
* Every context is evaluated before
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* context must approve, the longest wait timer applies. That hold records which
|
|
11
|
-
* contexts held — its approval covers them — and which were admitted.
|
|
5
|
+
* Every context is evaluated before deciding, as on the job-level gate: any
|
|
6
|
+
* reject rejects. Otherwise any hold raises ONE hold aggregating every context's
|
|
7
|
+
* rules, most restrictive wins (`aggregateProtectionParams`: every held
|
|
8
|
+
* context's reviewers approve, the longest wait timer applies), and records
|
|
9
|
+
* which contexts held (covered by its approval) and which were admitted.
|
|
12
10
|
*
|
|
13
11
|
* The release gates again every context the approval did not cover, and
|
|
14
|
-
* refuses when
|
|
15
|
-
* the hold was raised against.
|
|
12
|
+
* refuses when a recorded context now matches a different row.
|
|
16
13
|
*/
|
|
17
14
|
import { z } from 'zod';
|
|
18
15
|
import type { ProtectionGateResult } from '@kici-dev/engine';
|
|
@@ -26,10 +23,7 @@ export declare const InstallGateContextSchema: z.ZodObject<{
|
|
|
26
23
|
id: z.ZodString;
|
|
27
24
|
}, z.core.$strip>;
|
|
28
25
|
export type InstallGateContext = z.infer<typeof InstallGateContextSchema>;
|
|
29
|
-
/**
|
|
30
|
-
* What an install-gate hold records about its contexts. Stored with the held
|
|
31
|
-
* dispatch, so the release knows which contexts the approval covers.
|
|
32
|
-
*/
|
|
26
|
+
/** Stored with the held dispatch, so the release knows which contexts the approval covers. */
|
|
33
27
|
export declare const InstallGateRecordSchema: z.ZodObject<{
|
|
34
28
|
held: z.ZodArray<z.ZodObject<{
|
|
35
29
|
name: z.ZodString;
|
|
@@ -67,24 +61,20 @@ interface GateInputs {
|
|
|
67
61
|
protectionContext: JobDispatchContext;
|
|
68
62
|
}
|
|
69
63
|
/**
|
|
70
|
-
* Evaluate every referenced context's rules and decide the install gate.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* of every context, so its requirement is at least as strict as each held
|
|
74
|
-
* context's own, and its record lists which contexts held and which passed.
|
|
64
|
+
* Evaluate every referenced context's rules and decide the install gate. Reject
|
|
65
|
+
* wins over hold; a hold's aggregated requirement is at least as strict as each
|
|
66
|
+
* held context's own.
|
|
75
67
|
*/
|
|
76
68
|
export declare function gateInstall(inputs: GateInputs): Promise<InstallGateOutcome>;
|
|
77
69
|
/**
|
|
78
70
|
* Decide the install gate for a dispatch resumed from a released hold.
|
|
79
71
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* the hold recorded must still match the row it matched then.
|
|
72
|
+
* Held contexts are covered by the approval and skip the gate: their reviewer
|
|
73
|
+
* and wait-timer rules are stateless and would hold the approved run again.
|
|
74
|
+
* Every other context is gated, and any verdict but pass rejects. A recorded
|
|
75
|
+
* context must still match its recorded row.
|
|
85
76
|
*
|
|
86
|
-
* `releasedHold`
|
|
87
|
-
* malformed record covers no context, and every context is gated again.
|
|
77
|
+
* `releasedHold` is stored JSON: absent or malformed, it covers no context.
|
|
88
78
|
*/
|
|
89
79
|
export declare function gateReleasedInstall(inputs: GateInputs & {
|
|
90
80
|
releasedHold: unknown;
|
|
@@ -7,31 +7,26 @@
|
|
|
7
7
|
* `<context>:<secret-name>` syntax. The resolver:
|
|
8
8
|
*
|
|
9
9
|
* 1. Parses every qualified ref and groups by context name.
|
|
10
|
-
* 2. Runs the install gate (`install-gate.ts`)
|
|
11
|
-
* protection rules
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* hands back that record: the contexts that held are covered by the
|
|
19
|
-
* approval, every other context is gated again, and a context that now
|
|
20
|
-
* matches a different row is refused.
|
|
10
|
+
* 2. Runs the install gate (`install-gate.ts`) over every referenced
|
|
11
|
+
* context's protection rules. Any `reject` fails the whole workflow
|
|
12
|
+
* dispatch; otherwise any hold returns ONE aggregated `hold` decision,
|
|
13
|
+
* recording which contexts held and which passed, so the caller can park a
|
|
14
|
+
* workflow-scoped held run. On resume the caller sets
|
|
15
|
+
* `skipProtectionGate` and hands back that record: held contexts are
|
|
16
|
+
* covered by the approval, every other context is gated again, and a
|
|
17
|
+
* context that now matches a different row is refused.
|
|
21
18
|
* 3. Resolves secrets per context via `secretResolver.resolveForContext`
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* 4. Validates each registry URL scheme: HTTPS always
|
|
25
|
-
*
|
|
26
|
-
*
|
|
19
|
+
* (which writes its own audit lines) against the row step 2 gated, so a
|
|
20
|
+
* glob-pattern context delivers its own bindings.
|
|
21
|
+
* 4. Validates each registry URL scheme: HTTPS always; `http://` only for
|
|
22
|
+
* loopback / `*.local` hosts or when
|
|
23
|
+
* `org_settings.allow_http_npm_registries=true`.
|
|
27
24
|
* 5. Strips the resolved auth entirely when the contributor-trust tier is
|
|
28
|
-
* not `trusted
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* install fails naturally because the deps are unreachable).
|
|
25
|
+
* not `trusted`: defense in depth, so fork PRs never see registry tokens
|
|
26
|
+
* even through a misconfigured context; the install then fails on
|
|
27
|
+
* unreachable deps.
|
|
32
28
|
*
|
|
33
|
-
* Pure helper: no imports of the dispatch giant.
|
|
34
|
-
* `install-secrets-resolver.test.ts`.
|
|
29
|
+
* Pure helper: no imports of the dispatch giant.
|
|
35
30
|
*/
|
|
36
31
|
import type { ApproverClause, LockRegistry } from '@kici-dev/engine';
|
|
37
32
|
import type { TrustResolution } from '../security/trust-resolver.js';
|
|
@@ -56,16 +51,14 @@ export interface ResolveInstallSecretsArgs {
|
|
|
56
51
|
secretResolver: SecretResolverApi | undefined;
|
|
57
52
|
protectionContext: JobDispatchContext;
|
|
58
53
|
/**
|
|
59
|
-
* Resume path
|
|
60
|
-
*
|
|
61
|
-
* untrusted-contributor strip still runs first.
|
|
54
|
+
* Resume path past a released install-gate hold: the gate runs only for
|
|
55
|
+
* contexts `releasedHold` does not cover. The untrusted strip still runs first.
|
|
62
56
|
*/
|
|
63
57
|
skipProtectionGate?: boolean;
|
|
64
58
|
/**
|
|
65
|
-
* Resume path:
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* malformed, it covers no context.
|
|
59
|
+
* Resume path: the released hold's `record`. Its held contexts are covered by
|
|
60
|
+
* the approval; every recorded context must still match the same row. Absent
|
|
61
|
+
* or malformed stored JSON covers no context.
|
|
69
62
|
*/
|
|
70
63
|
releasedHold?: InstallGateRecord;
|
|
71
64
|
}
|
|
@@ -112,11 +105,8 @@ export declare function validateRegistryUrlScheme(url: string, allowHttp: boolea
|
|
|
112
105
|
reason: string;
|
|
113
106
|
};
|
|
114
107
|
/**
|
|
115
|
-
* The held-run `hold_type
|
|
116
|
-
*
|
|
117
|
-
* gate share one vocabulary, so nothing is translated here.
|
|
118
|
-
*
|
|
119
|
-
* Exported for tests.
|
|
108
|
+
* The held-run `hold_type`: the gate's own `holdType`, else the `HoldType` its
|
|
109
|
+
* action implies. Column and gate share one vocabulary. Exported for tests.
|
|
120
110
|
*/
|
|
121
111
|
export declare function resolveHoldType(action: 'hold' | 'wait' | 'queue', raw: string | undefined): string;
|
|
122
112
|
export declare function resolveInstallSecrets(args: ResolveInstallSecretsArgs): Promise<ResolveInstallSecretsResult>;
|