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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +28 -1
  3. package/dist/bootstrap/seed.descriptor.d.ts +1 -1
  4. package/dist/bootstrap/seed.descriptor.d.ts.map +1 -1
  5. package/dist/bootstrap/seed.descriptor.js +1 -1
  6. package/dist/bootstrap/seed.descriptor.js.map +1 -1
  7. package/dist/bootstrap/seed.impl-shape.d.ts +1 -1
  8. package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -1
  9. package/dist/bootstrap/seed.kind.d.ts +1 -3
  10. package/dist/bootstrap/seed.kind.d.ts.map +1 -1
  11. package/dist/bootstrap/seed.kind.js +17 -4
  12. package/dist/bootstrap/seed.kind.js.map +1 -1
  13. package/dist/bootstrap/seed.runner.d.ts +9 -2
  14. package/dist/bootstrap/seed.runner.d.ts.map +1 -1
  15. package/dist/bootstrap/seed.runner.js +37 -18
  16. package/dist/bootstrap/seed.runner.js.map +1 -1
  17. package/dist/capped-id.d.ts +19 -0
  18. package/dist/capped-id.d.ts.map +1 -0
  19. package/dist/capped-id.js +64 -0
  20. package/dist/capped-id.js.map +1 -0
  21. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts +23 -0
  22. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts.map +1 -0
  23. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js +33 -0
  24. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js.map +1 -0
  25. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts +24 -0
  26. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts.map +1 -0
  27. package/dist/cli/generate/artifact/artifact.cli-command.impl.js +73 -0
  28. package/dist/cli/generate/artifact/artifact.cli-command.impl.js.map +1 -0
  29. package/dist/cli/generate/context.d.ts +17 -0
  30. package/dist/cli/generate/context.d.ts.map +1 -0
  31. package/dist/cli/generate/context.js +24 -0
  32. package/dist/cli/generate/context.js.map +1 -0
  33. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts +30 -0
  34. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts.map +1 -0
  35. package/dist/cli/generate/generate/generate.cli-command.descriptor.js +25 -0
  36. package/dist/cli/generate/generate/generate.cli-command.descriptor.js.map +1 -0
  37. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts +25 -0
  38. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts.map +1 -0
  39. package/dist/cli/generate/generate/generate.cli-command.impl.js +64 -0
  40. package/dist/cli/generate/generate/generate.cli-command.impl.js.map +1 -0
  41. package/dist/cli/generate/generate-core.d.ts +51 -0
  42. package/dist/cli/generate/generate-core.d.ts.map +1 -0
  43. package/dist/cli/generate/generate-core.js +172 -0
  44. package/dist/cli/generate/generate-core.js.map +1 -0
  45. package/dist/cli/generate/index.d.ts +5 -0
  46. package/dist/cli/generate/index.d.ts.map +1 -0
  47. package/dist/cli/generate/index.js +5 -0
  48. package/dist/cli/generate/index.js.map +1 -0
  49. package/dist/credentials/resolve.d.ts +82 -22
  50. package/dist/credentials/resolve.d.ts.map +1 -1
  51. package/dist/credentials/resolve.js +251 -77
  52. package/dist/credentials/resolve.js.map +1 -1
  53. package/dist/deployment-budget.d.ts +319 -0
  54. package/dist/deployment-budget.d.ts.map +1 -0
  55. package/dist/deployment-budget.js +660 -0
  56. package/dist/deployment-budget.js.map +1 -0
  57. package/dist/deployment-environment.d.ts +30 -0
  58. package/dist/deployment-environment.d.ts.map +1 -0
  59. package/dist/deployment-environment.js +53 -0
  60. package/dist/deployment-environment.js.map +1 -0
  61. package/dist/deployment-graph.d.ts +185 -0
  62. package/dist/deployment-graph.d.ts.map +1 -0
  63. package/dist/deployment-graph.js +705 -0
  64. package/dist/deployment-graph.js.map +1 -0
  65. package/dist/deployment.d.ts +25 -4
  66. package/dist/deployment.d.ts.map +1 -1
  67. package/dist/deployment.js +105 -0
  68. package/dist/deployment.js.map +1 -1
  69. package/dist/doks/cloud/base.d.ts +49 -0
  70. package/dist/doks/cloud/base.d.ts.map +1 -0
  71. package/dist/doks/cloud/base.js +138 -0
  72. package/dist/doks/cloud/base.js.map +1 -0
  73. package/dist/doks/cloud/factory.d.ts +18 -0
  74. package/dist/doks/cloud/factory.d.ts.map +1 -0
  75. package/dist/doks/cloud/factory.js +22 -0
  76. package/dist/doks/cloud/factory.js.map +1 -0
  77. package/dist/doks/cloud/index.d.ts +5 -0
  78. package/dist/doks/cloud/index.d.ts.map +1 -0
  79. package/dist/doks/cloud/index.js +4 -0
  80. package/dist/doks/cloud/index.js.map +1 -0
  81. package/dist/doks/types.d.ts +95 -0
  82. package/dist/doks/types.d.ts.map +1 -0
  83. package/dist/doks/types.js +14 -0
  84. package/dist/doks/types.js.map +1 -0
  85. package/dist/generate/index.d.ts +29 -0
  86. package/dist/generate/index.d.ts.map +1 -0
  87. package/dist/generate/index.js +28 -0
  88. package/dist/generate/index.js.map +1 -0
  89. package/dist/generate/infra-generate.plugin.d.ts +3 -0
  90. package/dist/generate/infra-generate.plugin.d.ts.map +1 -0
  91. package/dist/generate/infra-generate.plugin.js +23 -0
  92. package/dist/generate/infra-generate.plugin.js.map +1 -0
  93. package/dist/generate/plugin.d.ts +2 -0
  94. package/dist/generate/plugin.d.ts.map +1 -0
  95. package/dist/generate/plugin.js +2 -0
  96. package/dist/generate/plugin.js.map +1 -0
  97. package/dist/heartbeat/cron-heartbeat.d.ts +97 -0
  98. package/dist/heartbeat/cron-heartbeat.d.ts.map +1 -0
  99. package/dist/heartbeat/cron-heartbeat.js +200 -0
  100. package/dist/heartbeat/cron-heartbeat.js.map +1 -0
  101. package/dist/index.d.ts +37 -22
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +29 -14
  104. package/dist/index.js.map +1 -1
  105. package/dist/infra.plugin.d.ts +1 -1
  106. package/dist/infra.plugin.d.ts.map +1 -1
  107. package/dist/infra.plugin.js +64 -12
  108. package/dist/infra.plugin.js.map +1 -1
  109. package/dist/kinds/alerts.kind.d.ts +64 -25
  110. package/dist/kinds/alerts.kind.d.ts.map +1 -1
  111. package/dist/kinds/alerts.kind.js +43 -16
  112. package/dist/kinds/alerts.kind.js.map +1 -1
  113. package/dist/kinds/artifact.kind.d.ts +58 -10
  114. package/dist/kinds/artifact.kind.d.ts.map +1 -1
  115. package/dist/kinds/artifact.kind.js +26 -9
  116. package/dist/kinds/artifact.kind.js.map +1 -1
  117. package/dist/kinds/billing.kind.d.ts +88 -0
  118. package/dist/kinds/billing.kind.d.ts.map +1 -0
  119. package/dist/kinds/billing.kind.js +48 -0
  120. package/dist/kinds/billing.kind.js.map +1 -0
  121. package/dist/kinds/build-job.kind.d.ts +383 -0
  122. package/dist/kinds/build-job.kind.d.ts.map +1 -0
  123. package/dist/kinds/build-job.kind.js +218 -0
  124. package/dist/kinds/build-job.kind.js.map +1 -0
  125. package/dist/kinds/cache-byte-store.d.ts +23 -0
  126. package/dist/kinds/cache-byte-store.d.ts.map +1 -0
  127. package/dist/kinds/cache-byte-store.js +9 -0
  128. package/dist/kinds/cache-byte-store.js.map +1 -0
  129. package/dist/kinds/cache.kind.d.ts +38 -94
  130. package/dist/kinds/cache.kind.d.ts.map +1 -1
  131. package/dist/kinds/cache.kind.js +39 -50
  132. package/dist/kinds/cache.kind.js.map +1 -1
  133. package/dist/kinds/cluster.kind.d.ts +154 -0
  134. package/dist/kinds/cluster.kind.d.ts.map +1 -0
  135. package/dist/kinds/cluster.kind.js +99 -0
  136. package/dist/kinds/cluster.kind.js.map +1 -0
  137. package/dist/kinds/compute-source.kind.d.ts +155 -0
  138. package/dist/kinds/compute-source.kind.d.ts.map +1 -0
  139. package/dist/kinds/compute-source.kind.js +158 -0
  140. package/dist/kinds/compute-source.kind.js.map +1 -0
  141. package/dist/kinds/container-registry.kind.d.ts +62 -0
  142. package/dist/kinds/container-registry.kind.d.ts.map +1 -0
  143. package/dist/kinds/container-registry.kind.js +47 -0
  144. package/dist/kinds/container-registry.kind.js.map +1 -0
  145. package/dist/kinds/database-migrator.kind.d.ts +6 -0
  146. package/dist/kinds/database-migrator.kind.d.ts.map +1 -0
  147. package/dist/kinds/database-migrator.kind.js +28 -0
  148. package/dist/kinds/database-migrator.kind.js.map +1 -0
  149. package/dist/kinds/database.kind.d.ts +114 -93
  150. package/dist/kinds/database.kind.d.ts.map +1 -1
  151. package/dist/kinds/database.kind.js +93 -54
  152. package/dist/kinds/database.kind.js.map +1 -1
  153. package/dist/kinds/deployment-provider.kind.d.ts +5 -0
  154. package/dist/kinds/deployment-provider.kind.d.ts.map +1 -0
  155. package/dist/kinds/deployment-provider.kind.js +11 -0
  156. package/dist/kinds/deployment-provider.kind.js.map +1 -0
  157. package/dist/kinds/discovery.d.ts +5 -12
  158. package/dist/kinds/discovery.d.ts.map +1 -1
  159. package/dist/kinds/discovery.js +5 -17
  160. package/dist/kinds/discovery.js.map +1 -1
  161. package/dist/kinds/dns.kind.d.ts +162 -0
  162. package/dist/kinds/dns.kind.d.ts.map +1 -0
  163. package/dist/kinds/dns.kind.js +54 -0
  164. package/dist/kinds/dns.kind.js.map +1 -0
  165. package/dist/kinds/drift.kind.d.ts +115 -0
  166. package/dist/kinds/drift.kind.d.ts.map +1 -0
  167. package/dist/kinds/drift.kind.js +60 -0
  168. package/dist/kinds/drift.kind.js.map +1 -0
  169. package/dist/kinds/edge-hostname.kind.d.ts +124 -0
  170. package/dist/kinds/edge-hostname.kind.d.ts.map +1 -0
  171. package/dist/kinds/edge-hostname.kind.js +87 -0
  172. package/dist/kinds/edge-hostname.kind.js.map +1 -0
  173. package/dist/kinds/edge-tls.kind.d.ts +194 -0
  174. package/dist/kinds/edge-tls.kind.d.ts.map +1 -0
  175. package/dist/kinds/edge-tls.kind.js +58 -0
  176. package/dist/kinds/edge-tls.kind.js.map +1 -0
  177. package/dist/kinds/firewall.kind.d.ts +92 -0
  178. package/dist/kinds/firewall.kind.d.ts.map +1 -0
  179. package/dist/kinds/firewall.kind.js +59 -0
  180. package/dist/kinds/firewall.kind.js.map +1 -0
  181. package/dist/kinds/git-hosting.kind.d.ts +36 -38
  182. package/dist/kinds/git-hosting.kind.d.ts.map +1 -1
  183. package/dist/kinds/git-hosting.kind.js +21 -32
  184. package/dist/kinds/git-hosting.kind.js.map +1 -1
  185. package/dist/kinds/index.d.ts +41 -15
  186. package/dist/kinds/index.d.ts.map +1 -1
  187. package/dist/kinds/index.js +40 -14
  188. package/dist/kinds/index.js.map +1 -1
  189. package/dist/kinds/inventory.kind.d.ts +245 -0
  190. package/dist/kinds/inventory.kind.d.ts.map +1 -0
  191. package/dist/kinds/inventory.kind.js +243 -0
  192. package/dist/kinds/inventory.kind.js.map +1 -0
  193. package/dist/kinds/load-balancer.kind.d.ts +135 -0
  194. package/dist/kinds/load-balancer.kind.d.ts.map +1 -0
  195. package/dist/kinds/load-balancer.kind.js +71 -0
  196. package/dist/kinds/load-balancer.kind.js.map +1 -0
  197. package/dist/kinds/logs.kind.d.ts +74 -3
  198. package/dist/kinds/logs.kind.d.ts.map +1 -1
  199. package/dist/kinds/logs.kind.js +26 -17
  200. package/dist/kinds/logs.kind.js.map +1 -1
  201. package/dist/kinds/nfs.kind.d.ts +67 -0
  202. package/dist/kinds/nfs.kind.d.ts.map +1 -0
  203. package/dist/kinds/nfs.kind.js +45 -0
  204. package/dist/kinds/nfs.kind.js.map +1 -0
  205. package/dist/kinds/node-pool.kind.d.ts +134 -0
  206. package/dist/kinds/node-pool.kind.d.ts.map +1 -0
  207. package/dist/kinds/node-pool.kind.js +88 -0
  208. package/dist/kinds/node-pool.kind.js.map +1 -0
  209. package/dist/kinds/object-storage.kind.d.ts +50 -24
  210. package/dist/kinds/object-storage.kind.d.ts.map +1 -1
  211. package/dist/kinds/object-storage.kind.js +40 -23
  212. package/dist/kinds/object-storage.kind.js.map +1 -1
  213. package/dist/kinds/observability.kind.d.ts +104 -6
  214. package/dist/kinds/observability.kind.d.ts.map +1 -1
  215. package/dist/kinds/observability.kind.js +67 -9
  216. package/dist/kinds/observability.kind.js.map +1 -1
  217. package/dist/kinds/package-registry.kind.d.ts +139 -33
  218. package/dist/kinds/package-registry.kind.d.ts.map +1 -1
  219. package/dist/kinds/package-registry.kind.js +55 -25
  220. package/dist/kinds/package-registry.kind.js.map +1 -1
  221. package/dist/kinds/queue.kind.d.ts +67 -63
  222. package/dist/kinds/queue.kind.d.ts.map +1 -1
  223. package/dist/kinds/queue.kind.js +55 -33
  224. package/dist/kinds/queue.kind.js.map +1 -1
  225. package/dist/kinds/read-descriptor.d.ts +15 -0
  226. package/dist/kinds/read-descriptor.d.ts.map +1 -0
  227. package/dist/kinds/read-descriptor.js +11 -0
  228. package/dist/kinds/read-descriptor.js.map +1 -0
  229. package/dist/kinds/rum.kind.d.ts +36 -6
  230. package/dist/kinds/rum.kind.d.ts.map +1 -1
  231. package/dist/kinds/rum.kind.js +6 -7
  232. package/dist/kinds/rum.kind.js.map +1 -1
  233. package/dist/kinds/sandbox.kind.d.ts +136 -40
  234. package/dist/kinds/sandbox.kind.d.ts.map +1 -1
  235. package/dist/kinds/sandbox.kind.js +82 -43
  236. package/dist/kinds/sandbox.kind.js.map +1 -1
  237. package/dist/kinds/select-compute-source.d.ts +72 -0
  238. package/dist/kinds/select-compute-source.d.ts.map +1 -0
  239. package/dist/kinds/select-compute-source.js +170 -0
  240. package/dist/kinds/select-compute-source.js.map +1 -0
  241. package/dist/kinds/service-release.kind.d.ts +771 -0
  242. package/dist/kinds/service-release.kind.d.ts.map +1 -0
  243. package/dist/kinds/service-release.kind.js +676 -0
  244. package/dist/kinds/service-release.kind.js.map +1 -0
  245. package/dist/kinds/spend-guard.kind.d.ts +41 -0
  246. package/dist/kinds/spend-guard.kind.d.ts.map +1 -0
  247. package/dist/kinds/spend-guard.kind.js +140 -0
  248. package/dist/kinds/spend-guard.kind.js.map +1 -0
  249. package/dist/kinds/utilization.kind.d.ts +88 -0
  250. package/dist/kinds/utilization.kind.d.ts.map +1 -0
  251. package/dist/kinds/utilization.kind.js +62 -0
  252. package/dist/kinds/utilization.kind.js.map +1 -0
  253. package/dist/kinds/volume.kind.d.ts +54 -0
  254. package/dist/kinds/volume.kind.d.ts.map +1 -0
  255. package/dist/kinds/volume.kind.js +39 -0
  256. package/dist/kinds/volume.kind.js.map +1 -0
  257. package/dist/kinds/vpc.kind.d.ts +61 -0
  258. package/dist/kinds/vpc.kind.d.ts.map +1 -0
  259. package/dist/kinds/vpc.kind.js +51 -0
  260. package/dist/kinds/vpc.kind.js.map +1 -0
  261. package/dist/kinds/web-app.kind.d.ts +118 -45
  262. package/dist/kinds/web-app.kind.d.ts.map +1 -1
  263. package/dist/kinds/web-app.kind.js +69 -42
  264. package/dist/kinds/web-app.kind.js.map +1 -1
  265. package/dist/kinds/worker.kind.d.ts +129 -188
  266. package/dist/kinds/worker.kind.d.ts.map +1 -1
  267. package/dist/kinds/worker.kind.js +45 -123
  268. package/dist/kinds/worker.kind.js.map +1 -1
  269. package/dist/schemas/database-migration.d.ts +173 -0
  270. package/dist/schemas/database-migration.d.ts.map +1 -0
  271. package/dist/schemas/database-migration.js +88 -0
  272. package/dist/schemas/database-migration.js.map +1 -0
  273. package/dist/schemas/deployment-environment.d.ts +11 -0
  274. package/dist/schemas/deployment-environment.d.ts.map +1 -0
  275. package/dist/schemas/deployment-environment.js +9 -0
  276. package/dist/schemas/deployment-environment.js.map +1 -0
  277. package/dist/schemas/deployment-provider.d.ts +383 -0
  278. package/dist/schemas/deployment-provider.d.ts.map +1 -0
  279. package/dist/schemas/deployment-provider.js +211 -0
  280. package/dist/schemas/deployment-provider.js.map +1 -0
  281. package/dist/schemas/log-stream.d.ts +27 -0
  282. package/dist/schemas/log-stream.d.ts.map +1 -0
  283. package/dist/schemas/log-stream.js +31 -0
  284. package/dist/schemas/log-stream.js.map +1 -0
  285. package/dist/schemas/spend-guard.d.ts +155 -0
  286. package/dist/schemas/spend-guard.d.ts.map +1 -0
  287. package/dist/schemas/spend-guard.js +61 -0
  288. package/dist/schemas/spend-guard.js.map +1 -0
  289. package/dist/schemas.d.ts +195 -20
  290. package/dist/schemas.d.ts.map +1 -1
  291. package/dist/schemas.js +151 -31
  292. package/dist/schemas.js.map +1 -1
  293. package/dist/service.d.ts +87 -0
  294. package/dist/service.d.ts.map +1 -0
  295. package/dist/service.js +199 -0
  296. package/dist/service.js.map +1 -0
  297. package/dist/settle-work.d.ts +20 -0
  298. package/dist/settle-work.d.ts.map +1 -0
  299. package/dist/settle-work.js +22 -0
  300. package/dist/settle-work.js.map +1 -0
  301. package/dist/web-app-projection.d.ts +208 -0
  302. package/dist/web-app-projection.d.ts.map +1 -0
  303. package/dist/web-app-projection.js +95 -0
  304. package/dist/web-app-projection.js.map +1 -0
  305. package/package.json +121 -37
  306. package/src/bootstrap/index.ts +0 -15
  307. package/src/bootstrap/seed.descriptor.ts +0 -24
  308. package/src/bootstrap/seed.impl-shape.ts +0 -5
  309. package/src/bootstrap/seed.kind.ts +0 -26
  310. package/src/bootstrap/seed.runner.ts +0 -87
  311. package/src/credentials/resolve.ts +0 -205
  312. package/src/deployment.ts +0 -57
  313. package/src/index.ts +0 -149
  314. package/src/infra.plugin.ts +0 -54
  315. package/src/kinds/alerts.kind.ts +0 -164
  316. package/src/kinds/artifact.kind.ts +0 -96
  317. package/src/kinds/cache.kind.ts +0 -104
  318. package/src/kinds/database.kind.ts +0 -120
  319. package/src/kinds/discovery.ts +0 -26
  320. package/src/kinds/git-hosting.kind.ts +0 -100
  321. package/src/kinds/index.ts +0 -139
  322. package/src/kinds/logs.kind.ts +0 -104
  323. package/src/kinds/object-storage.kind.ts +0 -101
  324. package/src/kinds/observability.kind.ts +0 -178
  325. package/src/kinds/package-registry.kind.ts +0 -95
  326. package/src/kinds/queue.kind.ts +0 -102
  327. package/src/kinds/rum.kind.ts +0 -135
  328. package/src/kinds/sandbox.kind.ts +0 -115
  329. package/src/kinds/web-app.kind.ts +0 -103
  330. package/src/kinds/worker.kind.ts +0 -203
  331. package/src/schemas.ts +0 -127
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Infra Edge TLS Kind
3
+ *
4
+ * Provider-agnostic schema for the TLS policy an edge/CDN uses when it
5
+ * connects to an origin. This governs the edge→origin leg only; the
6
+ * browser→edge leg is certificate and hostname configuration, not this kind.
7
+ *
8
+ * The policy is modeled per hostname rather than per zone because a zone
9
+ * routinely fronts origins with different certificate maturity: a hardened
10
+ * origin needs `verified`, while a legacy origin with a self-signed or
11
+ * expired certificate still answers only under `opportunistic`. A zone-wide
12
+ * value forces the weakest origin's policy onto every hostname.
13
+ *
14
+ * `opportunistic` is a loop hazard, not merely weak: when the edge speaks
15
+ * plaintext to an origin that redirects to HTTPS, a same-zone subrequest
16
+ * bounces between edge and origin until the edge gives up. Any hostname whose
17
+ * origin redirects HTTP to HTTPS must be `verified` or `encrypted`.
18
+ */
19
+ import * as z from 'zod/v4';
20
+ import type { InfraAuthorityFingerprint } from './inventory.kind.ts';
21
+ /**
22
+ * - `verified`: encrypt and require a valid certificate for the origin hostname.
23
+ * - `encrypted`: encrypt without validating the origin certificate.
24
+ * - `opportunistic`: connect in plaintext when the origin allows it.
25
+ * - `off`: never encrypt the edge→origin leg.
26
+ */
27
+ declare const OriginTlsPolicySchema: z.ZodEnum<{
28
+ off: "off";
29
+ verified: "verified";
30
+ encrypted: "encrypted";
31
+ opportunistic: "opportunistic";
32
+ }>;
33
+ export type OriginTlsPolicy = z.infer<typeof OriginTlsPolicySchema>;
34
+ declare const EdgeTlsPolicySchema: z.ZodObject<{
35
+ hostnames: z.ZodArray<z.ZodString>;
36
+ policy: z.ZodEnum<{
37
+ off: "off";
38
+ verified: "verified";
39
+ encrypted: "encrypted";
40
+ opportunistic: "opportunistic";
41
+ }>;
42
+ description: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strip>;
44
+ export type EdgeTlsPolicy = z.infer<typeof EdgeTlsPolicySchema>;
45
+ export type EdgeTlsPolicyInput = z.input<typeof EdgeTlsPolicySchema>;
46
+ declare const EdgeTlsBaseSchema: z.ZodObject<{
47
+ id: z.ZodString;
48
+ name: z.ZodOptional<z.ZodString>;
49
+ description: z.ZodOptional<z.ZodString>;
50
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ enabled: z.ZodOptional<z.ZodBoolean>;
53
+ priority: z.ZodOptional<z.ZodNumber>;
54
+ capabilityId: z.ZodOptional<z.ZodString>;
55
+ requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
+ optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
57
+ config: z.ZodOptional<z.ZodUnknown>;
58
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
59
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
60
+ maxEntries: z.ZodOptional<z.ZodNumber>;
61
+ maxBytes: z.ZodOptional<z.ZodNumber>;
62
+ cascadeFrom: z.ZodOptional<z.ZodString>;
63
+ ageField: z.ZodOptional<z.ZodString>;
64
+ reason: z.ZodString;
65
+ enforcedBy: z.ZodOptional<z.ZodString>;
66
+ }, z.core.$strip>]>>;
67
+ kind: z.ZodLiteral<"infra/edge-tls">;
68
+ adapter: z.ZodString;
69
+ adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
70
+ zone: z.ZodOptional<z.ZodString>;
71
+ environment: z.ZodDefault<z.ZodString>;
72
+ policies: z.ZodDefault<z.ZodArray<z.ZodObject<{
73
+ hostnames: z.ZodArray<z.ZodString>;
74
+ policy: z.ZodEnum<{
75
+ off: "off";
76
+ verified: "verified";
77
+ encrypted: "encrypted";
78
+ opportunistic: "opportunistic";
79
+ }>;
80
+ description: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>>>;
82
+ }, z.core.$strip>;
83
+ export type InfraEdgeTlsDescriptor = z.infer<typeof EdgeTlsBaseSchema>;
84
+ export type InfraEdgeTlsDescriptorInput = z.input<typeof EdgeTlsBaseSchema>;
85
+ /** A policy as it exists on the provider, carrying provider-assigned identity. */
86
+ export interface LiveEdgeTlsPolicy {
87
+ providerId: string;
88
+ zone: string;
89
+ hostnames: string[];
90
+ /** Null when the provider reports a value outside this kind's enum. */
91
+ policy: OriginTlsPolicy | null;
92
+ /** Raw provider value, kept so unmapped policies stay visible as evidence. */
93
+ providerValue: string;
94
+ /** Provider-native match condition, kept as evidence of what really matches. */
95
+ expression: string;
96
+ enabled: boolean;
97
+ description?: string;
98
+ /**
99
+ * False when the live shape is outside what this kind writes — a compound
100
+ * rule, or a condition that is not a plain hostname set. Unmanaged policies
101
+ * are reported but never rewritten.
102
+ */
103
+ managed: boolean;
104
+ }
105
+ export interface EdgeTlsZoneDefault {
106
+ zone: string;
107
+ /** Null when the provider reports a value outside this kind's enum. */
108
+ policy: OriginTlsPolicy | null;
109
+ providerValue: string;
110
+ /** False when the provider forbids changing the default on this plan. */
111
+ editable: boolean;
112
+ }
113
+ export interface EdgeTlsSnapshot {
114
+ zone: string;
115
+ default: EdgeTlsZoneDefault;
116
+ policies: LiveEdgeTlsPolicy[];
117
+ /**
118
+ * Configuration a co-tenant owns in the same provider container, which a
119
+ * write must carry forward untouched. Non-zero here means this kind is not
120
+ * the only author, so a full-replacement write would destroy work.
121
+ */
122
+ coTenantRules: number;
123
+ }
124
+ export interface EdgeTlsWriteResult {
125
+ providerId: string;
126
+ created: boolean;
127
+ /** Co-tenant configuration re-sent verbatim by this write. */
128
+ preservedRules: number;
129
+ /** Total entries in the provider container after the write. */
130
+ totalRules: number;
131
+ }
132
+ export interface EdgeTlsDeleteResult {
133
+ /** Policies removed outright because the hostname was their only member. */
134
+ removed: string[];
135
+ /** Policies kept but narrowed because they also covered other hostnames. */
136
+ narrowed: string[];
137
+ preservedRules: number;
138
+ totalRules: number;
139
+ }
140
+ export interface EdgeTlsZoneDefaultChange {
141
+ zone: string;
142
+ from: OriginTlsPolicy | null;
143
+ to: OriginTlsPolicy;
144
+ }
145
+ /**
146
+ * Implementation contract every provider implements.
147
+ *
148
+ * `setPolicy` is idempotent on the hostname set: it updates the live policy
149
+ * for exactly those hostnames rather than adding a second policy that would
150
+ * race it. Providers that store policies in a shared, wholesale-replaced
151
+ * container must merge co-tenant entries forward; the reported
152
+ * `preservedRules` is the evidence that they did.
153
+ */
154
+ export interface EdgeTlsImplementation {
155
+ /** Redacted authority used by the latest provider request. */
156
+ getAuthority?(): Promise<InfraAuthorityFingerprint>;
157
+ /** Live per-hostname policies plus the zone default, optionally narrowed. */
158
+ read(filter?: {
159
+ hostname?: string;
160
+ }): Promise<EdgeTlsSnapshot>;
161
+ setPolicy(policy: EdgeTlsPolicyInput): Promise<EdgeTlsWriteResult>;
162
+ /** Drop one hostname's policy. Absence is not an error. */
163
+ deletePolicy(filter: {
164
+ hostname: string;
165
+ }): Promise<EdgeTlsDeleteResult>;
166
+ /**
167
+ * Change the zone-wide default. `verified` breaks every hostname whose
168
+ * origin does not serve a valid certificate for its own name, including
169
+ * hostnames with no per-hostname policy of their own, so implementations
170
+ * refuse the call until the caller acknowledges that blast radius.
171
+ */
172
+ setZoneDefault(policy: OriginTlsPolicy, options: {
173
+ acknowledgeOriginBreakage: boolean;
174
+ }): Promise<EdgeTlsZoneDefaultChange>;
175
+ /**
176
+ * Diff desired against live for the hostname sets in `desired`. Policies
177
+ * outside those sets are never reported for deletion — this kind is
178
+ * additive by default so it can coexist with co-tenant policies.
179
+ */
180
+ diff(desired: EdgeTlsPolicyInput[]): Promise<{
181
+ create: EdgeTlsPolicy[];
182
+ update: Array<{
183
+ providerId: string;
184
+ from: LiveEdgeTlsPolicy;
185
+ to: EdgeTlsPolicy;
186
+ }>;
187
+ unchanged: LiveEdgeTlsPolicy[];
188
+ }>;
189
+ }
190
+ export declare const edgeTlsKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<EdgeTlsImplementation>;
191
+ export type InfraEdgeTlsKind = InfraEdgeTlsDescriptor;
192
+ export type InfraEdgeTlsKindInput = InfraEdgeTlsDescriptorInput;
193
+ export { EdgeTlsBaseSchema as InfraEdgeTlsDescriptorSchema, EdgeTlsPolicySchema, OriginTlsPolicySchema };
194
+ //# sourceMappingURL=edge-tls.kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-tls.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/edge-tls.kind.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Infra Edge TLS Kind
3
+ *
4
+ * Provider-agnostic schema for the TLS policy an edge/CDN uses when it
5
+ * connects to an origin. This governs the edge→origin leg only; the
6
+ * browser→edge leg is certificate and hostname configuration, not this kind.
7
+ *
8
+ * The policy is modeled per hostname rather than per zone because a zone
9
+ * routinely fronts origins with different certificate maturity: a hardened
10
+ * origin needs `verified`, while a legacy origin with a self-signed or
11
+ * expired certificate still answers only under `opportunistic`. A zone-wide
12
+ * value forces the weakest origin's policy onto every hostname.
13
+ *
14
+ * `opportunistic` is a loop hazard, not merely weak: when the edge speaks
15
+ * plaintext to an origin that redirects to HTTPS, a same-zone subrequest
16
+ * bounces between edge and origin until the edge gives up. Any hostname whose
17
+ * origin redirects HTTP to HTTPS must be `verified` or `encrypted`.
18
+ */
19
+ import * as z from 'zod/v4';
20
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
21
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
22
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
23
+ /**
24
+ * - `verified`: encrypt and require a valid certificate for the origin hostname.
25
+ * - `encrypted`: encrypt without validating the origin certificate.
26
+ * - `opportunistic`: connect in plaintext when the origin allows it.
27
+ * - `off`: never encrypt the edge→origin leg.
28
+ */
29
+ const OriginTlsPolicySchema = z.enum(['verified', 'encrypted', 'opportunistic', 'off']);
30
+ const EdgeTlsPolicySchema = z.object({
31
+ /**
32
+ * Hostnames this policy applies to. Treated as a set: order and case do
33
+ * not change identity, so an equivalent declaration resolves to the same
34
+ * live policy instead of adding a second one.
35
+ */
36
+ hostnames: z.array(z.string().min(1)).min(1),
37
+ policy: OriginTlsPolicySchema,
38
+ /** Operator note stored with the policy where the provider supports it. */
39
+ description: z.string().optional()
40
+ });
41
+ const EdgeTlsBaseSchema = RuntimeDescriptorSchema.extend({
42
+ kind: z.literal('infra/edge-tls'),
43
+ /** Adapter id (e.g. 'cloudflare-edge-tls'). */
44
+ adapter: z.string().min(1),
45
+ adapterConfig: z.record(z.string(), z.unknown()).optional(),
46
+ /** Apex zone this descriptor is authoritative for (e.g. `vibes.dev`). */
47
+ zone: z.string().min(1).optional(),
48
+ /** Environment name for credential resolution via `vibes secrets`. */
49
+ environment: z.string().default('local'),
50
+ policies: z.array(EdgeTlsPolicySchema).default([])
51
+ });
52
+ export const edgeTlsKind = createRuntimeKind({
53
+ id: 'infra/edge-tls',
54
+ descriptorSchema: EdgeTlsBaseSchema,
55
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
56
+ });
57
+ export { EdgeTlsBaseSchema as InfraEdgeTlsDescriptorSchema, EdgeTlsPolicySchema, OriginTlsPolicySchema };
58
+ //# sourceMappingURL=edge-tls.kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-tls.kind.js","sourceRoot":"","sources":["../../src/kinds/edge-tls.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG1D;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AAIxF,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC;;;;OAIG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,qBAAqB;IAC7B,2EAA2E;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAKH,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,+CAA+C;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,yEAAyE;IACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAClD,CAAC,CAAC;AA8GH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAgD;IAC3F,EAAE,EAAE,gBAAgB;IACpB,gBAAgB,EAAE,iBAAiB;IACnC,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC;AAKH,OAAO,EACN,iBAAiB,IAAI,4BAA4B,EACjD,mBAAmB,EACnB,qBAAqB,EACrB,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Kind: infra/firewall
3
+ *
4
+ * Provider-neutral firewall descriptor. Used both for compute-level firewalls
5
+ * (e.g., DigitalOcean cloud firewall, attached to droplets) and the DOKS
6
+ * control-plane firewall.
7
+ *
8
+ * `config` is an open, adapter-keyed shape (DigitalOcean's firewall config
9
+ * lives in `@vibesdotdev/integrations-digitalocean`); this kind names no
10
+ * provider, so a config for any adapter parses here and the adapter
11
+ * validates its own grammar.
12
+ */
13
+ import * as z from 'zod/v4';
14
+ import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
15
+ import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
16
+ export declare const FirewallRuleSchema: z.ZodObject<{
17
+ protocol: z.ZodEnum<{
18
+ tcp: "tcp";
19
+ udp: "udp";
20
+ icmp: "icmp";
21
+ }>;
22
+ ports: z.ZodOptional<z.ZodString>;
23
+ sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
+ destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ }, z.core.$strip>;
26
+ export type FirewallRule = z.infer<typeof FirewallRuleSchema>;
27
+ /**
28
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
29
+ * adapter package defines and parses its own config schema; this kind names
30
+ * no provider, so a config for any adapter — including one contributed by a
31
+ * user plugin — parses here, and the adapter validates its own grammar.
32
+ */
33
+ export declare const FirewallConfigSchema: z.ZodObject<{
34
+ adapter: z.ZodString;
35
+ }, z.core.$loose>;
36
+ export type FirewallConfig = z.infer<typeof FirewallConfigSchema>;
37
+ export declare const FirewallDescriptorSchema: z.ZodObject<{
38
+ id: z.ZodString;
39
+ name: z.ZodOptional<z.ZodString>;
40
+ description: z.ZodOptional<z.ZodString>;
41
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
42
+ hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ enabled: z.ZodOptional<z.ZodBoolean>;
44
+ priority: z.ZodOptional<z.ZodNumber>;
45
+ capabilityId: z.ZodOptional<z.ZodString>;
46
+ requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
+ optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
49
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
50
+ maxEntries: z.ZodOptional<z.ZodNumber>;
51
+ maxBytes: z.ZodOptional<z.ZodNumber>;
52
+ cascadeFrom: z.ZodOptional<z.ZodString>;
53
+ ageField: z.ZodOptional<z.ZodString>;
54
+ reason: z.ZodString;
55
+ enforcedBy: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$strip>]>>;
57
+ kind: z.ZodLiteral<"infra/firewall">;
58
+ inboundRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
59
+ protocol: z.ZodEnum<{
60
+ tcp: "tcp";
61
+ udp: "udp";
62
+ icmp: "icmp";
63
+ }>;
64
+ ports: z.ZodOptional<z.ZodString>;
65
+ sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
66
+ destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ }, z.core.$strip>>>;
68
+ outboundRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
69
+ protocol: z.ZodEnum<{
70
+ tcp: "tcp";
71
+ udp: "udp";
72
+ icmp: "icmp";
73
+ }>;
74
+ ports: z.ZodOptional<z.ZodString>;
75
+ sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
76
+ destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
77
+ }, z.core.$strip>>>;
78
+ config: z.ZodOptional<z.ZodObject<{
79
+ adapter: z.ZodString;
80
+ }, z.core.$loose>>;
81
+ }, z.core.$strip>;
82
+ export type FirewallDescriptor = z.infer<typeof FirewallDescriptorSchema>;
83
+ declare class DefaultFirewallImplementation {
84
+ readonly descriptor: RuntimeDescriptor;
85
+ readonly context: KindContext;
86
+ /** The descriptor as this kind's schema reads it. */
87
+ readonly config: FirewallDescriptor;
88
+ constructor(descriptor: RuntimeDescriptor, context: KindContext);
89
+ }
90
+ export declare const firewallKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultFirewallImplementation>;
91
+ export {};
92
+ //# sourceMappingURL=firewall.kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firewall.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/firewall.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAIpE,eAAO,MAAM,kBAAkB;;;;;;;;;iBAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAQ9D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,cAAM,6BAA6B;aAIjB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAEnB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,YAAY,0FAKvB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Kind: infra/firewall
3
+ *
4
+ * Provider-neutral firewall descriptor. Used both for compute-level firewalls
5
+ * (e.g., DigitalOcean cloud firewall, attached to droplets) and the DOKS
6
+ * control-plane firewall.
7
+ *
8
+ * `config` is an open, adapter-keyed shape (DigitalOcean's firewall config
9
+ * lives in `@vibesdotdev/integrations-digitalocean`); this kind names no
10
+ * provider, so a config for any adapter parses here and the adapter
11
+ * validates its own grammar.
12
+ */
13
+ import * as z from 'zod/v4';
14
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
15
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
16
+ import { readKindDescriptor } from "./read-descriptor.js";
17
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
18
+ export const FirewallRuleSchema = z.object({
19
+ protocol: z.enum(['tcp', 'udp', 'icmp']),
20
+ ports: z.string().optional(),
21
+ sources: z.array(z.string()).optional(),
22
+ destinations: z.array(z.string()).optional()
23
+ });
24
+ const FirewallBaseSchema = RuntimeDescriptorSchema.extend({
25
+ kind: z.literal('infra/firewall'),
26
+ inboundRules: z.array(FirewallRuleSchema).optional(),
27
+ outboundRules: z.array(FirewallRuleSchema).optional()
28
+ });
29
+ /**
30
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
31
+ * adapter package defines and parses its own config schema; this kind names
32
+ * no provider, so a config for any adapter — including one contributed by a
33
+ * user plugin — parses here, and the adapter validates its own grammar.
34
+ */
35
+ export const FirewallConfigSchema = z.looseObject({
36
+ adapter: z.string().min(1)
37
+ });
38
+ export const FirewallDescriptorSchema = FirewallBaseSchema.extend({
39
+ /** Adapter-specific configuration, parsed by the adapter that owns it. */
40
+ config: FirewallConfigSchema.optional()
41
+ });
42
+ class DefaultFirewallImplementation {
43
+ descriptor;
44
+ context;
45
+ /** The descriptor as this kind's schema reads it. */
46
+ config;
47
+ constructor(descriptor, context) {
48
+ this.descriptor = descriptor;
49
+ this.context = context;
50
+ this.config = readKindDescriptor(FirewallDescriptorSchema, descriptor);
51
+ }
52
+ }
53
+ export const firewallKind = createRuntimeKind({
54
+ id: 'infra/firewall',
55
+ descriptorSchema: FirewallDescriptorSchema,
56
+ defaultImplementation: DefaultFirewallImplementation,
57
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
58
+ });
59
+ //# sourceMappingURL=firewall.kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firewall.kind.js","sourceRoot":"","sources":["../../src/kinds/firewall.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAGH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IACpD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACjE,0EAA0E;IAC1E,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIH,MAAM,6BAA6B;IAIjB;IACA;IAJjB,qDAAqD;IAC5C,MAAM,CAAqB;IACpC,YACiB,UAA6B,EAC7B,OAAoB;QADpB,eAAU,GAAV,UAAU,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAAa;QAEpC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;CAED;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAoD;IAChG,EAAE,EAAE,gBAAgB;IACpB,gBAAgB,EAAE,wBAAwB;IAC1C,qBAAqB,EAAE,6BAA6B;IACpD,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC"}
@@ -3,18 +3,19 @@
3
3
  *
