@vibesdotdev/infra-core 0.0.1 → 1.0.0-rc.4

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 (320) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +33 -63
  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-environment.d.ts +30 -0
  54. package/dist/deployment-environment.d.ts.map +1 -0
  55. package/dist/deployment-environment.js +53 -0
  56. package/dist/deployment-environment.js.map +1 -0
  57. package/dist/deployment.d.ts +8 -4
  58. package/dist/deployment.d.ts.map +1 -1
  59. package/dist/deployment.js +30 -0
  60. package/dist/deployment.js.map +1 -1
  61. package/dist/doks/cloud/base.d.ts +49 -0
  62. package/dist/doks/cloud/base.d.ts.map +1 -0
  63. package/dist/doks/cloud/base.js +138 -0
  64. package/dist/doks/cloud/base.js.map +1 -0
  65. package/dist/doks/cloud/factory.d.ts +18 -0
  66. package/dist/doks/cloud/factory.d.ts.map +1 -0
  67. package/dist/doks/cloud/factory.js +22 -0
  68. package/dist/doks/cloud/factory.js.map +1 -0
  69. package/dist/doks/cloud/index.d.ts +5 -0
  70. package/dist/doks/cloud/index.d.ts.map +1 -0
  71. package/dist/doks/cloud/index.js +4 -0
  72. package/dist/doks/cloud/index.js.map +1 -0
  73. package/dist/doks/types.d.ts +95 -0
  74. package/dist/doks/types.d.ts.map +1 -0
  75. package/dist/doks/types.js +14 -0
  76. package/dist/doks/types.js.map +1 -0
  77. package/dist/generate/index.d.ts +29 -0
  78. package/dist/generate/index.d.ts.map +1 -0
  79. package/dist/generate/index.js +28 -0
  80. package/dist/generate/index.js.map +1 -0
  81. package/dist/generate/infra-generate.plugin.d.ts +3 -0
  82. package/dist/generate/infra-generate.plugin.d.ts.map +1 -0
  83. package/dist/generate/infra-generate.plugin.js +23 -0
  84. package/dist/generate/infra-generate.plugin.js.map +1 -0
  85. package/dist/generate/plugin.d.ts +2 -0
  86. package/dist/generate/plugin.d.ts.map +1 -0
  87. package/dist/generate/plugin.js +2 -0
  88. package/dist/generate/plugin.js.map +1 -0
  89. package/dist/heartbeat/cron-heartbeat.d.ts +97 -0
  90. package/dist/heartbeat/cron-heartbeat.d.ts.map +1 -0
  91. package/dist/heartbeat/cron-heartbeat.js +200 -0
  92. package/dist/heartbeat/cron-heartbeat.js.map +1 -0
  93. package/dist/index.d.ts +34 -20
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +28 -14
  96. package/dist/index.js.map +1 -1
  97. package/dist/infra.plugin.d.ts +1 -1
  98. package/dist/infra.plugin.d.ts.map +1 -1
  99. package/dist/infra.plugin.js +62 -12
  100. package/dist/infra.plugin.js.map +1 -1
  101. package/dist/kinds/alerts.kind.d.ts +64 -25
  102. package/dist/kinds/alerts.kind.d.ts.map +1 -1
  103. package/dist/kinds/alerts.kind.js +43 -16
  104. package/dist/kinds/alerts.kind.js.map +1 -1
  105. package/dist/kinds/artifact.kind.d.ts +58 -10
  106. package/dist/kinds/artifact.kind.d.ts.map +1 -1
  107. package/dist/kinds/artifact.kind.js +26 -9
  108. package/dist/kinds/artifact.kind.js.map +1 -1
  109. package/dist/kinds/billing.kind.d.ts +88 -0
  110. package/dist/kinds/billing.kind.d.ts.map +1 -0
  111. package/dist/kinds/billing.kind.js +48 -0
  112. package/dist/kinds/billing.kind.js.map +1 -0
  113. package/dist/kinds/build-job.kind.d.ts +381 -0
  114. package/dist/kinds/build-job.kind.d.ts.map +1 -0
  115. package/dist/kinds/build-job.kind.js +216 -0
  116. package/dist/kinds/build-job.kind.js.map +1 -0
  117. package/dist/kinds/cache.kind.d.ts +39 -92
  118. package/dist/kinds/cache.kind.d.ts.map +1 -1
  119. package/dist/kinds/cache.kind.js +26 -51
  120. package/dist/kinds/cache.kind.js.map +1 -1
  121. package/dist/kinds/cluster.kind.d.ts +154 -0
  122. package/dist/kinds/cluster.kind.d.ts.map +1 -0
  123. package/dist/kinds/cluster.kind.js +99 -0
  124. package/dist/kinds/cluster.kind.js.map +1 -0
  125. package/dist/kinds/compute-source.kind.d.ts +138 -0
  126. package/dist/kinds/compute-source.kind.d.ts.map +1 -0
  127. package/dist/kinds/compute-source.kind.js +145 -0
  128. package/dist/kinds/compute-source.kind.js.map +1 -0
  129. package/dist/kinds/compute-sources.descriptors.d.ts +45 -0
  130. package/dist/kinds/compute-sources.descriptors.d.ts.map +1 -0
  131. package/dist/kinds/compute-sources.descriptors.js +93 -0
  132. package/dist/kinds/compute-sources.descriptors.js.map +1 -0
  133. package/dist/kinds/container-registry.kind.d.ts +62 -0
  134. package/dist/kinds/container-registry.kind.d.ts.map +1 -0
  135. package/dist/kinds/container-registry.kind.js +47 -0
  136. package/dist/kinds/container-registry.kind.js.map +1 -0
  137. package/dist/kinds/database-migrator.kind.d.ts +6 -0
  138. package/dist/kinds/database-migrator.kind.d.ts.map +1 -0
  139. package/dist/kinds/database-migrator.kind.js +28 -0
  140. package/dist/kinds/database-migrator.kind.js.map +1 -0
  141. package/dist/kinds/database.kind.d.ts +114 -93
  142. package/dist/kinds/database.kind.d.ts.map +1 -1
  143. package/dist/kinds/database.kind.js +93 -54
  144. package/dist/kinds/database.kind.js.map +1 -1
  145. package/dist/kinds/deployment-provider.kind.d.ts +5 -0
  146. package/dist/kinds/deployment-provider.kind.d.ts.map +1 -0
  147. package/dist/kinds/deployment-provider.kind.js +11 -0
  148. package/dist/kinds/deployment-provider.kind.js.map +1 -0
  149. package/dist/kinds/discovery.d.ts +5 -12
  150. package/dist/kinds/discovery.d.ts.map +1 -1
  151. package/dist/kinds/discovery.js +5 -17
  152. package/dist/kinds/discovery.js.map +1 -1
  153. package/dist/kinds/dns.kind.d.ts +162 -0
  154. package/dist/kinds/dns.kind.d.ts.map +1 -0
  155. package/dist/kinds/dns.kind.js +54 -0
  156. package/dist/kinds/dns.kind.js.map +1 -0
  157. package/dist/kinds/drift.kind.d.ts +115 -0
  158. package/dist/kinds/drift.kind.d.ts.map +1 -0
  159. package/dist/kinds/drift.kind.js +60 -0
  160. package/dist/kinds/drift.kind.js.map +1 -0
  161. package/dist/kinds/edge-tls.kind.d.ts +194 -0
  162. package/dist/kinds/edge-tls.kind.d.ts.map +1 -0
  163. package/dist/kinds/edge-tls.kind.js +58 -0
  164. package/dist/kinds/edge-tls.kind.js.map +1 -0
  165. package/dist/kinds/firewall.kind.d.ts +92 -0
  166. package/dist/kinds/firewall.kind.d.ts.map +1 -0
  167. package/dist/kinds/firewall.kind.js +59 -0
  168. package/dist/kinds/firewall.kind.js.map +1 -0
  169. package/dist/kinds/git-hosting.kind.d.ts +36 -38
  170. package/dist/kinds/git-hosting.kind.d.ts.map +1 -1
  171. package/dist/kinds/git-hosting.kind.js +23 -34
  172. package/dist/kinds/git-hosting.kind.js.map +1 -1
  173. package/dist/kinds/index.d.ts +40 -15
  174. package/dist/kinds/index.d.ts.map +1 -1
  175. package/dist/kinds/index.js +39 -14
  176. package/dist/kinds/index.js.map +1 -1
  177. package/dist/kinds/inventory.kind.d.ts +326 -0
  178. package/dist/kinds/inventory.kind.d.ts.map +1 -0
  179. package/dist/kinds/inventory.kind.js +188 -0
  180. package/dist/kinds/inventory.kind.js.map +1 -0
  181. package/dist/kinds/load-balancer.kind.d.ts +135 -0
  182. package/dist/kinds/load-balancer.kind.d.ts.map +1 -0
  183. package/dist/kinds/load-balancer.kind.js +71 -0
  184. package/dist/kinds/load-balancer.kind.js.map +1 -0
  185. package/dist/kinds/logs.kind.d.ts +74 -3
  186. package/dist/kinds/logs.kind.d.ts.map +1 -1
  187. package/dist/kinds/logs.kind.js +26 -17
  188. package/dist/kinds/logs.kind.js.map +1 -1
  189. package/dist/kinds/nfs.kind.d.ts +67 -0
  190. package/dist/kinds/nfs.kind.d.ts.map +1 -0
  191. package/dist/kinds/nfs.kind.js +45 -0
  192. package/dist/kinds/nfs.kind.js.map +1 -0
  193. package/dist/kinds/node-pool.kind.d.ts +134 -0
  194. package/dist/kinds/node-pool.kind.d.ts.map +1 -0
  195. package/dist/kinds/node-pool.kind.js +88 -0
  196. package/dist/kinds/node-pool.kind.js.map +1 -0
  197. package/dist/kinds/object-storage.kind.d.ts +50 -24
  198. package/dist/kinds/object-storage.kind.d.ts.map +1 -1
  199. package/dist/kinds/object-storage.kind.js +40 -23
  200. package/dist/kinds/object-storage.kind.js.map +1 -1
  201. package/dist/kinds/observability.kind.d.ts +104 -6
  202. package/dist/kinds/observability.kind.d.ts.map +1 -1
  203. package/dist/kinds/observability.kind.js +67 -9
  204. package/dist/kinds/observability.kind.js.map +1 -1
  205. package/dist/kinds/package-registry.kind.d.ts +27 -31
  206. package/dist/kinds/package-registry.kind.d.ts.map +1 -1
  207. package/dist/kinds/package-registry.kind.js +13 -26
  208. package/dist/kinds/package-registry.kind.js.map +1 -1
  209. package/dist/kinds/queue.kind.d.ts +67 -63
  210. package/dist/kinds/queue.kind.d.ts.map +1 -1
  211. package/dist/kinds/queue.kind.js +55 -33
  212. package/dist/kinds/queue.kind.js.map +1 -1
  213. package/dist/kinds/read-descriptor.d.ts +15 -0
  214. package/dist/kinds/read-descriptor.d.ts.map +1 -0
  215. package/dist/kinds/read-descriptor.js +11 -0
  216. package/dist/kinds/read-descriptor.js.map +1 -0
  217. package/dist/kinds/rum.kind.d.ts +36 -6
  218. package/dist/kinds/rum.kind.d.ts.map +1 -1
  219. package/dist/kinds/rum.kind.js +6 -7
  220. package/dist/kinds/rum.kind.js.map +1 -1
  221. package/dist/kinds/sandbox.kind.d.ts +136 -36
  222. package/dist/kinds/sandbox.kind.d.ts.map +1 -1
  223. package/dist/kinds/sandbox.kind.js +80 -34
  224. package/dist/kinds/sandbox.kind.js.map +1 -1
  225. package/dist/kinds/select-compute-source.d.ts +72 -0
  226. package/dist/kinds/select-compute-source.d.ts.map +1 -0
  227. package/dist/kinds/select-compute-source.js +170 -0
  228. package/dist/kinds/select-compute-source.js.map +1 -0
  229. package/dist/kinds/service-release.kind.d.ts +771 -0
  230. package/dist/kinds/service-release.kind.d.ts.map +1 -0
  231. package/dist/kinds/service-release.kind.js +676 -0
  232. package/dist/kinds/service-release.kind.js.map +1 -0
  233. package/dist/kinds/spend-guard.kind.d.ts +40 -0
  234. package/dist/kinds/spend-guard.kind.d.ts.map +1 -0
  235. package/dist/kinds/spend-guard.kind.js +133 -0
  236. package/dist/kinds/spend-guard.kind.js.map +1 -0
  237. package/dist/kinds/utilization.kind.d.ts +88 -0
  238. package/dist/kinds/utilization.kind.d.ts.map +1 -0
  239. package/dist/kinds/utilization.kind.js +62 -0
  240. package/dist/kinds/utilization.kind.js.map +1 -0
  241. package/dist/kinds/volume.kind.d.ts +54 -0
  242. package/dist/kinds/volume.kind.d.ts.map +1 -0
  243. package/dist/kinds/volume.kind.js +39 -0
  244. package/dist/kinds/volume.kind.js.map +1 -0
  245. package/dist/kinds/vpc.kind.d.ts +61 -0
  246. package/dist/kinds/vpc.kind.d.ts.map +1 -0
  247. package/dist/kinds/vpc.kind.js +51 -0
  248. package/dist/kinds/vpc.kind.js.map +1 -0
  249. package/dist/kinds/web-app.kind.d.ts +115 -45
  250. package/dist/kinds/web-app.kind.d.ts.map +1 -1
  251. package/dist/kinds/web-app.kind.js +69 -42
  252. package/dist/kinds/web-app.kind.js.map +1 -1
  253. package/dist/kinds/worker.kind.d.ts +291 -188
  254. package/dist/kinds/worker.kind.d.ts.map +1 -1
  255. package/dist/kinds/worker.kind.js +45 -123
  256. package/dist/kinds/worker.kind.js.map +1 -1
  257. package/dist/schemas/database-migration.d.ts +173 -0
  258. package/dist/schemas/database-migration.d.ts.map +1 -0
  259. package/dist/schemas/database-migration.js +88 -0
  260. package/dist/schemas/database-migration.js.map +1 -0
  261. package/dist/schemas/deployment-environment.d.ts +11 -0
  262. package/dist/schemas/deployment-environment.d.ts.map +1 -0
  263. package/dist/schemas/deployment-environment.js +9 -0
  264. package/dist/schemas/deployment-environment.js.map +1 -0
  265. package/dist/schemas/deployment-provider.d.ts +336 -0
  266. package/dist/schemas/deployment-provider.d.ts.map +1 -0
  267. package/dist/schemas/deployment-provider.js +198 -0
  268. package/dist/schemas/deployment-provider.js.map +1 -0
  269. package/dist/schemas/log-stream.d.ts +27 -0
  270. package/dist/schemas/log-stream.d.ts.map +1 -0
  271. package/dist/schemas/log-stream.js +31 -0
  272. package/dist/schemas/log-stream.js.map +1 -0
  273. package/dist/schemas/spend-guard.d.ts +155 -0
  274. package/dist/schemas/spend-guard.d.ts.map +1 -0
  275. package/dist/schemas/spend-guard.js +61 -0
  276. package/dist/schemas/spend-guard.js.map +1 -0
  277. package/dist/schemas.d.ts +190 -20
  278. package/dist/schemas.d.ts.map +1 -1
  279. package/dist/schemas.js +137 -31
  280. package/dist/schemas.js.map +1 -1
  281. package/dist/service.d.ts +87 -0
  282. package/dist/service.d.ts.map +1 -0
  283. package/dist/service.js +199 -0
  284. package/dist/service.js.map +1 -0
  285. package/dist/settle-work.d.ts +20 -0
  286. package/dist/settle-work.d.ts.map +1 -0
  287. package/dist/settle-work.js +22 -0
  288. package/dist/settle-work.js.map +1 -0
  289. package/dist/web-app-projection.d.ts +132 -0
  290. package/dist/web-app-projection.d.ts.map +1 -0
  291. package/dist/web-app-projection.js +93 -0
  292. package/dist/web-app-projection.js.map +1 -0
  293. package/package.json +89 -39
  294. package/SPEC.md +0 -169
  295. package/src/bootstrap/index.ts +0 -15
  296. package/src/bootstrap/seed.descriptor.ts +0 -24
  297. package/src/bootstrap/seed.impl-shape.ts +0 -5
  298. package/src/bootstrap/seed.kind.ts +0 -26
  299. package/src/bootstrap/seed.runner.ts +0 -87
  300. package/src/credentials/resolve.ts +0 -205
  301. package/src/deployment.ts +0 -57
  302. package/src/index.ts +0 -149
  303. package/src/infra.plugin.ts +0 -54
  304. package/src/kinds/alerts.kind.ts +0 -164
  305. package/src/kinds/artifact.kind.ts +0 -96
  306. package/src/kinds/cache.kind.ts +0 -104
  307. package/src/kinds/database.kind.ts +0 -120
  308. package/src/kinds/discovery.ts +0 -26
  309. package/src/kinds/git-hosting.kind.ts +0 -100
  310. package/src/kinds/index.ts +0 -139
  311. package/src/kinds/logs.kind.ts +0 -104
  312. package/src/kinds/object-storage.kind.ts +0 -101
  313. package/src/kinds/observability.kind.ts +0 -178
  314. package/src/kinds/package-registry.kind.ts +0 -95
  315. package/src/kinds/queue.kind.ts +0 -102
  316. package/src/kinds/rum.kind.ts +0 -135
  317. package/src/kinds/sandbox.kind.ts +0 -115
  318. package/src/kinds/web-app.kind.ts +0 -103
  319. package/src/kinds/worker.kind.ts +0 -203
  320. package/src/schemas.ts +0 -127
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The one selection of a deployment environment and of a provider config's
3
+ * environment block. Generic over every provider whose config nests named
4
+ * environments under `env` (wrangler's `env.<name>`, and any provider with the
5
+ * same shape): the deploy driver and each provider implementation select
6
+ * through these, so the environment that picks credentials, ledgers and
7
+ * provider bindings is always the same one.
8
+ */
9
+ import { ProviderConfigSchema } from "./schemas/deployment-environment.js";
10
+ export { ProviderConfigSchema, ResolvedProviderConfigSchema } from "./schemas/deployment-environment.js";
11
+ /** The record view of an admitted value, parsed once at the boundary. */
12
+ function asRecord(value) {
13
+ const parsed = ProviderConfigSchema.safeParse(value);
14
+ return parsed.success ? parsed.data : null;
15
+ }
16
+ /** `prod`/absent read as `production`, `dev` as `development`; every other name is kept, lower-cased. */
17
+ export function normalizeDeploymentEnvironment(environment) {
18
+ const value = environment?.trim().toLowerCase();
19
+ if (!value || value === 'prod')
20
+ return 'production';
21
+ if (value === 'dev')
22
+ return 'development';
23
+ return value;
24
+ }
25
+ /**
26
+ * Select one semantic environment before any runtime, provider, secrets, or
27
+ * ledger work. `--wrangler-env` remains a compatibility spelling, but it no
28
+ * longer forms an independent provider-only selector that can drift from the
29
+ * environment used for credentials and deployment records.
30
+ */
31
+ export function selectDeploymentEnvironment(input) {
32
+ return normalizeDeploymentEnvironment(input.environment ?? input.providerEnvironment);
33
+ }
34
+ /** Select a provider block without inheriting production bindings into named environments. */
35
+ export function resolveDeploymentProviderConfig(generatedConfig, environment) {
36
+ const selected = selectDeploymentEnvironment({ environment });
37
+ if (selected === 'production')
38
+ return { config: generatedConfig, providerEnvironment: null };
39
+ const providerEnvironment = selected === 'local' ? 'development' : selected;
40
+ const environments = asRecord(generatedConfig.env) ?? {};
41
+ return {
42
+ config: asRecord(environments[providerEnvironment]),
43
+ providerEnvironment
44
+ };
45
+ }
46
+ /** Refuse a missing named block before callers resolve credentials or execute provider commands. */
47
+ export function requireDeploymentProviderConfig(generatedConfig, environment) {
48
+ const selected = resolveDeploymentProviderConfig(generatedConfig, environment);
49
+ if (!selected.config)
50
+ throw new Error(`Missing explicit provider environment "${selected.providerEnvironment}"; refusing production fallback.`);
51
+ return { config: selected.config, providerEnvironment: selected.providerEnvironment };
52
+ }
53
+ //# sourceMappingURL=deployment-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-environment.js","sourceRoot":"","sources":["../src/deployment-environment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,oBAAoB,EAAoD,MAAM,qCAAqC,CAAC;AAC7H,OAAO,EACN,oBAAoB,EACpB,4BAA4B,EAG5B,MAAM,qCAAqC,CAAC;AAE7C,yEAAyE;AACzE,SAAS,QAAQ,CAAC,KAAc;IAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,8BAA8B,CAAC,WAA+B;IAC7E,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IACpD,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC;IAC1C,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAG3C;IACA,OAAO,8BAA8B,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACvF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,+BAA+B,CAC9C,eAA+B,EAC/B,WAAoB;IAEpB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAC7F,MAAM,mBAAmB,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACzD,OAAO;QACN,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACnD,mBAAmB;KACnB,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,+BAA+B,CAAC,eAA+B,EAAE,WAAoB;IACpG,MAAM,QAAQ,GAAG,+BAA+B,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC/E,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,mBAAmB,kCAAkC,CAAC,CAAC;IAChJ,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACvF,CAAC"}
@@ -1,9 +1,13 @@
1
- import { type AppDeployment, type AppDeploymentInput, type DeploymentDependency, type DeploymentEnvRequirement, type DeploymentOrigin, type DeploymentUpstream } from './schemas.ts';
1
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
2
+ import type * as z from 'zod/v4';
3
+ import { deploymentDependencySchema, type AppDeployment, type AppDeploymentInput, type DeploymentDependency, type DeploymentEnvRequirement, type DeploymentOrigin, type DeploymentOriginEnv, type DeploymentUpstream } from './schemas.ts';
2
4
  export declare function createAppDeployment(input: AppDeploymentInput): AppDeployment;
