@vibesdotdev/infra-core 0.0.1 → 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 (332) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +34 -63
  3. package/dist/bootstrap/seed.descriptor.d.ts +1 -1
  4. package/dist/bootstrap/seed.descriptor.d.ts.map +1 -1
  5. package/dist/bootstrap/seed.descriptor.js +1 -1
  6. package/dist/bootstrap/seed.descriptor.js.map +1 -1
  7. package/dist/bootstrap/seed.impl-shape.d.ts +1 -1
  8. package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -1
  9. package/dist/bootstrap/seed.kind.d.ts +1 -3
  10. package/dist/bootstrap/seed.kind.d.ts.map +1 -1
  11. package/dist/bootstrap/seed.kind.js +17 -4
  12. package/dist/bootstrap/seed.kind.js.map +1 -1
  13. package/dist/bootstrap/seed.runner.d.ts +9 -2
  14. package/dist/bootstrap/seed.runner.d.ts.map +1 -1
  15. package/dist/bootstrap/seed.runner.js +37 -18
  16. package/dist/bootstrap/seed.runner.js.map +1 -1
  17. package/dist/capped-id.d.ts +19 -0
  18. package/dist/capped-id.d.ts.map +1 -0
  19. package/dist/capped-id.js +64 -0
  20. package/dist/capped-id.js.map +1 -0
  21. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts +23 -0
  22. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts.map +1 -0
  23. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js +33 -0
  24. package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js.map +1 -0
  25. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts +24 -0
  26. package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts.map +1 -0
  27. package/dist/cli/generate/artifact/artifact.cli-command.impl.js +73 -0
  28. package/dist/cli/generate/artifact/artifact.cli-command.impl.js.map +1 -0
  29. package/dist/cli/generate/context.d.ts +17 -0
  30. package/dist/cli/generate/context.d.ts.map +1 -0
  31. package/dist/cli/generate/context.js +24 -0
  32. package/dist/cli/generate/context.js.map +1 -0
  33. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts +30 -0
  34. package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts.map +1 -0
  35. package/dist/cli/generate/generate/generate.cli-command.descriptor.js +25 -0
  36. package/dist/cli/generate/generate/generate.cli-command.descriptor.js.map +1 -0
  37. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts +25 -0
  38. package/dist/cli/generate/generate/generate.cli-command.impl.d.ts.map +1 -0
  39. package/dist/cli/generate/generate/generate.cli-command.impl.js +64 -0
  40. package/dist/cli/generate/generate/generate.cli-command.impl.js.map +1 -0
  41. package/dist/cli/generate/generate-core.d.ts +51 -0
  42. package/dist/cli/generate/generate-core.d.ts.map +1 -0
  43. package/dist/cli/generate/generate-core.js +172 -0
  44. package/dist/cli/generate/generate-core.js.map +1 -0
  45. package/dist/cli/generate/index.d.ts +5 -0
  46. package/dist/cli/generate/index.d.ts.map +1 -0
  47. package/dist/cli/generate/index.js +5 -0
  48. package/dist/cli/generate/index.js.map +1 -0
  49. package/dist/credentials/resolve.d.ts +82 -22
  50. package/dist/credentials/resolve.d.ts.map +1 -1
  51. package/dist/credentials/resolve.js +251 -77
  52. package/dist/credentials/resolve.js.map +1 -1
  53. package/dist/deployment-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 +23 -34
  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 +141 -35
  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 +123 -40
  306. package/SPEC.md +0 -169
  307. package/src/bootstrap/index.ts +0 -15
  308. package/src/bootstrap/seed.descriptor.ts +0 -24
  309. package/src/bootstrap/seed.impl-shape.ts +0 -5
  310. package/src/bootstrap/seed.kind.ts +0 -26
  311. package/src/bootstrap/seed.runner.ts +0 -87
  312. package/src/credentials/resolve.ts +0 -205
  313. package/src/deployment.ts +0 -57
  314. package/src/index.ts +0 -149
  315. package/src/infra.plugin.ts +0 -54
  316. package/src/kinds/alerts.kind.ts +0 -164
  317. package/src/kinds/artifact.kind.ts +0 -96
  318. package/src/kinds/cache.kind.ts +0 -104
  319. package/src/kinds/database.kind.ts +0 -120
  320. package/src/kinds/discovery.ts +0 -26
  321. package/src/kinds/git-hosting.kind.ts +0 -100
  322. package/src/kinds/index.ts +0 -139
  323. package/src/kinds/logs.kind.ts +0 -104
  324. package/src/kinds/object-storage.kind.ts +0 -101
  325. package/src/kinds/observability.kind.ts +0 -178
  326. package/src/kinds/package-registry.kind.ts +0 -95
  327. package/src/kinds/queue.kind.ts +0 -102
  328. package/src/kinds/rum.kind.ts +0 -135
  329. package/src/kinds/sandbox.kind.ts +0 -115
  330. package/src/kinds/web-app.kind.ts +0 -103
  331. package/src/kinds/worker.kind.ts +0 -203
  332. package/src/schemas.ts +0 -127
