@vibesdotdev/infra-core 0.0.2 → 1.0.0-rc.11

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 (331) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +28 -1
  3. package/dist/bootstrap/seed.descriptor.d.ts +1 -1
  4. package/dist/bootstrap/seed.descriptor.d.ts.map +1 -1
  5. package/dist/bootstrap/seed.descriptor.js +1 -1
  6. package/dist/bootstrap/seed.descriptor.js.map +1 -1
  7. package/dist/bootstrap/seed.impl-shape.d.ts +1 -1
  8. package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -1
  9. package/dist/bootstrap/seed.kind.d.ts +1 -3
  10. package/dist/bootstrap/seed.kind.d.ts.map +1 -1
  11. package/dist/bootstrap/seed.kind.js +17 -4
  12. package/dist/bootstrap/seed.kind.js.map +1 -1
  13. package/dist/bootstrap/seed.runner.d.ts +9 -2
  14. package/dist/bootstrap/seed.runner.d.ts.map +1 -1
  15. package/dist/bootstrap/seed.runner.js +37 -18
  16. package/dist/bootstrap/seed.runner.js.map +1 -1
  17. package/dist/capped-id.d.ts +19 -0
  18. package/dist/capped-id.d.ts.map +1 -0
  19. package/dist/capped-id.js +64 -0
  20. package/dist/capped-id.js.map +1 -0
  21. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts +23 -0
  22. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts.map +1 -0
  23. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js +33 -0
  24. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js.map +1 -0
  25. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts +24 -0
  26. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts.map +1 -0
  27. package/dist/cli/generate/artifact/artifact.cli-command.impl.js +73 -0
  28. package/dist/cli/generate/artifact/artifact.cli-command.impl.js.map +1 -0
  29. package/dist/cli/generate/context.d.ts +17 -0
  30. package/dist/cli/generate/context.d.ts.map +1 -0
  31. package/dist/cli/generate/context.js +24 -0
  32. package/dist/cli/generate/context.js.map +1 -0
  33. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts +30 -0
  34. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts.map +1 -0
  35. package/dist/cli/generate/generate/generate.cli-command.descriptor.js +25 -0
  36. package/dist/cli/generate/generate/generate.cli-command.descriptor.js.map +1 -0
  37. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts +25 -0
  38. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts.map +1 -0
  39. package/dist/cli/generate/generate/generate.cli-command.impl.js +64 -0
  40. package/dist/cli/generate/generate/generate.cli-command.impl.js.map +1 -0
  41. package/dist/cli/generate/generate-core.d.ts +51 -0
  42. package/dist/cli/generate/generate-core.d.ts.map +1 -0
  43. package/dist/cli/generate/generate-core.js +172 -0
  44. package/dist/cli/generate/generate-core.js.map +1 -0
  45. package/dist/cli/generate/index.d.ts +5 -0
  46. package/dist/cli/generate/index.d.ts.map +1 -0
  47. package/dist/cli/generate/index.js +5 -0
  48. package/dist/cli/generate/index.js.map +1 -0
  49. package/dist/credentials/resolve.d.ts +82 -22
  50. package/dist/credentials/resolve.d.ts.map +1 -1
  51. package/dist/credentials/resolve.js +251 -77
  52. package/dist/credentials/resolve.js.map +1 -1
  53. package/dist/deployment-budget.d.ts +319 -0
  54. package/dist/deployment-budget.d.ts.map +1 -0
  55. package/dist/deployment-budget.js +660 -0
  56. package/dist/deployment-budget.js.map +1 -0
  57. package/dist/deployment-environment.d.ts +30 -0
  58. package/dist/deployment-environment.d.ts.map +1 -0
  59. package/dist/deployment-environment.js +53 -0
  60. package/dist/deployment-environment.js.map +1 -0
  61. package/dist/deployment-graph.d.ts +185 -0
  62. package/dist/deployment-graph.d.ts.map +1 -0
  63. package/dist/deployment-graph.js +705 -0
  64. package/dist/deployment-graph.js.map +1 -0
  65. package/dist/deployment.d.ts +25 -4
  66. package/dist/deployment.d.ts.map +1 -1
  67. package/dist/deployment.js +105 -0
  68. package/dist/deployment.js.map +1 -1
  69. package/dist/doks/cloud/base.d.ts +49 -0
  70. package/dist/doks/cloud/base.d.ts.map +1 -0
  71. package/dist/doks/cloud/base.js +138 -0
  72. package/dist/doks/cloud/base.js.map +1 -0
  73. package/dist/doks/cloud/factory.d.ts +18 -0
  74. package/dist/doks/cloud/factory.d.ts.map +1 -0
  75. package/dist/doks/cloud/factory.js +22 -0
  76. package/dist/doks/cloud/factory.js.map +1 -0
  77. package/dist/doks/cloud/index.d.ts +5 -0
  78. package/dist/doks/cloud/index.d.ts.map +1 -0
  79. package/dist/doks/cloud/index.js +4 -0
  80. package/dist/doks/cloud/index.js.map +1 -0
  81. package/dist/doks/types.d.ts +95 -0
  82. package/dist/doks/types.d.ts.map +1 -0
  83. package/dist/doks/types.js +14 -0
  84. package/dist/doks/types.js.map +1 -0
  85. package/dist/generate/index.d.ts +29 -0
  86. package/dist/generate/index.d.ts.map +1 -0
  87. package/dist/generate/index.js +28 -0
  88. package/dist/generate/index.js.map +1 -0
  89. package/dist/generate/infra-generate.plugin.d.ts +3 -0
  90. package/dist/generate/infra-generate.plugin.d.ts.map +1 -0
  91. package/dist/generate/infra-generate.plugin.js +23 -0
  92. package/dist/generate/infra-generate.plugin.js.map +1 -0
  93. package/dist/generate/plugin.d.ts +2 -0
  94. package/dist/generate/plugin.d.ts.map +1 -0
  95. package/dist/generate/plugin.js +2 -0
  96. package/dist/generate/plugin.js.map +1 -0
  97. package/dist/heartbeat/cron-heartbeat.d.ts +97 -0
  98. package/dist/heartbeat/cron-heartbeat.d.ts.map +1 -0
  99. package/dist/heartbeat/cron-heartbeat.js +200 -0
  100. package/dist/heartbeat/cron-heartbeat.js.map +1 -0
  101. package/dist/index.d.ts +37 -22
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +29 -14
  104. package/dist/index.js.map +1 -1
  105. package/dist/infra.plugin.d.ts +1 -1
  106. package/dist/infra.plugin.d.ts.map +1 -1
  107. package/dist/infra.plugin.js +64 -12
  108. package/dist/infra.plugin.js.map +1 -1
  109. package/dist/kinds/alerts.kind.d.ts +64 -25
  110. package/dist/kinds/alerts.kind.d.ts.map +1 -1
  111. package/dist/kinds/alerts.kind.js +43 -16
  112. package/dist/kinds/alerts.kind.js.map +1 -1
  113. package/dist/kinds/artifact.kind.d.ts +58 -10
  114. package/dist/kinds/artifact.kind.d.ts.map +1 -1
  115. package/dist/kinds/artifact.kind.js +26 -9
  116. package/dist/kinds/artifact.kind.js.map +1 -1
  117. package/dist/kinds/billing.kind.d.ts +88 -0
  118. package/dist/kinds/billing.kind.d.ts.map +1 -0
  119. package/dist/kinds/billing.kind.js +48 -0
  120. package/dist/kinds/billing.kind.js.map +1 -0
  121. package/dist/kinds/build-job.kind.d.ts +383 -0
  122. package/dist/kinds/build-job.kind.d.ts.map +1 -0
  123. package/dist/kinds/build-job.kind.js +218 -0
  124. package/dist/kinds/build-job.kind.js.map +1 -0
  125. package/dist/kinds/cache-byte-store.d.ts +23 -0
  126. package/dist/kinds/cache-byte-store.d.ts.map +1 -0
  127. package/dist/kinds/cache-byte-store.js +9 -0
  128. package/dist/kinds/cache-byte-store.js.map +1 -0
  129. package/dist/kinds/cache.kind.d.ts +38 -94
  130. package/dist/kinds/cache.kind.d.ts.map +1 -1
  131. package/dist/kinds/cache.kind.js +39 -50
  132. package/dist/kinds/cache.kind.js.map +1 -1
  133. package/dist/kinds/cluster.kind.d.ts +154 -0
  134. package/dist/kinds/cluster.kind.d.ts.map +1 -0
  135. package/dist/kinds/cluster.kind.js +99 -0
  136. package/dist/kinds/cluster.kind.js.map +1 -0
  137. package/dist/kinds/compute-source.kind.d.ts +155 -0
  138. package/dist/kinds/compute-source.kind.d.ts.map +1 -0
  139. package/dist/kinds/compute-source.kind.js +158 -0
  140. package/dist/kinds/compute-source.kind.js.map +1 -0
  141. package/dist/kinds/container-registry.kind.d.ts +62 -0
  142. package/dist/kinds/container-registry.kind.d.ts.map +1 -0
  143. package/dist/kinds/container-registry.kind.js +47 -0
  144. package/dist/kinds/container-registry.kind.js.map +1 -0
  145. package/dist/kinds/database-migrator.kind.d.ts +6 -0
  146. package/dist/kinds/database-migrator.kind.d.ts.map +1 -0
  147. package/dist/kinds/database-migrator.kind.js +28 -0
  148. package/dist/kinds/database-migrator.kind.js.map +1 -0
  149. package/dist/kinds/database.kind.d.ts +114 -93
  150. package/dist/kinds/database.kind.d.ts.map +1 -1
  151. package/dist/kinds/database.kind.js +93 -54
  152. package/dist/kinds/database.kind.js.map +1 -1
  153. package/dist/kinds/deployment-provider.kind.d.ts +5 -0
  154. package/dist/kinds/deployment-provider.kind.d.ts.map +1 -0
  155. package/dist/kinds/deployment-provider.kind.js +11 -0
  156. package/dist/kinds/deployment-provider.kind.js.map +1 -0
  157. package/dist/kinds/discovery.d.ts +5 -12
  158. package/dist/kinds/discovery.d.ts.map +1 -1
  159. package/dist/kinds/discovery.js +5 -17
  160. package/dist/kinds/discovery.js.map +1 -1
  161. package/dist/kinds/dns.kind.d.ts +162 -0
  162. package/dist/kinds/dns.kind.d.ts.map +1 -0
  163. package/dist/kinds/dns.kind.js +54 -0
  164. package/dist/kinds/dns.kind.js.map +1 -0
  165. package/dist/kinds/drift.kind.d.ts +115 -0
  166. package/dist/kinds/drift.kind.d.ts.map +1 -0
  167. package/dist/kinds/drift.kind.js +60 -0
  168. package/dist/kinds/drift.kind.js.map +1 -0
  169. package/dist/kinds/edge-hostname.kind.d.ts +124 -0
  170. package/dist/kinds/edge-hostname.kind.d.ts.map +1 -0
  171. package/dist/kinds/edge-hostname.kind.js +87 -0
  172. package/dist/kinds/edge-hostname.kind.js.map +1 -0
  173. package/dist/kinds/edge-tls.kind.d.ts +194 -0
  174. package/dist/kinds/edge-tls.kind.d.ts.map +1 -0
  175. package/dist/kinds/edge-tls.kind.js +58 -0
  176. package/dist/kinds/edge-tls.kind.js.map +1 -0
  177. package/dist/kinds/firewall.kind.d.ts +92 -0
  178. package/dist/kinds/firewall.kind.d.ts.map +1 -0
  179. package/dist/kinds/firewall.kind.js +59 -0
  180. package/dist/kinds/firewall.kind.js.map +1 -0
  181. package/dist/kinds/git-hosting.kind.d.ts +36 -38
  182. package/dist/kinds/git-hosting.kind.d.ts.map +1 -1
  183. package/dist/kinds/git-hosting.kind.js +21 -32
  184. package/dist/kinds/git-hosting.kind.js.map +1 -1
  185. package/dist/kinds/index.d.ts +41 -15
  186. package/dist/kinds/index.d.ts.map +1 -1
  187. package/dist/kinds/index.js +40 -14
  188. package/dist/kinds/index.js.map +1 -1
  189. package/dist/kinds/inventory.kind.d.ts +245 -0
  190. package/dist/kinds/inventory.kind.d.ts.map +1 -0
  191. package/dist/kinds/inventory.kind.js +243 -0
  192. package/dist/kinds/inventory.kind.js.map +1 -0
  193. package/dist/kinds/load-balancer.kind.d.ts +135 -0
  194. package/dist/kinds/load-balancer.kind.d.ts.map +1 -0
  195. package/dist/kinds/load-balancer.kind.js +71 -0
  196. package/dist/kinds/load-balancer.kind.js.map +1 -0
  197. package/dist/kinds/logs.kind.d.ts +74 -3
  198. package/dist/kinds/logs.kind.d.ts.map +1 -1
  199. package/dist/kinds/logs.kind.js +26 -17
  200. package/dist/kinds/logs.kind.js.map +1 -1
  201. package/dist/kinds/nfs.kind.d.ts +67 -0
  202. package/dist/kinds/nfs.kind.d.ts.map +1 -0
  203. package/dist/kinds/nfs.kind.js +45 -0
  204. package/dist/kinds/nfs.kind.js.map +1 -0
  205. package/dist/kinds/node-pool.kind.d.ts +134 -0
  206. package/dist/kinds/node-pool.kind.d.ts.map +1 -0
  207. package/dist/kinds/node-pool.kind.js +88 -0
  208. package/dist/kinds/node-pool.kind.js.map +1 -0
  209. package/dist/kinds/object-storage.kind.d.ts +50 -24
  210. package/dist/kinds/object-storage.kind.d.ts.map +1 -1
  211. package/dist/kinds/object-storage.kind.js +40 -23
  212. package/dist/kinds/object-storage.kind.js.map +1 -1
  213. package/dist/kinds/observability.kind.d.ts +104 -6
  214. package/dist/kinds/observability.kind.d.ts.map +1 -1
  215. package/dist/kinds/observability.kind.js +67 -9
  216. package/dist/kinds/observability.kind.js.map +1 -1
  217. package/dist/kinds/package-registry.kind.d.ts +139 -33
  218. package/dist/kinds/package-registry.kind.d.ts.map +1 -1
  219. package/dist/kinds/package-registry.kind.js +55 -25
  220. package/dist/kinds/package-registry.kind.js.map +1 -1
  221. package/dist/kinds/queue.kind.d.ts +67 -63
  222. package/dist/kinds/queue.kind.d.ts.map +1 -1
  223. package/dist/kinds/queue.kind.js +55 -33
  224. package/dist/kinds/queue.kind.js.map +1 -1
  225. package/dist/kinds/read-descriptor.d.ts +15 -0
  226. package/dist/kinds/read-descriptor.d.ts.map +1 -0
  227. package/dist/kinds/read-descriptor.js +11 -0
  228. package/dist/kinds/read-descriptor.js.map +1 -0
  229. package/dist/kinds/rum.kind.d.ts +36 -6
  230. package/dist/kinds/rum.kind.d.ts.map +1 -1
  231. package/dist/kinds/rum.kind.js +6 -7
  232. package/dist/kinds/rum.kind.js.map +1 -1
  233. package/dist/kinds/sandbox.kind.d.ts +136 -40
  234. package/dist/kinds/sandbox.kind.d.ts.map +1 -1
  235. package/dist/kinds/sandbox.kind.js +82 -43
  236. package/dist/kinds/sandbox.kind.js.map +1 -1
  237. package/dist/kinds/select-compute-source.d.ts +72 -0
  238. package/dist/kinds/select-compute-source.d.ts.map +1 -0
  239. package/dist/kinds/select-compute-source.js +170 -0
  240. package/dist/kinds/select-compute-source.js.map +1 -0
  241. package/dist/kinds/service-release.kind.d.ts +771 -0
  242. package/dist/kinds/service-release.kind.d.ts.map +1 -0
  243. package/dist/kinds/service-release.kind.js +676 -0
  244. package/dist/kinds/service-release.kind.js.map +1 -0
  245. package/dist/kinds/spend-guard.kind.d.ts +41 -0
  246. package/dist/kinds/spend-guard.kind.d.ts.map +1 -0
  247. package/dist/kinds/spend-guard.kind.js +140 -0
  248. package/dist/kinds/spend-guard.kind.js.map +1 -0
  249. package/dist/kinds/utilization.kind.d.ts +88 -0
  250. package/dist/kinds/utilization.kind.d.ts.map +1 -0
  251. package/dist/kinds/utilization.kind.js +62 -0
  252. package/dist/kinds/utilization.kind.js.map +1 -0
  253. package/dist/kinds/volume.kind.d.ts +54 -0
  254. package/dist/kinds/volume.kind.d.ts.map +1 -0
  255. package/dist/kinds/volume.kind.js +39 -0
  256. package/dist/kinds/volume.kind.js.map +1 -0
  257. package/dist/kinds/vpc.kind.d.ts +61 -0
  258. package/dist/kinds/vpc.kind.d.ts.map +1 -0
  259. package/dist/kinds/vpc.kind.js +51 -0
  260. package/dist/kinds/vpc.kind.js.map +1 -0
  261. package/dist/kinds/web-app.kind.d.ts +118 -45
  262. package/dist/kinds/web-app.kind.d.ts.map +1 -1
  263. package/dist/kinds/web-app.kind.js +69 -42
  264. package/dist/kinds/web-app.kind.js.map +1 -1
  265. package/dist/kinds/worker.kind.d.ts +129 -188
  266. package/dist/kinds/worker.kind.d.ts.map +1 -1
  267. package/dist/kinds/worker.kind.js +45 -123
  268. package/dist/kinds/worker.kind.js.map +1 -1
  269. package/dist/schemas/database-migration.d.ts +173 -0
  270. package/dist/schemas/database-migration.d.ts.map +1 -0
  271. package/dist/schemas/database-migration.js +88 -0
  272. package/dist/schemas/database-migration.js.map +1 -0
  273. package/dist/schemas/deployment-environment.d.ts +11 -0
  274. package/dist/schemas/deployment-environment.d.ts.map +1 -0
  275. package/dist/schemas/deployment-environment.js +9 -0
  276. package/dist/schemas/deployment-environment.js.map +1 -0
  277. package/dist/schemas/deployment-provider.d.ts +383 -0
  278. package/dist/schemas/deployment-provider.d.ts.map +1 -0
  279. package/dist/schemas/deployment-provider.js +211 -0
  280. package/dist/schemas/deployment-provider.js.map +1 -0
  281. package/dist/schemas/log-stream.d.ts +27 -0
  282. package/dist/schemas/log-stream.d.ts.map +1 -0
  283. package/dist/schemas/log-stream.js +31 -0
  284. package/dist/schemas/log-stream.js.map +1 -0
  285. package/dist/schemas/spend-guard.d.ts +155 -0
  286. package/dist/schemas/spend-guard.d.ts.map +1 -0
  287. package/dist/schemas/spend-guard.js +61 -0
  288. package/dist/schemas/spend-guard.js.map +1 -0
  289. package/dist/schemas.d.ts +195 -20
  290. package/dist/schemas.d.ts.map +1 -1
  291. package/dist/schemas.js +151 -31
  292. package/dist/schemas.js.map +1 -1
  293. package/dist/service.d.ts +87 -0
  294. package/dist/service.d.ts.map +1 -0
  295. package/dist/service.js +199 -0
  296. package/dist/service.js.map +1 -0
  297. package/dist/settle-work.d.ts +20 -0
  298. package/dist/settle-work.d.ts.map +1 -0
  299. package/dist/settle-work.js +22 -0
  300. package/dist/settle-work.js.map +1 -0
  301. package/dist/web-app-projection.d.ts +208 -0
  302. package/dist/web-app-projection.d.ts.map +1 -0
  303. package/dist/web-app-projection.js +95 -0
  304. package/dist/web-app-projection.js.map +1 -0
  305. package/package.json +121 -37
  306. package/src/bootstrap/index.ts +0 -15
  307. package/src/bootstrap/seed.descriptor.ts +0 -24
  308. package/src/bootstrap/seed.impl-shape.ts +0 -5
  309. package/src/bootstrap/seed.kind.ts +0 -26
  310. package/src/bootstrap/seed.runner.ts +0 -87
  311. package/src/credentials/resolve.ts +0 -205
  312. package/src/deployment.ts +0 -57
  313. package/src/index.ts +0 -149
  314. package/src/infra.plugin.ts +0 -54
  315. package/src/kinds/alerts.kind.ts +0 -164
  316. package/src/kinds/artifact.kind.ts +0 -96
  317. package/src/kinds/cache.kind.ts +0 -104
  318. package/src/kinds/database.kind.ts +0 -120
  319. package/src/kinds/discovery.ts +0 -26
  320. package/src/kinds/git-hosting.kind.ts +0 -100
  321. package/src/kinds/index.ts +0 -139
  322. package/src/kinds/logs.kind.ts +0 -104
  323. package/src/kinds/object-storage.kind.ts +0 -101
  324. package/src/kinds/observability.kind.ts +0 -178
  325. package/src/kinds/package-registry.kind.ts +0 -95
  326. package/src/kinds/queue.kind.ts +0 -102
  327. package/src/kinds/rum.kind.ts +0 -135
  328. package/src/kinds/sandbox.kind.ts +0 -115
  329. package/src/kinds/web-app.kind.ts +0 -103
  330. package/src/kinds/worker.kind.ts +0 -203
  331. package/src/schemas.ts +0 -127