5
+ /** Validate admission using only capabilities selected in the caller's runtime. */
6
+ export declare function validateAppDeployment(runtime: RuntimeRef, deployment: AppDeployment): void;
3
7
  export declare function createDeploymentOrigin(input: DeploymentOrigin): DeploymentOrigin;
4
8
  export declare function createDeploymentEnvRequirement(input: DeploymentEnvRequirement): DeploymentEnvRequirement;
5
- export declare function createDeploymentDependency(input: DeploymentDependency): DeploymentDependency;
9
+ export declare function createDeploymentDependency(input: z.input<typeof deploymentDependencySchema>): DeploymentDependency;
6
10
  export declare function getPrimaryOrigin(deployment: AppDeployment): DeploymentOrigin;
7
- export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream): Record<string, string>;
8
- export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentUpstream };
11
+ export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream): DeploymentOriginEnv;
12
+ export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentOriginEnv, DeploymentUpstream };
9
13
  //# sourceMappingURL=deployment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,MAAM,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAEhF;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,wBAAwB,GAC7B,wBAAwB,CAE1B;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,CAI5E;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,kBAAkB,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,CAAC"}
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,KAAK,KAAK,CAAC,MAAM,QAAQ,CAAC;AACjC,OAAO,EAEN,0BAA0B,EAG1B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,MAAM,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAE5E;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CA0B1F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAEhF;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,wBAAwB,GAC7B,wBAAwB,CAE1B;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAAG,oBAAoB,CAElH;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,CAI5E;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,kBAAkB,GAC1B,mBAAmB,CAQrB;AAED,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,CAAC"}
@@ -1,7 +1,37 @@
1
+ import { CapabilityError, matchesScope } from '@vibesdotdev/kernel';
2
+ import { DeploymentProviderDescriptorSchema } from "./kinds/deployment-provider.kind.js";
1
3
  import { appDeploymentSchema, deploymentDependencySchema, deploymentEnvRequirementSchema, deploymentOriginSchema } from "./schemas.js";