@@ -12,14 +12,14 @@
12
12
  * The kind decouples *configuration* (which hostnames, which token,
13
13
  * which privacy mode) from *delivery* (how the beacon `<script>` tag
14
14
  * lands in the HTML). For SvelteKit apps, the
15
- * `@vibesdotdev/cloudflare-web-analytics` package provides a `handle`
16
- * hook that injects the beacon via `transformPageChunk` — no
15
+ * `@vibesdotdev/integrations-cloudflare/svelte/web-analytics` surface provides a
16
+ * `handle` hook that injects the beacon via `transformPageChunk` — no
17
17
  * per-app `app.html` edits required once the kind is wired in.
18
18
  */
19
19
  import * as z from 'zod/v4';
20
- import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
21
- import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
22
- import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
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
23
  const RumPrivacySchema = z.object({
24
24
  /** Drop EU visitor data at the beacon level (GDPR fast path). */
25
25
  excludeEU: z.boolean().default(false),
@@ -73,8 +73,7 @@ const RumBaseSchema = RuntimeDescriptorSchema.extend({
73
73
  export const rumKind = createRuntimeKind({
74
74
  id: 'infra/rum',
75
75
  descriptorSchema: RumBaseSchema,
76
- discoveryPattern: INFRA_DISCOVERY_PATTERN,
77
- extractStem
76
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
78
77
  });
79
78
  export { RumBaseSchema as InfraRumDescriptorSchema, RumPrivacySchema, RumInjectionSchema };
80
79
  //# sourceMappingURL=rum.kind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rum.kind.js","sourceRoot":"","sources":["../../src/kinds/rum.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,iEAAiE;IACjE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,2DAA2D;IAC3D,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC;AAIH;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,QAAQ;CACR,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,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,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC;;;;;;;OAOG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,2EAA2E;IAC3E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvD,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,SAAS,EAAE,KAAK;QAChB,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,KAAK;KACvB,CAAC,CAAC;IACH,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAClC,CAAC,CAAC;AAyCH,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAwC;IAC/E,EAAE,EAAE,WAAW;IACf,gBAAgB,EAAE,aAAa;IAC/B,gBAAgB,EAAE,uBAAuB;IACzC,WAAW;CACX,CAAC,CAAC;AAKH,OAAO,EACN,aAAa,IAAI,wBAAwB,EACzC,gBAAgB,EAChB,kBAAkB,EAClB,CAAC"}
1
+ {"version":3,"file":"rum.kind.js","sourceRoot":"","sources":["../../src/kinds/rum.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;AAE1D,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,iEAAiE;IACjE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,2DAA2D;IAC3D,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC;AAIH;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,QAAQ;CACR,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,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,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC;;;;;;;OAOG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,2EAA2E;IAC3E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvD,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,SAAS,EAAE,KAAK;QAChB,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,KAAK;KACvB,CAAC,CAAC;IACH,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAClC,CAAC,CAAC;AA0DH,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAwC;IAC/E,EAAE,EAAE,WAAW;IACf,gBAAgB,EAAE,aAAa;IAC/B,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC;AAKH,OAAO,EACN,aAAa,IAAI,wBAAwB,EACzC,gBAAgB,EAChB,kBAAkB,EAClB,CAAC"}
@@ -5,17 +5,21 @@
5
5
  * subprocess capabilities. Used for agent code execution, tool sandboxing,
6
6
  * and long-running background tasks.
7
7
  *
8
- * Schema shape: strict common base + `config` discriminated union.
8
+ * Schema shape: strict common base + an open, adapter-keyed `config`.
9
9
  *
10
10
  * - The base defines fields universal across every adapter:
11
11
  * id/kind/name + the sandbox shape (entrypoint, image, limits,
12
12
  * outboundProxy, liveView, persistent, env).
13
- * - Adapter-specific fields live under `config`. Each adapter package
14
- * defines its own concrete schema under its discriminator key.
13
+ * - Adapter-specific fields live under `config`, keyed by a non-empty
14
+ * `adapter` discriminator. Cloud provider adapter schemas live in their
15
+ * integrations owners (Cloudflare's in `@vibesdotdev/integrations-cloudflare`,
16
+ * DigitalOcean droplet and DOKS job configs in
17
+ * `@vibesdotdev/integrations-digitalocean`); this kind names no cloud
18
+ * provider, so a config for any adapter — including one contributed by a
19
+ * user plugin — parses here, and the adapter validates its own grammar.
20
+ * The local docker adapter is not a cloud integration and is defined here.
15
21
  */
16
22
  import * as z from 'zod/v4';
17
- import type { RuntimeKindDescriptorRecord } from '@vibesdotdev/runtime/schemas/kind';
18
- import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
19
23
  export declare const SandboxOutboundProxySchema: z.ZodObject<{
20
24
  binding: z.ZodString;
21
25
  workerPath: z.ZodOptional<z.ZodString>;
@@ -30,27 +34,94 @@ export declare const SandboxResourceLimitsSchema: z.ZodObject<{
30
34
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
31
35
  }, z.core.$strip>;
32
36
  export type SandboxResourceLimits = z.infer<typeof SandboxResourceLimitsSchema>;
33
- export declare const CloudflareSandboxConfigSchema: z.ZodObject<{
34
- image: z.ZodOptional<z.ZodString>;
35
- }, z.core.$strip>;
37
+ /** Host bootstrap accepted by a provisioner; omitted preserves legacy cloud-init callers. */
38
+ export declare const SandboxBootstrapSchema: z.ZodEnum<{
39
+ entrypoint: "entrypoint";
40
+ "cloud-init": "cloud-init";
41
+ }>;
42
+ export type SandboxBootstrap = z.infer<typeof SandboxBootstrapSchema>;
43
+ export interface SandboxProvisionOptions {
44
+ /** Stable noncredential configuration, included in operation identity. */
45
+ env?: Record<string, string>;
46
+ /** Resolve transient authority only when a new process must be started. Never persisted. */
47
+ resolveCredentials?: () => Promise<Record<string, string>>;
48
+ }
49
+ /** Local docker sandbox adapter: a container image plus volume mounts. */
36
50
  export declare const DockerSandboxConfigSchema: z.ZodObject<{
37
51
  image: z.ZodString;
38
52
  volumes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
39
53
  }, z.core.$strip>;
40
- export declare const DigitalOceanDropletSandboxConfigSchema: z.ZodObject<{
41
- dropletSize: z.ZodString;
42
- }, z.core.$strip>;
43
- export declare const SandboxConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
54
+ export type DockerSandboxConfig = z.infer<typeof DockerSandboxConfigSchema>;
55
+ /**
56
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
57
+ * adapter package defines and parses its own config schema; this kind names
58
+ * no cloud provider, so a config for any adapter — including one contributed
59
+ * by a user plugin — parses here, and the adapter validates its own grammar.
60
+ */
61
+ export declare const SandboxConfigSchema: z.ZodObject<{
62
+ adapter: z.ZodString;
63
+ }, z.core.$loose>;
64
+ export type SandboxConfig = z.infer<typeof SandboxConfigSchema>;
65
+ /** Placement a host profile supplies when a launch omits size, region or image. */
66
+ export declare const SandboxHostPlacementDefaultsSchema: z.ZodObject<{
67
+ size: z.ZodOptional<z.ZodString>;
68
+ region: z.ZodOptional<z.ZodString>;
44
69
  image: z.ZodOptional<z.ZodString>;
45
- adapter: z.ZodLiteral<"cloudflare-sandbox">;
46
- }, z.core.$strip>, z.ZodObject<{
47
- image: z.ZodString;
48
- volumes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
49
- adapter: z.ZodLiteral<"docker">;
50
- }, z.core.$strip>, z.ZodObject<{
51
- dropletSize: z.ZodString;
52
- adapter: z.ZodLiteral<"digitalocean-droplet">;
53
- }, z.core.$strip>]>;
70
+ }, z.core.$strip>;
71
+ export type SandboxHostPlacementDefaults = z.infer<typeof SandboxHostPlacementDefaultsSchema>;
72
+ /**
73
+ * How the provider's `advancePause` stops compute billing:
74
+ * - `snapshot-destroy`: snapshot the disk, then delete the instance; only the
75
+ * snapshot bills while paused (a provider whose stopped instances still bill).
76
+ * - `power-off`: stop the instance in place; the provider stops compute billing.
77
+ */
78
+ export declare const SandboxPauseStrategySchema: z.ZodEnum<{
79
+ "snapshot-destroy": "snapshot-destroy";
80
+ "power-off": "power-off";
81
+ }>;
82
+ export type SandboxPauseStrategy = z.infer<typeof SandboxPauseStrategySchema>;
83
+ /**
84
+ * The fleet-host profile a provisioner declares: what `vibes fleet launch`
85
+ * may request from it and what it supplies on omission. Generic launch reads
86
+ * only this; a sandbox without a profile is never selected implicitly.
87
+ */
88
+ export declare const SandboxHostProfileSchema: z.ZodObject<{
89
+ provider: z.ZodString;
90
+ aliases: z.ZodDefault<z.ZodArray<z.ZodString>>;
91
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
+ gpuSizes: z.ZodDefault<z.ZodArray<z.ZodString>>;
93
+ defaults: z.ZodDefault<z.ZodObject<{
94
+ size: z.ZodOptional<z.ZodString>;
95
+ region: z.ZodOptional<z.ZodString>;
96
+ image: z.ZodOptional<z.ZodString>;
97
+ }, z.core.$strip>>;
98
+ gpuDefaults: z.ZodDefault<z.ZodObject<{
99
+ image: z.ZodOptional<z.ZodString>;
100
+ region: z.ZodOptional<z.ZodString>;
101
+ }, z.core.$strict>>;
102
+ pause: z.ZodOptional<z.ZodEnum<{
103
+ "snapshot-destroy": "snapshot-destroy";
104
+ "power-off": "power-off";
105
+ }>>;
106
+ }, z.core.$strip>;
107
+ export type SandboxHostProfile = z.infer<typeof SandboxHostProfileSchema>;
108
+ /** One fleet-host launch as the selected provider sees it before any paid call. */
109
+ export interface SandboxHostLaunchRequest {
110
+ size: string;
111
+ region: string;
112
+ image: string;
113
+ gpu: boolean;
114
+ sshKeyIds: readonly string[];
115
+ }
116
+ /**
117
+ * Optional `infra/sandbox` implementation operation: refuse a launch the
118
+ * provider would reject (throw a `CapabilityError`) before the platform is
119
+ * asked to provision. Provider-specific rules live here, never in generic launch.
120
+ */
121
+ export interface SandboxHostLaunchPreflight {
122
+ preflightHostLaunch(request: SandboxHostLaunchRequest): void | Promise<void>;
123
+ }
124
+ export declare function hasSandboxHostLaunchPreflight(implementation: Partial<SandboxHostLaunchPreflight> | null | undefined): implementation is SandboxHostLaunchPreflight;
54
125
  export declare const SandboxDescriptorSchema: z.ZodObject<{
55
126
  id: z.ZodString;
56
127
  name: z.ZodOptional<z.ZodString>;
@@ -59,9 +130,42 @@ export declare const SandboxDescriptorSchema: z.ZodObject<{
59
130
  hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
60
131
  enabled: z.ZodOptional<z.ZodBoolean>;
61
132
  priority: z.ZodOptional<z.ZodNumber>;
133
+ capabilityId: z.ZodOptional<z.ZodString>;
62
134
  requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
135
  optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
136
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
137
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
138
+ maxEntries: z.ZodOptional<z.ZodNumber>;
139
+ maxBytes: z.ZodOptional<z.ZodNumber>;
140
+ cascadeFrom: z.ZodOptional<z.ZodString>;
141
+ ageField: z.ZodOptional<z.ZodString>;
142
+ reason: z.ZodString;
143
+ enforcedBy: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>]>>;
64
145
  kind: z.ZodLiteral<"infra/sandbox">;
146
+ bootstrap: z.ZodOptional<z.ZodEnum<{
147
+ entrypoint: "entrypoint";
148
+ "cloud-init": "cloud-init";
149
+ }>>;
150
+ hostProfile: z.ZodOptional<z.ZodObject<{
151
+ provider: z.ZodString;
152
+ aliases: z.ZodDefault<z.ZodArray<z.ZodString>>;
153
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
154
+ gpuSizes: z.ZodDefault<z.ZodArray<z.ZodString>>;
155
+ defaults: z.ZodDefault<z.ZodObject<{
156
+ size: z.ZodOptional<z.ZodString>;
157
+ region: z.ZodOptional<z.ZodString>;
158
+ image: z.ZodOptional<z.ZodString>;
159
+ }, z.core.$strip>>;
160
+ gpuDefaults: z.ZodDefault<z.ZodObject<{
161
+ image: z.ZodOptional<z.ZodString>;
162
+ region: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strict>>;
164
+ pause: z.ZodOptional<z.ZodEnum<{
165
+ "snapshot-destroy": "snapshot-destroy";
166
+ "power-off": "power-off";
167
+ }>>;
168
+ }, z.core.$strip>>;
65
169
  entrypoint: z.ZodOptional<z.ZodString>;
66
170
  image: z.ZodOptional<z.ZodString>;
67
171
  limits: z.ZodOptional<z.ZodObject<{
@@ -86,26 +190,18 @@ export declare const SandboxDescriptorSchema: z.ZodObject<{
86
190
  secret: z.ZodOptional<z.ZodBoolean>;
87
191
  description: z.ZodOptional<z.ZodString>;
88
192
  storeKey: z.ZodOptional<z.ZodString>;
193
+ storeBinding: z.ZodOptional<z.ZodBoolean>;
89
194
  }, z.core.$strip>>>;
90
- config: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
91
- image: z.ZodOptional<z.ZodString>;
92
- adapter: z.ZodLiteral<"cloudflare-sandbox">;
93
- }, z.core.$strip>, z.ZodObject<{
94
- image: z.ZodString;
95
- volumes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
96
- adapter: z.ZodLiteral<"docker">;
97
- }, z.core.$strip>, z.ZodObject<{
98
- dropletSize: z.ZodString;
99
- adapter: z.ZodLiteral<"digitalocean-droplet">;
100
- }, z.core.$strip>]>>;
195
+ config: z.ZodOptional<z.ZodObject<{
196
+ adapter: z.ZodString;
197
+ }, z.core.$loose>>;
101
198
  }, z.core.$strip>;
102
199
  export type SandboxDescriptor = z.infer<typeof SandboxDescriptorSchema>;
103
- declare class DefaultSandboxImplementation {
104
- readonly descriptor: RuntimeDescriptor;
105
- readonly context: unknown;
106
- constructor(descriptor: RuntimeDescriptor, context: unknown);
107
- get config(): SandboxDescriptor;
108
- }
109
- export declare const sandboxKind: RuntimeKindDescriptorRecord<DefaultSandboxImplementation>;
110
- export {};
200
+ /**
201
+ * No default implementation: a sandbox that cannot provision is no sandbox.
202
+ * Resolving a descriptor whose adapter registered no loader for this scope
203
+ * refuses with the kernel's typed NOT_FOUND, naming the adapter, instead of
204
+ * handing back an inert shell every caller then misreports.
205
+ */
206
+ export declare const sandboxKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<unknown>;
111
207
  //# sourceMappingURL=sandbox.kind.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/sandbox.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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,0BAA0B;;;;iBAIrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,2BAA2B;;;;;;iBAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AA2BhF,eAAO,MAAM,6BAA6B;;iBAGxC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;iBAKpC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;iBAGjD,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;mBAI9B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,cAAM,4BAA4B;aAEhB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,OAAO;gBADhB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO;IAGjC,IAAI,MAAM,IAAI,iBAAiB,CAE9B;CACD;AAED,eAAO,MAAM,WAAW,2DAMtB,CAAC"}
1
+ {"version":3,"file":"sandbox.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/sandbox.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAM5B,eAAO,MAAM,0BAA0B;;;;iBAIrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,2BAA2B;;;;;;iBAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB;;;EAAuC,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACvC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB;;;iBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,mFAAmF;AACnF,eAAO,MAAM,kCAAkC;;;;iBAI7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;EAA4C,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;iBAkBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IAC1C,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,wBAAgB,6BAA6B,CAC5C,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,IAAI,GAAG,SAAS,GACpE,cAAc,IAAI,0BAA0B,CAE9C;AA+BD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,WAAW,oEAItB,CAAC"}
@@ -5,19 +5,25 @@
5
5
  * subprocess capabilities. Used for agent code execution, tool sandboxing,
6
6
  * and long-running background tasks.
7
7
  *
8
- * Schema shape: strict common base + `config` discriminated union.
8
+ * Schema shape: strict common base + an open, adapter-keyed `config`.
9
9
  *
10
10
  * - The base defines fields universal across every adapter:
11
11
  * id/kind/name + the sandbox shape (entrypoint, image, limits,
12
12
  * outboundProxy, liveView, persistent, env).
13
- * - Adapter-specific fields live under `config`. Each adapter package
14
- * defines its own concrete schema under its discriminator key.
13
+ * - Adapter-specific fields live under `config`, keyed by a non-empty
14
+ * `adapter` discriminator. Cloud provider adapter schemas live in their
15
+ * integrations owners (Cloudflare's in `@vibesdotdev/integrations-cloudflare`,
16
+ * DigitalOcean droplet and DOKS job configs in
17
+ * `@vibesdotdev/integrations-digitalocean`); this kind names no cloud
18
+ * provider, so a config for any adapter — including one contributed by a
19
+ * user plugin — parses here, and the adapter validates its own grammar.
20
+ * The local docker adapter is not a cloud integration and is defined here.
15
21
  */
16
22
  import * as z from 'zod/v4';
17
- import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
18
- import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
23
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
24
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
19
25
  import { deploymentEnvRequirementSchema } from "../schemas.js";
20
- import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
26
+ import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
21
27
  export const SandboxOutboundProxySchema = z.object({
22
28
  binding: z.string().min(1),
23
29
  workerPath: z.string().min(1).optional(),
@@ -30,8 +36,70 @@ export const SandboxResourceLimitsSchema = z.object({
30
36
  maxSubprocesses: z.number().int().positive().optional(),
31
37
  timeoutSeconds: z.number().int().positive().optional()
32
38
  });
39
+ /** Host bootstrap accepted by a provisioner; omitted preserves legacy cloud-init callers. */
40
+ export const SandboxBootstrapSchema = z.enum(['cloud-init', 'entrypoint']);
41
+ /** Local docker sandbox adapter: a container image plus volume mounts. */
42
+ export const DockerSandboxConfigSchema = z.object({
43
+ /** Container image. */
44
+ image: z.string(),
45
+ /** Volume mounts (hostPath: containerPath). */
46
+ volumes: z.record(z.string(), z.string()).optional()
47
+ });
48
+ /**
49
+ * Adapter-specific configuration: the adapter id plus its own fields. Each
50
+ * adapter package defines and parses its own config schema; this kind names
51
+ * no cloud provider, so a config for any adapter — including one contributed
52
+ * by a user plugin — parses here, and the adapter validates its own grammar.
53
+ */
54
+ export const SandboxConfigSchema = z.looseObject({
55
+ adapter: z.string().min(1)
56
+ });
57
+ const SandboxSlugSchema = z.string().trim().min(1);
58
+ /** Placement a host profile supplies when a launch omits size, region or image. */
59
+ export const SandboxHostPlacementDefaultsSchema = z.object({
60
+ size: SandboxSlugSchema.optional(),
61
+ region: SandboxSlugSchema.optional(),
62
+ image: SandboxSlugSchema.optional()
63
+ });
64
+ /**
65
+ * How the provider's `advancePause` stops compute billing:
66
+ * - `snapshot-destroy`: snapshot the disk, then delete the instance; only the
67
+ * snapshot bills while paused (a provider whose stopped instances still bill).
68
+ * - `power-off`: stop the instance in place; the provider stops compute billing.
69
+ */
70
+ export const SandboxPauseStrategySchema = z.enum(['snapshot-destroy', 'power-off']);
71
+ /**
72
+ * The fleet-host profile a provisioner declares: what `vibes fleet launch`
73
+ * may request from it and what it supplies on omission. Generic launch reads
74
+ * only this; a sandbox without a profile is never selected implicitly.
75
+ */
76
+ export const SandboxHostProfileSchema = z.object({
77
+ /** Host provider id recorded on the platform host row. */
78
+ provider: SandboxSlugSchema,
79
+ /** Other names a launch may select this profile by. */
80
+ aliases: z.array(SandboxSlugSchema).default([]),
81
+ /** CPU sizes a launch may request. Absent: the provider validates sizes itself. */
82
+ sizes: z.array(SandboxSlugSchema).min(1).optional(),
83
+ /** Sizes admitted only for a GPU launch. */
84
+ gpuSizes: z.array(SandboxSlugSchema).default([]),
85
+ /** Placement for an omitted value on a CPU launch. */
86
+ defaults: SandboxHostPlacementDefaultsSchema.default({}),
87
+ /**
88
+ * Region and image for an omitted value on a GPU launch. A GPU size is never
89
+ * defaulted: an omitted size must not start a paid GPU host.
90
+ */
91
+ gpuDefaults: SandboxHostPlacementDefaultsSchema.omit({ size: true }).strict().default({}),
92
+ /** Pause semantics of this provider's `advancePause`. Absent: the provider cannot pause. */
93
+ pause: SandboxPauseStrategySchema.optional()
94
+ });
95
+ export function hasSandboxHostLaunchPreflight(implementation) {
96
+ return typeof implementation?.preflightHostLaunch === 'function';
97
+ }
33
98
  const SandboxBaseSchema = RuntimeDescriptorSchema.extend({
34
99
  kind: z.literal('infra/sandbox'),
100
+ bootstrap: SandboxBootstrapSchema.optional(),
101
+ /** Fleet-host profile; present when this sandbox provisions fleet hosts. */
102
+ hostProfile: SandboxHostProfileSchema.optional(),
35
103
  /** Shell or script to run on sandbox start. */
36
104
  entrypoint: z.string().optional(),
37
105
  /** Container image or template snapshot. */
@@ -47,48 +115,19 @@ const SandboxBaseSchema = RuntimeDescriptorSchema.extend({
47
115
  /** Environment variable requirements. */
48
116
  env: z.array(deploymentEnvRequirementSchema).optional()
49
117
  });
50
- export const CloudflareSandboxConfigSchema = z.object({
51
- /** Container image or template snapshot. */
52
- image: z.string().optional()
53
- });
54
- export const DockerSandboxConfigSchema = z.object({
55
- /** Container image. */
56
- image: z.string(),
57
- /** Volume mounts (hostPath: containerPath). */
58
- volumes: z.record(z.string(), z.string()).optional()
59
- });
60
- export const DigitalOceanDropletSandboxConfigSchema = z.object({
61
- /** Droplet size slug (e.g., 's-2vcpu-2gb'). */
62
- dropletSize: z.string().min(1)
63
- });
64
- export const SandboxConfigSchema = z.union([
65
- CloudflareSandboxConfigSchema.extend({ adapter: z.literal('cloudflare-sandbox') }),
66
- DockerSandboxConfigSchema.extend({ adapter: z.literal('docker') }),
67
- DigitalOceanDropletSandboxConfigSchema.extend({ adapter: z.literal('digitalocean-droplet') })
68
- ]);
69
118
  export const SandboxDescriptorSchema = SandboxBaseSchema.extend({
70
- /**
71
- * Adapter-specific configuration. Discriminated union — each adapter
72
- * package defines its own config schema under its discriminator key.
73
- */
119
+ /** Adapter-specific configuration, parsed by the adapter that owns it. */
74
120
  config: SandboxConfigSchema.optional()
75
121
  });
76
- class DefaultSandboxImplementation {
77
- descriptor;
78
- context;
79
- constructor(descriptor, context) {
80
- this.descriptor = descriptor;
81
- this.context = context;
82
- }
83
- get config() {
84
- return this.descriptor;
85
- }
86
- }
122
+ /**
123
+ * No default implementation: a sandbox that cannot provision is no sandbox.
124
+ * Resolving a descriptor whose adapter registered no loader for this scope
125
+ * refuses with the kernel's typed NOT_FOUND, naming the adapter, instead of
126
+ * handing back an inert shell every caller then misreports.
127
+ */
87
128
  export const sandboxKind = createRuntimeKind({
88
129
  id: 'infra/sandbox',
89
130
  descriptorSchema: SandboxDescriptorSchema,
90
- defaultImplementation: DefaultSandboxImplementation,
91
- discoveryPattern: INFRA_DISCOVERY_PATTERN,
92
- extractStem
131
+ discoveryPatterns: INFRA_DISCOVERY_PATTERNS
93
132
  });
94
133
  //# sourceMappingURL=sandbox.kind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.kind.js","sourceRoot":"","sources":["../../src/kinds/sandbox.kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.kind.js","sourceRoot":"","sources":["../../src/kinds/sandbox.kind.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { CostBasis } from '@vibesdotdev/shared/billing/cost-basis';
2
+ import type { ComputeSourceDescriptor, ComputeSourceOs, ComputeSourceArch } from './compute-source.kind.ts';
3
+ export interface ComputeDemand {
4
+ os?: ComputeSourceOs;
5
+ arch?: ComputeSourceArch;
6
+ /** Extra capabilities the job needs; every one must be provided. */
7
+ labels?: readonly string[];
8
+ /**
9
+ * Whether the code about to run has been reviewed. `untrusted` is a fork
10
+ * PR or anything else where the ref is not controlled by the repository
11
+ * owner, and it restricts selection to ephemeral sources.
12
+ */
13
+ trust: 'trusted' | 'untrusted';
14
+ /** Requesting scope. Required to select a `byo` source. */
15
+ owner?: {
16
+ type: string;
17
+ id: string;
18
+ };
19
+ /** Wall-clock ceiling the lease must be able to cover. */
20
+ maxDurationSeconds?: number;
21
+ }
22
+ /**
23
+ * What a lease of this length would cost us, in the provider's own terms.
24
+ *
25
+ * Conservative on purpose. `usdPerSecondCpuActive` is only charged while the
26
+ * vCPUs are busy, and we do not measure CPU-seconds in CI, so ranking assumes
27
+ * they are busy the whole time. Assuming idle would rank a CPU-metered source
28
+ * as cheap and then hand us the bill — the failure the caller cannot see. A
29
+ * job that really does idle costs less than this says, never more.
30
+ *
31
+ * `minimumUsd` is applied as a floor rather than added, because that is how a
32
+ * provider minimum actually works: a 10-second droplet costs the minimum, not
33
+ * the minimum plus 10 seconds.
34
+ *
35
+ * When the caller states no duration there is nothing to multiply, so the
36
+ * comparison falls back to the fixed costs — which still orders a free
37
+ * bring-your-own machine below a paid one.
38
+ */
39
+ export declare function expectedCostUsd(source: ComputeSourceDescriptor, maxDurationSeconds: number | undefined): number;
40
+ /**
41
+ * Which registered compute source should serve this demand.
42
+ *
43
+ * Throws rather than returning undefined: a caller that cannot get the machine
44
+ * class it asked for must stop, not proceed on something else.
45
+ */
46
+ export declare function selectComputeSource(sources: readonly ComputeSourceDescriptor[], demand: ComputeDemand): ComputeSourceDescriptor;
47
+ /**
48
+ * The cost basis to bill a lease from, in the billing layer's own vocabulary.
49
+ *
50
+ * The rating engine takes `CostBasis[]` and, when given none, falls back to
51
+ * `unknownCostHeuristic` — a $0.0001/compute-second floor doubled by a safety
52
+ * multiplier, or $0.72/hour. Every source we own is cheaper than that: a
53
+ * Cloudflare `standard-4` at full CPU is $0.40/hour and a DigitalOcean
54
+ * `s-2vcpu-4gb` is $0.036/hour. Handing the engine the real number is
55
+ * therefore not a tightening — it stops CI from being billed at up to twenty
56
+ * times what it costs us.
57
+ *
58
+ * Deliberately uses the SAME rate `expectedCostUsd` ranks on, including the
59
+ * assumption that metered CPU is fully active. If selection and the invoice
60
+ * disagreed about what a source costs, one of them would be lying, and the
61
+ * cheaper-looking source would win work it could not afford. The assumption
62
+ * only ever errs toward billing our real exposure rather than under-recovering
63
+ * it, and it still lands well under the heuristic it replaces.
64
+ *
65
+ * `minimumUsd` is NOT expressed here. A provider floor applies to a lease, not
66
+ * to a second, and there is no way to say "per-unit, but never less than X" in
67
+ * a per-unit basis. Folding it into the rate would inflate every long lease.
68
+ * The floor belongs to whatever holds the lease, and this returns only what is
69
+ * true per second.
70
+ */
71
+ export declare function computeSourceCostBasis(source: ComputeSourceDescriptor): CostBasis[];
72
+ //# sourceMappingURL=select-compute-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-compute-source.d.ts","sourceRoot":"","sources":["../../src/kinds/select-compute-source.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5G,MAAM,WAAW,aAAa;IAC7B,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,KAAK,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/B,2DAA2D;IAC3D,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA0BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACpC,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,SAAS,uBAAuB,EAAE,EAC3C,MAAM,EAAE,aAAa,GACnB,uBAAuB,CA+EzB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,EAAE,CAUnF"}