4
4
  * Describes a git hosting service instance (e.g. Gitea, Forgejo).
5
5
  *
6
- * Schema shape: strict common base + `config` discriminated union.
6
+ * Schema shape: strict common base + an open, adapter-keyed `config`.
7
7
  *
8
8
  * - The base (this file) defines fields that are universal across every
9
9
  * adapter: id/kind/name + the hosting shape every git host declares
10
10
  * (domain, url, storagePath, authMethod, etc.).
11
- * - Adapter-specific fields (dropletSize, dockerImage, volumeSizeGb, …)
12
- * live exclusively under `config`. Each adapter package defines its own
13
- * concrete schema under its discriminator key.
11
+ * - Adapter-specific fields live exclusively under `config`, keyed by
12
+ * `adapter`. Each adapter package defines and parses its own concrete
13
+ * schema (the DigitalOcean Gitea adapter's lives in
14
+ * `@vibesdotdev/integrations-digitalocean`); this kind names no provider.
14
15
  */
15
16
  import * as z from 'zod/v4';
16
- import type { RuntimeKindDescriptorRecord } from '@vibesdotdev/runtime/schemas/kind';
17
- import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
17
+ import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
18
+ import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
18
19
  export declare const GitHostingTypeSchema: z.ZodEnum<{
19
20
  gitea: "gitea";
20
21
  forgejo: "forgejo";
@@ -22,27 +23,18 @@ export declare const GitHostingTypeSchema: z.ZodEnum<{
22
23
  export type GitHostingType = z.infer<typeof GitHostingTypeSchema>;
23
24
  export declare const GitHostingAuthMethodSchema: z.ZodEnum<{
24
25
  local: "local";
25
- oauth: "oauth";
26
26
  token: "token";
27
+ oauth: "oauth";
27
28
  }>;
28
29
  export type GitHostingAuthMethod = z.infer<typeof GitHostingAuthMethodSchema>;
29
- export declare const GiteaDoksGitHostingConfigSchema: z.ZodObject<{
30
- dropletSize: z.ZodDefault<z.ZodString>;
31
- dockerImage: z.ZodDefault<z.ZodString>;
32
- volumeSizeGb: z.ZodDefault<z.ZodNumber>;
33
- domain: z.ZodString;
34
- sshPort: z.ZodDefault<z.ZodNumber>;
35
- httpPort: z.ZodDefault<z.ZodNumber>;
36
- }, z.core.$strip>;
37
- export declare const GitHostingConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
38
- dropletSize: z.ZodDefault<z.ZodString>;
39
- dockerImage: z.ZodDefault<z.ZodString>;
40
- volumeSizeGb: z.ZodDefault<z.ZodNumber>;
41
- domain: z.ZodString;
42
- sshPort: z.ZodDefault<z.ZodNumber>;
43
- httpPort: z.ZodDefault<z.ZodNumber>;
44
- adapter: z.ZodLiteral<"gitea-doks">;
45
- }, z.core.$strip>]>;
30
+ /**
31
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
32
+ * adapter package defines and parses its own config schema; this kind names
33
+ * no provider.
34
+ */
35
+ export declare const GitHostingConfigSchema: z.ZodObject<{
36
+ adapter: z.ZodString;
37
+ }, z.core.$loose>;
46
38
  export declare const GitHostingDescriptorSchema: z.ZodObject<{
47
39
  id: z.ZodString;
48
40
  name: z.ZodOptional<z.ZodString>;
@@ -51,8 +43,18 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
51
43
  hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
44
  enabled: z.ZodOptional<z.ZodBoolean>;
53
45
  priority: z.ZodOptional<z.ZodNumber>;
46
+ capabilityId: z.ZodOptional<z.ZodString>;
54
47
  requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
55
48
  optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
49
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
50
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
51
+ maxEntries: z.ZodOptional<z.ZodNumber>;
52
+ maxBytes: z.ZodOptional<z.ZodNumber>;
53
+ cascadeFrom: z.ZodOptional<z.ZodString>;
54
+ ageField: z.ZodOptional<z.ZodString>;
55
+ reason: z.ZodString;
56
+ enforcedBy: z.ZodOptional<z.ZodString>;
57
+ }, z.core.$strip>]>>;
56
58
  kind: z.ZodLiteral<"infra/git-hosting">;