2
4
  export function createAppDeployment(input) {
3
5
  return appDeploymentSchema.parse(input);
4
6
  }
7
+ /** Validate admission using only capabilities selected in the caller's runtime. */
8
+ export function validateAppDeployment(runtime, deployment) {
9
+ const candidates = runtime.hasKind('infra/deployment-provider')
10
+ ? runtime.query('infra/deployment-provider')
11
+ .withId(deployment.provider)
12
+ .enabled()
13
+ .filter((provider) => matchesScope(runtime.scope, { hardware: provider.hardware }))
14
+ .descriptors()
15
+ : [];
16
+ const descriptor = candidates[0];
17
+ if (!descriptor) {
18
+ throw new CapabilityError('The deployment provider is not registered.', 'UNAVAILABLE', {
19
+ reason: 'deployment-provider-unavailable', details: { provider: deployment.provider }
20
+ });
21
+ }
22
+ const capabilities = DeploymentProviderDescriptorSchema.parse(descriptor);
23
+ if (!capabilities.runtimes.includes(deployment.runtime)) {
24
+ throw new CapabilityError('The deployment provider does not support the requested runtime.', 'INVALID_INPUT', {
25
+ reason: 'deployment-runtime-unsupported',
26
+ details: { provider: deployment.provider, runtime: deployment.runtime }
27
+ });
28
+ }
29
+ if (deployment.execution?.pty === true && !capabilities.pty) {
30
+ throw new CapabilityError('The deployment provider does not support interactive PTY sessions.', 'INVALID_INPUT', {
31
+ reason: 'deployment-pty-unsupported', details: { provider: deployment.provider }
32
+ });
33
+ }
34
+ }
5
35
  export function createDeploymentOrigin(input) {
6
36
  return deploymentOriginSchema.parse(input);
7
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,sBAAsB,EAOtB,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC5D,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAuB;IAC7D,OAAO,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,KAA+B;IAE/B,OAAO,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAA2B;IACrE,OAAO,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACzD,OAAO,CACN,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CACvF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,QAA4B;IAE5B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO;QACN,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM;KACxC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { CloudProvider, CloudInstance, CloudProviderErrorDetails, InstanceConfig, InstanceFilters, CloudVolume, VolumeConfig, VolumeFilters, SSHKey } from '../types.ts';
2
+ import { CapabilityError, type CapabilityErrorDetails, type VibesRuntime } from '@vibesdotdev/kernel';
3
+ /**
4
+ * A provider failure in the `CapabilityError` taxonomy: `code` is the mapped
5
+ * taxonomy code (`TIMEOUT`, `NOT_FOUND` for `*_NOT_FOUND`, else
6
+ * `UNAVAILABLE`), `reason` is `cloud-provider-<providerCode>`, and the
7
+ * provider's own code stays on `providerCode`. Message and text details are
8
+ * redacted (credential shapes and control characters removed, bounded).
9
+ */
10
+ export declare class CloudProviderError extends CapabilityError {
11
+ readonly provider: string;
12
+ readonly providerCode: string;
13
+ constructor(message: string, providerCode: string, provider: string, details?: CloudProviderErrorDetails, options?: {
14
+ readonly cause?: Error | CapabilityErrorDetails;
15
+ });
16
+ }
17
+ /** Shared mechanics for provider-owned compute and volume implementations. */
18
+ export declare abstract class BaseCloudProvider implements CloudProvider {
19
+ #private;
20
+ protected defaultRegion?: string | undefined;
21
+ abstract name: string;
22
+ constructor(runtime: Pick<VibesRuntime, 'lifecycle'>, credentials: string, defaultRegion?: string | undefined);
23
+ /** Keep runtime internals out of serialization while preserving provider access. */
24
+ protected get runtime(): Pick<VibesRuntime, 'lifecycle'>;
25
+ protected set runtime(runtime: Pick<VibesRuntime, 'lifecycle'>);
26
+ /** The credential the provider was constructed with, for its own requests. */
27
+ protected get credentials(): string;
28
+ abstract createInstance(config: InstanceConfig): Promise<CloudInstance>;
29
+ abstract deleteInstance(instanceId: string): Promise<void>;
30
+ abstract getInstance(instanceId: string): Promise<CloudInstance | null>;
31
+ abstract listInstances(filters?: InstanceFilters): Promise<CloudInstance[]>;
32
+ abstract createVolume(config: VolumeConfig): Promise<CloudVolume>;
33
+ abstract attachVolume(volumeId: string, instanceId: string): Promise<void>;
34
+ abstract detachVolume(volumeId: string): Promise<void>;
35
+ abstract deleteVolume(volumeId: string): Promise<void>;
36
+ abstract listVolumes(filters?: VolumeFilters): Promise<CloudVolume[]>;
37
+ abstract getOrCreateVPC(name: string): Promise<string>;
38
+ abstract addSSHKey(name: string, publicKey: string): Promise<string>;
39
+ abstract listSSHKeys(): Promise<SSHKey[]>;
40
+ protected waitForInstanceStatus(instanceId: string, targetStatus: string, timeoutMs?: number, pollIntervalMs?: number): Promise<CloudInstance>;
41
+ protected waitForVolumeStatus(volumeId: string, targetStatus: string, timeoutMs?: number, pollIntervalMs?: number): Promise<CloudVolume>;
42
+ /** A typed provider failure; `cause` is the failure it replaces, kept for `-v` and logs. */
43
+ protected createError(message: string, code: string, details?: CloudProviderErrorDetails, cause?: Error): CloudProviderError;
44
+ protected buildTags(tags: Record<string, string>, additionalTags?: Record<string, string>): {
45
+ 'managed-by': string;
46
+ provider: string;
47
+ };
48
+ }
49
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import * as z from 'zod/v4';
2
+ import { CapabilityError, isCapabilityError } from '@vibesdotdev/kernel';
3
+ import { redactedExcerpt } from '@vibesdotdev/shared/utils';
4
+ /** The taxonomy code a provider's own failure code maps to. */
5
+ function capabilityCodeOf(providerCode) {
6
+ if (providerCode === 'TIMEOUT')
7
+ return 'TIMEOUT';
8
+ if (providerCode.endsWith('_NOT_FOUND'))
9
+ return 'NOT_FOUND';
10
+ return 'UNAVAILABLE';
11
+ }
12
+ /** `cloud-provider-<provider code in kebab form>`, bounded. */
13
+ function reasonOf(providerCode) {
14
+ const slug = providerCode.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 40);
15
+ return `cloud-provider-${slug || 'failure'}`;
16
+ }
17
+ /** One detail value as carried: text redacted, scalars as given. */
18
+ const DetailValueSchema = z.union([z.string().transform((text) => redactedExcerpt(text)), z.number(), z.boolean(), z.null()]);
19
+ function redactedDetails(provider, providerCode, details) {
20
+ const redacted = {};
21
+ for (const [key, value] of Object.entries(details ?? {})) {
22
+ if (value !== undefined)
23
+ redacted[key] = DetailValueSchema.parse(value);
24
+ }
25
+ return { ...redacted, provider, providerCode };
26
+ }
27
+ /**
28
+ * A provider failure in the `CapabilityError` taxonomy: `code` is the mapped
29
+ * taxonomy code (`TIMEOUT`, `NOT_FOUND` for `*_NOT_FOUND`, else
30
+ * `UNAVAILABLE`), `reason` is `cloud-provider-<providerCode>`, and the
31
+ * provider's own code stays on `providerCode`. Message and text details are
32
+ * redacted (credential shapes and control characters removed, bounded).
33
+ */
34
+ export class CloudProviderError extends CapabilityError {
35
+ provider;
36
+ providerCode;
37
+ constructor(message, providerCode, provider, details, options = {}) {
38
+ super(redactedExcerpt(message), capabilityCodeOf(providerCode), {
39
+ reason: reasonOf(providerCode),
40
+ details: redactedDetails(provider, providerCode, details),
41
+ cause: options.cause
42
+ });
43
+ this.name = 'CloudProviderError';
44
+ this.provider = provider;
45
+ this.providerCode = providerCode;
46
+ }
47
+ }
48
+ /** Shared mechanics for provider-owned compute and volume implementations. */
49
+ export class BaseCloudProvider {
50
+ defaultRegion;
51
+ /** The provider credential, private to this class: never an enumerable field that JSON or inspect would print. */
52
+ #credentials;
53
+ #runtime;
54
+ constructor(runtime, credentials, defaultRegion) {
55
+ this.defaultRegion = defaultRegion;
56
+ this.#credentials = credentials;
57
+ this.#runtime = runtime;
58
+ }
59
+ /** Keep runtime internals out of serialization while preserving provider access. */
60
+ get runtime() {
61
+ return this.#runtime;
62
+ }
63
+ set runtime(runtime) {
64
+ this.#runtime = runtime;
65
+ }
66
+ /** The credential the provider was constructed with, for its own requests. */
67
+ get credentials() {
68
+ return this.#credentials;
69
+ }
70
+ async waitForInstanceStatus(instanceId, targetStatus, timeoutMs = 300_000, pollIntervalMs = 5_000) {
71
+ try {
72
+ return await this.runtime.lifecycle.wait(async (signal) => {
73
+ while (true) {
74
+ const instance = await this.getInstance(instanceId);
75
+ if (!instance)
76
+ throw this.createError('Instance not found', 'INSTANCE_NOT_FOUND', { instanceId });
77
+ if (instance.status === targetStatus)
78
+ return instance;
79
+ if (instance.status === 'error' || instance.status === 'terminated') {
80
+ throw this.createError(`Instance entered error state: ${instance.status}`, 'INSTANCE_ERROR', {
81
+ instanceId,
82
+ status: instance.status
83
+ });
84
+ }
85
+ await this.runtime.lifecycle.delay(pollIntervalMs, signal);
86
+ }
87
+ }, { timeoutMs, reason: `waiting-for-instance-status-${targetStatus}` });
88
+ }
89
+ catch (err) {
90
+ if (err instanceof Error && isCapabilityError(err) && err.reason === 'wait-timeout') {
91
+ throw new CloudProviderError(`Timeout waiting for instance status: ${targetStatus}`, 'TIMEOUT', this.name, {
92
+ instanceId,
93
+ targetStatus,
94
+ timeoutMs
95
+ }, { cause: err });
96
+ }
97
+ throw err;
98
+ }
99
+ }
100
+ async waitForVolumeStatus(volumeId, targetStatus, timeoutMs = 120_000, pollIntervalMs = 3_000) {
101
+ try {
102
+ return await this.runtime.lifecycle.wait(async (signal) => {
103
+ while (true) {
104
+ const volume = (await this.listVolumes()).find((candidate) => candidate.id === volumeId);
105
+ if (!volume)
106
+ throw this.createError('Volume not found', 'VOLUME_NOT_FOUND', { volumeId });
107
+ if (volume.status === targetStatus)
108
+ return volume;
109
+ if (volume.status === 'error' || volume.status === 'deleted') {
110
+ throw this.createError(`Volume entered error state: ${volume.status}`, 'VOLUME_ERROR', {
111
+ volumeId,
112
+ status: volume.status
113
+ });
114
+ }
115
+ await this.runtime.lifecycle.delay(pollIntervalMs, signal);
116
+ }
117
+ }, { timeoutMs, reason: `waiting-for-volume-status-${targetStatus}` });
118
+ }
119
+ catch (err) {
120
+ if (err instanceof Error && isCapabilityError(err) && err.reason === 'wait-timeout') {
121
+ throw new CloudProviderError(`Timeout waiting for volume status: ${targetStatus}`, 'TIMEOUT', this.name, {
122
+ volumeId,
123
+ targetStatus,
124
+ timeoutMs
125
+ }, { cause: err });
126
+ }
127
+ throw err;
128
+ }
129
+ }
130
+ /** A typed provider failure; `cause` is the failure it replaces, kept for `-v` and logs. */
131
+ createError(message, code, details, cause) {
132
+ return new CloudProviderError(message, code, this.name, details, { cause });
133
+ }
134
+ buildTags(tags, additionalTags) {
135
+ return { 'managed-by': 'vibes', provider: this.name, ...tags, ...additionalTags };
136
+ }
137
+ }
138
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/doks/cloud/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { VibesRuntime } from '@vibesdotdev/kernel';
2
+ import type { CloudProvider } from '../types.ts';
3
+ export type CloudProviderFactory = (runtime: Pick<VibesRuntime, 'lifecycle'>, credentials: string, region: string) => CloudProvider;
4
+ export interface CloudProviderFactoryImplementation {
5
+ create: CloudProviderFactory;
6
+ }
7
+ export interface CloudProviderFactoryRuntime {
8
+ resolve<T>(kind: string, id: string): Promise<T>;
9
+ readonly lifecycle: VibesRuntime['lifecycle'];
10
+ }
11
+ /**
12
+ * Resolve and construct the vendor implementation selected by the active
13
+ * runtime. A resolved implementation without `create` refuses
14
+ * `INVALID_INPUT cloud-provider-factory-invalid`; a resolution failure passes
15
+ * through as the runtime raised it.
16
+ */
17
+ export declare function createRegisteredCloudProvider(runtime: CloudProviderFactoryRuntime, type: string, credentials: string, region: string): Promise<CloudProvider>;
18
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;AAEpI,MAAM,WAAW,kCAAkC;IAClD,MAAM,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC3C,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CAC9C;AAYD;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,2BAA2B,EACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAOxB"}
@@ -0,0 +1,22 @@
1
+ import * as z from 'zod/v4';
2
+ import { readUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
3
+ /** A registered factory offers `create`; kept as the original object (its method may use `this`). */
4
+ const FactoryOperationsSchema = z.object({ create: z.function() });
5
+ const FactorySchema = z.custom((value) => FactoryOperationsSchema.safeParse(value).success);
6
+ const FACTORY_INVALID = {
7
+ code: 'INVALID_INPUT',
8
+ reason: 'cloud-provider-factory-invalid',
9
+ message: () => 'The registered infra/cloud-provider implementation offers no create().'
10
+ };
11
+ /**
12
+ * Resolve and construct the vendor implementation selected by the active
13
+ * runtime. A resolved implementation without `create` refuses
14
+ * `INVALID_INPUT cloud-provider-factory-invalid`; a resolution failure passes
15
+ * through as the runtime raised it.
16
+ */
17
+ export async function createRegisteredCloudProvider(runtime, type, credentials, region) {
18
+ const resolved = await runtime.resolve('infra/cloud-provider', type);
19
+ const factory = readUntrusted(FactorySchema, () => resolved, FACTORY_INVALID);
20
+ return factory.create(runtime, credentials, region);
21
+ }
22
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/doks/cloud/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAA6B,MAAM,6CAA6C,CAAC;AAevG,qGAAqG;AACrG,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAqC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AAEhI,MAAM,eAAe,GAAyB;IAC7C,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,gCAAgC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,wEAAwE;CACvF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,OAAoC,EACpC,IAAY,EACZ,WAAmB,EACnB,MAAc;IAEd,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CACrC,sBAAsB,EACtB,IAAI,CACJ,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { CloudProvider, InstanceConfig, CloudInstance, InstanceFilters, VolumeConfig, CloudVolume, VolumeFilters, SSHKey, CloudProviderConfig, CloudProviderErrorDetails, CloudInstanceMetadata, InstanceStatus, VolumeStatus } from '../types.ts';
2
+ export { CloudProviderError, CloudProviderConfigSchema } from '../types.ts';
3
+ export { BaseCloudProvider } from './base.ts';
4
+ export { createRegisteredCloudProvider, type CloudProviderFactory, type CloudProviderFactoryImplementation, type CloudProviderFactoryRuntime } from './factory.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACN,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { CloudProviderError, CloudProviderConfigSchema } from "../types.js";
2
+ export { BaseCloudProvider } from "./base.js";
3
+ export { createRegisteredCloudProvider } from "./factory.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doks/cloud/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACN,6BAA6B,EAI7B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,95 @@
1
+ /** Provider-neutral cloud compute and volume contracts. */
2
+ import * as z from 'zod/v4';
3
+ import type { CapabilityErrorDetails } from '@vibesdotdev/kernel';
4
+ export type InstanceStatus = 'pending' | 'running' | 'stopping' | 'stopped' | 'terminating' | 'terminated' | 'error';
5
+ export type VolumeStatus = 'creating' | 'available' | 'in-use' | 'deleting' | 'deleted' | 'error';
6
+ export interface CloudProvider {
7
+ name: string;
8
+ createInstance(config: InstanceConfig): Promise<CloudInstance>;
9
+ deleteInstance(instanceId: string): Promise<void>;
10
+ getInstance(instanceId: string): Promise<CloudInstance | null>;
11
+ listInstances(filters?: InstanceFilters): Promise<CloudInstance[]>;
12
+ createVolume(config: VolumeConfig): Promise<CloudVolume>;
13
+ attachVolume(volumeId: string, instanceId: string): Promise<void>;
14
+ detachVolume(volumeId: string): Promise<void>;
15
+ deleteVolume(volumeId: string): Promise<void>;
16
+ listVolumes(filters?: VolumeFilters): Promise<CloudVolume[]>;
17
+ getOrCreateVPC(name: string): Promise<string>;
18
+ addSSHKey(name: string, publicKey: string): Promise<string>;
19
+ listSSHKeys(): Promise<SSHKey[]>;
20
+ }
21
+ export interface InstanceConfig {
22
+ name: string;
23
+ type: string;
24
+ region: string;
25
+ image: string;
26
+ sshKeys?: string[];
27
+ vpcId?: string;
28
+ userData?: string;
29
+ tags: Record<string, string>;
30
+ }
31
+ export interface CloudInstance {
32
+ id: string;
33
+ name: string;
34
+ type: string;
35
+ region: string;
36
+ status: InstanceStatus;
37
+ publicIp?: string;
38
+ privateIp?: string;
39
+ createdAt: Date;
40
+ tags: Record<string, string>;
41
+ metadata?: CloudInstanceMetadata;
42
+ }
43
+ /** Provider-reported instance facts: JSON values only. */
44
+ export type CloudInstanceMetadata = CapabilityErrorDetails;
45
+ export interface InstanceFilters {
46
+ status?: InstanceStatus[];
47
+ tags?: Record<string, string>;
48
+ region?: string;
49
+ }
50
+ export interface VolumeConfig {
51
+ name: string;
52
+ size: number;
53
+ region: string;
54
+ tags?: Record<string, string>;
55
+ }
56
+ export interface CloudVolume {
57
+ id: string;
58
+ name: string;
59
+ size: number;
60
+ region: string;
61
+ status: VolumeStatus;
62
+ attachedTo?: string;
63
+ createdAt: Date;
64
+ tags?: Record<string, string>;
65
+ }
66
+ export interface VolumeFilters {
67
+ status?: VolumeStatus[];
68
+ region?: string;
69
+ attachedTo?: string;
70
+ }
71
+ export interface SSHKey {
72
+ id: string;
73
+ name: string;
74
+ fingerprint: string;
75
+ publicKey: string;
76
+ }
77
+ /**
78
+ * Provider-neutral cloud provider config. `type` is the open provider id,
79
+ * resolved through the registered cloud provider factory — never a closed
80
+ * provider enum.
81
+ */
82
+ export declare const CloudProviderConfigSchema: z.ZodObject<{
83
+ type: z.ZodString;
84
+ credentials: z.ZodString;
85
+ region: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strip>;
87
+ export type CloudProviderConfig = z.infer<typeof CloudProviderConfigSchema>;
88
+ /**
89
+ * What a provider attaches to a failure: scalar facts (ids, statuses, HTTP
90
+ * codes). Text values are redacted at construction, so a provider that hands
91
+ * over a raw API body or an echoed token never carries it further.
92
+ */
93
+ export type CloudProviderErrorDetails = Readonly<Record<string, string | number | boolean | null | undefined>>;
94
+ export { CloudProviderError } from './cloud/base.ts';
95
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/doks/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Provider-neutral cloud compute and volume contracts. */
2
+ import * as z from 'zod/v4';
3
+ /**
4
+ * Provider-neutral cloud provider config. `type` is the open provider id,
5
+ * resolved through the registered cloud provider factory — never a closed
6
+ * provider enum.
7
+ */
8
+ export const CloudProviderConfigSchema = z.object({
9
+ type: z.string().min(1),
10
+ credentials: z.string(),
11
+ region: z.string().min(1).optional()
12
+ });
13
+ export { CloudProviderError } from "./cloud/base.js";
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/doks/types.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA8F5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAUH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @vibesdotdev/infra-core/generate
3
+ *
4
+ * Infrastructure artifact generation package.
5
+ *
6
+ * Provides CLI commands and runtime plugin for generating infrastructure
7
+ * artifacts (K8s manifests, Helm charts, wrangler configs, etc.) from
8
+ * resource descriptors.
9
+ *
10
+ * @example
11
+ * ```bash
12
+ * # Generate all artifacts
13
+ * vibes infra generate
14
+ *
15
+ * # Generate specific artifact types
16
+ * vibes infra generate --target kubernetes-manifest
17
+ * vibes infra generate --target helm-chart
18
+ *
19
+ * # Dry-run (print to stdout)
20
+ * vibes infra generate --dry-run
21
+ *
22
+ * # Generate to specific output directory
23
+ * vibes infra generate --output ./infra/generated
24
+ * ```
25
+ */
26
+ export { default as infraGeneratePlugin } from './infra-generate.plugin.ts';
27
+ export { generateArtifacts, type GenerateOptions, type GenerateResult } from '../cli/generate/generate-core.ts';
28
+ export type { ArtifactGenerator, ArtifactOutput, ArtifactDescriptor } from '@vibesdotdev/infra-core/kinds';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAChH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @vibesdotdev/infra-core/generate
3
+ *
4
+ * Infrastructure artifact generation package.
5
+ *
6
+ * Provides CLI commands and runtime plugin for generating infrastructure
7
+ * artifacts (K8s manifests, Helm charts, wrangler configs, etc.) from
8
+ * resource descriptors.
9
+ *
10
+ * @example
11
+ * ```bash
12
+ * # Generate all artifacts
13
+ * vibes infra generate
14
+ *
15
+ * # Generate specific artifact types
16
+ * vibes infra generate --target kubernetes-manifest
17
+ * vibes infra generate --target helm-chart
18
+ *
19
+ * # Dry-run (print to stdout)
20
+ * vibes infra generate --dry-run
21
+ *
22
+ * # Generate to specific output directory
23
+ * vibes infra generate --output ./infra/generated
24
+ * ```
25
+ */
26
+ export { default as infraGeneratePlugin } from "./infra-generate.plugin.js";
27
+ export { generateArtifacts } from "../cli/generate/generate-core.js";
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAA6C,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const defaultExport: import("@vibesdotdev/kernel").RuntimePlugin;
2
+ export default defaultExport;
3
+ //# sourceMappingURL=infra-generate.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-generate.plugin.d.ts","sourceRoot":"","sources":["../../src/generate/infra-generate.plugin.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,aAAa,6CAWjB,CAAC;AAEH,eAAe,aAAa,CAAC"}