@kici-dev/orchestrator 0.1.26 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/__test-helpers__/mock-db.d.ts +2 -0
  2. package/dist/agent/dispatcher.d.ts +52 -2
  3. package/dist/agent/host-roster-reaper.d.ts +1 -2
  4. package/dist/agent/host-roster.d.ts +34 -0
  5. package/dist/agent/ownership-refusal.d.ts +12 -0
  6. package/dist/agent/ownership-tracker.d.ts +64 -16
  7. package/dist/agent/token-store.d.ts +13 -0
  8. package/dist/agent-packaging/availability.d.ts +27 -0
  9. package/dist/agent-packaging/build-package.d.ts +16 -0
  10. package/dist/agent-packaging/download.d.ts +30 -0
  11. package/dist/agent-packaging/index.d.ts +9 -0
  12. package/dist/agent-packaging/install-closure.d.ts +30 -0
  13. package/dist/agent-packaging/node-binary.d.ts +26 -0
  14. package/dist/agent-packaging/refresh.d.ts +50 -0
  15. package/dist/agent-packaging/store.d.ts +15 -0
  16. package/dist/agent-packaging/upload.d.ts +24 -0
  17. package/dist/app-on-error.d.ts +29 -0
  18. package/dist/app.d.ts +69 -8
  19. package/dist/approvals/apply-decision.d.ts +1 -1
  20. package/dist/approvals/step-approval-bridge.d.ts +1 -1
  21. package/dist/artifacts/artifact-store.d.ts +233 -0
  22. package/dist/artifacts/failure-messages.d.ts +46 -0
  23. package/dist/audit/access-log.d.ts +18 -1
  24. package/dist/cache/dep-cache.d.ts +15 -0
  25. package/dist/cache/pending-inits.d.ts +4 -4
  26. package/dist/cache/user-cache.d.ts +37 -0
  27. package/dist/cancel/cancel-run.d.ts +10 -3
  28. package/dist/cancel/dashboard-cancel-handler.d.ts +19 -0
  29. package/dist/cli/api-client.d.ts +51 -5
  30. package/dist/cli/commands/agent-package.d.ts +34 -0
  31. package/dist/cli/commands/check-run.d.ts +26 -0
  32. package/dist/cli/commands/cluster-settings.d.ts +55 -0
  33. package/dist/cli/commands/context.d.ts +25 -0
  34. package/dist/cli/commands/dashboard-encryption-key.d.ts +3 -0
  35. package/dist/cli/commands/db-backup.d.ts +71 -0
  36. package/dist/cli/commands/debug-bundle.d.ts +1 -1
  37. package/dist/cli/commands/orchestrator-service/drain.d.ts +31 -0
  38. package/dist/cli/commands/orchestrator-service/index.d.ts +7 -4
  39. package/dist/cli/commands/orchestrator-service/install-env.d.ts +58 -0
  40. package/dist/cli/commands/secret.d.ts +45 -1
  41. package/dist/cli/commands/shared/admin-cli-access-log.d.ts +46 -0
  42. package/dist/cli/commands/shared/versioned-upgrade.d.ts +65 -2
  43. package/dist/cli/commands/signing-key.d.ts +3 -0
  44. package/dist/cli/commands/source.d.ts +12 -0
  45. package/dist/cli/commands/token.d.ts +9 -0
  46. package/dist/cli/commands/trust-policy.d.ts +48 -0
  47. package/dist/cli/commands/variable.d.ts +6 -6
  48. package/dist/cli/join.d.ts +1 -1
  49. package/dist/cli/service/index.d.ts +2 -2
  50. package/dist/cli/service/instance/manifest.d.ts +17 -0
  51. package/dist/cli/service/instance/resolve.d.ts +11 -0
  52. package/dist/cli/service/windows.d.ts +6 -0
  53. package/dist/cli/wizard/orchestrator-wizard.d.ts +39 -11
  54. package/dist/cli.js +10263 -3667
  55. package/dist/cluster/cluster-settings-reader.d.ts +78 -0
  56. package/dist/cluster/coordinator.d.ts +81 -9
  57. package/dist/cluster/join-client.d.ts +1 -1
  58. package/dist/cluster/leader-gated-scheduler.d.ts +50 -0
  59. package/dist/cluster/orphan-recovery.d.ts +14 -0
  60. package/dist/cluster/peer-client.d.ts +12 -2
  61. package/dist/cluster/peer-handler.d.ts +15 -4
  62. package/dist/cluster/peer-registry.d.ts +12 -0
  63. package/dist/cluster/verified-issuer-poller.d.ts +11 -0
  64. package/dist/cluster/verified-issuer.d.ts +63 -0
  65. package/dist/cold-store/tables/access-log.d.ts +1 -1
  66. package/dist/cold-store/tables/event-log.d.ts +1 -1
  67. package/dist/cold-store/tables/execution-jobs.d.ts +1 -1
  68. package/dist/cold-store/tables/execution-runs.d.ts +1 -1
  69. package/dist/cold-store/tables/execution-steps.d.ts +1 -1
  70. package/dist/cold-store/tables/secret-audit-log.d.ts +1 -1
  71. package/dist/config/loader.d.ts +1 -1
  72. package/dist/config/resolver.d.ts +2 -1
  73. package/dist/config/schema.d.ts +8 -6
  74. package/dist/config/types.d.ts +3 -2
  75. package/dist/config.d.ts +372 -46
  76. package/dist/contexts/binding-store.d.ts +36 -0
  77. package/dist/contexts/context-store.d.ts +100 -0
  78. package/dist/contexts/glob-specificity.d.ts +30 -0
  79. package/dist/{environments → contexts}/held-runs.d.ts +64 -32
  80. package/dist/{environments → contexts}/index.d.ts +1 -1
  81. package/dist/contexts/protection/aggregate.d.ts +43 -0
  82. package/dist/contexts/protection/branch-gate.d.ts +5 -0
  83. package/dist/contexts/protection/concurrency-gate.d.ts +4 -0
  84. package/dist/{environments → contexts}/protection/pipeline.d.ts +3 -3
  85. package/dist/contexts/protection/reviewer-gate.d.ts +4 -0
  86. package/dist/{environments → contexts}/protection/satisfiability.d.ts +22 -22
  87. package/dist/contexts/protection/trust-gate.d.ts +4 -0
  88. package/dist/contexts/protection/wait-timer-gate.d.ts +4 -0
  89. package/dist/contexts/variable-store.d.ts +39 -0
  90. package/dist/cron/cron-scheduler.d.ts +24 -4
  91. package/dist/cron/cron-store.d.ts +21 -7
  92. package/dist/dashboard/attestation-filters.d.ts +94 -74
  93. package/dist/dashboard/handler.d.ts +63 -3
  94. package/dist/db/migration-test-harness.d.ts +41 -0
  95. package/dist/db/migrations/067_environments_to_contexts.d.ts +36 -0
  96. package/dist/db/migrations/068_request_idempotency.d.ts +17 -0
  97. package/dist/db/migrations/069_reroute_tunables.d.ts +21 -0
  98. package/dist/db/migrations/070_execution_runs_failure_class.d.ts +4 -0
  99. package/dist/db/migrations/071_batch_accumulation.d.ts +26 -0
  100. package/dist/db/migrations/072_dispatch_queue_run_id_index.d.ts +15 -0
  101. package/dist/db/migrations/073_org_settings_ingest_concurrency.d.ts +13 -0
  102. package/dist/db/migrations/074_normalize_zero_concurrency_limit.d.ts +13 -0
  103. package/dist/db/migrations/075_ingest_overflow_buffer.d.ts +16 -0
  104. package/dist/db/migrations/076_artifacts.d.ts +19 -0
  105. package/dist/db/migrations/077_backup_runs.d.ts +13 -0
  106. package/dist/db/migrations/078_org_settings_backup_staleness.d.ts +12 -0
  107. package/dist/db/migrations/079_org_settings_scaler_spawn_timeout.d.ts +14 -0
  108. package/dist/db/migrations/080_cluster_settings.d.ts +17 -0
  109. package/dist/db/migrations/081_org_settings_queue_timeout.d.ts +19 -0
  110. package/dist/db/migrations/082_host_s3_reachable.d.ts +16 -0
  111. package/dist/db/migrations/083_org_settings_artifact_caps.d.ts +18 -0
  112. package/dist/db/migrations/084_orchestrator_signing_keys.d.ts +20 -0
  113. package/dist/db/migrations/085_cluster_settings_reroute_flap_grace_ms.d.ts +12 -0
  114. package/dist/db/migrations/086_cluster_settings_max_fanout_hosts.d.ts +12 -0
  115. package/dist/db/migrations/087_cluster_settings_event_router_rate_limit.d.ts +12 -0
  116. package/dist/db/migrations/088_cluster_settings_cache_max_tarball_bytes.d.ts +12 -0
  117. package/dist/db/migrations/089_cluster_settings_cache_ttl_days.d.ts +12 -0
  118. package/dist/db/migrations/090_cluster_settings_concurrency_wait_timeout_ms.d.ts +12 -0
  119. package/dist/db/migrations/091_cluster_settings_agent_token_ttl_ms.d.ts +12 -0
  120. package/dist/db/migrations/092_cluster_settings_version.d.ts +16 -0
  121. package/dist/db/migrations/093_org_settings_sandbox_allowlist.d.ts +4 -0
  122. package/dist/db/migrations/094_dashboard_encryption_keys.d.ts +21 -0
  123. package/dist/db/migrations/095_dashboard_write_policy_tristate.d.ts +20 -0
  124. package/dist/db/migrations/096_multi_schedule_cron_last_fired.d.ts +4 -0
  125. package/dist/db/migrations/097_execution_runs_pr_number.d.ts +4 -0
  126. package/dist/db/migrations/098_execution_runs_customer_id.d.ts +4 -0
  127. package/dist/db/migrations/099_cluster_settings_dashboard_verified_issuer.d.ts +21 -0
  128. package/dist/db/migrations/100_held_runs_hold_type_vocabulary.d.ts +31 -0
  129. package/dist/db/migrations/101_contexts_hold_expiry_drop_default.d.ts +31 -0
  130. package/dist/db/migrations/102_dispatch_queue_agent_id.d.ts +20 -0
  131. package/dist/db/migrations/103_cluster_settings_ownership_db_check_timeout_ms.d.ts +20 -0
  132. package/dist/db/migrations/104_check_run_terminal_sent.d.ts +22 -0
  133. package/dist/db/migrations/105_org_trust_policy.d.ts +19 -0
  134. package/dist/db/migrations/106_cluster_settings_check_run_tracking_ttl_days.d.ts +18 -0
  135. package/dist/db/migrations/107_check_run_tracking_updated_at_index.d.ts +23 -0
  136. package/dist/db/repos/dashboard-encryption-keys-repo.d.ts +48 -0
  137. package/dist/db/repos/signing-keys-repo.d.ts +34 -0
  138. package/dist/db/types.d.ts +499 -66
  139. package/dist/deployment/deployment-identity.d.ts +87 -2
  140. package/dist/diagnostics/checks/backup.d.ts +18 -0
  141. package/dist/diagnostics/checks/index.d.ts +2 -1
  142. package/dist/diagnostics/fleet-collector.d.ts +1 -1
  143. package/dist/drain/drain-controller.d.ts +52 -0
  144. package/dist/events/batch-accumulator.d.ts +63 -0
  145. package/dist/events/circuit-breaker.d.ts +9 -3
  146. package/dist/events/event-emitter.d.ts +31 -0
  147. package/dist/events/event-retry-scanner.d.ts +12 -2
  148. package/dist/events/event-router.d.ts +29 -0
  149. package/dist/firecracker/host-network.d.ts +2 -0
  150. package/dist/firecracker/net-interfaces.d.ts +14 -0
  151. package/dist/github-app-name-refresher/github-app-name-refresher.d.ts +19 -9
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.js +625 -22
  154. package/dist/lockfile-cache.d.ts +4 -0
  155. package/dist/lockfile-validate.d.ts +16 -9
  156. package/dist/metrics/prometheus.d.ts +114 -15
  157. package/dist/oidc/aws-kms-signer.d.ts +37 -0
  158. package/dist/oidc/command-signer.d.ts +23 -0
  159. package/dist/oidc/db-signer.d.ts +48 -0
  160. package/dist/oidc/id-token-claims.d.ts +76 -0
  161. package/dist/oidc/jwt.d.ts +18 -0
  162. package/dist/oidc/local-dev-signer.d.ts +31 -0
  163. package/dist/oidc/local-mint.d.ts +77 -0
  164. package/dist/oidc/oidc-mint-registration.d.ts +65 -0
  165. package/dist/oidc/orchestrator-mint.d.ts +97 -0
  166. package/dist/oidc/orchestrator-signer-factory.d.ts +33 -0
  167. package/dist/oidc/reconcile-signing-key.d.ts +21 -0
  168. package/dist/oidc/signer.d.ts +25 -0
  169. package/dist/oidc/signing-key-status.d.ts +23 -0
  170. package/dist/orchestrator-core.d.ts +42 -2
  171. package/dist/pipeline/decorating-secret-resolver.d.ts +5 -4
  172. package/dist/pipeline/dispatch-matched-workflow.d.ts +44 -3
  173. package/dist/pipeline/inline-eval.d.ts +2 -2
  174. package/dist/pipeline/install-secrets-resolver.d.ts +25 -14
  175. package/dist/pipeline/{job-environments.d.ts → job-contexts.d.ts} +23 -23
  176. package/dist/pipeline/manual-schedule.d.ts +28 -14
  177. package/dist/pipeline/pending-workflow-context.d.ts +1 -1
  178. package/dist/pipeline/process-webhook.d.ts +57 -2
  179. package/dist/pipeline/processor.d.ts +49 -13
  180. package/dist/pipeline/request-idempotency.d.ts +28 -0
  181. package/dist/pipeline/rerun.d.ts +20 -13
  182. package/dist/pipeline/resolve-sandbox-grant.d.ts +28 -0
  183. package/dist/pipeline/resume-workflow.d.ts +1 -1
  184. package/dist/pipeline/route-or-dispatch-jobs.d.ts +71 -0
  185. package/dist/pipeline/sandbox-allowlist-reader.d.ts +33 -0
  186. package/dist/pipeline/test-pipeline.d.ts +2 -2
  187. package/dist/policy/dashboard-write-policy.d.ts +9 -4
  188. package/dist/provenance/backfill-run.d.ts +1 -0
  189. package/dist/provenance/trust-root.d.ts +20 -0
  190. package/dist/provider-registry.d.ts +8 -0
  191. package/dist/providers/generic/normalizer.d.ts +1 -1
  192. package/dist/providers/github/auth.d.ts +1 -1
  193. package/dist/providers/github/changed-files.d.ts +14 -6
  194. package/dist/providers/github/check-status-poster.d.ts +19 -3
  195. package/dist/providers/github/contributor-resolver.d.ts +1 -1
  196. package/dist/providers/github/lock-file.d.ts +1 -1
  197. package/dist/providers/github/normalizer.d.ts +1 -1
  198. package/dist/providers/github/repo-url.d.ts +1 -1
  199. package/dist/providers/local/index.d.ts +1 -0
  200. package/dist/providers/local/local-source-config.d.ts +1 -0
  201. package/dist/providers/local/lock-file-fetcher.d.ts +1 -1
  202. package/dist/providers/local/normalizer.d.ts +1 -1
  203. package/dist/providers/local/repo-url-builder.d.ts +1 -1
  204. package/dist/providers/universal-git/changed-files.d.ts +8 -7
  205. package/dist/providers/universal-git/clone-token.d.ts +1 -1
  206. package/dist/providers/universal-git/config.d.ts +4 -4
  207. package/dist/providers/universal-git/index.d.ts +5 -1
  208. package/dist/providers/universal-git/lock-file.d.ts +6 -1
  209. package/dist/providers/universal-git/normalizer.d.ts +1 -1
  210. package/dist/providers/universal-git/repo-url.d.ts +1 -1
  211. package/dist/queue/cleanup.d.ts +69 -8
  212. package/dist/queue/job-queue.d.ts +94 -14
  213. package/dist/queue/scheduled-job.d.ts +2 -2
  214. package/dist/registration/registration-index.d.ts +1 -1
  215. package/dist/reporting/agent-failure-category.d.ts +4 -1
  216. package/dist/reporting/check-run-reporter.d.ts +34 -14
  217. package/dist/reporting/check-run-tracking-store.d.ts +70 -8
  218. package/dist/reporting/execution-tracker.d.ts +173 -17
  219. package/dist/reporting/fs-log-storage.d.ts +31 -2
  220. package/dist/reporting/job-check-run-completion.d.ts +50 -0
  221. package/dist/reporting/log-chunk-sink.d.ts +47 -0
  222. package/dist/reporting/log-retention.d.ts +16 -0
  223. package/dist/reporting/log-storage.d.ts +64 -4
  224. package/dist/reporting/log-writer.d.ts +22 -7
  225. package/dist/reporting/peer-log-normalize.d.ts +14 -0
  226. package/dist/reporting/run-aggregator.d.ts +36 -36
  227. package/dist/reporting/s3-log-storage.d.ts +102 -8
  228. package/dist/routes/admin-auth.d.ts +90 -0
  229. package/dist/routes/admin-cluster-settings.d.ts +31 -0
  230. package/dist/routes/admin-contexts.d.ts +47 -0
  231. package/dist/routes/admin-events.d.ts +3 -0
  232. package/dist/routes/admin-orchestrator-drain.d.ts +35 -0
  233. package/dist/routes/admin-registrations.d.ts +2 -2
  234. package/dist/routes/admin-runs.d.ts +9 -0
  235. package/dist/routes/admin-sources.d.ts +7 -0
  236. package/dist/routes/admin-trust-policy.d.ts +49 -0
  237. package/dist/routes/admin.d.ts +15 -1
  238. package/dist/routes/github-webhook.d.ts +9 -3
  239. package/dist/routes/provenance-oidc.d.ts +38 -0
  240. package/dist/routes/verify-attestation.d.ts +21 -0
  241. package/dist/scaler/bare-metal-backend.d.ts +9 -2
  242. package/dist/scaler/config.d.ts +25 -4
  243. package/dist/scaler/container-backend.d.ts +9 -1
  244. package/dist/scaler/firecracker-backend.d.ts +29 -2
  245. package/dist/scaler/index.d.ts +1 -1
  246. package/dist/scaler/manager.d.ts +166 -8
  247. package/dist/scaler/pending-scale-sweeper.d.ts +35 -0
  248. package/dist/scaler/types.d.ts +75 -6
  249. package/dist/secrets/backend-registry.d.ts +32 -1
  250. package/dist/secrets/context-secret-resolver.d.ts +30 -0
  251. package/dist/secrets/dashboard-encryption-key.d.ts +48 -0
  252. package/dist/secrets/ephemeral-keys.d.ts +16 -0
  253. package/dist/secrets/index.d.ts +1 -1
  254. package/dist/secrets/pg-secret-store.d.ts +13 -3
  255. package/dist/secrets/rbac.d.ts +5 -1
  256. package/dist/secrets/routing-key-scope.d.ts +6 -0
  257. package/dist/secrets/scope-routing.d.ts +126 -0
  258. package/dist/secrets/secret-resolver.d.ts +19 -32
  259. package/dist/secrets/token-manager.d.ts +5 -1
  260. package/dist/security/comment-handler.d.ts +1 -1
  261. package/dist/security/contributor-cache.d.ts +9 -1
  262. package/dist/security/trust-policy-gate.d.ts +117 -0
  263. package/dist/security/trust-policy-store.d.ts +78 -0
  264. package/dist/server.js +44012 -32721
  265. package/dist/sources/source-manager.d.ts +24 -0
  266. package/dist/stale-detector/stale-run-detector.d.ts +8 -1
  267. package/dist/standalone.js +44106 -33690
  268. package/dist/storage/blob-routes.d.ts +16 -0
  269. package/dist/storage/filesystem.d.ts +17 -0
  270. package/dist/storage/key-discriminator.d.ts +20 -0
  271. package/dist/storage/s3.d.ts +2 -0
  272. package/dist/storage/types.d.ts +16 -0
  273. package/dist/webhook/dedup.d.ts +9 -1
  274. package/dist/webhook/event-log.d.ts +13 -2
  275. package/dist/webhook/generic-sources-listener.d.ts +4 -0
  276. package/dist/webhook/ingest-admission.d.ts +140 -0
  277. package/dist/webhook/ingest-overflow-buffer.d.ts +27 -0
  278. package/dist/webhook/ingest-overflow-replayer.d.ts +49 -0
  279. package/dist/webhook/ingest-overflow-types.d.ts +73 -0
  280. package/dist/webhook/loop-lag-source.d.ts +40 -0
  281. package/dist/webhook/observed-relay-guard.d.ts +40 -0
  282. package/dist/webhook/org-ingest-cap-reader.d.ts +24 -0
  283. package/dist/webhook/register-source-bundle.d.ts +3 -0
  284. package/dist/webhook/relay-reinject.d.ts +43 -0
  285. package/dist/worker/in-memory-job-queue.d.ts +8 -3
  286. package/dist/worker-core.d.ts +10 -0
  287. package/dist/ws/agent-api-registry.d.ts +20 -0
  288. package/dist/ws/agent-handler.d.ts +63 -7
  289. package/dist/ws/bringup-api.d.ts +99 -0
  290. package/dist/ws/{dashboard-env-handler.d.ts → dashboard-context-handler.d.ts} +43 -25
  291. package/dist/ws/dashboard-run-state-handler.d.ts +31 -0
  292. package/dist/ws/failure-messages.d.ts +29 -0
  293. package/dist/ws/oidc-token-relay.d.ts +15 -0
  294. package/dist/ws/ownership-gate.d.ts +22 -0
  295. package/dist/ws/platform-client.d.ts +96 -1
  296. package/dist/ws/replay-chunker.d.ts +37 -0
  297. package/installer-image-digests.json +3 -3
  298. package/package.json +22 -21
  299. package/sbom.spdx.json +1245 -1793
  300. package/dist/cli/commands/environment.d.ts +0 -25
  301. package/dist/environments/binding-store.d.ts +0 -36
  302. package/dist/environments/environment-store.d.ts +0 -87
  303. package/dist/environments/protection/aggregate.d.ts +0 -43
  304. package/dist/environments/protection/branch-gate.d.ts +0 -5
  305. package/dist/environments/protection/concurrency-gate.d.ts +0 -7
  306. package/dist/environments/protection/reviewer-gate.d.ts +0 -7
  307. package/dist/environments/protection/trust-gate.d.ts +0 -7
  308. package/dist/environments/protection/wait-timer-gate.d.ts +0 -7
  309. package/dist/environments/variable-store.d.ts +0 -39
  310. package/dist/routes/admin-environments.d.ts +0 -47