57
59
  url: z.ZodString;
58
60
  hostname: z.ZodString;
@@ -63,8 +65,8 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
63
65
  storagePath: z.ZodDefault<z.ZodString>;
64
66
  authMethod: z.ZodDefault<z.ZodEnum<{
65
67
  local: "local";
66
- oauth: "oauth";
67
68
  token: "token";
69
+ oauth: "oauth";
68
70
  }>>;
69
71
  ssl: z.ZodDefault<z.ZodBoolean>;
70
72
  env: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -75,24 +77,20 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
75
77
  secret: z.ZodOptional<z.ZodBoolean>;
76
78
  description: z.ZodOptional<z.ZodString>;
77
79
  storeKey: z.ZodOptional<z.ZodString>;
80
+ storeBinding: z.ZodOptional<z.ZodBoolean>;
78
81
  }, z.core.$strip>>>;
79
- config: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
80
- dropletSize: z.ZodDefault<z.ZodString>;
81
- dockerImage: z.ZodDefault<z.ZodString>;
82
- volumeSizeGb: z.ZodDefault<z.ZodNumber>;
83
- domain: z.ZodString;
84
- sshPort: z.ZodDefault<z.ZodNumber>;
85
- httpPort: z.ZodDefault<z.ZodNumber>;
86
- adapter: z.ZodLiteral<"gitea-doks">;
87
- }, z.core.$strip>]>>;
82
+ config: z.ZodOptional<z.ZodObject<{
83
+ adapter: z.ZodString;
84
+ }, z.core.$loose>>;
88
85
  }, z.core.$strip>;
