@vibesdotdev/infra-core 0.0.2 → 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 (319) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +27 -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-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 +21 -32
  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 +25 -29
  206. package/dist/kinds/package-registry.kind.d.ts.map +1 -1
  207. package/dist/kinds/package-registry.kind.js +12 -25
  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 +87 -36
  294. package/src/bootstrap/index.ts +0 -15
  295. package/src/bootstrap/seed.descriptor.ts +0 -24
  296. package/src/bootstrap/seed.impl-shape.ts +0 -5
  297. package/src/bootstrap/seed.kind.ts +0 -26
  298. package/src/bootstrap/seed.runner.ts +0 -87
  299. package/src/credentials/resolve.ts +0 -205
  300. package/src/deployment.ts +0 -57
  301. package/src/index.ts +0 -149
  302. package/src/infra.plugin.ts +0 -54
  303. package/src/kinds/alerts.kind.ts +0 -164
  304. package/src/kinds/artifact.kind.ts +0 -96
  305. package/src/kinds/cache.kind.ts +0 -104
  306. package/src/kinds/database.kind.ts +0 -120
  307. package/src/kinds/discovery.ts +0 -26
  308. package/src/kinds/git-hosting.kind.ts +0 -100
  309. package/src/kinds/index.ts +0 -139
  310. package/src/kinds/logs.kind.ts +0 -104
  311. package/src/kinds/object-storage.kind.ts +0 -101
  312. package/src/kinds/observability.kind.ts +0 -178
  313. package/src/kinds/package-registry.kind.ts +0 -95
  314. package/src/kinds/queue.kind.ts +0 -102
  315. package/src/kinds/rum.kind.ts +0 -135
  316. package/src/kinds/sandbox.kind.ts +0 -115
  317. package/src/kinds/web-app.kind.ts +0 -103
  318. package/src/kinds/worker.kind.ts +0 -203
  319. package/src/schemas.ts +0 -127
