@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,26 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Access log: one row per read or orchestrator-admin mutation attributable
4
+ * to an ActorPrincipal (dashboard user, api_key, service_account, platform
5
+ * operator break-glass, or system). Backs:
6
+ *
7
+ * - dashboard "Data access" tab (dashboard.access-log.list message)
8
+ * - orchestrator admin HTTP route GET /api/v1/admin/access-log
9
+ * - kici-admin `access-log` CLI subcommand
10
+ *
11
+ * Covers reads + orchestrator-admin mutations uniformly. `secret_audit_log`
12
+ * stays the source of truth for secret *mutation* events (kept separate for
13
+ * historical reasons and different retention expectations); access_log
14
+ * records secret *reveals* with full actor attribution.
15
+ *
16
+ * `source` distinguishes platform_proxy vs admin_http vs admin_cli entry
17
+ * points. `actor_meta` captures the variant-specific extras that don't fit
18
+ * in the flat (actor_type, actor_id) columns — ownerSub for api_key,
19
+ * reason for platform_operator.
20
+ *
21
+ * Retention is TTL-based via expires_at; packages/orchestrator/src/queue/
22
+ * cleanup.ts picks up the prune pass.
23
+ */
24
+ export declare function up(db: Kysely<any>): Promise<void>;
25
+ export declare function down(db: Kysely<any>): Promise<void>;
26
+ //# sourceMappingURL=003_access_log.d.ts.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Rename `dispatch_queue.bundle_url` / `bundle_hash` → `source_tar_url` /
3
+ * `source_tar_hash`.
4
+ *
5
+ * The cached build artifact changed from a Rolldown-bundled `.compiled.mjs`
6
+ * (keyed under `bundles/{contentHash}.js` in S3) to a raw `.kici/` source
7
+ * tarball (keyed under `source/{contentHash}.tar.gz`). The agent extracts it
8
+ * and imports the workflow via the shared oxc-transform ESM loader hook
9
+ * instead of running Rolldown at runtime.
10
+ *
11
+ * Pre-release rename: no data preservation needed. Any rows referencing the
12
+ * old bundle URLs will fail their contentHash lookup once the new SCHEMA_V4
13
+ * cache prefix lands, and the orchestrator will schedule a fresh build job —
14
+ * same as any other cache miss.
15
+ */
16
+ import type { Kysely } from 'kysely';
17
+ export declare function up(db: Kysely<unknown>): Promise<void>;
18
+ export declare function down(db: Kysely<unknown>): Promise<void>;
19
+ //# sourceMappingURL=004_rename_bundle_to_source.d.ts.map
@@ -0,0 +1,19 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Cold-store chunk counter table.
4
+ *
5
+ * Tracks per-(db, table, tenant) archived-chunk metadata so the
6
+ * `cold_store_chunks_total` Prometheus gauge and the
7
+ * `kici-admin cold-store list-chunks` CLI can report totals without
8
+ * issuing S3 LIST calls (expensive + rate-limited).
9
+ *
10
+ * Phase A creates the table empty; the cold-store archiver
11
+ * (Phase B+) updates it transactionally with every successful chunk
12
+ * write via `INSERT ... ON CONFLICT (db, table_name, tenant_id) DO
13
+ * UPDATE SET chunk_count = chunk_count + EXCLUDED.chunk_count, ...`.
14
+ *
15
+ * sections 5 and 8.
16
+ */
17
+ export declare function up(db: Kysely<unknown>): Promise<void>;
18
+ export declare function down(db: Kysely<unknown>): Promise<void>;
19
+ //# sourceMappingURL=005_cold_store_chunk_counter.d.ts.map
@@ -0,0 +1,38 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * `execution_runs` / `execution_jobs` / `execution_steps` cold-store
4
+ * schema additions.
5
+ *
6
+ * Phase C of the cold-storage archival system. See
7
+ *
8
+ * Each table gets `archived_at TIMESTAMPTZ NULL` and
9
+ * `archive_object_key TEXT NULL` (set inside the archive tx before the
10
+ * DELETE; survivors carry NULL — same pattern as Phase B's migration
11
+ * 004 for `run_events`).
12
+ *
13
+ * Tenant column denormalization: the orchestrator side partitions by
14
+ * `routing_key`, but only `execution_runs` carries the column today.
15
+ * `execution_jobs` and `execution_steps` reference the run by `run_id`
16
+ * and would otherwise need a 3-table JOIN at every archive cycle. We
17
+ * denormalize `routing_key` onto both tables and backfill from the
18
+ * existing run rows. Backfill is one-shot inside this migration. New
19
+ * inserts must populate the column going forward (enforced at the
20
+ * application layer in the same phase).
21
+ *
22
+ * The denormalized column is left NULLable for safety: if an insert
23
+ * site is missed in the rollout, the row still lands in PG; the
24
+ * cold-store adapter's `listEligiblePartitions` skips NULLs (no
25
+ * tenant ⇒ no archive). A follow-up migration may tighten to NOT NULL
26
+ * once we're confident every insert site is updated.
27
+ *
28
+ * Composite indexes added for the archiver's
29
+ * `listEligiblePartitions` discovery query
30
+ * (`GROUP BY routing_key, DATE(created_at)`):
31
+ *
32
+ * - `idx_execution_runs_routing_key_created (routing_key, created_at)`
33
+ * - `idx_execution_jobs_routing_key_created (routing_key, created_at)`
34
+ * - `idx_execution_steps_routing_key_created (routing_key, created_at)`
35
+ */
36
+ export declare function up(db: Kysely<unknown>): Promise<void>;
37
+ export declare function down(db: Kysely<unknown>): Promise<void>;
38
+ //# sourceMappingURL=006_runs_jobs_steps_archived_at.d.ts.map
@@ -0,0 +1,42 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * `secret_audit_log` and `access_log` cold-store schema additions, plus
4
+ * the removal of `access_log`'s `expires_at`-based hard delete.
5
+ *
6
+ * Phase D of the cold-storage archival system. See
7
+ *
8
+ * Both tables get the same `archived_at TIMESTAMPTZ NULL` /
9
+ * `archive_object_key TEXT NULL` pair that Phase B added to `run_events`
10
+ * (`packages/platform/src/db/migrations/004_run_events_archived_at.ts`)
11
+ * and Phase C added to `execution_runs` / `execution_jobs` /
12
+ * `execution_steps` (`006_runs_jobs_steps_archived_at.ts`). Set inside
13
+ * the archive transaction before the DELETE; survivors carry NULL.
14
+ *
15
+ * `secret_audit_log` gets a composite
16
+ * `idx_secret_audit_log_routing_timestamp (routing_key, timestamp)` so
17
+ * the archiver's per-tenant scan can use a single index. The existing
18
+ * `idx_secret_audit_log_timestamp` is single-column and would force a
19
+ * filter step.
20
+ *
21
+ * `access_log` already has `access_log_org_created_idx (org_id,
22
+ * created_at DESC)`, which is sufficient for the per-tenant scan
23
+ * (range scans use either direction).
24
+ *
25
+ * Drops `access_log.expires_at` column and `access_log_expires_idx`.
26
+ * Until Phase D, `expires_at` powered a 90-day hard-delete sweep in
27
+ * `packages/orchestrator/src/audit/access-log.ts:cleanup` (called from
28
+ * `packages/orchestrator/src/queue/cleanup.ts:runCleanup` step 5). With
29
+ * cold-store, `access_log` rows older than 30 days are archived rather
30
+ * than deleted, so the TTL becomes effectively "forever". Keeping the
31
+ * column would mean either (a) double-evicting rows or (b) silently
32
+ * mismatching the new contract. Drop it.
33
+ *
34
+ * Per the project's "no backward compatibility (pre-release)" rule,
35
+ * `down()` recreates `expires_at` with a default of `now() + 90 days`
36
+ * — best effort; rows inserted between `up()` and a hypothetical
37
+ * `down()` would not have meaningful retention bounds. Acceptable for
38
+ * staging.
39
+ */
40
+ export declare function up(db: Kysely<unknown>): Promise<void>;
41
+ export declare function down(db: Kysely<unknown>): Promise<void>;
42
+ //# sourceMappingURL=007_audit_logs_archived_at.d.ts.map
@@ -0,0 +1,40 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * `event_log` cold-store schema additions plus removal of the
4
+ * `expires_at`-based 30-day hard delete.
5
+ *
6
+ * Phase E of the cold-storage archival system. See
7
+ * §10
8
+ * Phase E.
9
+ *
10
+ * Adds the same `archived_at TIMESTAMPTZ NULL` /
11
+ * `archive_object_key TEXT NULL` pair Phase D added on this side
12
+ * (`007_audit_logs_archived_at.ts`). Set inside the archive
13
+ * transaction before the DELETE; survivors carry NULL.
14
+ *
15
+ * Adds `idx_event_log_routing_received` on `(routing_key, received_at)`
16
+ * because the orchestrator-side cold-store partitions `event_log` by
17
+ * `routing_key` (NOT NULL on this table; no synthetic-tenant fallback
18
+ * is needed). The existing `event_log_org_received_idx` is keyed by
19
+ * `org_id`, fine for dashboard queries but not the per-tenant
20
+ * archiver scan.
21
+ *
22
+ * Drops `event_log.expires_at` and the matching
23
+ * `event_log_expires_at_idx` index. Until Phase E, `expires_at`
24
+ * powered the 30-day hard-delete sweep in
25
+ * `packages/orchestrator/src/webhook/event-log.ts:cleanup`, called
26
+ * from `packages/orchestrator/src/queue/cleanup.ts:runCleanup` step 4
27
+ * (which also deleted the per-row `payload_key` blob from object
28
+ * storage). With cold-store, rows older than 30 days are archived
29
+ * rather than deleted; the per-row `payload_key` blob is retained
30
+ * indefinitely so the dashboard delivery-detail page can still load
31
+ * the body for archived deliveries.
32
+ *
33
+ * Per the project's "no backward compatibility (pre-release)" rule,
34
+ * `down()` recreates `expires_at` with a default of `now() + 30 days`
35
+ * — best effort; rows inserted between `up()` and a hypothetical
36
+ * `down()` would not have meaningful retention bounds.
37
+ */
38
+ export declare function up(db: Kysely<unknown>): Promise<void>;
39
+ export declare function down(db: Kysely<unknown>): Promise<void>;
40
+ //# sourceMappingURL=008_event_log_archived_at.d.ts.map
@@ -0,0 +1,15 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Trigram (pg_trgm) index on access_log.error_message for the federated
4
+ * Activity page's full-text search (`q` parameter).
5
+ *
6
+ * Matches the Platform counterpart in `008_audit_log_trigram.ts` which
7
+ * indexes `audit_log.details::text`.
8
+ *
9
+ * Idempotent: `CREATE EXTENSION IF NOT EXISTS` and `CREATE INDEX IF NOT
10
+ * EXISTS` are both safe to re-run. No CONCURRENTLY because Kysely runs
11
+ * migrations inside a transaction; the lock is brief on a sampled table.
12
+ */
13
+ export declare function up(db: Kysely<unknown>): Promise<void>;
14
+ export declare function down(db: Kysely<unknown>): Promise<void>;
15
+ //# sourceMappingURL=009_access_log_trigram.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Cold-store chunk index — Phase 2 (cold-store purge).
4
+ *
5
+ * One row per archived chunk that the GC sweep can later purge from S3.
6
+ * Inserted inside the same transaction as `markArchivedAndDelete` so a
7
+ * chunk is either fully recorded (S3 + index + rollup + audit) or fully
8
+ * absent (no orphan rows).
9
+ *
10
+ * Schema notes:
11
+ *
12
+ * - `chunk_id` is the deterministic 16-hex chunk filename stem; primary
13
+ * key is `(db, table_name, chunk_id)` so the framework can `DELETE`
14
+ * without scanning. The `db` column matches `cold_store_chunk_counts`
15
+ * (always `'orchestrator'` here, included for shape parity with the
16
+ * Platform-side migration).
17
+ * - `bucket` is the S3 prefix segment (`'30d'` / `'180d'` / `'1y'` /
18
+ * `'2y'` / `'forever'`). Carried for `cold-store list-chunks` /
19
+ * `list-purgeable` filtering.
20
+ * - `max_cold_days` is the row-level retention horizon — TEXT to
21
+ * accommodate both numeric values and the literal `'forever'`. The
22
+ * GC sweep checks `max_cold_days != 'forever' AND now() > archived_at
23
+ * + (max_cold_days || ' days')::interval`.
24
+ * - `object_key` is the full S3 key of the data chunk; the GC sweep
25
+ * uses this to issue `DeleteObject` directly without recomputing the
26
+ * key from the prefix.
27
+ *
28
+ * Pre-Phase-2 chunks (v1 manifest) are NOT in this table — they live
29
+ * forever. Adapters that don't opt into per-bucket archival via
30
+ * `coldTtlDays` don't insert here either.
31
+ */
32
+ export declare function up(db: Kysely<unknown>): Promise<void>;
33
+ export declare function down(db: Kysely<unknown>): Promise<void>;
34
+ //# sourceMappingURL=010_cold_store_chunks.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Drop the `source_secrets_change_trigger` and the
4
+ * `notify_source_secrets_change()` plpgsql function.
5
+ *
6
+ * Both were used by the (now removed) `WebhookSecretManager` which
7
+ * subscribed via LISTEN/NOTIFY to detect changes to webhook secret rows in
8
+ * `scoped_secrets` and pushed them to the multi-tenant Platform via the
9
+ * `source.secrets` WS message. After the chunked-relay cutover the
10
+ * orchestrator never pushes secret material to Platform -- Platform asks
11
+ * the orchestrator to verify each inbound webhook on demand and the
12
+ * verifier reads secrets directly from `PgSecretStore` -- so the trigger
13
+ * is dead code and only emits NOTIFY traffic that nobody listens to.
14
+ *
15
+ * `down` re-creates the function + trigger as they were originally defined
16
+ * in `001_initial.ts`. They wake up no consumer until the `WebhookSecretManager`
17
+ * is restored, so this migration is safe to roll back.
18
+ */
19
+ export declare function up(db: Kysely<unknown>): Promise<void>;
20
+ export declare function down(db: Kysely<unknown>): Promise<void>;
21
+ //# sourceMappingURL=011_drop_source_secrets_notify.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Add a partial unique index on `peer_credentials (instance_id) WHERE
4
+ * revoked_at IS NULL` so two ACTIVE rows for the same `instance_id` become a
5
+ * database-level impossibility.
6
+ *
7
+ * Background: `PeerCredentialStore.save()` historically ran an `UPDATE …
8
+ * SET revoked_at = NOW()` followed by an `INSERT` without a transaction or
9
+ * unique constraint. When a joining peer fanned out N peer-clients in
10
+ * parallel (one per coordinator), each coordinator's `save()` could run its
11
+ * `UPDATE` before the others' `INSERT`s committed — both `UPDATE`s revoked
12
+ * nothing and both `INSERT`s succeeded, leaving 2+ ACTIVE rows for the same
13
+ * `instance_id`. The peer's local credential file then ended up holding a
14
+ * hash that a later concurrent `save()` had revoked, causing an endless
15
+ * "Peer HMAC proof invalid" loop. See
16
+ * for the
17
+ * full incident write-up (DB rows + log evidence from real staging deploys).
18
+ *
19
+ * The `up()` first dedupes any pre-existing duplicates (revoke all but the
20
+ * newest active row per `instance_id`) — required because earlier migrations
21
+ * predate the constraint and existing staging DBs already have the dupes.
22
+ *
23
+ * `down()` only drops the index; it does NOT undo the dedupe (there's no
24
+ * safe way to recreate revoked rows, and the dedupe is monotonic).
25
+ */
26
+ export declare function up(db: Kysely<unknown>): Promise<void>;
27
+ export declare function down(db: Kysely<unknown>): Promise<void>;
28
+ //# sourceMappingURL=012_peer_credentials_active_uniq.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Add `log_bytes BIGINT NOT NULL DEFAULT 0` columns to `execution_runs` and
4
+ * `execution_jobs` so the orchestrator can persist the per-job and per-run
5
+ * raw log byte totals reported by agents on terminal `step.status`.
6
+ *
7
+ * Used by the operator-side `kici_org_log_bytes` capacity-planning gauge on
8
+ * the Platform (Platform mirrors these columns via WS replication and runs
9
+ * the aggregation query — same DB-derived pattern as
10
+ * `kici_org_executions_count` and `kici_org_agent_minutes`).
11
+ *
12
+ * Default 0 keeps existing rows valid without a backfill: pre-existing runs
13
+ * predate this column and report as zero log-bytes, which is the correct
14
+ * operator-visibility value (we never had the agent telemetry to compute a
15
+ * real total for them).
16
+ *
17
+ * Idempotent (`ADD COLUMN IF NOT EXISTS`).
18
+ */
19
+ export declare function up(db: Kysely<unknown>): Promise<void>;
20
+ export declare function down(db: Kysely<unknown>): Promise<void>;
21
+ //# sourceMappingURL=013_execution_log_bytes.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Add lease + retry + DLQ columns to `kici_events` so the EventRouter can
4
+ * deliver events at-least-once with bounded retries and a visible
5
+ * dead-letter queue.
6
+ *
7
+ * Before this migration, EventRouter used `claimForProcessing` (UPDATE
8
+ * processed=true WHERE processed=false RETURNING *) and dispatched after
9
+ * the row was already marked processed. If `onEventMatched` threw, the
10
+ * event was silently lost. Same loss surface for cron fires, since
11
+ * `tryClaimFire` and `eventStore.write` were two separate transactions:
12
+ * a crash between them advanced `cron_last_fired.last_fired_at` without
13
+ * persisting the event row.
14
+ *
15
+ * After this migration:
16
+ * - `claimed_at`, `claimed_by`: lease-based claim. Replaces the
17
+ * "flip processed=true upfront" pattern. A lease is taken on dispatch,
18
+ * released on success (processed=true) or failure (cleared + retry scheduled).
19
+ * - `attempts`: incremented on each lease attempt. Enables bounded retry.
20
+ * - `last_error`: most recent dispatch failure message (truncated by
21
+ * application code to 4 KB).
22
+ * - `next_retry_at`: earliest moment the leader-only retry scanner should
23
+ * re-publish `pg_notify` for this event.
24
+ * - `dlq_at`, `dlq_reason`: terminal DLQ marker. Once `dlq_at IS NOT NULL`
25
+ * the row is no longer eligible for lease/retry. Surfaced in the
26
+ * dashboard admin DLQ page.
27
+ *
28
+ * Partial indexes keep these new lookups cheap without blowing up the index
29
+ * size on the hot path (most rows are processed=true and irrelevant to the
30
+ * scanner).
31
+ *
32
+ * Idempotent (`ADD COLUMN IF NOT EXISTS` + `CREATE INDEX IF NOT EXISTS`).
33
+ */
34
+ export declare function up(db: Kysely<unknown>): Promise<void>;
35
+ export declare function down(db: Kysely<unknown>): Promise<void>;
36
+ //# sourceMappingURL=014_kici_events_lease_retry.d.ts.map
@@ -0,0 +1,30 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Org-scope `org_settings` and qualify each glob entry by source.
4
+ *
5
+ * `org_settings` was keyed by `routing_key`, meaning each webhook
6
+ * source had its own independent global-workflow configuration. With multi-
7
+ * source orgs, the dashboard's per-org settings page only ever showed the
8
+ * first source it found and silently hid the rest.
9
+ *
10
+ * This migration:
11
+ *
12
+ * 1. Adds a `customer_id text` column.
13
+ * 2. Backfills `customer_id` from `sources` / `generic_webhook_sources` by
14
+ * `routing_key`. Rows whose `routing_key` cannot be resolved (orphans
15
+ * from deleted sources) are dropped — they were already unreachable.
16
+ * 3. Converts the three repo-list `text[]` columns to `jsonb` arrays of
17
+ * `{routingKey?: string, pattern: string}` entries. Each existing entry
18
+ * is qualified with its original `routing_key` so semantics are preserved
19
+ * verbatim — a glob that previously only saw events on `github:42` still
20
+ * only sees events on `github:42`.
21
+ * 4. Merges rows by `customer_id`. `global_workflows_enabled` collapses with
22
+ * logical OR; the three list columns concatenate.
23
+ * 5. Drops the old `routing_key` column and PK; new PK is `customer_id`.
24
+ *
25
+ * Idempotent: a re-run on an already-migrated DB sees `customer_id` exists
26
+ * and the list columns are already jsonb, so it is a no-op.
27
+ */
28
+ export declare function up(db: Kysely<unknown>): Promise<void>;
29
+ export declare function down(db: Kysely<unknown>): Promise<void>;
30
+ //# sourceMappingURL=015_org_settings_customer_scoped.d.ts.map
@@ -0,0 +1,15 @@
1
+ import { type Kysely } from 'kysely';
2
+ /**
3
+ * Add `org_settings.allow_http_npm_registries boolean NOT NULL DEFAULT false`.
4
+ *
5
+ * Operators flip this on a per-org basis to permit `http://` (non-HTTPS)
6
+ * registry URLs in workflow `registries:` declarations. By default only
7
+ * `https://` registries are accepted, with an automatic exemption for
8
+ * loopback / `*.local` / private link-local hosts so dev fixtures
9
+ * (Verdaccio at `http://verdaccio.local:4873`) keep working.
10
+ *
11
+ * Idempotent: a re-run on a DB that already has the column is a no-op.
12
+ */
13
+ export declare function up(db: Kysely<unknown>): Promise<void>;
14
+ export declare function down(db: Kysely<unknown>): Promise<void>;
15
+ //# sourceMappingURL=016_org_settings_allow_http_npm.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { type Kysely } from 'kysely';
2
+ export declare function up(db: Kysely<unknown>): Promise<void>;
3
+ export declare function down(db: Kysely<unknown>): Promise<void>;
4
+ //# sourceMappingURL=017_org_id_widen.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { type Kysely } from 'kysely';
2
+ export declare function up(db: Kysely<unknown>): Promise<void>;
3
+ export declare function down(db: Kysely<unknown>): Promise<void>;
4
+ //# sourceMappingURL=018_org_id_prefix_backfill.d.ts.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Auto-migrate module with PostgreSQL advisory lock for HA safety.
3
+ *
4
+ * Uses pg_advisory_lock to ensure only one orchestrator instance runs
5
+ * migrations at a time, preventing conflicts in multi-instance deployments.
6
+ */
7
+ import { type MigrationResult } from 'kysely/migration';
8
+ import type { Kysely } from 'kysely';
9
+ import type pg from 'pg';
10
+ interface MigrateOptions {
11
+ db: Kysely<any>;
12
+ pool: pg.Pool;
13
+ }
14
+ interface MigrationStatusEntry {
15
+ name: string;
16
+ status: 'applied' | 'pending';
17
+ appliedAt?: Date;
18
+ }
19
+ /**
20
+ * Run all pending migrations with an advisory lock for concurrency safety.
21
+ *
22
+ * Acquires pg_advisory_lock before migrating to prevent concurrent
23
+ * migration attempts from multiple orchestrator instances. The lock
24
+ * is always released in the finally block, even on error.
25
+ */
26
+ export declare function runMigrations(opts: MigrateOptions): Promise<MigrationResult[]>;
27
+ /**
28
+ * Get migration status (applied/pending) without running anything.
29
+ */
30
+ export declare function getMigrationStatus(opts: MigrateOptions): Promise<MigrationStatusEntry[]>;
31
+ export {};
32
+ //# sourceMappingURL=migrator.d.ts.map