@kici-dev/orchestrator 0.0.0 → 0.1.2

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 (342) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +1 -6
  3. package/dist/__test-helpers__/mock-db.d.ts +103 -0
  4. package/dist/__test-helpers__/mock-ws.d.ts +13 -0
  5. package/dist/agent/dispatcher.d.ts +231 -0
  6. package/dist/agent/ownership-tracker.d.ts +46 -0
  7. package/dist/agent/registry.d.ts +255 -0
  8. package/dist/agent/token-store.d.ts +96 -0
  9. package/dist/app.d.ts +234 -0
  10. package/dist/audit/access-log.d.ts +92 -0
  11. package/dist/audit/sampling-rate-limiter.d.ts +41 -0
  12. package/dist/cache/build-coordinator.d.ts +42 -0
  13. package/dist/cache/dep-cache.d.ts +51 -0
  14. package/dist/cache/index.d.ts +16 -0
  15. package/dist/cache/pending-builds.d.ts +14 -0
  16. package/dist/cache/pending-dynamics.d.ts +15 -0
  17. package/dist/cache/pending-inits.d.ts +19 -0
  18. package/dist/cache/pending-tracker.d.ts +65 -0
  19. package/dist/cache/source-cache.d.ts +30 -0
  20. package/dist/cli/api-client.d.ts +411 -0
  21. package/dist/cli/commands/access-log.d.ts +30 -0
  22. package/dist/cli/commands/agent-service/index.d.ts +15 -0
  23. package/dist/cli/commands/agent-service/install.d.ts +9 -0
  24. package/dist/cli/commands/agent-service/logs.d.ts +9 -0
  25. package/dist/cli/commands/agent-service/restart.d.ts +8 -0
  26. package/dist/cli/commands/agent-service/start.d.ts +8 -0
  27. package/dist/cli/commands/agent-service/status.d.ts +10 -0
  28. package/dist/cli/commands/agent-service/stop.d.ts +8 -0
  29. package/dist/cli/commands/agent-service/uninstall.d.ts +9 -0
  30. package/dist/cli/commands/agent-service/upgrade.d.ts +11 -0
  31. package/dist/cli/commands/agent.d.ts +10 -0
  32. package/dist/cli/commands/api-key.d.ts +12 -0
  33. package/dist/cli/commands/audit.d.ts +9 -0
  34. package/dist/cli/commands/backend.d.ts +17 -0
  35. package/dist/cli/commands/cold-store-impl.d.ts +101 -0
  36. package/dist/cli/commands/cold-store.d.ts +30 -0
  37. package/dist/cli/commands/config.d.ts +16 -0
  38. package/dist/cli/commands/db.d.ts +19 -0
  39. package/dist/cli/commands/debug-bundle.d.ts +16 -0
  40. package/dist/cli/commands/diagnose.d.ts +15 -0
  41. package/dist/cli/commands/environment.d.ts +24 -0
  42. package/dist/cli/commands/event-dlq.d.ts +19 -0
  43. package/dist/cli/commands/event-log.d.ts +27 -0
  44. package/dist/cli/commands/event.d.ts +4 -0
  45. package/dist/cli/commands/execution.d.ts +17 -0
  46. package/dist/cli/commands/inspect-bundle.d.ts +16 -0
  47. package/dist/cli/commands/maintenance.d.ts +4 -0
  48. package/dist/cli/commands/orchestrator-service/index.d.ts +12 -0
  49. package/dist/cli/commands/orchestrator-service/install.d.ts +10 -0
  50. package/dist/cli/commands/orchestrator-service/logs.d.ts +10 -0
  51. package/dist/cli/commands/orchestrator-service/restart.d.ts +8 -0
  52. package/dist/cli/commands/orchestrator-service/start.d.ts +8 -0
  53. package/dist/cli/commands/orchestrator-service/status.d.ts +10 -0
  54. package/dist/cli/commands/orchestrator-service/stop.d.ts +8 -0
  55. package/dist/cli/commands/orchestrator-service/uninstall.d.ts +9 -0
  56. package/dist/cli/commands/orchestrator-service/upgrade.d.ts +12 -0
  57. package/dist/cli/commands/org-settings.d.ts +17 -0
  58. package/dist/cli/commands/peer.d.ts +13 -0
  59. package/dist/cli/commands/queue.d.ts +16 -0
  60. package/dist/cli/commands/registration.d.ts +18 -0
  61. package/dist/cli/commands/rotate.d.ts +9 -0
  62. package/dist/cli/commands/runs.d.ts +34 -0
  63. package/dist/cli/commands/secret.d.ts +12 -0
  64. package/dist/cli/commands/shared/db.d.ts +16 -0
  65. package/dist/cli/commands/shared/versioned-upgrade.d.ts +38 -0
  66. package/dist/cli/commands/source.d.ts +24 -0
  67. package/dist/cli/commands/token.d.ts +10 -0
  68. package/dist/cli/commands/workflow.d.ts +31 -0
  69. package/dist/cli/join.d.ts +14 -0
  70. package/dist/cli/kici-admin.d.ts +13 -0
  71. package/dist/cli/lazy-deps/cache.d.ts +17 -0
  72. package/dist/cli/lazy-deps/downloader.d.ts +33 -0
  73. package/dist/cli/lazy-deps/registry.d.ts +43 -0
  74. package/dist/cli/service/compose.d.ts +25 -0
  75. package/dist/cli/service/index.d.ts +24 -0
  76. package/dist/cli/service/launchd.d.ts +34 -0
  77. package/dist/cli/service/platform-detect.d.ts +59 -0
  78. package/dist/cli/service/systemd.d.ts +41 -0
  79. package/dist/cli/service/types.d.ts +91 -0
  80. package/dist/cli/service/windows.d.ts +20 -0
  81. package/dist/cli/wizard/agent-wizard.d.ts +24 -0
  82. package/dist/cli/wizard/orchestrator-wizard.d.ts +38 -0
  83. package/dist/cli/wizard/prompts.d.ts +23 -0
  84. package/dist/cli.js +11435 -0
  85. package/dist/cluster/cluster-identity.d.ts +59 -0
  86. package/dist/cluster/coordinator.d.ts +204 -0
  87. package/dist/cluster/health-api.d.ts +30 -0
  88. package/dist/cluster/index.d.ts +24 -0
  89. package/dist/cluster/join-client.d.ts +75 -0
  90. package/dist/cluster/join-handler.d.ts +58 -0
  91. package/dist/cluster/join-token.d.ts +94 -0
  92. package/dist/cluster/orphan-recovery.d.ts +67 -0
  93. package/dist/cluster/peer-client.d.ts +190 -0
  94. package/dist/cluster/peer-credentials.d.ts +108 -0
  95. package/dist/cluster/peer-crypto.d.ts +57 -0
  96. package/dist/cluster/peer-handler.d.ts +97 -0
  97. package/dist/cluster/peer-registry.d.ts +186 -0
  98. package/dist/cluster/raft-state.d.ts +36 -0
  99. package/dist/cluster/raft.d.ts +140 -0
  100. package/dist/cold-store/load-access-log-range.d.ts +73 -0
  101. package/dist/cold-store/load-event-log-range.d.ts +62 -0
  102. package/dist/cold-store/load-secret-audit-log-range.d.ts +38 -0
  103. package/dist/cold-store/orchestrator-cold-store.d.ts +58 -0
  104. package/dist/cold-store/tables/access-log.d.ts +80 -0
  105. package/dist/cold-store/tables/event-log.d.ts +70 -0
  106. package/dist/cold-store/tables/execution-jobs.d.ts +63 -0
  107. package/dist/cold-store/tables/execution-runs.d.ts +81 -0
  108. package/dist/cold-store/tables/execution-steps.d.ts +65 -0
  109. package/dist/cold-store/tables/secret-audit-log.d.ts +77 -0
  110. package/dist/concurrency/dispatch-next-queued.d.ts +63 -0
  111. package/dist/concurrency/group-tracker.d.ts +51 -0
  112. package/dist/concurrency/index.d.ts +3 -0
  113. package/dist/concurrency/queue-manager.d.ts +68 -0
  114. package/dist/concurrency/waiters.d.ts +58 -0
  115. package/dist/config/encryption.d.ts +82 -0
  116. package/dist/config/env-overlay.d.ts +45 -0
  117. package/dist/config/index.d.ts +16 -0
  118. package/dist/config/loader.d.ts +26 -0
  119. package/dist/config/reload.d.ts +113 -0
  120. package/dist/config/resolver.d.ts +47 -0
  121. package/dist/config/schema.d.ts +210 -0
  122. package/dist/config/shared-store.d.ts +142 -0
  123. package/dist/config/types.d.ts +218 -0
  124. package/dist/config.d.ts +249 -0
  125. package/dist/cron/cron-scheduler.d.ts +78 -0
  126. package/dist/cron/cron-store.d.ts +38 -0
  127. package/dist/dashboard/handler.d.ts +243 -0
  128. package/dist/db/client.d.ts +13 -0
  129. package/dist/db/migration-provider.d.ts +9 -0
  130. package/dist/db/migrations/001_initial.d.ts +8 -0
  131. package/dist/db/migrations/002_config_versions_key_version.d.ts +16 -0
  132. package/dist/db/migrations/003_access_log.d.ts +26 -0
  133. package/dist/db/migrations/004_rename_bundle_to_source.d.ts +19 -0
  134. package/dist/db/migrations/005_cold_store_chunk_counter.d.ts +19 -0
  135. package/dist/db/migrations/006_runs_jobs_steps_archived_at.d.ts +38 -0
  136. package/dist/db/migrations/007_audit_logs_archived_at.d.ts +42 -0
  137. package/dist/db/migrations/008_event_log_archived_at.d.ts +40 -0
  138. package/dist/db/migrations/009_access_log_trigram.d.ts +15 -0
  139. package/dist/db/migrations/010_cold_store_chunks.d.ts +34 -0
  140. package/dist/db/migrations/011_drop_source_secrets_notify.d.ts +21 -0
  141. package/dist/db/migrations/012_peer_credentials_active_uniq.d.ts +28 -0
  142. package/dist/db/migrations/013_execution_log_bytes.d.ts +21 -0
  143. package/dist/db/migrations/014_kici_events_lease_retry.d.ts +36 -0
  144. package/dist/db/migrations/015_org_settings_customer_scoped.d.ts +30 -0
  145. package/dist/db/migrations/016_org_settings_allow_http_npm.d.ts +15 -0
  146. package/dist/db/migrations/017_org_id_widen.d.ts +4 -0
  147. package/dist/db/migrations/018_org_id_prefix_backfill.d.ts +4 -0
  148. package/dist/db/migrator.d.ts +32 -0
  149. package/dist/db/types.d.ts +1266 -0
  150. package/dist/diagnostics/bundle-reader.d.ts +48 -0
  151. package/dist/diagnostics/bundle-writer.d.ts +57 -0
  152. package/dist/diagnostics/checks/agents.d.ts +10 -0
  153. package/dist/diagnostics/checks/certs.d.ts +9 -0
  154. package/dist/diagnostics/checks/config.d.ts +10 -0
  155. package/dist/diagnostics/checks/db.d.ts +9 -0
  156. package/dist/diagnostics/checks/disk.d.ts +9 -0
  157. package/dist/diagnostics/checks/index.d.ts +17 -0
  158. package/dist/diagnostics/checks/ws.d.ts +9 -0
  159. package/dist/diagnostics/index.d.ts +13 -0
  160. package/dist/diagnostics/runner.d.ts +23 -0
  161. package/dist/diagnostics/types.d.ts +38 -0
  162. package/dist/entry-helpers.d.ts +93 -0
  163. package/dist/environments/binding-store.d.ts +27 -0
  164. package/dist/environments/environment-store.d.ts +74 -0
  165. package/dist/environments/held-runs.d.ts +64 -0
  166. package/dist/environments/index.d.ts +10 -0
  167. package/dist/environments/protection/branch-gate.d.ts +5 -0
  168. package/dist/environments/protection/concurrency-gate.d.ts +7 -0
  169. package/dist/environments/protection/pipeline.d.ts +18 -0
  170. package/dist/environments/protection/reviewer-gate.d.ts +7 -0
  171. package/dist/environments/protection/trust-gate.d.ts +7 -0
  172. package/dist/environments/protection/wait-timer-gate.d.ts +7 -0
  173. package/dist/environments/variable-store.d.ts +39 -0
  174. package/dist/events/circuit-breaker.d.ts +33 -0
  175. package/dist/events/event-emitter.d.ts +55 -0
  176. package/dist/events/event-retry-scanner.d.ts +52 -0
  177. package/dist/events/event-router.d.ts +183 -0
  178. package/dist/events/event-store.d.ts +157 -0
  179. package/dist/events/trust-store.d.ts +54 -0
  180. package/dist/events/types.d.ts +61 -0
  181. package/dist/helpers/ip-extraction.d.ts +29 -0
  182. package/dist/helpers/rate-limiter.d.ts +23 -0
  183. package/dist/index.d.ts +7 -0
  184. package/dist/index.js +772 -0
  185. package/dist/lockfile-cache.d.ts +39 -0
  186. package/dist/metrics/agent-metrics-aggregator.d.ts +116 -0
  187. package/dist/metrics/metrics-reporter.d.ts +40 -0
  188. package/dist/metrics/prometheus.d.ts +261 -0
  189. package/dist/metrics/scheduled-jobs.d.ts +20 -0
  190. package/dist/orchestrator-core.d.ts +193 -0
  191. package/dist/pipeline/dispatch-matched-workflow.d.ts +102 -0
  192. package/dist/pipeline/inline-eval.d.ts +28 -0
  193. package/dist/pipeline/install-secrets-resolver.d.ts +73 -0
  194. package/dist/pipeline/manual-schedule.d.ts +21 -0
  195. package/dist/pipeline/needs-scheduler.d.ts +85 -0
  196. package/dist/pipeline/process-webhook.d.ts +38 -0
  197. package/dist/pipeline/processor.d.ts +326 -0
  198. package/dist/pipeline/rerun.d.ts +79 -0
  199. package/dist/pipeline/test-pipeline.d.ts +110 -0
  200. package/dist/provider-registry.d.ts +122 -0
  201. package/dist/providers/generic/index.d.ts +23 -0
  202. package/dist/providers/generic/normalizer.d.ts +112 -0
  203. package/dist/providers/generic/verification.d.ts +47 -0
  204. package/dist/providers/github/auth.d.ts +60 -0
  205. package/dist/providers/github/changed-files.d.ts +51 -0
  206. package/dist/providers/github/check-status-poster.d.ts +35 -0
  207. package/dist/providers/github/contributor-resolver.d.ts +30 -0
  208. package/dist/providers/github/index.d.ts +20 -0
  209. package/dist/providers/github/lock-file.d.ts +32 -0
  210. package/dist/providers/github/normalizer.d.ts +103 -0
  211. package/dist/providers/github/repo-url.d.ts +35 -0
  212. package/dist/providers/internal/index.d.ts +32 -0
  213. package/dist/providers/internal/lock-file-fetcher.d.ts +34 -0
  214. package/dist/providers/internal/normalizer.d.ts +89 -0
  215. package/dist/providers/internal/repo-url-builder.d.ts +42 -0
  216. package/dist/providers/universal-git/changed-files.d.ts +42 -0
  217. package/dist/providers/universal-git/clone-token.d.ts +83 -0
  218. package/dist/providers/universal-git/config.d.ts +192 -0
  219. package/dist/providers/universal-git/index.d.ts +55 -0
  220. package/dist/providers/universal-git/lock-file.d.ts +71 -0
  221. package/dist/providers/universal-git/normalizer.d.ts +90 -0
  222. package/dist/providers/universal-git/repo-url.d.ts +50 -0
  223. package/dist/providers/universal-git/ssh-auth.d.ts +94 -0
  224. package/dist/queue/bootstrap.d.ts +50 -0
  225. package/dist/queue/cleanup.d.ts +41 -0
  226. package/dist/queue/depth-refresher.d.ts +65 -0
  227. package/dist/queue/job-queue.d.ts +343 -0
  228. package/dist/queue/scheduled-job.d.ts +91 -0
  229. package/dist/registration/extractor.d.ts +44 -0
  230. package/dist/registration/registration-index.d.ts +162 -0
  231. package/dist/registration/registration-store.d.ts +111 -0
  232. package/dist/reporting/check-run-summary.d.ts +102 -0
  233. package/dist/reporting/commit-status.d.ts +382 -0
  234. package/dist/reporting/execution-tracker.d.ts +538 -0
  235. package/dist/reporting/fs-log-storage.d.ts +41 -0
  236. package/dist/reporting/log-pull-handler.d.ts +35 -0
  237. package/dist/reporting/log-storage.d.ts +70 -0
  238. package/dist/reporting/log-writer.d.ts +45 -0
  239. package/dist/reporting/s3-log-storage.d.ts +42 -0
  240. package/dist/reporting/step-log-buffer.d.ts +57 -0
  241. package/dist/routes/admin-access-log.d.ts +34 -0
  242. package/dist/routes/admin-backends.d.ts +28 -0
  243. package/dist/routes/admin-config.d.ts +57 -0
  244. package/dist/routes/admin-db.d.ts +20 -0
  245. package/dist/routes/admin-environments.d.ts +42 -0
  246. package/dist/routes/admin-errors.d.ts +4 -0
  247. package/dist/routes/admin-event-dlq.d.ts +39 -0
  248. package/dist/routes/admin-event-log.d.ts +42 -0
  249. package/dist/routes/admin-events.d.ts +46 -0
  250. package/dist/routes/admin-maintenance.d.ts +22 -0
  251. package/dist/routes/admin-org-settings.d.ts +29 -0
  252. package/dist/routes/admin-queue-execution.d.ts +27 -0
  253. package/dist/routes/admin-registrations.d.ts +37 -0
  254. package/dist/routes/admin-runs.d.ts +57 -0
  255. package/dist/routes/admin-scheduled-jobs.d.ts +36 -0
  256. package/dist/routes/admin-sources.d.ts +18 -0
  257. package/dist/routes/admin.d.ts +103 -0
  258. package/dist/routes/capabilities.d.ts +24 -0
  259. package/dist/routes/diagnostics.d.ts +16 -0
  260. package/dist/routes/health.d.ts +20 -0
  261. package/dist/routes/test-trigger.d.ts +41 -0
  262. package/dist/routes/uploads.d.ts +38 -0
  263. package/dist/routes/webhooks.d.ts +36 -0
  264. package/dist/scaler/bare-metal-backend.d.ts +107 -0
  265. package/dist/scaler/config.d.ts +303 -0
  266. package/dist/scaler/container-backend.d.ts +125 -0
  267. package/dist/scaler/file-tail.d.ts +23 -0
  268. package/dist/scaler/firecracker-api.d.ts +100 -0
  269. package/dist/scaler/firecracker-backend.d.ts +263 -0
  270. package/dist/scaler/index.d.ts +24 -0
  271. package/dist/scaler/ip-allocator.d.ts +177 -0
  272. package/dist/scaler/label-matcher.d.ts +73 -0
  273. package/dist/scaler/log-forwarder.d.ts +54 -0
  274. package/dist/scaler/machine-ledger.d.ts +160 -0
  275. package/dist/scaler/manager.d.ts +338 -0
  276. package/dist/scaler/nftables.d.ts +85 -0
  277. package/dist/scaler/types.d.ts +388 -0
  278. package/dist/scaler/warm-pool.d.ts +81 -0
  279. package/dist/secrets/audit-logger.d.ts +65 -0
  280. package/dist/secrets/backend-health.d.ts +60 -0
  281. package/dist/secrets/backend-registry.d.ts +68 -0
  282. package/dist/secrets/backend-sync.d.ts +40 -0
  283. package/dist/secrets/cleanup.d.ts +40 -0
  284. package/dist/secrets/config.d.ts +51 -0
  285. package/dist/secrets/crypto.d.ts +49 -0
  286. package/dist/secrets/ephemeral-keys.d.ts +49 -0
  287. package/dist/secrets/index.d.ts +17 -0
  288. package/dist/secrets/pg-secret-store.d.ts +105 -0
  289. package/dist/secrets/rbac.d.ts +47 -0
  290. package/dist/secrets/secret-output-store.d.ts +46 -0
  291. package/dist/secrets/secret-resolver.d.ts +137 -0
  292. package/dist/secrets/source-credentials.d.ts +61 -0
  293. package/dist/secrets/token-manager.d.ts +63 -0
  294. package/dist/secrets/vault-secret-store.d.ts +85 -0
  295. package/dist/security/comment-handler.d.ts +67 -0
  296. package/dist/security/contributor-cache.d.ts +75 -0
  297. package/dist/security/global-workflow-policy.d.ts +72 -0
  298. package/dist/security/lock-source.d.ts +34 -0
  299. package/dist/security/trust-resolver.d.ts +108 -0
  300. package/dist/security/workflow-diff.d.ts +26 -0
  301. package/dist/server.d.ts +17 -0
  302. package/dist/server.js +48055 -0
  303. package/dist/sources/index.d.ts +10 -0
  304. package/dist/sources/source-manager.d.ts +63 -0
  305. package/dist/sources/source-store.d.ts +79 -0
  306. package/dist/sources/source-validator.d.ts +16 -0
  307. package/dist/stale-detector/stale-run-detector.d.ts +109 -0
  308. package/dist/standalone.d.ts +20 -0
  309. package/dist/standalone.js +41546 -0
  310. package/dist/storage/blob-routes.d.ts +20 -0
  311. package/dist/storage/filesystem.d.ts +60 -0
  312. package/dist/storage/index.d.ts +20 -0
  313. package/dist/storage/s3.d.ts +68 -0
  314. package/dist/storage/sign-url.d.ts +45 -0
  315. package/dist/storage/types.d.ts +98 -0
  316. package/dist/webhook/dedup.d.ts +44 -0
  317. package/dist/webhook/event-log.d.ts +83 -0
  318. package/dist/webhook/generic-sources.d.ts +169 -0
  319. package/dist/webhook/handler.d.ts +23 -0
  320. package/dist/webhook/relay-buffer.d.ts +96 -0
  321. package/dist/webhook/verify-inbound.d.ts +78 -0
  322. package/dist/worker/in-memory-execution-tracker.d.ts +94 -0
  323. package/dist/worker/in-memory-job-queue.d.ts +74 -0
  324. package/dist/worker/static-agent-token-store.d.ts +58 -0
  325. package/dist/worker/worker-status.d.ts +36 -0
  326. package/dist/worker-core.d.ts +74 -0
  327. package/dist/ws/agent-api-registry.d.ts +49 -0
  328. package/dist/ws/agent-handler.d.ts +176 -0
  329. package/dist/ws/agent-heartbeat.d.ts +45 -0
  330. package/dist/ws/dashboard-backends-handler.d.ts +51 -0
  331. package/dist/ws/dashboard-diagnostics-handler.d.ts +56 -0
  332. package/dist/ws/dashboard-env-handler.d.ts +107 -0
  333. package/dist/ws/dashboard-global-workflows-handler.d.ts +72 -0
  334. package/dist/ws/dashboard-registrations-handler.d.ts +84 -0
  335. package/dist/ws/event-buffer.d.ts +16 -0
  336. package/dist/ws/observer-handler.d.ts +42 -0
  337. package/dist/ws/observer-registry.d.ts +88 -0
  338. package/dist/ws/platform-client.d.ts +270 -0
  339. package/dist/ws/server-options.d.ts +15 -0
  340. package/package.json +87 -7
  341. package/sbom.spdx.json +14370 -0
  342. package/index.js +0 -3
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Admin route for triggering scheduled-job ticks out of band.
3
+ *
4
+ * POST /api/v1/admin/scheduled-jobs/:name/trigger
5
+ * Path: :name must be one of the registered OrchestratorScheduledJobName
6
+ * Requires: scheduled_job.trigger role permission (owner + admin roles)
7
+ * Returns: { triggered: true, ok: boolean, durationMs: number, error?: string }
8
+ *
9
+ * Phase A's E2E smoke uses this endpoint to force a cold-store-archive
10
+ * tick without waiting for the hourly cron. Future dashboard "Run now"
11
+ * buttons use it too.
12
+ *
13
+ * The access_log row is written directly (not via the typed
14
+ * AccessLogWriter) because `scheduled_job.trigger` is not in the
15
+ * protocol-level AccessLogAction enum — matching the pattern the
16
+ * scheduler wrapper itself uses for `scheduled_job.tick` failure rows.
17
+ */
18
+ import { Hono } from 'hono';
19
+ import type { Kysely } from 'kysely';
20
+ import type { Database } from '../db/types.js';
21
+ import type { TokenManager } from '../secrets/token-manager.js';
22
+ import type { RbacEnforcer, Role } from '../secrets/rbac.js';
23
+ export interface AdminScheduledJobsRoutesDeps {
24
+ db: Kysely<Database>;
25
+ tokenManager: TokenManager;
26
+ rbac: RbacEnforcer;
27
+ }
28
+ type AdminEnv = {
29
+ Variables: {
30
+ role: Role;
31
+ userId: string;
32
+ };
33
+ };
34
+ export declare function createAdminScheduledJobsRoutes(deps: AdminScheduledJobsRoutesDeps): Hono<AdminEnv>;
35
+ export {};
36
+ //# sourceMappingURL=admin-scheduled-jobs.d.ts.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Admin API routes for webhook source management.
3
+ *
4
+ * Provides CRUD endpoints for managing webhook sources (GitHub Apps, etc.)
5
+ * through the admin API. Source secrets (private keys, webhook secrets) are
6
+ * stored via PgSecretStore and never exposed in list/get responses.
7
+ *
8
+ * All routes are mounted under /api/v1/admin/sources and protected by
9
+ * the admin auth middleware in admin.ts.
10
+ */
11
+ import { Hono } from 'hono';
12
+ import type { SourceStore } from '../sources/source-store.js';
13
+ interface SourceRouteDeps {
14
+ sourceStore: SourceStore;
15
+ }
16
+ export declare function createSourceRoutes(deps: SourceRouteDeps): Hono;
17
+ export {};
18
+ //# sourceMappingURL=admin-sources.d.ts.map
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Admin API routes for secrets management.
3
+ *
4
+ * Provides CRUD endpoints for contexts, secrets, tokens, audit log queries,
5
+ * and key rotation. All routes are protected by Bearer token authentication
6
+ * and RBAC permission checks.
7
+ *
8
+ * Secret values are write-only -- there is deliberately no "get secret value"
9
+ * endpoint. Values are only read during dispatch resolution.
10
+ */
11
+ import { Hono } from 'hono';
12
+ import type { TokenManager } from '../secrets/token-manager.js';
13
+ import type { RbacEnforcer, Role } from '../secrets/rbac.js';
14
+ import type { PgSecretStore } from '../secrets/pg-secret-store.js';
15
+ import type { AuditLogger } from '../secrets/audit-logger.js';
16
+ import type { AgentTokenStore } from '../agent/token-store.js';
17
+ import type { AgentRegistry } from '../agent/registry.js';
18
+ import type { SharedConfigStore } from '../config/shared-store.js';
19
+ import type { SourceStore } from '../sources/source-store.js';
20
+ import type { JoinTokenManager } from '../cluster/join-token.js';
21
+ import type { BackendRegistry } from '../secrets/backend-registry.js';
22
+ import type { BackendHealthChecker } from '../secrets/backend-health.js';
23
+ import type { BackendSyncManager } from '@kici-dev/engine';
24
+ import type { Kysely } from 'kysely';
25
+ import type pg from 'pg';
26
+ /**
27
+ * Dependencies for admin API routes.
28
+ */
29
+ export interface AdminRouteDeps {
30
+ tokenManager: TokenManager;
31
+ rbac: RbacEnforcer;
32
+ secretStore: PgSecretStore;
33
+ auditLogger: AuditLogger;
34
+ /** Optional -- for agent token CRUD endpoints. */
35
+ tokenStore?: AgentTokenStore;
36
+ /**
37
+ * Optional -- for kicking in-flight agent WS on token revoke.
38
+ *
39
+ * The DELETE /api/v1/agent-tokens/:id route calls
40
+ * `agentRegistry.disconnectByTokenId(id)` synchronously after
41
+ * `tokenStore.revoke(id)` so a revoked token loses data-plane
42
+ * authority immediately instead of staying live until the agent
43
+ * itself disconnects. Mirrors the fix on the orch->Platform
44
+ * leg (`disconnectByKeyId`).
45
+ *
46
+ * When unset, the DELETE route returns 503 — agent-token revoke is
47
+ * meaningless without the kick path because a revoked token would
48
+ * still grant in-flight authority for hours-to-days.
49
+ */
50
+ agentRegistry?: AgentRegistry;
51
+ /**
52
+ * Optional -- fan out the revoke to every peer in a clustered orchestrator.
53
+ *
54
+ * The DELETE /api/v1/agent-tokens/:id route calls this after the synchronous
55
+ * local kick, so every peer's `AgentRegistry.disconnectByTokenId(tokenId)`
56
+ * runs locally and closes its own in-flight WS for the same token. Mirrors
57
+ *'s Valkey fan-out pattern on the orch->Platform leg.
58
+ *
59
+ * Unset on standalone deployments (no peer fabric) -- the local kick alone
60
+ * is sufficient there.
61
+ */
62
+ broadcastAgentTokenRevoke?: (tokenId: string) => void;
63
+ /** Optional -- for source management endpoints. */
64
+ sourceStore?: SourceStore;
65
+ /** Optional -- for DB migration endpoints. */
66
+ db?: Kysely<any>;
67
+ /** Optional -- for DB migration endpoints. */
68
+ pool?: pg.Pool;
69
+ /** Optional -- for cluster join token creation. */
70
+ joinTokenManager?: JoinTokenManager;
71
+ /** Optional -- for secret backend management endpoints. */
72
+ backendRegistry?: BackendRegistry;
73
+ /** Optional -- for secret backend health checking. */
74
+ backendHealthChecker?: BackendHealthChecker;
75
+ /** Optional -- for secret backend scope sync. */
76
+ backendSyncManager?: BackendSyncManager;
77
+ /**
78
+ * Optional -- for `POST /api/v1/admin/rotate-key`.
79
+ *
80
+ * When set, `rotate-key` re-encrypts `config_versions` alongside
81
+ * `scoped_secrets` in two sequential transactions. When unset (e.g. a
82
+ * secret-store-only admin deployment), config rotation is skipped and the
83
+ * response reports `reEncryptedConfigs: 0`.
84
+ */
85
+ sharedStore?: SharedConfigStore;
86
+ }
87
+ /** Hono env type for admin routes with context variables. */
88
+ type AdminEnv = {
89
+ Variables: {
90
+ role: Role;
91
+ userId: string;
92
+ routingKey: string | null;
93
+ };
94
+ };
95
+ /**
96
+ * Create admin API routes with Bearer token authentication and RBAC.
97
+ *
98
+ * @param deps - Admin route dependencies (token manager, RBAC, secret store, audit logger, etc.)
99
+ * @returns Hono app with admin routes mounted at /api/v1/admin/*
100
+ */
101
+ export declare function createAdminRoutes(deps: AdminRouteDeps): Hono<AdminEnv>;
102
+ export {};
103
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Orchestrator capability manifest exposed to REST clients (the CLI).
3
+ *
4
+ * The `/capabilities` endpoint returns a small versioned manifest the CLI can
5
+ * read on demand to format actionable errors when it detects a feature gap
6
+ * (e.g. `kici status --logs` against an orchestrator that lacks the logs
7
+ * endpoint). See `docs/architecture/coordinator-worker.md` for the minimum-
8
+ * version semantics this mirrors for the WS connections.
9
+ *
10
+ * Public (no auth) — same security posture as `/health`, which already exposes
11
+ * the orchestrator's version. Version info must be reachable without a token
12
+ * so the CLI can fetch it even when authenticated calls fail with 404/401.
13
+ */
14
+ import { Hono } from 'hono';
15
+ export interface CapabilitiesManifest {
16
+ /** Orchestrator package version (injected at build time). */
17
+ orchestratorVersion: string;
18
+ /** Protocol version the orchestrator speaks. */
19
+ protocolVersion: number;
20
+ /** Minimum protocol version the orchestrator accepts from peers/clients. */
21
+ minProtocolVersion: number;
22
+ }
23
+ export declare function createCapabilitiesRoutes(): Hono;
24
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Diagnostic health check HTTP endpoint.
3
+ *
4
+ * Provides GET /admin/diagnose for monitoring system integration.
5
+ * Returns structured JSON with per-check results and overall status.
6
+ */
7
+ import { Hono } from 'hono';
8
+ import type { DiagnosticDeps } from '../diagnostics/types.js';
9
+ /**
10
+ * Create diagnostic routes.
11
+ *
12
+ * @param deps - Dependencies for diagnostic checks
13
+ * @returns Hono app with /admin/diagnose endpoint
14
+ */
15
+ export declare function createDiagnosticsRoutes(deps: DiagnosticDeps): Hono;
16
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1,20 @@
1
+ import type { Kysely } from 'kysely';
2
+ import type { Database } from '../db/types.js';
3
+ export interface HealthRoutesDeps {
4
+ /** Optional DB instance for readiness checks */
5
+ db?: Kysely<Database>;
6
+ }
7
+ /**
8
+ * Create orchestrator health routes with database readiness check.
9
+ *
10
+ * Delegates to the shared health route helper, providing
11
+ * a database connectivity check as the readiness probe.
12
+ *
13
+ * - GET /health - Liveness probe (always 200)
14
+ * - GET /ready - Readiness probe (checks DB if provided)
15
+ *
16
+ * @param deps - Dependencies (optional database for readiness)
17
+ * @returns Hono app with health routes
18
+ */
19
+ export declare function createHealthRoutes(deps?: HealthRoutesDeps): import("hono").Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
20
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1,41 @@
1
+ /**
2
+ * REST endpoints for CLI-initiated test runs.
3
+ *
4
+ * POST /api/v1/test/trigger - Trigger a test run with a fixture event
5
+ * GET /api/v1/test/runs/:runId - Get status of a test run
6
+ * GET /api/v1/test/runs/:runId/logs - Get logs for a test run
7
+ * POST /api/v1/test/cancel - Cancel a running test run
8
+ *
9
+ * All endpoints require Bearer token authentication via the admin token system.
10
+ * The test trigger injects a synthetic event into the existing pipeline,
11
+ * reusing trigger matching and job dispatch.
12
+ */
13
+ import { Hono } from 'hono';
14
+ import { type TestPipelineDeps } from '../pipeline/test-pipeline.js';
15
+ import type { AppConfig } from '../config.js';
16
+ import type { TokenManager } from '../secrets/token-manager.js';
17
+ import type { Kysely } from 'kysely';
18
+ import type { Database } from '../db/types.js';
19
+ /** Hono env type for test trigger routes with context variables. */
20
+ type TestTriggerEnv = {
21
+ Variables: {
22
+ userId: string;
23
+ routingKey: string | null;
24
+ };
25
+ };
26
+ /**
27
+ * Dependencies for test trigger routes.
28
+ * Extends TestPipelineDeps with additional route-specific deps.
29
+ */
30
+ export interface TestTriggerRouteDeps extends TestPipelineDeps {
31
+ config: AppConfig;
32
+ tokenManager?: TokenManager;
33
+ db: Kysely<Database>;
34
+ cacheStorage?: import('../storage/types.js').CacheStorage;
35
+ }
36
+ /**
37
+ * Create Hono routes for test trigger and cancel endpoints.
38
+ */
39
+ export declare function createTestTriggerRoutes(deps: TestTriggerRouteDeps): Hono<TestTriggerEnv>;
40
+ export {};
41
+ //# sourceMappingURL=test-trigger.d.ts.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * REST endpoints for test run upload management.
3
+ *
4
+ * POST /api/v1/uploads/init - Initialize an upload (returns signed URL + public key)
5
+ * GET /api/v1/uploads/:uploadId/status - Check upload status
6
+ *
7
+ * Uploads support the repo state transfer mechanism: CLI uploads an encrypted
8
+ * tarball of changed files to S3 via a pre-signed URL, then references the
9
+ * upload ID in the test trigger request.
10
+ */
11
+ import { Hono } from 'hono';
12
+ import type { AppConfig } from '../config.js';
13
+ import type { TokenManager } from '../secrets/token-manager.js';
14
+ import type { Kysely } from 'kysely';
15
+ import type { Database } from '../db/types.js';
16
+ import type { CacheStorage } from '../storage/types.js';
17
+ /**
18
+ * Dependencies for upload routes.
19
+ */
20
+ export interface UploadRouteDeps {
21
+ config: AppConfig;
22
+ db: Kysely<Database>;
23
+ tokenManager?: TokenManager;
24
+ cacheStorage?: CacheStorage;
25
+ }
26
+ /** Hono env type for upload routes with context variables. */
27
+ type UploadEnv = {
28
+ Variables: {
29
+ userId: string;
30
+ routingKey: string | null;
31
+ };
32
+ };
33
+ /**
34
+ * Create Hono routes for upload management endpoints.
35
+ */
36
+ export declare function createUploadRoutes(deps: UploadRouteDeps): Hono<UploadEnv>;
37
+ export {};
38
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { Hono } from 'hono';
2
+ import type { DedupCache } from '../webhook/dedup.js';
3
+ import type { WebhookInfo } from '../webhook/handler.js';
4
+ import type { GenericSourceManager } from '../webhook/generic-sources.js';
5
+ /**
6
+ * Dependencies for generic webhook routes.
7
+ */
8
+ export interface GenericWebhookRoutesDeps {
9
+ /** Generic source manager for source lookup and validation */
10
+ sourceManager: GenericSourceManager;
11
+ /** Delivery ID deduplication cache */
12
+ dedup: DedupCache;
13
+ /** Processing callback -- connects to the trigger matching pipeline */
14
+ onWebhook: (info: WebhookInfo) => Promise<void>;
15
+ }
16
+ /**
17
+ * Create generic webhook routes for non-GitHub webhook ingestion.
18
+ *
19
+ * Endpoint: POST /webhook/:orgId/generic/:sourceId
20
+ *
21
+ * Handler flow:
22
+ * 1. Read raw body
23
+ * 2. Look up source from GenericSourceManager
24
+ * 3. Check payload size
25
+ * 4. Rate limit check
26
+ * 5. Verify signature using per-source verification config
27
+ * 6. Extract idempotency key, check dedup
28
+ * 7. Extract event type, check allowed events
29
+ * 8. Normalize and process through pipeline
30
+ * 9. Return response
31
+ *
32
+ * @param deps - Dependencies (source manager, dedup cache, processing callback)
33
+ * @returns Hono app with generic webhook routes
34
+ */
35
+ export declare function createGenericWebhookRoutes(deps: GenericWebhookRoutesDeps): Hono;
36
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Bare-metal scaler backend implementation.
3
+ *
4
+ * Manages ephemeral agent processes using child_process.spawn.
5
+ * Uses detached process groups for clean killing of entire process trees.
6
+ * All agents are single-use: destroyed after job completion.
7
+ */
8
+ import { type ToolRequirement } from '@kici-dev/shared';
9
+ import type { AgentTokenStore } from '../agent/token-store.js';
10
+ import type { ScalerBackend, ScalerEntry, ManagedAgent, LabelSetConfig, LogCapture, ResourceRequest, ScalerEventCallback, ValidationResult, EffectiveLimits } from './types.js';
11
+ export interface BareMetalScalerBackendOptions {
12
+ /** Human-readable name for this scaler */
13
+ name: string;
14
+ /** Label sets this backend can provision */
15
+ labelSets: LabelSetConfig[];
16
+ /** Maximum concurrent agents */
17
+ maxAgents: number;
18
+ /** Default resource limits applied when label set has none */
19
+ defaultResources?: ResourceRequest;
20
+ /** Token store for creating ephemeral agent auth tokens. Optional -- when undefined, no token is injected. */
21
+ tokenStore?: AgentTokenStore;
22
+ /** TTL for ephemeral agent tokens in ms. Default: 1 hour. */
23
+ tokenTtlMs?: number;
24
+ /** Agent roles for this scaler. undefined = all, [] = execution only. */
25
+ roles?: string[];
26
+ /**
27
+ * When true, wrap each spawned agent process in a transient systemd scope
28
+ * (`systemd-run --user --scope --slice=kici-scaler`) and translate the
29
+ * job's effective CPU / memory limits into `CPUQuota=` / `MemoryMax=`
30
+ * properties so the kernel cgroup actually enforces the limits. When
31
+ * false (the default), bare-metal stays its historical "advisory limits
32
+ * only" mode — limits drive the scaler's per-machine cap math but no
33
+ * cgroup is created.
34
+ *
35
+ * Linux-only. On macOS / Windows hosts the option is silently a no-op
36
+ * (`systemd-run` does not exist), with a one-time startup warning.
37
+ */
38
+ enforceCgroups?: boolean;
39
+ }
40
+ export declare class BareMetalScalerBackend implements ScalerBackend {
41
+ readonly type: "bare-metal";
42
+ readonly logsSource = "bare-metal";
43
+ readonly maxAgents: number;
44
+ private _labelSets;
45
+ private readonly name;
46
+ private readonly defaultResources?;
47
+ private readonly tokenStore?;
48
+ private readonly tokenTtlMs;
49
+ private readonly roles;
50
+ private readonly enforceCgroups;
51
+ /** Tracks all managed agent processes */
52
+ private readonly agents;
53
+ /** LogCapture instances for each managed agent (keyed by ManagedAgent.id) */
54
+ private readonly logCaptures;
55
+ constructor(options: BareMetalScalerBackendOptions);
56
+ private warnNetworkPolicy;
57
+ /**
58
+ * Declare required tools for a bare-metal scaler entry.
59
+ *
60
+ * - Every label set's `binaryPath` must be an executable file on disk.
61
+ * - If `KICI_SANDBOX=true` will be forwarded to spawned agents (either via
62
+ * the orchestrator's `KICI_AGENT_ENV_KICI_SANDBOX=true` env var or via a
63
+ * label set's `env.KICI_SANDBOX=true` in scalers.yaml), then `bwrap` must
64
+ * be available on PATH so the agent can actually wrap workflow runners.
65
+ *
66
+ * This check runs at orchestrator startup so misconfiguration fails
67
+ * fast with a clear error instead of crashing every job at dispatch
68
+ * time. On macOS and Windows (where bwrap does not exist) any attempt
69
+ * to enable KICI_SANDBOX will be rejected here.
70
+ */
71
+ static getRequiredTools(entry: ScalerEntry): ToolRequirement[];
72
+ get labelSets(): LabelSetConfig[];
73
+ getActiveCount(): number;
74
+ spawn(labelSet: string[], agentId: string, orchestratorUrl: string, onEvent?: ScalerEventCallback, effectiveLimits?: EffectiveLimits): Promise<ManagedAgent>;
75
+ getScalerContext(agentId: string): Record<string, unknown> | undefined;
76
+ destroy(managedId: string): Promise<void>;
77
+ /**
78
+ * Get the LogCapture for a managed agent (used by ScalerManager for log forwarding).
79
+ */
80
+ getLogCapture(managedId: string): LogCapture | undefined;
81
+ shutdownAll(): Promise<void>;
82
+ reload(labelSets: LabelSetConfig[]): ValidationResult;
83
+ /**
84
+ * Build the (command, args) tuple used to spawn an agent process.
85
+ *
86
+ * Two modes:
87
+ * - Direct: returns (binaryPath, []) — the historical bare-metal flow.
88
+ * Used when enforceCgroups is false, the host is non-Linux, or the
89
+ * resolved limits carry no positive cpus/memBytes.
90
+ * - systemd-run scope: returns ('systemd-run', [...]) wrapping the
91
+ * binary in a transient `--user --scope --slice=kici-scaler` cgroup
92
+ * with `CPUQuota=` / `MemoryMax=` properties translated from the
93
+ * effective limits. The scope name embeds `agentId` so each agent is
94
+ * a separately-named transient unit (and `systemctl --user status
95
+ * kici-agent-<agentId>.scope` works).
96
+ *
97
+ * `CPUQuota` is expressed as a percent (1.0 cpus = 100%). `MemoryMax`
98
+ * accepts a raw byte count.
99
+ */
100
+ private buildSpawnInvocation;
101
+ /**
102
+ * Wait for a process to exit within a timeout.
103
+ * Returns true if the process exited, false if timed out.
104
+ */
105
+ private waitForExit;
106
+ }
107
+ //# sourceMappingURL=bare-metal-backend.d.ts.map