@@ -1,9 +1,94 @@
1
1
  import { type DeploymentIdentity } from '@kici-dev/engine';
2
+ /**
3
+ * The pinned `<node> <kici-admin>` invocation for a posix bare-metal unit, or
4
+ * `undefined` when the shim cannot be located.
5
+ *
6
+ * Two candidates are tried in order:
7
+ *
8
+ * 1. `<npm global bin>/kici-admin`, derived from where this module itself
9
+ * lives. This is the correct answer when npm's global prefix differs from
10
+ * the node install prefix — e.g. an operator who set
11
+ * `npm config set prefix ~/.npm-global` while running a system node.
12
+ * 2. `<dirname(execPath)>/kici-admin`, correct for version-manager layouts
13
+ * (mise / nvm / fnm) where the two prefixes coincide.
14
+ *
15
+ * Candidate 1 wins a tie because it is the shim belonging to the install this
16
+ * process is actually running from; a stale shim elsewhere on the system must
17
+ * not be pinned in preference to it.
18
+ *
19
+ * Global installs only, matching `resolveNpmInstallTarget`'s scope: an
20
+ * orchestrator installed locally into a project's own `node_modules` keeps its
21
+ * shim in `node_modules/.bin`, which is never a candidate, so it resolves to
22
+ * `undefined` and gets the bare form.
23
+ *
24
+ * Returning `undefined` is deliberate: the dashboard falls back to a
25
+ * PATH-resolved bare `kici-admin`, which beats naming a path that is not there.
26
+ *
27
+ * Both halves are rendered as POSIX shell words, so the pair survives a path
28
+ * that holds whitespace when the operator pastes it.
29
+ */
30
+ export declare function resolveAdminInvocation(execPath: string, entryPath: string | undefined, fileExists: (p: string) => boolean): string | undefined;
31
+ /**
32
+ * The absolute path of the Windows `kici-admin.cmd` launcher, or `undefined`
33
+ * when it cannot be located.
34
+ *
35
+ * Deliberately NOT built on {@link globalBinDirFrom}: npm lays a Windows global
36
+ * install out as `<prefix>\node_modules\<pkg>` with no `lib` folder, and links
37
+ * the shims directly into `<prefix>` rather than `<prefix>\bin`. The posix
38
+ * helper requires a `lib` segment, so it returns `undefined` for every real
39
+ * Windows install — reusing it would ship a resolver that can never fire.
40
+ *
41
+ * Three candidate directories are tried in order:
42
+ *
43
+ * 1. The npm global prefix implied by this module's own location, split on the
44
+ * FIRST `node_modules` segment (matching the posix helper's convention, so
45
+ * the nested-under-kici-admin install shape resolves too). A prefix holding
46
+ * a `package.json` is REJECTED: that is a local project install, whose shim
47
+ * lives in `node_modules\.bin`, and a same-named launcher sitting in the
48
+ * project root must not be pinned. npm's own global prefix carries no
49
+ * `package.json`, which is what distinguishes the two.
50
+ * 2. The light-package deploy directory, which lays out
51
+ * `<deployDir>\lib\<target>.cjs` beside `<deployDir>\kici-admin.cmd`. Gated
52
+ * on the entry's parent directory actually being named `lib` so an
53
+ * unrelated bundle layout cannot derive a directory and pin whatever
54
+ * happens to sit there.
55
+ * 3. `dirname(execPath)`, for the case where node and the launcher are
56
+ * co-located.
57
+ *
58
+ * Every path is built with `path.win32`, so the derivation is deterministic
59
+ * when this runs on a posix test host rather than depending on the ambient
60
+ * separator.
61
+ *
62
+ * A candidate directory that is not absolute is skipped. The check has to be on
63
+ * the DIRECTORY, not on the joined result: `path.win32.dirname('C:node.exe')`
64
+ * is the drive-relative `'C:'` (meaning "the current directory of drive C:"),
65
+ * and `path.win32.join('C:', 'kici-admin.cmd')` silently yields the ABSOLUTE
66
+ * `'C:\kici-admin.cmd'` — a different location. Testing the join result would
67
+ * therefore pass, having already lost the distinction.
68
+ *
69
+ * The returned path is RAW — never quoted or escaped. cmd.exe runs a
70
+ * double-quoted path in command position while PowerShell only prints it, so
71
+ * the same path must be written two different ways and only the reader knows
72
+ * which shell it is rendering for.
73
+ */
74
+ export declare function resolveWindowsAdminPath(execPath: string, entryPath: string | undefined, fileExists: (p: string) => boolean): string | undefined;
2
75
  /**
3
76
  * Read the orchestrator's deployment shape from the env the installer injects
4
77
  * (`KICI_DEPLOY_MODE` / `KICI_DEPLOY_CONTAINER` / `KICI_DEPLOY_CONTAINER_RUNTIME`).
5
78
  * Hand-run / dev orchestrators carry no `KICI_DEPLOY_*` env and report `unknown`.
6
- * Container fields are kept only for the `compose` mode.
79
+ * Surrounding whitespace is stripped from all three before they are read: the
80
+ * values reach the process through an env file, where a hand edit or a writer
81
+ * that leaves the trailing byte on can attach a space or a newline. The shape
82
+ * is known in that case, so degrading the whole identity to `unknown` — and
83
+ * dropping the pinned invocation with it — would discard an answer we have.
84
+ * Container fields are kept only for the `compose` mode. For posix bare-metal
85
+ * (`systemd` / `launchd`) the identity carries a pinned `<node> <kici-admin>`
86
+ * `adminInvocation` when the shim can be located on disk; for `windows` it
87
+ * instead carries a raw, unquoted `adminPath` naming the `kici-admin.cmd`
88
+ * launcher. Each is omitted when its target cannot be located, so the reader
89
+ * falls back to a PATH-resolved `kici-admin`. The two never coexist: they are
90
+ * different kinds of value (a shell command vs a bare path) because the Windows
91
+ * shells cannot share one quoting.
7
92
  */