89
86
  export type GitHostingDescriptor = z.infer<typeof GitHostingDescriptorSchema>;
90
87
  declare class DefaultGitHostingImplementation {
91
88
  readonly descriptor: RuntimeDescriptor;
92
- readonly context: unknown;
93
- constructor(descriptor: RuntimeDescriptor, context: unknown);
94
- get config(): GitHostingDescriptor;
89
+ readonly context: KindContext;
90
+ /** The descriptor as this kind's schema reads it. */
91
+ readonly config: GitHostingDescriptor;
92
+ constructor(descriptor: RuntimeDescriptor, context: KindContext);
95
93
  }
96
- export declare const gitHostingKind: RuntimeKindDescriptorRecord<DefaultGitHostingImplementation>;
94
+ export declare const gitHostingKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultGitHostingImplementation>;
97
95
  export {};
98
96
  //# sourceMappingURL=git-hosting.kind.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-hosting.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/git-hosting.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAIjF,eAAO,MAAM,oBAAoB;;;EAA+B,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B;;;;EAAsC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AA2B9E,eAAO,MAAM,+BAA+B;;;;;;;iBAa1C,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;mBAEjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,cAAM,+BAA+B;aAEnB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,OAAO;gBADhB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO;IAGjC,IAAI,MAAM,IAAI,oBAAoB,CAEjC;CACD;AAED,eAAO,MAAM,cAAc,8DAMzB,CAAC"}