@@ -5,10 +5,11 @@
5
5
  * (alerts, RUM, observability, …) reads from the same credential chain
6
6
  * the rest of the platform uses. The chain (highest precedence first):
7
7
  *
8
- * 1. process.env (CI / explicit overrides)
9
- * 2. The tier-resolved secrets/store implementation
8
+ * 1. The tier-resolved secrets/store implementation
10
9
  * - local tier → encrypted-local → env-file
11
10
  * - production → cloudflare-secrets-store → cloudflare-api
11
+ * There is no ambient-environment fallback: credentials resolve only through
12
+ * registered secrets stores, using the handed runtime (first argument).
12
13
  *
13
14
  * Adapters declare the secret KEY NAMES (e.g. CLOUDFLARE_API_TOKEN) on
14
15
  * their descriptor's `adapterConfig` and use this helper to resolve
@@ -16,113 +17,286 @@
16
17
  * (e.g. prefer a scoped CLOUDFLARE_NOTIFICATIONS_API_TOKEN, fall back
17
18
  * to the broad CLOUDFLARE_API_TOKEN).
18
19
  *
19
- * Why a helper instead of inlining the secrets/store query: provider
20
- * adapters live in different packages and shouldn't all duplicate the
21
- * tier-walk + env-overlay logic. Keeping it in infra-core makes the
22
- * abstraction explicit ("infra/* adapters route credentials through
23
- * vibes secrets") and gives us one place to evolve the chain (e.g.
24
- * adding 1Password CLI as a backend).
20
+ * Every refusal is a typed `CapabilityError` with a fixed message. What a
21
+ * backend threw is never repeated: each failing backend is carried as its
22
+ * value-free facts (`valueFreeFailure`) in the refusal's details. A walk in
23
+ * which any backend failed is `UNAVAILABLE credential-store-unavailable`,
24
+ * never absence; `NOT_FOUND credential-missing` (message prefix
25
+ * `Missing credential:`) means every backend answered and none held a candidate.
26
+ *
27
+ * Each store call is the work of a `runtime.lifecycle.wait`, so a call still
28
+ * running after its deadline is owned by the runtime and joined at disposal.
25
29
  */