8
- export declare function readDeploymentIdentity(env?: NodeJS.ProcessEnv): DeploymentIdentity;
93
+ export declare function readDeploymentIdentity(env?: NodeJS.ProcessEnv, execPath?: string, entryPath?: string | undefined, fileExists?: (p: string) => boolean): DeploymentIdentity;
9
94
  //# sourceMappingURL=deployment-identity.d.ts.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Backup-freshness diagnostic check.
3
+ *
4
+ * Reads the newest `backup_runs.created_at` and reports whether the
5
+ * orchestrator DB has a recent `kici-admin db backup`. FAIL when none was ever
6
+ * recorded, WARN when the newest is older than the effective staleness
7
+ * threshold, else PASS.
8
+ *
9
+ * The threshold is cluster-configurable: the strictest (minimum) non-null
10
+ * `org_settings.backup_staleness_warn_hours` across all orgs, falling back to
11
+ * `config.backupStalenessWarnHours` when no org sets an override. A stale
12
+ * whole-DB backup affects every org, so the tightest org requirement wins.
13
+ */
14
+ import type { DiagnosticDeps, DiagnosticResult } from '../types.js';
15
+ export declare const DEFAULT_BACKUP_STALENESS_WARN_HOURS = 24;
16
+ export declare function resolveStalenessThresholdHours(deps: DiagnosticDeps): Promise<number>;
17
+ export declare function checkBackupFreshness(deps: DiagnosticDeps): Promise<DiagnosticResult>;
18
+ //# sourceMappingURL=backup.d.ts.map
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { DiagnosticCheck } from '../types.js';
8
8
  import { checkDbConnectivity } from './db.js';