1
+ {"version":3,"file":"git-hosting.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/git-hosting.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAKpE,eAAO,MAAM,oBAAoB;;;EAA+B,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B;;;;EAAsC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AA2B9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,cAAM,+BAA+B;aAInB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBAErB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,cAAc,4FAKzB,CAAC"}
@@ -3,19 +3,21 @@
3
3
  *
4
4
  * Describes a git hosting service instance (e.g. Gitea, Forgejo).
5
5
  *
6
- * Schema shape: strict common base + `config` discriminated union.
6
+ * Schema shape: strict common base + an open, adapter-keyed `config`.
7
7
  *
8
8
  * - The base (this file) defines fields that are universal across every
9
9
  * adapter: id/kind/name + the hosting shape every git host declares
10
10
  * (domain, url, storagePath, authMethod, etc.).
11
- * - Adapter-specific fields (dropletSize, dockerImage, volumeSizeGb, …)
12
- * live exclusively under `config`. Each adapter package defines its own
13
- * concrete schema under its discriminator key.
11
+ * - Adapter-specific fields live exclusively under `config`, keyed by
12
+ * `adapter`. Each adapter package defines and parses its own concrete
13
+ * schema (the DigitalOcean Gitea adapter's lives in
14
+ * `@vibesdotdev/integrations-digitalocean`); this kind names no provider.
14
15
  */