@@ -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":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,MAAM,EACN,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAA4B,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AA2BnJ;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,EACnC,OAAO,GAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,sBAAsB,CAAA;KAAO;CAWlE;AAED,8EAA8E;AAC9E,8BAAsB,iBAAkB,YAAW,aAAa;;IAS9D,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM;IARjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAMrB,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EACxC,WAAW,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,MAAM,YAAA;IAMjC,oFAAoF;IACpF,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAEvD;IAED,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAE7D;IAED,8EAA8E;IAC9E,SAAS,KAAK,WAAW,IAAI,MAAM,CAElC;IAED,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IACvE,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IACvE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAC3E,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1E,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtD,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACrE,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACpE,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;cAEzB,qBAAqB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,SAAU,EACnB,cAAc,SAAQ,GACpB,OAAO,CAAC,aAAa,CAAC;cA+BT,mBAAmB,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,SAAU,EACnB,cAAc,SAAQ,GACpB,OAAO,CAAC,WAAW,CAAC;IA+BvB,4FAA4F;IAC5F,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,kBAAkB;IAI5H,SAAS,CAAC,SAAS,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;CAIxC"}
@@ -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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Runtime plugin for infra-generate.
3
+ *
4
+ * Registers CLI commands under the existing 'infra' group:
5
+ * - vibes infra generate
6
+ * - vibes infra artifact
7
+ */
8
+ import { createRuntimePlugin, loader } from '@vibesdotdev/kernel';
9
+ import generateCommand from "../cli/generate/generate/generate.cli-command.descriptor.js";
10
+ import artifactCommand from "../cli/generate/artifact/artifact.cli-command.descriptor.js";
11
+ // Hoisted const: tsc rewriteRelativeImportExtensions does not rewrite `.ts` specifiers inside `export default <expr>` (TS 6.0.3).
12
+ const defaultExport = createRuntimePlugin({
13
+ id: 'infra-generate',
14
+ name: 'Infra Generate',
15
+ description: 'Infrastructure artifact generation',
16
+ descriptors: [generateCommand, artifactCommand],
17
+ loaders: [
18
+ loader('infra-generate.run', () => import("../cli/generate/generate/generate.cli-command.impl.js")),
19
+ loader('infra-generate.artifact', () => import("../cli/generate/artifact/artifact.cli-command.impl.js"))
20
+ ]
21
+ });
22
+ export default defaultExport;
23
+ //# sourceMappingURL=infra-generate.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-generate.plugin.js","sourceRoot":"","sources":["../../src/generate/infra-generate.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,eAAe,MAAM,6DAA6D,CAAC;AAC1F,OAAO,eAAe,MAAM,6DAA6D,CAAC;AAE1F,kIAAkI;AAClI,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACzC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,oCAAoC;IAEjD,WAAW,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;IAE/C,OAAO,EAAE;QACR,MAAM,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC;QACnG,MAAM,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC;KACxG;CACD,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './infra-generate.plugin.ts';
2
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/generate/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from "./infra-generate.plugin.js";
2
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/generate/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,97 @@
1
+ /** Marker prefix written on every cron tick (success or attempt). */
2
+ export declare const CRON_HEARTBEAT_MARKER = "[VIBES-HEARTBEAT";
3
+ /** Marker prefix written when a cron tick fails. */
4
+ export declare const CRON_ERROR_MARKER = "[VIBES-ERR";
5
+ export type CronHeartbeatStatus = 'ok' | 'error';
6
+ export interface CronHeartbeatInput {
7
+ /** Short app slug, e.g. 'account', 'platform', 'system'. */
8
+ app: string;
9
+ /** The cron expression that fired, e.g. '*\/5 * * * *'. */
10
+ cron: string;
11
+ /** Outcome of the tick. */
12
+ status: CronHeartbeatStatus;
13
+ /** ISO timestamp of the scheduled tick. */
14
+ scheduledTime: string;
15
+ /** Optional free-form detail (job name, error message, counts). */
16
+ detail?: string;
17
+ }
18
+ /**
19
+ * Canonical per-tick heartbeat line. Stable, greppable, and safe to emit from
20
+ * an injected plain-JS handler (no interpolation a transpiler would mangle).
21
+ *
22
+ * @example
23
+ * formatCronHeartbeat({ app: 'account', cron: '15 * * * *', status: 'ok',
24
+ * scheduledTime: '2026-06-17T15:00:00.000Z' })
25
+ * // '[VIBES-HEARTBEAT account cron] status=ok cron="15 * * * *" last_tick_at=2026-06-17T15:00:00.000Z'
26
+ */
27
+ export declare function formatCronHeartbeat(input: CronHeartbeatInput): string;
28
+ /**
29
+ * Canonical cron-failure line. A Workers-Observability alert can match
30
+ * `[VIBES-ERR <app> cron]` to page on a failing tick without any new infra.
31
+ */
32
+ export declare function formatCronError(input: {
33
+ app: string;
34
+ cron: string;
35
+ detail: string;
36
+ }): string;
37
+ /** A persisted heartbeat record (KV value / D1 row / parsed log line). */
38
+ export interface CronHeartbeatRecord {
39
+ cron: string;
40
+ /** ISO timestamp of the last observed tick. */
41
+ lastTickAt: string;
42
+ status: CronHeartbeatStatus;
43
+ app?: string;
44
+ detail?: string;
45
+ }
46
+ /** Build the structured record persisted alongside the log marker. */
47
+ export declare function buildCronHeartbeatRecord(input: CronHeartbeatInput): CronHeartbeatRecord;
48
+ /**
49
+ * Best-effort parse of the cron expressions we actually register into an
50
+ * interval in milliseconds. Handles the 5-field forms used across the fleet:
51
+ *
52
+ * '* * * * *' → every minute
53
+ * '*\/5 * * * *' → every 5 minutes (step on the minute field)
54
+ * '15 * * * *' → hourly (fixed minute)
55
+ * '5 * * * *' → hourly
56
+ * '0 2 * * *' → daily (fixed minute + hour)
57
+ * '30 6 * * 1' → weekly (fixed minute + hour + weekday)
58
+ *
59
+ * Returns null for expressions we can't confidently interval (e.g. ranges,
60
+ * lists, multi-field steps) — the caller treats unknown intervals as
61
+ * "can't assess" rather than guessing and false-flagging.
62
+ */
63
+ export declare function parseCronIntervalMs(cron: string): number | null;
64
+ export interface CronFreshnessVerdict {
65
+ cron: string;
66
+ app?: string;
67
+ /** Interval we derived from the cron expression, or null if unknown. */
68
+ intervalMs: number | null;
69
+ /** Age of the last tick at `now`, or null if never observed. */
70
+ ageMs: number | null;
71
+ /** Staleness threshold applied (2× interval), or null if interval unknown. */
72
+ thresholdMs: number | null;
73
+ /** True when the heartbeat is missing or older than the threshold. */
74
+ stale: boolean;
75
+ /** 'never' | 'stale' | 'fresh' | 'unknown-interval'. */
76
+ reason: 'never' | 'stale' | 'fresh' | 'unknown-interval';
77
+ }
78
+ /**
79
+ * Flag any cron whose last heartbeat is missing or older than 2× its
80
+ * interval. A never-observed cron is stale by definition (that is the dead-
81
+ * cron case). An unknown interval is reported but NOT flagged stale, so we
82
+ * never page on a cron we can't reason about.
83
+ *
84
+ * @param entries declared crons + their latest heartbeat (lastTickAt may be
85
+ * null when no heartbeat has ever been recorded).
86
+ * @param now evaluation time (epoch ms).
87
+ * @param staleMultiplier multiple of the interval after which a cron is
88
+ * considered stale (default 2). A multiplier that is not a positive finite
89
+ * number refuses `INVALID_INPUT cron-stale-multiplier-invalid`: NaN would
90
+ * read every cron fresh, and zero every cron stale.
91
+ */
92
+ export declare function evaluateCronFreshness(entries: Array<{
93
+ cron: string;
94
+ lastTickAt: string | null;
95
+ app?: string;
96
+ }>, now: number, staleMultiplier?: number): CronFreshnessVerdict[];
97
+ //# sourceMappingURL=cron-heartbeat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-heartbeat.d.ts","sourceRoot":"","sources":["../../src/heartbeat/cron-heartbeat.ts"],"names":[],"mappings":"AAgDA,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE5F;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAQvF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwC/D;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sEAAsE;IACtE,KAAK,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,kBAAkB,CAAC;CACzD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,GAAG,EAAE,MAAM,EACX,eAAe,SAAI,GACjB,oBAAoB,EAAE,CA6DxB"}