9
+ import { checkBackupFreshness } from './backup.js';
9
10
  import { checkWsToPlatform } from './ws.js';
10
11
  import { checkAgentConnectivity } from './agents.js';
11
12
  import { checkDiskSpace } from './disk.js';
@@ -15,5 +16,5 @@ import { checkScalerProvisioning } from './scaler.js';
15
16
  import { checkFirecrackerNetwork } from './firecracker-network.js';
16
17
  /** All diagnostic checks in display order. */
17
18
  export declare const defaultChecks: DiagnosticCheck[];
18
- export { checkDbConnectivity, checkWsToPlatform, checkAgentConnectivity, checkDiskSpace, checkConfigValidity, checkCertificateExpiry, checkScalerProvisioning, checkFirecrackerNetwork, };
19
+ export { checkDbConnectivity, checkBackupFreshness, checkWsToPlatform, checkAgentConnectivity, checkDiskSpace, checkConfigValidity, checkCertificateExpiry, checkScalerProvisioning, checkFirecrackerNetwork, };
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -12,9 +12,9 @@ import { z } from 'zod';
12
12
  /** Per-node collection outcome recorded in the fleet manifest. */
13
13
  export declare const FleetNodeStatus: z.ZodEnum<{
14
14
  error: "error";
15
- unreachable: "unreachable";
16
15
  ok: "ok";
17
16
  timeout: "timeout";
17
+ unreachable: "unreachable";
18
18
  }>;