15
16
  import * as z from 'zod/v4';
16
- import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
17
- import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
18
- import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
17
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
18
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
19
+ import { readKindDescriptor } from "./read-descriptor.js";
20
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
19
21
  import { deploymentEnvRequirementSchema } from "../schemas.js";
20
22
  export const GitHostingTypeSchema = z.enum(['gitea', 'forgejo']);
21
23
  export const GitHostingAuthMethodSchema = z.enum(['local', 'oauth', 'token']);
@@ -36,46 +38,33 @@ const GitHostingBaseSchema = RuntimeDescriptorSchema.extend({
36
38
  /** Environment variable requirements. */
37
39
  env: z.array(deploymentEnvRequirementSchema).optional()
38
40
  });
39
- export const GiteaDoksGitHostingConfigSchema = z.object({
40
- /** DigitalOcean Droplet size. */
41
- dropletSize: z.string().default('s-2vcpu-2gb'),
42
- /** Docker image for the Gitea container. */
43
- dockerImage: z.string().default('gitea/gitea:1.21'),
44
- /** Volume size in GiB for persistent storage. */
45
- volumeSizeGb: z.number().int().positive().default(50),
46
- /** Primary domain for the Gitea instance. */
47
- domain: z.string().min(1),
48
- /** SSH port exposed on the service. */
49
- sshPort: z.number().int().positive().default(22),
50
- /** HTTP port exposed on the service. */
51
- httpPort: z.number().int().positive().default(3000)
41
+ /**
42
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
43
+ * adapter package defines and parses its own config schema; this kind names
44
+ * no provider.
45
+ */
46
+ export const GitHostingConfigSchema = z.looseObject({
47
+ adapter: z.string().min(1)
52
48
  });
53
- export const GitHostingConfigSchema = z.union([
54
- GiteaDoksGitHostingConfigSchema.extend({ adapter: z.literal('gitea-doks') })
55
- ]);
56
49
  export const GitHostingDescriptorSchema = GitHostingBaseSchema.extend({
57
- /**
58
- * Adapter-specific configuration. Discriminated union — each adapter
59
- * package defines its own config schema under its discriminator key.
60
- */
50
+ /** Adapter-specific configuration, parsed by the adapter that owns it. */
61
51
  config: GitHostingConfigSchema.optional()
62
52
  });
63
53
  class DefaultGitHostingImplementation {
64
54
  descriptor;
65
55
  context;
56
+ /** The descriptor as this kind's schema reads it. */
57
+ config;
66
58
  constructor(descriptor, context) {
67
59
  this.descriptor = descriptor;
68
60
  this.context = context;
69
- }
70
- get config() {
71
- return this.descriptor;
61
+ this.config = readKindDescriptor(GitHostingDescriptorSchema, descriptor);
72
62
  }
73
63
  }
74
64
  export const gitHostingKind = createRuntimeKind({
75
65
  id: 'infra/git-hosting',
76
66
  descriptorSchema: GitHostingDescriptorSchema,
77
67
  defaultImplementation: DefaultGitHostingImplementation,
78
- discoveryPattern: INFRA_DISCOVERY_PATTERN,
79
- extractStem
68
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
80
69
  });
81
70
  //# sourceMappingURL=git-hosting.kind.js.map