@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
@@ -3,17 +3,23 @@
3
3
  *
4
4
  * Describes object/blob storage.
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 defines fields universal across adapters: id/kind/name +
9
9
  * the storage shape (bucket, cors, lifecycle, publicAccess).
10
- * - Adapter-specific fields (region, acl, …) live under `config`.
11
- * Each adapter package defines its own concrete schema.
10
+ * - Adapter-specific fields (region, acl, …) live under `config`, keyed by
11
+ * a non-empty `adapter` discriminator. Each adapter package defines and
12
+ * parses its own concrete schema (DigitalOcean Spaces' lives in
13
+ * `@vibesdotdev/integrations-digitalocean`; Cloudflare R2's in
14
+ * `@vibesdotdev/integrations-cloudflare`); this kind names no provider,
15
+ * so a config for any adapter — including one contributed by a user
16
+ * plugin — parses here, and the adapter validates its own grammar.
12
17
  */
13
18
  import * as z from 'zod/v4';
14
- import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
15
- import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
16
- import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
19
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
20
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
21
+ import { readKindDescriptor } from "./read-descriptor.js";
22
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
17
23
  export const CorsRuleSchema = z.object({
18
24
  allowedOrigins: z.array(z.string()).default(['*']),
19
25
  allowedMethods: z.array(z.string()).default(['GET']),
@@ -25,6 +31,11 @@ export const LifecycleRuleSchema = z.object({
25
31
  prefix: z.string().optional(),
26
32
  /** Days until expiration */
27
33
  expiration: z.number().int().positive().optional(),
34
+ /**
35
+ * Days after which incomplete multipart uploads are aborted.
36
+ * Maps to S3-compatible `AbortIncompleteMultipartUpload`.
37
+ */
38
+ abortIncompleteMultipartUploadDays: z.number().int().positive().optional(),
28
39
  /** Storage class transition */
29
40
  transition: z
30
41
  .object({
@@ -33,6 +44,16 @@ export const LifecycleRuleSchema = z.object({
33
44
  })
34
45
  .optional()
35
46
  });
47
+ /**
48
+ * Reference to a credential or secret materialized at apply time. The shape
49
+ * is intentionally permissive — full validation lives in the credentials
50
+ * runtime. Keeping it inline keeps this kind decoupled from runtime/secrets.
51
+ */
52
+ export const CredentialReferenceSchema = z.object({
53
+ store: z.string().min(1).optional(),
54
+ key: z.string().min(1),
55
+ env: z.string().min(1).optional()
56
+ });
36
57
  const ObjectStorageBaseSchema = RuntimeDescriptorSchema.extend({
37
58
  kind: z.literal('infra/object-storage'),
38
59
  /** Bucket name (defaults to descriptor id when omitted). */
@@ -44,38 +65,34 @@ const ObjectStorageBaseSchema = RuntimeDescriptorSchema.extend({
44
65
  /** Whether the bucket is publicly readable. */
45
66
  publicAccess: z.boolean().optional()
46
67
  });
47
- export const DOSpacesConfigSchema = z.object({
48
- /** DO region (default: nyc3). */
49
- region: z.string().min(1).default('nyc3')
68
+ /**
69
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
70
+ * adapter package defines and parses its own config schema; this kind names
71
+ * no provider, so a config for any adapter — including one contributed by a
72
+ * user plugin — parses here, and the adapter validates its own grammar.
73
+ */
74
+ export const ObjectStorageConfigSchema = z.looseObject({
75
+ adapter: z.string().min(1)
50
76
  });
51
- export const CloudflareR2ConfigSchema = z.object({});
52
- export const ObjectStorageConfigSchema = z.union([
53
- DOSpacesConfigSchema.extend({ adapter: z.literal('do-spaces') }),
54
- CloudflareR2ConfigSchema.extend({ adapter: z.literal('cloudflare-r2') })
55
- ]);
56
77
  export const ObjectStorageDescriptorSchema = ObjectStorageBaseSchema.extend({
57
- /**
58
- * Adapter-specific configuration. Discriminated union — each adapter
59
- * package defines its own config schema under its discriminator key.
60
- */
78
+ /** Adapter-specific configuration, parsed by the adapter that owns it. */
61
79
  config: ObjectStorageConfigSchema.optional()
62
80
  });
63
81
  class DefaultObjectStorageImplementation {
64
82
  descriptor;
65
83
  context;
84
+ /** The descriptor as this kind's schema reads it. */
85
+ config;
66
86
  constructor(descriptor, context) {
67
87
  this.descriptor = descriptor;
68
88
  this.context = context;
69
- }
70
- get config() {
71
- return this.descriptor;
89
+ this.config = readKindDescriptor(ObjectStorageDescriptorSchema, descriptor);
72
90
  }
73
91
  }
74
92
  export const objectStorageKind = createRuntimeKind({
75
93
  id: 'infra/object-storage',
76
94
  descriptorSchema: ObjectStorageDescriptorSchema,
77
95
  defaultImplementation: DefaultObjectStorageImplementation,
78
- discoveryPattern: INFRA_DISCOVERY_PATTERN,
79
- extractStem
96
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
80
97
  });
81
98
  //# sourceMappingURL=object-storage.kind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-storage.kind.js","sourceRoot":"","sources":["../../src/kinds/object-storage.kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-storage.kind.js","sourceRoot":"","sources":["../../src/kinds/object-storage.kind.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,16 @@
7
7
  *
8
8
  * 1. The CLI can introspect + write settings across the entire fleet
9
9
  * without going through deploy.
10
- * 2. Cross-cutting policies (e.g. "10% sampling on every customer-facing
11
- * Worker") have a single declarative shape.
10
+ * 2. Cross-cutting policies (e.g. "full log capture on every Worker")
11
+ * have a single declarative shape.
12
12
  * 3. Provider impls map onto the native control plane (CF Workers
13
13
  * Observability, DO Monitoring, Datadog, etc.).
14
14
  *
15
15
  * CLI surface (`vibes infra observability …`):
16
16
  * status [--worker] read current settings
17
- * set [--worker] --sampling 0.1 write new settings
18
- * exports list|add|remove (Phase 2.5; not yet wired)
17
+ * set [--worker] --sampling 1 write new settings
18
+ * exports list read safe export inventory
19
+ * exports add|remove (not yet wired)
19
20
  *
20
21
  * Production Workers consume settings via their wrangler.jsonc; the CLI
21
22
  * writes directly to the provider API for immediate effect. To avoid
@@ -23,6 +24,7 @@
23
24
  * path — the CLI here is for ops-time tuning between deploys.
24
25
  */
25
26
  import * as z from 'zod/v4';
27
+ import { type InfraAuthorityFingerprint, type InfraProviderFailure } from './inventory.kind.ts';
26
28
  declare const ObservabilityScopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
29
  kind: z.ZodLiteral<"worker">;
28
30
  workerName: z.ZodString;
@@ -72,6 +74,33 @@ declare const ObservabilitySettingsSchema: z.ZodObject<{
72
74
  }, z.core.$strip>], "kind">>>;
73
75
  }, z.core.$strip>;
74
76
  export type ObservabilitySettings = z.infer<typeof ObservabilitySettingsSchema>;
77
+ /**
78
+ * Provider-neutral queue health evidence collected from an adapter's live
79
+ * control plane. `oldestMessageAgeMs` is an age, rather than a provider
80
+ * timestamp, so consumers can compare it directly to a declared retention
81
+ * window.
82
+ */
83
+ export declare const QueueBacklogSchema: z.ZodObject<{
84
+ queueName: z.ZodString;
85
+ backlogCount: z.ZodNumber;
86
+ backlogBytes: z.ZodNumber;
87
+ oldestMessageAgeMs: z.ZodNumber;
88
+ capturedAt: z.ZodString;
89
+ }, z.core.$strip>;
90
+ export type QueueBacklog = z.infer<typeof QueueBacklogSchema>;
91
+ export interface QueueBacklogAlert {
92
+ alerting: boolean;
93
+ thresholdMs: number;
94
+ }
95
+ /**
96
+ * A queue is alerting only after its oldest message has consumed more than
97
+ * half of its retention window. Equality is deliberately healthy: the
98
+ * policy is strictly `age > retention / 2`.
99
+ */
100
+ export declare function evaluateQueueBacklogAlert(queueBacklog: QueueBacklog, retentionMs: number): QueueBacklogAlert;
101
+ export interface QueueBacklogImplementation {
102
+ listQueueBacklogs(): Promise<QueueBacklog[]>;
103
+ }
75
104
  declare const ObservabilityBaseSchema: z.ZodObject<{
76
105
  id: z.ZodString;
77
106
  name: z.ZodOptional<z.ZodString>;
@@ -80,9 +109,19 @@ declare const ObservabilityBaseSchema: z.ZodObject<{
80
109
  hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
110
  enabled: z.ZodOptional<z.ZodBoolean>;
82
111
  priority: z.ZodOptional<z.ZodNumber>;
112
+ capabilityId: z.ZodOptional<z.ZodString>;
83
113
  requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
84
114
  optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
85
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
115
+ config: z.ZodOptional<z.ZodUnknown>;
116
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
117
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
118
+ maxEntries: z.ZodOptional<z.ZodNumber>;
119
+ maxBytes: z.ZodOptional<z.ZodNumber>;
120
+ cascadeFrom: z.ZodOptional<z.ZodString>;
121
+ ageField: z.ZodOptional<z.ZodString>;
122
+ reason: z.ZodString;
123
+ enforcedBy: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strip>]>>;
86
125
  kind: z.ZodLiteral<"infra/observability">;
87
126
  adapter: z.ZodString;
88
127
  adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -141,7 +180,62 @@ export interface ObservabilitySnapshot {
141
180
  settings: ObservabilitySettings;
142
181
  /** Last-modified timestamp from the provider, when available. */
143
182
  modifiedAt?: string;
183
+ /** Bounded provider-safe evidence when this worker could not be read. */
184
+ failure?: InfraProviderFailure;
144
185
  }
186
+ /** Public inventory deliberately excludes destination credentials and URL paths. */
187
+ export declare const ObservabilityExportDestinationSchema: z.ZodObject<{
188
+ id: z.ZodString;
189
+ name: z.ZodString;
190
+ signal: z.ZodEnum<{
191
+ unknown: "unknown";
192
+ logs: "logs";
193
+ traces: "traces";
194
+ }>;
195
+ enabled: z.ZodBoolean;
196
+ endpointOrigin: z.ZodOptional<z.ZodPipe<z.ZodURL, z.ZodTransform<string, string>>>;
197
+ transport: z.ZodEnum<{
198
+ unknown: "unknown";
199
+ http: "http";
200
+ https: "https";
201
+ }>;
202
+ headerNames: z.ZodArray<z.ZodString>;
203
+ lastDeliveredAt: z.ZodOptional<z.ZodISODateTime>;
204
+ lastErrorAt: z.ZodOptional<z.ZodISODateTime>;
205
+ }, z.core.$strip>;
206
+ export type ObservabilityExportDestination = z.infer<typeof ObservabilityExportDestinationSchema>;
207
+ export declare const ObservabilityExportInventorySchema: z.ZodObject<{
208
+ destinations: z.ZodArray<z.ZodObject<{
209
+ id: z.ZodString;
210
+ name: z.ZodString;
211
+ signal: z.ZodEnum<{
212
+ unknown: "unknown";
213
+ logs: "logs";
214
+ traces: "traces";
215
+ }>;
216
+ enabled: z.ZodBoolean;
217
+ endpointOrigin: z.ZodOptional<z.ZodPipe<z.ZodURL, z.ZodTransform<string, string>>>;
218
+ transport: z.ZodEnum<{
219
+ unknown: "unknown";
220
+ http: "http";
221
+ https: "https";
222
+ }>;
223
+ headerNames: z.ZodArray<z.ZodString>;
224
+ lastDeliveredAt: z.ZodOptional<z.ZodISODateTime>;
225
+ lastErrorAt: z.ZodOptional<z.ZodISODateTime>;
226
+ }, z.core.$strip>>;
227
+ workers: z.ZodArray<z.ZodObject<{
228
+ workerName: z.ZodString;
229
+ logs: z.ZodArray<z.ZodString>;
230
+ traces: z.ZodArray<z.ZodString>;
231
+ failure: z.ZodOptional<z.ZodObject<{
232
+ code: z.ZodString;
233
+ message: z.ZodString;
234
+ retryable: z.ZodOptional<z.ZodBoolean>;
235
+ }, z.core.$strip>>;
236
+ }, z.core.$strip>>;
237
+ }, z.core.$strip>;
238
+ export type ObservabilityExportInventory = z.infer<typeof ObservabilityExportInventorySchema>;
145
239
  export interface SetObservabilityInput {
146
240
  scope: ObservabilityScope;
147
241
  settings: ObservabilitySettings;
@@ -164,12 +258,16 @@ export interface SetObservabilityResult {
164
258
  * Implementation contract every provider implements.
165
259
  */
166
260
  export interface ObservabilityImplementation {
261
+ /** Redacted authority used by the latest provider request, when applicable. */
262
+ getAuthority?(): Promise<InfraAuthorityFingerprint>;
167
263
  /** Read current settings for a scope. account-wide → one snapshot per Worker. */
168
264
  getStatus(scope: ObservabilityScope): Promise<ObservabilitySnapshot[]>;
265
+ /** Read export destinations and worker bindings without proving collector delivery. */
266
+ listExports?(scope: ObservabilityScope): Promise<ObservabilityExportInventory>;
169
267
  /** Apply settings to a scope. Returns per-Worker outcome. */
170
268
  set(input: SetObservabilityInput): Promise<SetObservabilityResult>;
171
269
  }
172
- export declare const observabilityKind: import("@vibesdotdev/runtime").RuntimeKindDescriptorRecord<ObservabilityImplementation>;
270
+ export declare const observabilityKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<ObservabilityImplementation>;
173
271
  export type InfraObservabilityKind = InfraObservabilityDescriptor;
174
272
  export type InfraObservabilityKindInput = InfraObservabilityDescriptorInput;
175
273
  export { ObservabilityBaseSchema as InfraObservabilityDescriptorSchema, ObservabilityScopeSchema, ObservabilitySettingsSchema };
@@ -1 +1 @@
1
- {"version":3,"file":"observability.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,QAAA,MAAM,wBAAwB;;;;;;2BAU5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;GAIG;AACH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmD/B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB3B,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACnF,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAC;QAAC,KAAK,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC;IACpG,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,iFAAiF;IACjF,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvE,6DAA6D;IAC7D,GAAG,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,iBAAiB,yFAQ5B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AAClE,MAAM,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAE5E,OAAO,EACN,uBAAuB,IAAI,kCAAkC,EAC7D,wBAAwB,EACxB,2BAA2B,EAC3B,CAAC"}
1
+ {"version":3,"file":"observability.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,16 @@
7
7
  *
8
8
  * 1. The CLI can introspect + write settings across the entire fleet
9
9
  * without going through deploy.
10
- * 2. Cross-cutting policies (e.g. "10% sampling on every customer-facing
11
- * Worker") have a single declarative shape.
10
+ * 2. Cross-cutting policies (e.g. "full log capture on every Worker")
11
+ * have a single declarative shape.
12
12
  * 3. Provider impls map onto the native control plane (CF Workers
13
13
  * Observability, DO Monitoring, Datadog, etc.).
14
14
  *
15
15
  * CLI surface (`vibes infra observability …`):
16
16
  * status [--worker] read current settings
17
- * set [--worker] --sampling 0.1 write new settings
18
- * exports list|add|remove (Phase 2.5; not yet wired)
17
+ * set [--worker] --sampling 1 write new settings
18
+ * exports list read safe export inventory
19
+ * exports add|remove (not yet wired)
19
20
  *
20
21
  * Production Workers consume settings via their wrangler.jsonc; the CLI
21
22
  * writes directly to the provider API for immediate effect. To avoid
@@ -23,9 +24,11 @@
23
24
  * path — the CLI here is for ops-time tuning between deploys.
24
25
  */
25
26
  import * as z from 'zod/v4';
26
- import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
27
- import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
28
- import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
27
+ import { CapabilityError } from '@vibesdotdev/kernel';
28
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
29
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
30
+ import { InfraProviderFailureSchema } from "./inventory.kind.js";
31
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
29
32
  const ObservabilityScopeSchema = z.discriminatedUnion('kind', [
30
33
  z.object({
31
34
  kind: z.literal('worker'),
@@ -92,6 +95,36 @@ const ObservabilitySettingsSchema = z.object({
92
95
  ]))
93
96
  .optional()
94
97
  });
98
+ /**
99
+ * Provider-neutral queue health evidence collected from an adapter's live
100
+ * control plane. `oldestMessageAgeMs` is an age, rather than a provider
101
+ * timestamp, so consumers can compare it directly to a declared retention
102
+ * window.
103
+ */
104
+ export const QueueBacklogSchema = z.object({
105
+ queueName: z.string().min(1),
106
+ backlogCount: z.number().int().nonnegative(),
107
+ backlogBytes: z.number().int().nonnegative(),
108
+ oldestMessageAgeMs: z.number().int().nonnegative(),
109
+ capturedAt: z.string().datetime()
110
+ });
111
+ /**
112
+ * A queue is alerting only after its oldest message has consumed more than
113
+ * half of its retention window. Equality is deliberately healthy: the
114
+ * policy is strictly `age > retention / 2`.
115
+ */
116
+ export function evaluateQueueBacklogAlert(queueBacklog, retentionMs) {
117
+ if (!Number.isFinite(retentionMs) || retentionMs <= 0) {
118
+ throw new CapabilityError('Queue backlog retention must be a positive finite number of milliseconds.', 'INVALID_INPUT', {
119
+ reason: 'queue-backlog-retention-invalid'
120
+ });
121
+ }
122
+ const thresholdMs = retentionMs / 2;
123
+ return {
124
+ alerting: queueBacklog.oldestMessageAgeMs > thresholdMs,
125
+ thresholdMs
126
+ };
127
+ }
95
128
  const ObservabilityBaseSchema = RuntimeDescriptorSchema.extend({
96
129
  kind: z.literal('infra/observability'),
97
130
  adapter: z.string().min(1),
@@ -110,11 +143,36 @@ const ObservabilityBaseSchema = RuntimeDescriptorSchema.extend({
110
143
  */
111
144
  settings: ObservabilitySettingsSchema.optional()
112
145
  });
146
+ /** Public inventory deliberately excludes destination credentials and URL paths. */
147
+ export const ObservabilityExportDestinationSchema = z.object({
148
+ id: z.string().min(1),
149
+ name: z.string(),
150
+ signal: z.enum(['logs', 'traces', 'unknown']),
151
+ enabled: z.boolean(),
152
+ endpointOrigin: z
153
+ .url({ protocol: /^https?$/ })
154
+ .transform((value) => new URL(value).origin)
155
+ .optional(),
156
+ /** URL scheme only; does not certify an OTLP encoding or collector. */
157
+ transport: z.enum(['http', 'https', 'unknown']),
158
+ headerNames: z.array(z.string().regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/)),
159
+ lastDeliveredAt: z.iso.datetime().optional(),
160
+ lastErrorAt: z.iso.datetime().optional()
161
+ });
162
+ export const ObservabilityExportInventorySchema = z.object({
163
+ destinations: z.array(ObservabilityExportDestinationSchema),
164
+ workers: z.array(z.object({
165
+ workerName: z.string().min(1),
166
+ logs: z.array(z.string()),
167
+ traces: z.array(z.string()),
168
+ /** When present, empty lists mean unreadable, not confirmed unconfigured. */
169
+ failure: InfraProviderFailureSchema.optional()
170
+ }))
171
+ });
113
172
  export const observabilityKind = createRuntimeKind({
114
173
  id: 'infra/observability',
115
174
  descriptorSchema: ObservabilityBaseSchema,
116
- discoveryPattern: INFRA_DISCOVERY_PATTERN,
117
- extractStem
175
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
118
176
  });
119
177
  export { ObservabilityBaseSchema as InfraObservabilityDescriptorSchema, ObservabilityScopeSchema, ObservabilitySettingsSchema };
120
178
  //# sourceMappingURL=observability.kind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.kind.js","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observability.kind.js","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,18 @@
11
11
  * - Adapter-specific fields (dockerImage, storageSize, domain, …)
12
12
  * live exclusively under `config`. Each adapter package defines its own
13
13
  * concrete schema under its discriminator key.
14
+ * - `publish` is how a release writes to this registry: the Secrets key that
15
+ * holds its credential, the second factor the account asks for, and, for a
16
+ * registry that only ever carries another registry's exact bytes, `mirrorOf`.
17
+ *
18
+ * Every release surface (`vibes infra npm publish`, `vibes infra npm mirror`,
19
+ * Forge's `publish:` step) resolves a registry by id through this kind and
20
+ * calls its implementation ({@link PackageRegistryImplementation}). The adapter
21
+ * named by `config.adapter` registers that implementation per descriptor id;
22
+ * a registry with no registered implementation refuses typed
23
+ * (`package-registry-implementation-missing`), never a silent fallback.
14
24
  */
15
25
  import * as z from 'zod/v4';
16
- import type { RuntimeKindDescriptorRecord } from '@vibesdotdev/runtime/schemas/kind';
17
- import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
18
26
  export declare const PackageRegistryTypeSchema: z.ZodEnum<{
19
27
  npm: "npm";
20
28
  docker: "docker";
@@ -22,21 +30,23 @@ export declare const PackageRegistryTypeSchema: z.ZodEnum<{
22
30
  helm: "helm";
23
31
  }>;
24
32
  export type PackageRegistryType = z.infer<typeof PackageRegistryTypeSchema>;
25
- export declare const VerdaccioDoksPackageRegistryConfigSchema: z.ZodObject<{
26
- dockerImage: z.ZodDefault<z.ZodString>;
27
- storageSize: z.ZodDefault<z.ZodString>;
28
- domain: z.ZodString;
29
- upstreamNpmUrl: z.ZodDefault<z.ZodString>;
30
- authEnabled: z.ZodDefault<z.ZodBoolean>;
31
- }, z.core.$strip>;
32
- export declare const PackageRegistryConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
33
- dockerImage: z.ZodDefault<z.ZodString>;
34
- storageSize: z.ZodDefault<z.ZodString>;
35
- domain: z.ZodString;
36
- upstreamNpmUrl: z.ZodDefault<z.ZodString>;
37
- authEnabled: z.ZodDefault<z.ZodBoolean>;
38
- adapter: z.ZodLiteral<"verdaccio-doks">;
39
- }, z.core.$strip>]>;
33
+ /** What a release writes with: the credential's Secrets key, the account's second factor, and an exact-bytes source. */
34
+ export declare const PackageRegistryPublishSchema: z.ZodObject<{
35
+ credential: z.ZodObject<{
36
+ secret: z.ZodString;
37
+ }, z.core.$strict>;
38
+ secondFactor: z.ZodDefault<z.ZodEnum<{
39
+ web: "web";
40
+ none: "none";
41
+ otp: "otp";
42
+ }>>;
43
+ mirrorOf: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strict>;
45
+ export type PackageRegistryPublish = z.infer<typeof PackageRegistryPublishSchema>;
46
+ /** Open adapter config: the adapter package that owns `adapter` validates the rest. */
47
+ export declare const PackageRegistryConfigSchema: z.ZodObject<{
48
+ adapter: z.ZodString;
49
+ }, z.core.$loose>;
40
50
  export declare const PackageRegistryDescriptorSchema: z.ZodObject<{
41
51
  id: z.ZodString;
42
52
  name: z.ZodOptional<z.ZodString>;
@@ -45,10 +55,21 @@ export declare const PackageRegistryDescriptorSchema: z.ZodObject<{
45
55
  hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
56
  enabled: z.ZodOptional<z.ZodBoolean>;
47
57
  priority: z.ZodOptional<z.ZodNumber>;
58
+ capabilityId: z.ZodOptional<z.ZodString>;
48
59
  requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
49
60
  optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
61
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
62
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
63
+ maxEntries: z.ZodOptional<z.ZodNumber>;
64
+ maxBytes: z.ZodOptional<z.ZodNumber>;
65
+ cascadeFrom: z.ZodOptional<z.ZodString>;
66
+ ageField: z.ZodOptional<z.ZodString>;
67
+ reason: z.ZodString;
68
+ enforcedBy: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>]>>;
50
70
  kind: z.ZodLiteral<"infra/package-registry">;
51
- url: z.ZodString;
71
+ url: z.ZodOptional<z.ZodString>;
72
+ service: z.ZodOptional<z.ZodString>;
52
73
  registryType: z.ZodDefault<z.ZodEnum<{
53
74
  npm: "npm";
54
75
  docker: "docker";
@@ -67,23 +88,108 @@ export declare const PackageRegistryDescriptorSchema: z.ZodObject<{
67
88
  secret: z.ZodOptional<z.ZodBoolean>;
68
89
  description: z.ZodOptional<z.ZodString>;
69
90
  storeKey: z.ZodOptional<z.ZodString>;
91
+ storeBinding: z.ZodOptional<z.ZodBoolean>;
70
92
  }, z.core.$strip>>>;
71
- config: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
72
- dockerImage: z.ZodDefault<z.ZodString>;
73
- storageSize: z.ZodDefault<z.ZodString>;
74
- domain: z.ZodString;
75
- upstreamNpmUrl: z.ZodDefault<z.ZodString>;
76
- authEnabled: z.ZodDefault<z.ZodBoolean>;
77
- adapter: z.ZodLiteral<"verdaccio-doks">;
78
- }, z.core.$strip>]>>;
93
+ publish: z.ZodOptional<z.ZodObject<{
94
+ credential: z.ZodObject<{
95
+ secret: z.ZodString;
96
+ }, z.core.$strict>;
97
+ secondFactor: z.ZodDefault<z.ZodEnum<{
98
+ web: "web";
99
+ none: "none";
100
+ otp: "otp";
101
+ }>>;
102
+ mirrorOf: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strict>>;
104
+ config: z.ZodOptional<z.ZodObject<{
105
+ adapter: z.ZodString;
106
+ }, z.core.$loose>>;
79
107
  }, z.core.$strip>;
80
108
  export type PackageRegistryDescriptor = z.infer<typeof PackageRegistryDescriptorSchema>;
81
- declare class DefaultPackageRegistryImplementation {
82
- readonly descriptor: RuntimeDescriptor;
83
- readonly context: unknown;
84
- constructor(descriptor: RuntimeDescriptor, context: unknown);
85
- get config(): PackageRegistryDescriptor;
109
+ /** One released version as a registry serves it. */
110
+ export type PackageRegistryRelease = {
111
+ version: string;
112
+ integrity: string;
113
+ };
114
+ /** What reading a package's release tag found. */
115
+ export type PackageRegistryReleaseRead = {
116
+ state: 'released';
117
+ release: PackageRegistryRelease;
118
+ }
119
+ /** The registry does not serve the package to this reader. */
120
+ | {
121
+ state: 'absent';
122
+ } | {
123
+ state: 'untagged';
124
+ };
125
+ /** Every release tag a registry serves for one package. */
126
+ export type PackageRegistryReleasesRead = {
127
+ state: 'released';
128
+ tags: Record<string, PackageRegistryRelease>;
129
+ }
130
+ /** The registry does not serve the package to this reader. */
131
+ | {
132
+ state: 'absent';
133
+ };
134
+ /** The second factor a write answers with, as the descriptor's `publish.secondFactor` asks. */
135
+ export type PackageRegistrySecondFactor = {
136
+ kind: 'otp';
137
+ code: string;
138
+ }
139
+ /**
140
+ * `announce` shows the approval URL to the account owner; the write waits for the approval.
141
+ * With `retryOnTimeout`, an approval that expires unanswered is asked for again.
142
+ */
143
+ | {
144
+ kind: 'web';
145
+ announce: (authUrl: string) => void | Promise<void>;
146
+ retryOnTimeout?: boolean;
147
+ };
148
+ /** Exact package bytes to write, with the digests the source recorded for them. */
149
+ export type PackageRegistryPublishInput = {
150
+ bytes: Uint8Array;
151
+ tag: string;
152
+ access?: 'public' | 'restricted';
153
+ dist: {
154
+ integrity: string;
155
+ shasum: string;
156
+ };
157
+ secondFactor?: PackageRegistrySecondFactor;
158
+ };
159
+ /** The release contract every `infra/package-registry` implementation answers. */
160
+ export interface PackageRegistryImplementation {
161
+ readonly config: PackageRegistryDescriptor;
162
+ /** The same registry reading its credential from another Secrets environment. */
163
+ forEnvironment(environment: string): PackageRegistryImplementation;
164
+ /** The registry origin: `url`, or the named service's configured primary origin. */
165
+ origin(): Promise<string>;
166
+ /** The version on `tag`, read as an anonymous caller when `anonymous` (what the public is served). */
167
+ readRelease(name: string, tag: string, options?: {
168
+ anonymous?: boolean;
169
+ }): Promise<PackageRegistryReleaseRead>;
170
+ /** Every release tag of `name`, read as an anonymous caller when `anonymous`. */
171
+ readReleases(name: string, options?: {
172
+ anonymous?: boolean;
173
+ }): Promise<PackageRegistryReleasesRead>;
174
+ /** The package's current dist-tags (tag → version); empty when the registry holds no such package. */
175
+ distTags(name: string): Promise<Record<string, string>>;
176
+ /** Points `tag` at an existing `version`, answered with the second factor the descriptor asks for. */
177
+ setTag(input: {
178
+ name: string;
179
+ tag: string;
180
+ version: string;
181
+ secondFactor?: PackageRegistrySecondFactor;
182
+ }): Promise<void>;
183
+ /** The integrity this registry records for `name@version`, or `undefined` when it holds no such version. */
184
+ versionIntegrity(name: string, version: string): Promise<string | undefined>;
185
+ /** The bytes of `name@version`, refused unless they match `integrity`. */
186
+ tarball(name: string, version: string, integrity: string): Promise<Uint8Array>;
187
+ /** Writes exactly `input.bytes` and returns once the registry accepts them (serving them may lag). */
188
+ publish(input: PackageRegistryPublishInput): Promise<{
189
+ name: string;
190
+ version: string;
191
+ integrity: string;
192
+ }>;
86
193
  }
87
- export declare const packageRegistryKind: RuntimeKindDescriptorRecord<DefaultPackageRegistryImplementation>;
88
- export {};
194
+ export declare const packageRegistryKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<PackageRegistryImplementation>;
89
195
  //# sourceMappingURL=package-registry.kind.d.ts.map