19
19
  export type FleetNodeStatus = z.infer<typeof FleetNodeStatus>;
20
20
  export interface FleetCollectorDeps {
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Owns the coordinator's ephemeral "draining" state for pre-upgrade quiescing.
3
+ *
4
+ * While draining, the Dispatcher routes every new job to the Pending queue
5
+ * (Model A / job-level drain), the peer heartbeat advertises `draining: true`
6
+ * (siblings stop rerouting here), and the scaler stops spawning fresh agents.
7
+ * Jobs already executing on agents finish; `jobsRunning()` drops monotonically
8
+ * to zero, at which point the coordinator is quiesced and safe to restart.
9
+ *
10
+ * State is in-memory only: an upgrade restart comes back accepting and the
11
+ * existing startup recovery re-dispatches the Pending backlog.
12
+ */
13
+ export interface DrainControllerDeps {
14
+ /** Sum of activeJobs across all connected agents (agentRegistry). */
15
+ activeJobsTotal: () => number;
16
+ /**
17
+ * Count of dispatch_queue rows in Dispatched status. In the single-coordinator
18
+ * drain-before-upgrade scenario this equals this instance's in-flight jobs; a
19
+ * per-instance ownership column does not exist on dispatch_queue, so a
20
+ * multi-coordinator cluster may over-count here (belt-and-suspenders only —
21
+ * `activeJobsTotal` is the primary signal, and both shrink monotonically once
22
+ * the dispatcher gate stops new claims).
23
+ */
24
+ dispatchedJobsOwned: () => Promise<number>;
25
+ /**
26
+ * Optional hook fired whenever the draining flag changes, used to drive the
27
+ * `kici_orchestrator_draining` metric. Not fired on a no-op (idempotent) call.
28
+ */
29
+ onChange?: (draining: boolean) => void;
30
+ }
31
+ export declare class DrainController {
32
+ private readonly deps;
33
+ private draining;
34
+ constructor(deps: DrainControllerDeps);
35
+ isDraining(): boolean;
36
+ startDrain(): void;
37
+ stopDrain(): void;
38
+ /**
39
+ * Live quiesce signal: jobs currently executing on agents versus any row this
40
+ * instance already claimed (Dispatched) but whose activeJobs increment has not
41
+ * yet landed. Since draining stops new claims, this set only shrinks, so a
42
+ * poll on it is guaranteed to converge to zero. Uses `Math.max` (not sum) — the
43
+ * Dispatched rows are the durable view of the same jobs the in-memory
44
+ * activeJobs counts, so summing would double-count the common case.
45
+ */
46
+ jobsRunning(): Promise<number>;
47
+ snapshot(): Promise<{
48
+ draining: boolean;
49
+ jobsRunning: number;
50
+ }>;
51
+ }
52
+ //# sourceMappingURL=drain-controller.d.ts.map
@@ -0,0 +1,63 @@
1
+ import { type Kysely } from 'kysely';
2
+ import type { Database } from '../db/types.js';
3
+ /**
4
+ * Durable accumulator backing the `workflowsFailedBatch` trigger.
5
+ *
6
+ * A failed `workflow_complete` event that matches a `workflowsFailedBatch`
7
+ * registration is buffered into a per-(registration, window) row instead of
8
+ * dispatching now. The first failure opens the window; the Raft-leader-only
9
+ * scanner sweeps windows past `expires_at`, emits one `__workflows_failed_batch`
10
+ * event, and deletes the window (cascading its items). The state lives in
11
+ * Postgres (not an in-memory Map) so a node restart mid-window loses nothing.
12
+ */
13
+ /** A failed run buffered into a batch window. */
14
+ export interface BatchAccumulatorRun {
15
+ runId: string;
16
+ repoIdentifier: string;
17
+ workflowName: string;
18
+ failureClass?: string | null;
19
+ senderUsername?: string | null;
20
+ }
21
+ /** A window swept past its deadline, with the runs it accumulated. */
22
+ export interface SweptBatchWindow {
23
+ windowId: string;
24
+ customerId: string;
25
+ registrationId: string;
26
+ routingKey: string;
27
+ repoIdentifier: string;
28
+ runs: BatchAccumulatorRun[];
29
+ }
30
+ export interface OpenBatchWindowInput {
31
+ registrationId: string;
32
+ customerId: string;
33
+ routingKey: string;
34
+ repoIdentifier: string;
35
+ accumulateForMs: number;
36
+ }
37
+ /**
38
+ * Open the accumulation window for a registration, or return the existing open
39
+ * one. `opened` is true only for the caller that created the window (the first
40
+ * failure of the burst) so exactly one caller schedules nothing beyond the DB
41
+ * row — the leader scanner owns the flush.
42
+ *
43
+ * Uses `INSERT ... ON CONFLICT (registration_id) DO NOTHING RETURNING id` for an
44
+ * atomic open-once: concurrent failures append to the same window rather than
45
+ * racing to open N windows.
46
+ */
47
+ export declare function openOrGetBatchWindow(db: Kysely<Database>, input: OpenBatchWindowInput): Promise<{
48
+ windowId: string;
49
+ opened: boolean;
50
+ }>;
51
+ /** Append one failed run to an open window. */
52
+ export declare function appendBatchItem(db: Kysely<Database>, input: {
53
+ windowId: string;
54
+ run: BatchAccumulatorRun;
55
+ }): Promise<void>;
56
+ /**
57
+ * Sweep every window whose `expires_at <= now`. For each, in a transaction, load
58
+ * its items, delete the window (cascading the items), and return the runs. Only
59
+ * the Raft leader calls this. Windows with no items (a run that was excluded
60
+ * after opening) still emit — the caller decides whether to skip an empty batch.
61
+ */
62
+ export declare function sweepExpiredBatchWindows(db: Kysely<Database>, now: Date): Promise<SweptBatchWindow[]>;
63
+ //# sourceMappingURL=batch-accumulator.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import type { EventRouterConfig } from './types.js';
2
+ import type { ClusterSettingsReader } from '../cluster/cluster-settings-reader.js';
2
3
  /**
3
4
  * Circuit breaker for event loop detection and user-event rate limiting.
4
5
  *
@@ -9,8 +10,9 @@ import type { EventRouterConfig } from './types.js';
9
10
  */
10
11
  export declare class EventCircuitBreaker {
11
12
  private readonly config;
13
+ private readonly clusterSettings?;
12
14
  private rateLimiter;
13
- constructor(config: EventRouterConfig);
15
+ constructor(config: EventRouterConfig, clusterSettings?: ClusterSettingsReader | undefined);
14
16
  /**
15
17
  * Check if the current chain depth is within limits.
16
18
  */
@@ -23,11 +25,15 @@ export declare class EventCircuitBreaker {
23
25
  * sliding 60-second window. Callers key user events by
24
26
  * `<sourceRoutingKey>:<eventName>`; system events (`__`-prefixed) are exempt
25
27
  * upstream and never reach here.
28
+ *
29
+ * The per-(source routing key + event) limit is the fleet-wide cluster
30
+ * tunable `event_router_rate_limit_per_workflow_per_minute` (live override
31
+ * wins), falling back to the configured default.
26
32
  */
27
- checkRateLimit(rateKey: string): {
33
+ checkRateLimit(rateKey: string): Promise<{
28
34
  allowed: boolean;
29
35
  retryAfterMs?: number;
30
- };
36
+ }>;
31
37
  /**
32
38
  * Clear all rate limit state (for testing).
33
39
  */
@@ -14,6 +14,29 @@ export interface WorkflowCompleteData {
14
14
  name: string;
15
15
  status: string;
16
16
  }>;
17
+ /** Why the run failed (`RunFailureClass`); carried on the event so Plane B can route on it. */
18
+ failureClass?: string;
19
+ }
20
+ /** One failed run carried in a workflows_failed_batch event. */
21
+ export interface WorkflowsFailedBatchRun {
22
+ runId: string;
23
+ repo: string;
24
+ workflowName: string;
25
+ failureClass?: string;
26
+ senderUsername?: string;
27
+ }
28
+ /**
29
+ * Input data for emitting a __workflows_failed_batch system event.
30
+ * One event per swept accumulation window; `registrationId` targets the single
31
+ * subscribing workflow so the batch dispatches once.
32
+ */
33
+ export interface WorkflowsFailedBatchData {
34
+ routingKey: string;
35
+ repo: string;
36
+ registrationId: string;
37
+ /** Total failed runs in the window (may exceed `runs.length` when capped). */
38
+ total: number;
39
+ runs: WorkflowsFailedBatchRun[];
17
40
  }
18
41
  /**
19
42
  * Input data for emitting a job_complete system event.
@@ -46,6 +69,14 @@ export declare class EventEmitter {
46
69
  * Returns the event ID as delivery receipt.
47
70
  */
48
71
  emitWorkflowComplete(data: WorkflowCompleteData): Promise<string>;
72
+ /**
73
+ * Emit a __workflows_failed_batch system event: one synthetic event per swept
74
+ * accumulation window carrying the batched failed runs. Targeted at the single
75
+ * subscribing registration via `payload.registrationId` so the batch workflow
76
+ * dispatches exactly once, no matter how many failures landed in the window.
77
+ * Returns the event ID as delivery receipt.
78
+ */
79
+ emitWorkflowsFailedBatch(data: WorkflowsFailedBatchData): Promise<string>;
49
80
  /**
50
81
  * Emit a __job_complete system event with rich metadata.
51
82
  * Returns the event ID as delivery receipt.
@@ -1,10 +1,12 @@
1
1
  import { type Kysely } from 'kysely';
2
2
  import type { Database } from '../db/types.js';
3
3
  import type { EventStore } from './event-store.js';
4
+ import type { EventEmitter } from './event-emitter.js';
4
5
  import type { EventRouterConfig } from './types.js';
5
6
  interface EventRetryScannerOptions {
6
7
  db: Kysely<Database>;
7
8
  eventStore: EventStore;
9
+ eventEmitter: EventEmitter;
8
10
  config: EventRouterConfig;
9
11
  }
10
12
  /**
@@ -32,9 +34,9 @@ interface EventRetryScannerOptions {
32
34
  export declare class EventRetryScanner {
33
35
  private readonly db;
34
36
  private readonly eventStore;
37
+ private readonly eventEmitter;
35
38
  private readonly config;
36
- private timer;
37
- private isLeader;
39
+ private readonly scheduler;
38
40
  constructor(options: EventRetryScannerOptions);
39
41
  onBecomeLeader(): void;
40
42
  onLoseLeadership(): void;
@@ -43,6 +45,14 @@ export declare class EventRetryScanner {
43
45
  * One scanner tick. Public for tests; not on the hot path otherwise.
44
46
  */
45
47
  tick(): Promise<void>;
48
+ /**
49
+ * Sweep expired workflows_failed_batch accumulation windows and emit one
50
+ * `__workflows_failed_batch` event per window that accumulated at least one
51
+ * run. The emitted event flows back through the router and dispatches the
52
+ * subscribing workflow exactly once. The run list is capped at
53
+ * `BATCH_MAX_RUNS`; `total` carries the true count.
54
+ */
55
+ private processBatchWindows;
46
56
  private processExpiredLeases;
47
57
  private processDueRetries;
48
58
  private refreshDlqDepth;
@@ -7,6 +7,7 @@ import type { EventCircuitBreaker } from './circuit-breaker.js';
7
7
  import type { TrustStore } from './trust-store.js';
8
8
  import type { RegistrationIndex } from '../registration/registration-index.js';
9
9
  import type { EventRouterConfig, StoredEvent } from './types.js';
10
+ import type { ClusterSettingsReader } from '../cluster/cluster-settings-reader.js';
10
11
  /**
11
12
  * Input for emitting an internal event.
12
13
  */
@@ -41,6 +42,12 @@ export interface EventRouterOptions {
41
42
  circuitBreaker: EventCircuitBreaker;
42
43
  trustStore: TrustStore;
43
44
  config: EventRouterConfig;
45
+ /**
46
+ * Fleet-wide settings reader. When present, the per-event insert TTL and the
47
+ * max-dispatch-attempts cap are read live from cluster_settings, falling back
48
+ * to `config.eventTtlSeconds` / `config.maxDispatchAttempts`.
49
+ */
50
+ clusterSettings?: ClusterSettingsReader;
44
51
  onEventMatched: (event: StoredEvent, lockFile: LockFile, matchedWorkflows: WorkflowDecision[], context?: EventMatchContext) => Promise<void>;
45
52
  /** Registration index for DB-backed subscription matching. Events match against persistent registrations. */
46
53
  registrationIndex: RegistrationIndex;
@@ -66,6 +73,7 @@ export declare class EventRouter {
66
73
  private readonly circuitBreaker;
67
74
  private readonly trustStore;
68
75
  private readonly config;
76
+ private readonly clusterSettings?;
69
77
  private readonly onEventMatched;
70
78
  private readonly registrationIndex;
71
79
  private readonly nodeId;
@@ -139,6 +147,27 @@ export declare class EventRouter {
139
147
  * lease pattern fixes.
140
148
  */
141
149
  private processSubscriptions;
150
+ /**
151
+ * Partition matched decisions into "dispatch now" and "buffer into a batch
152
+ * window". A decision whose matched trigger is `workflows_failed_batch` and
153
+ * whose event is a failed `__workflow_complete` is buffered (and excluded from
154
+ * the returned dispatch set) so the whole burst notifies once per window.
155
+ *
156
+ * Self-exclusion: a failed `__workflow_complete` whose originating run was
157
+ * itself dispatched by a failure-lifecycle trigger is neither buffered nor
158
+ * dispatched — a broken notifier must not re-trigger the batch on its own
159
+ * failure. The chain-depth breaker remains the backstop for anything missed.
160
+ */
161
+ private bufferBatchDecisions;
162
+ /** Open (or reuse) the registration's batch window and append the failed run. */
163
+ private bufferBatchFailure;
164
+ /**
165
+ * True when the given run was dispatched by a failure-lifecycle trigger
166
+ * (`workflows_failed_batch` or a `workflow_complete` failed-status trigger),
167
+ * recorded in `execution_runs.trigger_decision.dispatchedByFailureLifecycle`
168
+ * at dispatch time. Used for batch self-exclusion.
169
+ */
170
+ private isFailureLifecycleRun;
142
171
  /**
143
172
  * Map a stored event to a trigger type string for RegistrationIndex lookup.
144
173
  *
@@ -12,6 +12,8 @@
12
12
  * nft table name but have separate lifecycles; this module never touches the
13
13
  * per-VM rules.
14
14
  */
15
+ import { FIRECRACKER_NET_INTERFACES } from './net-interfaces.js';
16
+ export { FIRECRACKER_NET_INTERFACES };
15
17
  /** A single subprocess invocation (no shell). */
16
18
  export interface CommandSpec {
17
19
  bin: string;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Interface patterns the Firecracker host setup marks unmanaged in
3
+ * NetworkManager.
4
+ *
5
+ * A leaf module on purpose: it imports nothing, so an out-of-package consumer
6
+ * can read the constant without pulling the orchestrator runtime graph in with
7
+ * it. The NetworkManager drift watchdog (`hack/lib/nm-watchdog.ts`) derives its
8
+ * expected-pattern set from here rather than re-typing the patterns — a second
9
+ * copy desyncs silently the moment a pattern is added. `host-network.ts`
10
+ * re-exports it and renders `NM_CONF_CONTENT` from it, so the drop-in and the
11
+ * watchdog can never disagree.
12
+ */
13
+ export declare const FIRECRACKER_NET_INTERFACES: readonly ['kici-*'];
14
+ //# sourceMappingURL=net-interfaces.d.ts.map
@@ -15,17 +15,19 @@
15
15
  * then a `setInterval`; `stop()` clears it. Per-source errors are logged and
16
16
  * never abort the loop.
17
17
  */
18
+ /** A source row as returned by listSources() — the slice this module needs. */
19
+ export type SourceIdentityRow = {
20
+ routing_key: string;
21
+ provider: string;
22
+ name: string;
23
+ slug: string | null;
24
+ };
18
25
  /** The slice of {@link SourceStore} this module needs. */
19
26
  export interface RefreshableSourceStore {
20
- listSources(): Promise<Array<{
21
- routing_key: string;
22
- provider: string;
23
- name: string;
24
- slug: string | null;
25
- }>>;
27
+ listSources(): Promise<SourceIdentityRow[]>;
26
28
  getSourceWithSecrets(routingKey: string): Promise<{
27
29
  provider: string;
28
- config: string;
30
+ config: string | Record<string, unknown>;
29
31
  privateKey: string;
30
32
  } | null>;
31
33
  updateSource(routingKey: string, updates: {
@@ -50,10 +52,18 @@ export interface RefreshResult {
50
52
  oldSlug: string | null;
51
53
  newSlug: string;
52
54
  }
55
+ /**
56
+ * Refresh one already-resolved GitHub source's identity from GitHub and persist
57
+ * it when the name or slug drifted. The caller supplies the row it already holds,
58
+ * so this never lists the sources table. Throws for a non-GitHub row or missing
59
+ * credentials.
60
+ */
61
+ export declare function refreshResolvedGithubSource(sourceStore: Pick<RefreshableSourceStore, 'getSourceWithSecrets' | 'updateSource'>, row: SourceIdentityRow, fetchIdentity: FetchGithubAppIdentity): Promise<RefreshResult>;
53
62
  /**
54
63
  * Re-fetch one GitHub source's identity from GitHub and persist it when the
55
- * name or slug drifted. Shared by the daily task and `kici-admin source
56
- * refresh`. Throws for a missing or non-GitHub routing key.
64
+ * name or slug drifted. Resolves the row by routing key (one sources read) then
65
+ * delegates. Shared by `kici-admin source refresh`. Throws for a missing or
66
+ * non-GitHub routing key.
57
67
  */
58
68
  export declare function refreshGithubSourceIdentity(sourceStore: RefreshableSourceStore, routingKey: string, fetchIdentity: FetchGithubAppIdentity): Promise<RefreshResult>;
59
69
  export interface GithubAppNameRefresherDeps {
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export { UserCache, DEFAULT_USER_CACHE_QUOTA_BYTES, DEFAULT_USER_CACHE_TTL_MS, t
7
7
  export { PeerCredentialStore, createPeerCredentialStoreFromUrl, type PeerCredential, type CredentialFileData, } from './cluster/peer-credentials.js';
8
8
  export { PeerAuthCoordinator, type AuthDecision, type RejectionAction, } from './cluster/peer-auth-coordinator.js';
9
9
  export { JoinTokenManager, createJoinTokenManagerFromUrl } from './cluster/join-token.js';
10
+ export { HeldRunStore, createHeldRunStoreFromUrl, SecurityHoldReason, } from './contexts/held-runs.js';
11
+ export { TrustPolicyStore, createTrustPolicyStoreFromUrl, TrustPolicySource, DEFAULT_TRUST_POLICY, type StoredTrustPolicy, } from './security/trust-policy-store.js';
10
12
  export { AdminApiClient } from './cli/api-client.js';
11
13
  export { runGithubManifestSetup, type ManifestSetupOptions, type ManifestSetupDeps, } from './cli/commands/source-manifest.js';
12
14
  //# sourceMappingURL=index.d.ts.map