26
- import { getVibesRuntime } from '@vibesdotdev/runtime';
30
+ import * as z from 'zod/v4';
31
+ import { readUntrusted, settleUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
32
+ import { getLogger } from '@vibesdotdev/logging';
33
+ import { CapabilityError, isCapabilityError, valueFreeFailure } from '@vibesdotdev/kernel';
34
+ import { settleWork } from "../settle-work.js";
35
+ /** The logger the opt-in `VIBES_DEBUG_SECRETS=1` trace writes to, on the handed runtime. */
36
+ const DEBUG_LOGGER_ID = 'infra.credentials';
37
+ const secretsDebugEnabled = (runtime) => runtime.getEnv('VIBES_DEBUG_SECRETS') === '1';
38
+ const EnvironmentTierSchema = z.enum(['local', 'dev', 'staging', 'production']);
39
+ /** The options as read once at the boundary: every field parsed independently, the context forwarded as given. */
40
+ const ResolveOptionsSchema = z.object({
41
+ operationContext: z.unknown().optional(),
42
+ keyCandidates: z.array(z.string().min(1)).min(1),
43
+ environment: z.string().min(1).optional(),
44
+ tier: EnvironmentTierSchema.optional(),
45
+ includeAllStoreBackends: z.boolean().optional(),
46
+ fallbackEnvironments: z.array(z.string()).optional(),
47
+ humanName: z.string().optional(),
48
+ backendTimeoutMs: z.number().positive().optional(),
49
+ resolutionTimeoutMs: z.number().positive().optional()
50
+ });
51
+ const OPTIONS_INVALID = {
52
+ code: 'INVALID_INPUT',
53
+ reason: 'credential-options-invalid',
54
+ message: () => 'Credential resolution options are invalid.'
55
+ };
56
+ export function operatorCredentialResolutionPolicy(environment) {
57
+ return {
58
+ environment,
59
+ includeAllStoreBackends: true,
60
+ fallbackEnvironments: environment === 'local' ? [] : ['local']
61
+ };
62
+ }
63
+ export function adapterCredentialSelection(credential) {
64
+ return {
65
+ requestedEnvironment: credential.requestedEnvironment,
66
+ resolvedEnvironment: credential.resolvedEnvironment,
67
+ key: credential.key,
68
+ source: credential.source
69
+ };
70
+ }
71
+ /** A resolved store that offers `get`, kept as the original object (its methods use `this`). */
72
+ const SecretsStoreReadsSchema = z.object({ get: z.function() });
73
+ const SecretsStoreReaderSchema = z.custom((value) => SecretsStoreReadsSchema.safeParse(value).success);
74
+ /** What a store answered for one key: a string value, or nothing. */
75
+ const StoredValueSchema = z.string().optional();
76
+ /** The selection facts of one registered store descriptor. */
77
+ const SecretsStoreSelectionSchema = z.looseObject({
78
+ id: z.string().min(1),
79
+ priority: z.number().optional(),
80
+ tiers: z.array(EnvironmentTierSchema).optional()
81
+ });
82
+ const STORE_UNREADABLE = {
83
+ code: 'UNAVAILABLE',
84
+ reason: 'secrets-store-unreadable',
85
+ message: () => 'A secrets store did not answer in its declared shape.'
86
+ };
87
+ /** A failed attempt, by the value-free facts `settleWork` read from what the backend threw. */
88
+ function backendFailure(store, failure, at = {}) {
89
+ return { store, ...at, failure };
90
+ }
91
+ /** The failures as JSON details: names, codes and reasons only. */
92
+ function failureDetails(failures) {
93
+ return failures.map(({ store, environment, key, failure }) => {
94
+ const detail = { store, name: failure.name };
95
+ if (environment !== undefined)
96
+ detail.environment = environment;
97
+ if (key !== undefined)
98
+ detail.key = key;
99
+ if (failure.code !== undefined)
100
+ detail.code = failure.code;
101
+ if (failure.reason !== undefined)
102
+ detail.reason = failure.reason;
103
+ return detail;
104
+ });
105
+ }
27
106
  /**
28
107
  * Tier-aware backend selection. Mirrors the secrets/store kind's own
29
- * resolver (`packages/secrets/src/kinds/store.kind.ts`) so callers
108
+ * resolver (`secrets/src/kinds/store.kind.ts`) so callers
30
109
  * don't need to import internal helpers.
31
110
  */
32
- function pickBackend(descriptors, tier) {
111
+ function pickBackends(descriptors, tier, includeAllStoreBackends = false) {
33
112
  if (descriptors.length === 0)
34
- return undefined;
35
- const matches = descriptors.filter((d) => (d.tiers ?? []).includes(tier));
36
- const pool = matches.length > 0 ? matches : descriptors;
37
- pool.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
38
- return pool[0];
113
+ return [];
114
+ const pool = includeAllStoreBackends
115
+ ? descriptors
116
+ : descriptors.filter((d) => (d.tiers ?? []).includes(tier));
117
+ const candidates = pool.length > 0 ? pool : descriptors;
118
+ return [...candidates].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
39
119
  }
40
120
  function inferTier(environment, override) {
41
121
  if (override)
42
122
  return override;
43
- if (environment === 'local' || environment === 'dev' || environment === 'staging' || environment === 'production') {
44
- return environment;
123
+ const known = EnvironmentTierSchema.safeParse(environment);
124
+ return known.success ? known.data : 'local';
125
+ }
126
+ /** Every registered store's selection facts; one that does not read is a carried failure, never dropped. */
127
+ function storeSelections(runtime, failures) {
128
+ const selections = [];
129
+ for (const [index, descriptor] of runtime.assets('secrets/store').descriptors().entries()) {
130
+ const read = settleUntrusted(SecretsStoreSelectionSchema, () => descriptor, STORE_UNREADABLE);
131
+ if (read.ok)
132
+ selections.push(read.data);
133
+ else
134
+ failures.push(backendFailure(`#${index + 1}`, valueFreeFailure(read.error)));
135
+ }
136
+ return selections;
137
+ }
138
+ /** Walk the backends in priority order under the resolution deadline's `signal`; never reads past it. */
139
+ async function walkBackends(runtime, plan, failures, signal) {
140
+ const debug = secretsDebugEnabled(runtime) ? getLogger(DEBUG_LOGGER_ID, runtime) : undefined;
141
+ for (const target of plan.targets) {
142
+ if (signal.aborted)
143
+ return { kind: 'aborted' };
144
+ const opened = await settleWork(async () => {
145
+ const resolved = await runtime.lifecycle.wait(() => runtime.query('secrets/store').withId(target.id).resolve(), { timeoutMs: plan.backendTimeoutMs, reason: `secrets-store-${target.id}-resolution`, signal });
146
+ return readUntrusted(SecretsStoreReaderSchema, () => resolved, STORE_UNREADABLE);
147
+ });
148
+ if (!opened.ok) {
149
+ failures.push(backendFailure(target.id, opened.failure));
150
+ continue;
151
+ }
152
+ const store = opened.value;
153
+ for (const environment of plan.environments) {
154
+ for (const key of plan.keys) {
155
+ if (signal.aborted)
156
+ return { kind: 'aborted' };
157
+ const read = await settleWork(async () => {
158
+ const stored = await runtime.lifecycle.wait(() => store.get(environment, key, plan.operationContext), { timeoutMs: plan.backendTimeoutMs, reason: `secrets-store-${target.id}-read`, signal });
159
+ return readUntrusted(StoredValueSchema, () => stored, STORE_UNREADABLE);
160
+ });
161
+ if (!read.ok) {
162
+ failures.push(backendFailure(target.id, read.failure, { environment, key }));
163
+ }
164
+ else if (read.value !== undefined && read.value.length > 0) {
165
+ debug?.info('secrets debug: credential resolved', { key, store: target.id, environment });
166
+ return {
167
+ kind: 'resolved',
168
+ credential: { key, value: read.value, source: target.id, requestedEnvironment: plan.requestedEnvironment, resolvedEnvironment: environment }
169
+ };
170
+ }
171
+ }
172
+ }
45
173
  }
46
- return 'local';
174
+ return { kind: 'exhausted' };
47
175
  }
48
176
  /**
49
177
  * Resolve a single credential by walking the candidate keys against
50
- * process.env then the active secrets store. Returns the first match.
178
+ * the active secrets store. Returns the first match.
51
179
  *
52
- * Throws when no candidate resolves — adapters should let this bubble
53
- * up so the CLI surfaces a clean "missing credentials" message rather
54
- * than a vague "401 Unauthorized" downstream.
180
+ * Refuses typed when no candidate resolves — adapters should let this
181
+ * bubble up so the CLI surfaces a clean "missing credentials" message
182
+ * rather than a vague "401 Unauthorized" downstream.
55
183
  */
56
- export async function resolveAdapterCredential(options) {
57
- const env = options.environment ?? 'local';
58
- const tier = inferTier(env, options.tier);
59
- const includeEnv = options.includeProcessEnv ?? true;
60
- // 1. process.env (CI / shell override)
61
- if (includeEnv) {
62
- for (const key of options.keyCandidates) {
63
- const v = process.env[key];
64
- if (v && v.length > 0) {
65
- return { key, value: v, source: 'process.env' };
66
- }
67
- }
68
- }
69
- // 2. secrets/store runtime resolution (tier-aware, priority-ordered)
70
- const runtime = getVibesRuntime();
184
+ export async function resolveAdapterCredential(runtime, options) {
185
+ const input = readUntrusted(ResolveOptionsSchema, () => options, OPTIONS_INVALID);
186
+ const env = input.environment ?? 'local';
187
+ const tier = inferTier(env, input.tier);
188
+ // Ceilings sized for the MEASURED store path, not the hoped-for one: a
189
+ // resolution walks the key-candidate list serially, and each miss is a
190
+ // full secrets-store roundtrip (Cloudflare-backed; observed 5-15s per read
191
+ // under load, 2026-08-18). Five candidates at 20s total aborted a healthy
192
+ // resolution mid-walk — the operator saw "timed out" while the store was
193
+ // merely slow, and worked around the blessed path by hand.
194
+ const backendTimeoutMs = input.backendTimeoutMs ?? 15_000;
195
+ const resolutionTimeoutMs = input.resolutionTimeoutMs ?? 90_000;
196
+ const keys = input.keyCandidates;
197
+ const subject = { keys: [...keys], environment: env, tier };
198
+ if (input.humanName !== undefined)
199
+ subject.humanName = input.humanName;
71
200
  if (!runtime.hasKind('secrets/store')) {
72
- throw new Error(`No secrets/store kind registered; cannot resolve ${options.humanName ?? options.keyCandidates[0]}. ` +
73
- 'Load the secrets plugin (and a backend like encrypted-local) before calling this adapter.');
74
- }
75
- const descriptors = runtime
76
- .assets('secrets/store')
77
- .descriptors();
78
- // `VIBES_DEBUG_SECRETS=1` dumps the visible descriptor pool when
79
- // you're tracing why a credential is missing or getting misrouted.
80
- if (process.env.VIBES_DEBUG_SECRETS === '1') {
81
- console.error(`[secrets-debug] descriptors visible at tier=${tier}:`);
82
- for (const d of descriptors) {
83
- console.error(` - id=${d.id} priority=${d.priority ?? '-'} tiers=${JSON.stringify(d.tiers)}`);
84
- }
201
+ throw new CapabilityError('No secrets/store kind is registered; the credential cannot resolve.', 'UNAVAILABLE', {
202
+ reason: 'secrets-store-unregistered',
203
+ details: subject,
204
+ recoveryHint: 'Load the secrets plugin (and a backend like encrypted-local) before calling this adapter.'
205
+ });
85
206
  }
86
- const target = pickBackend(descriptors, tier);
87
- if (!target) {
88
- throw new Error(`No secrets/store backend available for tier=${tier}. Register a backend ` +
89
- '(encrypted-local for local, cloudflare-secrets-store for production) before calling this adapter.');
207
+ const failures = [];
208
+ const selections = storeSelections(runtime, failures);
209
+ const debug = secretsDebugEnabled(runtime) ? getLogger(DEBUG_LOGGER_ID, runtime) : undefined;
210
+ // `VIBES_DEBUG_SECRETS=1` traces the visible descriptor pool (ids, priorities, tiers; never a value).
211
+ debug?.info('secrets debug: stores visible', {
212
+ tier,
213
+ stores: selections.map((s) => ({ id: s.id, priority: s.priority ?? null, tiers: s.tiers ?? null }))
214
+ });
215
+ const targets = pickBackends(selections, tier, input.includeAllStoreBackends);
216
+ if (targets.length === 0) {
217
+ throw new CapabilityError('No secrets/store backend is available for this tier.', 'UNAVAILABLE', {
218
+ reason: 'secrets-store-backend-unavailable',
219
+ details: { ...subject, failures: failureDetails(failures) },
220
+ recoveryHint: 'Register a backend (encrypted-local for local, cloudflare-secrets-store for production).'
221
+ });
90
222
  }
91
- const store = (await runtime
92
- .query('secrets/store')
93
- .withId(target.id)
94
- .resolve());
95
- if (!store || typeof store.get !== 'function') {
96
- throw new Error(`Resolved secrets/store '${target.id}' has no get() method for ${options.humanName ?? options.keyCandidates[0]}.`);
223
+ const plan = {
224
+ targets,
225
+ environments: [env, ...(input.fallbackEnvironments ?? []).filter((candidate) => candidate && candidate !== env)],
226
+ keys,
227
+ requestedEnvironment: env,
228
+ backendTimeoutMs,
229
+ operationContext: input.operationContext
230
+ };
231
+ let outcome;
232
+ try {
233
+ outcome = await runtime.lifecycle.wait((signal) => walkBackends(runtime, plan, failures, signal), {
234
+ timeoutMs: resolutionTimeoutMs,
235
+ reason: 'credential-resolution'
236
+ });
97
237
  }
98
- for (const key of options.keyCandidates) {
99
- try {
100
- const v = await store.get(env, key);
101
- if (v && v.length > 0) {
102
- return { key, value: v, source: target.id };
103
- }
104
- }
105
- catch {
106
- // next candidate
238
+ catch (error) {
239
+ if (error instanceof Error && isCapabilityError(error) && error.reason === 'wait-timeout') {
240
+ throw new CapabilityError('Credential resolution timed out.', 'TIMEOUT', {
241
+ reason: 'credential-resolution-timeout',
242
+ details: { ...subject, timeoutMs: resolutionTimeoutMs, failures: failureDetails(failures) },
243
+ cause: valueFreeFailure(error)
244
+ });
107
245
  }
246
+ throw error;
247
+ }
248
+ if (outcome.kind === 'resolved')
249
+ return outcome.credential;
250
+ const stores = targets.map((d) => d.id);
251
+ // Absence only when every backend answered: one failed store may hold the credential.
252
+ if (outcome.kind === 'exhausted' && failures.length === 0) {
253
+ throw new CapabilityError('Missing credential: none of the candidate keys resolved from the secrets store.', 'NOT_FOUND', {
254
+ reason: 'credential-missing',
255
+ details: { ...subject, stores, failures: failureDetails(failures) },
256
+ recoveryHint: `Provision it through the configured Vibes secrets workflow for environment "${env}".`
257
+ });
108
258
  }
109
- throw new Error(`Missing credential: none of [${options.keyCandidates.join(', ')}] resolved from process.env or ` +
110
- `${target.id} (environment=${env}, tier=${tier}). ` +
111
- `Set the value with \`vibes secrets set --environment ${env} ${options.keyCandidates[0]} <value>\`.`);
259
+ throw new CapabilityError('The secrets store could not be read for this credential.', 'UNAVAILABLE', {
260
+ reason: 'credential-store-unavailable',
261
+ details: { ...subject, stores, failures: failureDetails(failures) }
262
+ });
112
263
  }
113
264
  /**
114
265
  * Convenience wrapper for resolving multiple credentials at once.
115
266
  * Each key gets a candidate list of one (the key itself). Use the
116
267
  * single-credential form when you need fallback chains.
117
268
  */
118
- export async function resolveAdapterCredentials(keys, options) {
269
+ export async function resolveAdapterCredentials(runtime, keys, options) {
270
+ const input = readUntrusted(PluralOptionsSchema, () => ({ keys, options }), OPTIONS_INVALID);
119
271
  const out = {};
120
- for (const key of keys) {
121
- out[key] = await resolveAdapterCredential({
272
+ for (const key of input.keys) {
273
+ out[key] = await resolveAdapterCredential(runtime, {
122
274
  keyCandidates: [key],
123
- ...(options ?? {})
275
+ ...input.options
124
276
  });
125
277
  }
126
278
  return out;
127
279
  }
280
+ /** The plural form's keys and shared options, read once at its boundary. */
281
+ const PluralOptionsSchema = z.object({
282
+ keys: z.array(z.string().min(1)),
283
+ options: ResolveOptionsSchema.omit({ keyCandidates: true, humanName: true }).optional()
284
+ });
285
+ /** The operator form's options, read once at its boundary; the selection policy is fixed, never taken from the caller. */
286
+ const OperatorOptionsSchema = ResolveOptionsSchema.omit({ tier: true, includeAllStoreBackends: true, fallbackEnvironments: true }).extend({
287
+ environment: z.string().min(1)
288
+ });
289
+ /**
290
+ * Resolve an operator credential with the shared inventory/audit policy.
291
+ * Use `resolveAdapterCredential` directly only when a non-operator workflow
292
+ * intentionally needs a different selection policy (for example, store-only
293
+ * recovery validation).
294
+ */
295
+ export async function resolveOperatorCredential(runtime, options) {
296
+ const input = readUntrusted(OperatorOptionsSchema, () => options, OPTIONS_INVALID);
297
+ return resolveAdapterCredential(runtime, {
298
+ ...input,
299
+ ...operatorCredentialResolutionPolicy(input.environment)
300
+ });
301
+ }
128
302
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"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"}