@vibesdotdev/integrations-digitalocean 0.0.0-stage → 1.0.0-rc.1

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 (323) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +78 -2
  3. package/dist/ai/index.d.ts +4 -0
  4. package/dist/ai/index.d.ts.map +1 -0
  5. package/dist/ai/index.js +4 -0
  6. package/dist/ai/index.js.map +1 -0
  7. package/dist/ai/inference.transport.impl.d.ts +5 -0
  8. package/dist/ai/inference.transport.impl.d.ts.map +1 -0
  9. package/dist/ai/inference.transport.impl.js +54 -0
  10. package/dist/ai/inference.transport.impl.js.map +1 -0
  11. package/dist/ai/provider.plugin.d.ts +6 -0
  12. package/dist/ai/provider.plugin.d.ts.map +1 -0
  13. package/dist/ai/provider.plugin.js +126 -0
  14. package/dist/ai/provider.plugin.js.map +1 -0
  15. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts +62 -0
  16. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts.map +1 -0
  17. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js +73 -0
  18. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js.map +1 -0
  19. package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts +2 -0
  20. package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts.map +1 -0
  21. package/dist/ai/providers/cloud/frontier/digitalocean/index.js +2 -0
  22. package/dist/ai/providers/cloud/frontier/digitalocean/index.js.map +1 -0
  23. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts +183 -0
  24. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts.map +1 -0
  25. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js +66 -0
  26. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js.map +1 -0
  27. package/dist/apps/api-client.d.ts +45 -0
  28. package/dist/apps/api-client.d.ts.map +1 -0
  29. package/dist/apps/api-client.js +47 -0
  30. package/dist/apps/api-client.js.map +1 -0
  31. package/dist/apps/build-spec.d.ts +44 -0
  32. package/dist/apps/build-spec.d.ts.map +1 -0
  33. package/dist/apps/build-spec.js +463 -0
  34. package/dist/apps/build-spec.js.map +1 -0
  35. package/dist/apps/deploy-client.d.ts +42 -0
  36. package/dist/apps/deploy-client.d.ts.map +1 -0
  37. package/dist/apps/deploy-client.js +300 -0
  38. package/dist/apps/deploy-client.js.map +1 -0
  39. package/dist/apps/index.d.ts +5 -0
  40. package/dist/apps/index.d.ts.map +1 -0
  41. package/dist/apps/index.js +4 -0
  42. package/dist/apps/index.js.map +1 -0
  43. package/dist/apps/types.d.ts +204 -0
  44. package/dist/apps/types.d.ts.map +1 -0
  45. package/dist/apps/types.js +13 -0
  46. package/dist/apps/types.js.map +1 -0
  47. package/dist/client/control-plane.d.ts +49 -0
  48. package/dist/client/control-plane.d.ts.map +1 -0
  49. package/dist/client/control-plane.js +85 -0
  50. package/dist/client/control-plane.js.map +1 -0
  51. package/dist/client/do-fetch.d.ts +41 -0
  52. package/dist/client/do-fetch.d.ts.map +1 -0
  53. package/dist/client/do-fetch.js +199 -0
  54. package/dist/client/do-fetch.js.map +1 -0
  55. package/dist/client/errors.d.ts +6 -0
  56. package/dist/client/errors.d.ts.map +1 -0
  57. package/dist/client/errors.js +34 -0
  58. package/dist/client/errors.js.map +1 -0
  59. package/dist/client/factory.d.ts +53 -0
  60. package/dist/client/factory.d.ts.map +1 -0
  61. package/dist/client/factory.js +220 -0
  62. package/dist/client/factory.js.map +1 -0
  63. package/dist/client/helpers.d.ts +5 -0
  64. package/dist/client/helpers.d.ts.map +1 -0
  65. package/dist/client/helpers.js +8 -0
  66. package/dist/client/helpers.js.map +1 -0
  67. package/dist/client/index.d.ts +12 -0
  68. package/dist/client/index.d.ts.map +1 -0
  69. package/dist/client/index.js +10 -0
  70. package/dist/client/index.js.map +1 -0
  71. package/dist/client/paginated.d.ts +19 -0
  72. package/dist/client/paginated.d.ts.map +1 -0
  73. package/dist/client/paginated.js +56 -0
  74. package/dist/client/paginated.js.map +1 -0
  75. package/dist/client/retry.d.ts +34 -0
  76. package/dist/client/retry.d.ts.map +1 -0
  77. package/dist/client/retry.js +53 -0
  78. package/dist/client/retry.js.map +1 -0
  79. package/dist/config/digitalocean.config.descriptor.d.ts +197 -0
  80. package/dist/config/digitalocean.config.descriptor.d.ts.map +1 -0
  81. package/dist/config/digitalocean.config.descriptor.js +59 -0
  82. package/dist/config/digitalocean.config.descriptor.js.map +1 -0
  83. package/dist/credentials/index.d.ts +38 -0
  84. package/dist/credentials/index.d.ts.map +1 -0
  85. package/dist/credentials/index.js +56 -0
  86. package/dist/credentials/index.js.map +1 -0
  87. package/dist/databases/index.d.ts +82 -0
  88. package/dist/databases/index.d.ts.map +1 -0
  89. package/dist/databases/index.js +57 -0
  90. package/dist/databases/index.js.map +1 -0
  91. package/dist/digitalocean-friction.policy.d.ts +29 -0
  92. package/dist/digitalocean-friction.policy.d.ts.map +1 -0
  93. package/dist/digitalocean-friction.policy.js +21 -0
  94. package/dist/digitalocean-friction.policy.js.map +1 -0
  95. package/dist/digitalocean.plugin.d.ts +3 -0
  96. package/dist/digitalocean.plugin.d.ts.map +1 -0
  97. package/dist/digitalocean.plugin.js +27 -0
  98. package/dist/digitalocean.plugin.js.map +1 -0
  99. package/dist/droplets/index.d.ts +106 -0
  100. package/dist/droplets/index.d.ts.map +1 -0
  101. package/dist/droplets/index.js +227 -0
  102. package/dist/droplets/index.js.map +1 -0
  103. package/dist/index.d.ts +35 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +32 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/inference-control-plane/index.d.ts +63 -0
  108. package/dist/inference-control-plane/index.d.ts.map +1 -0
  109. package/dist/inference-control-plane/index.js +93 -0
  110. package/dist/inference-control-plane/index.js.map +1 -0
  111. package/dist/infra/billing.d.ts +26 -0
  112. package/dist/infra/billing.d.ts.map +1 -0
  113. package/dist/infra/billing.js +43 -0
  114. package/dist/infra/billing.js.map +1 -0
  115. package/dist/infra/credentials.d.ts +11 -0
  116. package/dist/infra/credentials.d.ts.map +1 -0
  117. package/dist/infra/credentials.js +15 -0
  118. package/dist/infra/credentials.js.map +1 -0
  119. package/dist/infra/deployment-provider/deploy-secrets.d.ts +10 -0
  120. package/dist/infra/deployment-provider/deploy-secrets.d.ts.map +1 -0
  121. package/dist/infra/deployment-provider/deploy-secrets.js +66 -0
  122. package/dist/infra/deployment-provider/deploy-secrets.js.map +1 -0
  123. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts +96 -0
  124. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts.map +1 -0
  125. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js +242 -0
  126. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js.map +1 -0
  127. package/dist/infra/deployment-provider/image-publish.d.ts +39 -0
  128. package/dist/infra/deployment-provider/image-publish.d.ts.map +1 -0
  129. package/dist/infra/deployment-provider/image-publish.js +146 -0
  130. package/dist/infra/deployment-provider/image-publish.js.map +1 -0
  131. package/dist/infra/deployment-provider.descriptor.d.ts +34 -0
  132. package/dist/infra/deployment-provider.descriptor.d.ts.map +1 -0
  133. package/dist/infra/deployment-provider.descriptor.js +9 -0
  134. package/dist/infra/deployment-provider.descriptor.js.map +1 -0
  135. package/dist/infra/digitalocean-infra.plugin.d.ts +101 -0
  136. package/dist/infra/digitalocean-infra.plugin.d.ts.map +1 -0
  137. package/dist/infra/digitalocean-infra.plugin.js +283 -0
  138. package/dist/infra/digitalocean-infra.plugin.js.map +1 -0
  139. package/dist/infra/doks/clients.d.ts +183 -0
  140. package/dist/infra/doks/clients.d.ts.map +1 -0
  141. package/dist/infra/doks/clients.js +172 -0
  142. package/dist/infra/doks/clients.js.map +1 -0
  143. package/dist/infra/doks/digitalocean.d.ts +34 -0
  144. package/dist/infra/doks/digitalocean.d.ts.map +1 -0
  145. package/dist/infra/doks/digitalocean.js +267 -0
  146. package/dist/infra/doks/digitalocean.js.map +1 -0
  147. package/dist/infra/doks/service-release-schemas.d.ts +1037 -0
  148. package/dist/infra/doks/service-release-schemas.d.ts.map +1 -0
  149. package/dist/infra/doks/service-release-schemas.js +51 -0
  150. package/dist/infra/doks/service-release-schemas.js.map +1 -0
  151. package/dist/infra/doks/service-release.d.ts +415 -0
  152. package/dist/infra/doks/service-release.d.ts.map +1 -0
  153. package/dist/infra/doks/service-release.js +3201 -0
  154. package/dist/infra/doks/service-release.js.map +1 -0
  155. package/dist/infra/doks/worker.d.ts +14 -0
  156. package/dist/infra/doks/worker.d.ts.map +1 -0
  157. package/dist/infra/doks/worker.js +343 -0
  158. package/dist/infra/doks/worker.js.map +1 -0
  159. package/dist/infra/droplet.impl.d.ts +172 -0
  160. package/dist/infra/droplet.impl.d.ts.map +1 -0
  161. package/dist/infra/droplet.impl.js +379 -0
  162. package/dist/infra/droplet.impl.js.map +1 -0
  163. package/dist/infra/functions.impl.d.ts +123 -0
  164. package/dist/infra/functions.impl.d.ts.map +1 -0
  165. package/dist/infra/functions.impl.js +202 -0
  166. package/dist/infra/functions.impl.js.map +1 -0
  167. package/dist/infra/index.d.ts +15 -0
  168. package/dist/infra/index.d.ts.map +1 -0
  169. package/dist/infra/index.js +12 -0
  170. package/dist/infra/index.js.map +1 -0
  171. package/dist/infra/inventory.d.ts +7 -0
  172. package/dist/infra/inventory.d.ts.map +1 -0
  173. package/dist/infra/inventory.js +259 -0
  174. package/dist/infra/inventory.js.map +1 -0
  175. package/dist/infra/kubernetes-log-stream.d.ts +5 -0
  176. package/dist/infra/kubernetes-log-stream.d.ts.map +1 -0
  177. package/dist/infra/kubernetes-log-stream.js +186 -0
  178. package/dist/infra/kubernetes-log-stream.js.map +1 -0
  179. package/dist/infra/kubernetes-logs.d.ts +33 -0
  180. package/dist/infra/kubernetes-logs.d.ts.map +1 -0
  181. package/dist/infra/kubernetes-logs.descriptor.d.ts +14 -0
  182. package/dist/infra/kubernetes-logs.descriptor.d.ts.map +1 -0
  183. package/dist/infra/kubernetes-logs.descriptor.js +28 -0
  184. package/dist/infra/kubernetes-logs.descriptor.js.map +1 -0
  185. package/dist/infra/kubernetes-logs.js +196 -0
  186. package/dist/infra/kubernetes-logs.js.map +1 -0
  187. package/dist/infra/utilization.d.ts +44 -0
  188. package/dist/infra/utilization.d.ts.map +1 -0
  189. package/dist/infra/utilization.js +108 -0
  190. package/dist/infra/utilization.js.map +1 -0
  191. package/dist/kubernetes/authority.d.ts +40 -0
  192. package/dist/kubernetes/authority.d.ts.map +1 -0
  193. package/dist/kubernetes/authority.js +90 -0
  194. package/dist/kubernetes/authority.js.map +1 -0
  195. package/dist/kubernetes/encoding.d.ts +4 -0
  196. package/dist/kubernetes/encoding.d.ts.map +1 -0
  197. package/dist/kubernetes/encoding.js +8 -0
  198. package/dist/kubernetes/encoding.js.map +1 -0
  199. package/dist/kubernetes/index.d.ts +105 -0
  200. package/dist/kubernetes/index.d.ts.map +1 -0
  201. package/dist/kubernetes/index.js +99 -0
  202. package/dist/kubernetes/index.js.map +1 -0
  203. package/dist/kubernetes/transport.d.ts +11 -0
  204. package/dist/kubernetes/transport.d.ts.map +1 -0
  205. package/dist/kubernetes/transport.js +27 -0
  206. package/dist/kubernetes/transport.js.map +1 -0
  207. package/dist/network/index.d.ts +24 -0
  208. package/dist/network/index.d.ts.map +1 -0
  209. package/dist/network/index.js +16 -0
  210. package/dist/network/index.js.map +1 -0
  211. package/dist/registry/index.d.ts +39 -0
  212. package/dist/registry/index.d.ts.map +1 -0
  213. package/dist/registry/index.js +20 -0
  214. package/dist/registry/index.js.map +1 -0
  215. package/dist/schemas/app-deployment.d.ts +1472 -0
  216. package/dist/schemas/app-deployment.d.ts.map +1 -0
  217. package/dist/schemas/app-deployment.js +156 -0
  218. package/dist/schemas/app-deployment.js.map +1 -0
  219. package/dist/schemas/app-platform.d.ts +755 -0
  220. package/dist/schemas/app-platform.d.ts.map +1 -0
  221. package/dist/schemas/app-platform.js +253 -0
  222. package/dist/schemas/app-platform.js.map +1 -0
  223. package/dist/schemas/cache-database.d.ts +210 -0
  224. package/dist/schemas/cache-database.d.ts.map +1 -0
  225. package/dist/schemas/cache-database.js +105 -0
  226. package/dist/schemas/cache-database.js.map +1 -0
  227. package/dist/schemas/control-plane.d.ts +456 -0
  228. package/dist/schemas/control-plane.d.ts.map +1 -0
  229. package/dist/schemas/control-plane.js +123 -0
  230. package/dist/schemas/control-plane.js.map +1 -0
  231. package/dist/schemas/credential-use.d.ts +714 -0
  232. package/dist/schemas/credential-use.d.ts.map +1 -0
  233. package/dist/schemas/credential-use.js +73 -0
  234. package/dist/schemas/credential-use.js.map +1 -0
  235. package/dist/schemas/doks-worker.d.ts +4062 -0
  236. package/dist/schemas/doks-worker.d.ts.map +1 -0
  237. package/dist/schemas/doks-worker.js +330 -0
  238. package/dist/schemas/doks-worker.js.map +1 -0
  239. package/dist/schemas/droplet.d.ts +110 -0
  240. package/dist/schemas/droplet.d.ts.map +1 -0
  241. package/dist/schemas/droplet.js +22 -0
  242. package/dist/schemas/droplet.js.map +1 -0
  243. package/dist/schemas/functions.d.ts +22 -0
  244. package/dist/schemas/functions.d.ts.map +1 -0
  245. package/dist/schemas/functions.js +25 -0
  246. package/dist/schemas/functions.js.map +1 -0
  247. package/dist/schemas/gitea-git-hosting.d.ts +20 -0
  248. package/dist/schemas/gitea-git-hosting.d.ts.map +1 -0
  249. package/dist/schemas/gitea-git-hosting.js +26 -0
  250. package/dist/schemas/gitea-git-hosting.js.map +1 -0
  251. package/dist/schemas/http.d.ts +2594 -0
  252. package/dist/schemas/http.d.ts.map +1 -0
  253. package/dist/schemas/http.js +4548 -0
  254. package/dist/schemas/http.js.map +1 -0
  255. package/dist/schemas/infra-kinds.d.ts +113 -0
  256. package/dist/schemas/infra-kinds.d.ts.map +1 -0
  257. package/dist/schemas/infra-kinds.js +93 -0
  258. package/dist/schemas/infra-kinds.js.map +1 -0
  259. package/dist/schemas/kubernetes-responses.d.ts +457 -0
  260. package/dist/schemas/kubernetes-responses.d.ts.map +1 -0
  261. package/dist/schemas/kubernetes-responses.js +681 -0
  262. package/dist/schemas/kubernetes-responses.js.map +1 -0
  263. package/dist/schemas/kubernetes.d.ts +143 -0
  264. package/dist/schemas/kubernetes.d.ts.map +1 -0
  265. package/dist/schemas/kubernetes.js +68 -0
  266. package/dist/schemas/kubernetes.js.map +1 -0
  267. package/dist/schemas/logs.d.ts +15 -0
  268. package/dist/schemas/logs.d.ts.map +1 -0
  269. package/dist/schemas/logs.js +11 -0
  270. package/dist/schemas/logs.js.map +1 -0
  271. package/dist/schemas/object-storage.d.ts +167 -0
  272. package/dist/schemas/object-storage.d.ts.map +1 -0
  273. package/dist/schemas/object-storage.js +124 -0
  274. package/dist/schemas/object-storage.js.map +1 -0
  275. package/dist/schemas/service-settings.d.ts +9 -0
  276. package/dist/schemas/service-settings.d.ts.map +1 -0
  277. package/dist/schemas/service-settings.js +21 -0
  278. package/dist/schemas/service-settings.js.map +1 -0
  279. package/dist/schemas/utilization.d.ts +57 -0
  280. package/dist/schemas/utilization.d.ts.map +1 -0
  281. package/dist/schemas/utilization.js +58 -0
  282. package/dist/schemas/utilization.js.map +1 -0
  283. package/dist/schemas/worker-status.d.ts +22 -0
  284. package/dist/schemas/worker-status.d.ts.map +1 -0
  285. package/dist/schemas/worker-status.js +14 -0
  286. package/dist/schemas/worker-status.js.map +1 -0
  287. package/dist/schemas/worker.d.ts +125 -0
  288. package/dist/schemas/worker.d.ts.map +1 -0
  289. package/dist/schemas/worker.js +129 -0
  290. package/dist/schemas/worker.js.map +1 -0
  291. package/dist/secrets/app-platform/app-credentials.impl.d.ts +14 -0
  292. package/dist/secrets/app-platform/app-credentials.impl.d.ts.map +1 -0
  293. package/dist/secrets/app-platform/app-credentials.impl.js +237 -0
  294. package/dist/secrets/app-platform/app-credentials.impl.js.map +1 -0
  295. package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts +6 -0
  296. package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts.map +1 -0
  297. package/dist/secrets/container-registry/image-publish-settings.descriptor.js +14 -0
  298. package/dist/secrets/container-registry/image-publish-settings.descriptor.js.map +1 -0
  299. package/dist/secrets/doks-secret.descriptor.d.ts +18 -0
  300. package/dist/secrets/doks-secret.descriptor.d.ts.map +1 -0
  301. package/dist/secrets/doks-secret.descriptor.js +35 -0
  302. package/dist/secrets/doks-secret.descriptor.js.map +1 -0
  303. package/dist/secrets/doks-secret.impl.d.ts +98 -0
  304. package/dist/secrets/doks-secret.impl.d.ts.map +1 -0
  305. package/dist/secrets/doks-secret.impl.js +451 -0
  306. package/dist/secrets/doks-secret.impl.js.map +1 -0
  307. package/dist/secrets/index.d.ts +4 -0
  308. package/dist/secrets/index.d.ts.map +1 -0
  309. package/dist/secrets/index.js +4 -0
  310. package/dist/secrets/index.js.map +1 -0
  311. package/dist/secrets/secrets-backend-doks.plugin.d.ts +3 -0
  312. package/dist/secrets/secrets-backend-doks.plugin.d.ts.map +1 -0
  313. package/dist/secrets/secrets-backend-doks.plugin.js +35 -0
  314. package/dist/secrets/secrets-backend-doks.plugin.js.map +1 -0
  315. package/dist/storage/index.d.ts +50 -0
  316. package/dist/storage/index.d.ts.map +1 -0
  317. package/dist/storage/index.js +92 -0
  318. package/dist/storage/index.js.map +1 -0
  319. package/dist/storage/spaces-keys.d.ts +25 -0
  320. package/dist/storage/spaces-keys.d.ts.map +1 -0
  321. package/dist/storage/spaces-keys.js +32 -0
  322. package/dist/storage/spaces-keys.js.map +1 -0
  323. package/package.json +172 -4
@@ -0,0 +1,106 @@
1
+ import type { DigitalOceanControlPlaneClient } from '../client/control-plane.ts';
2
+ export type DoDroplet = import('zod/v4').infer<typeof import('../schemas/http.ts').DoDropletSchema>;
3
+ export type DoFirewall = import('zod/v4').infer<typeof import('../schemas/http.ts').DoFirewallSchema>;
4
+ export type DoSshKey = import('zod/v4').infer<typeof import('../schemas/http.ts').DoSshKeySchema>;
5
+ export type DoSnapshot = import('zod/v4').infer<typeof import('../schemas/http.ts').DoSnapshotSchema>;
6
+ /**
7
+ * A droplet action. Provider actions are asynchronous: the POST returns
8
+ * `in-progress` and the caller must poll until `completed` or `errored`.
9
+ */
10
+ export interface DoDropletAction {
11
+ id: number;
12
+ status: 'in-progress' | 'completed' | 'errored';
13
+ type: string;
14
+ started_at?: string;
15
+ completed_at?: string | null;
16
+ resource_id?: number;
17
+ region_slug?: string;
18
+ }
19
+ export interface WaitForActionOptions {
20
+ /** Give up after this long. Defaults to 15 minutes — a snapshot of a large disk is slow. */
21
+ timeoutMs?: number;
22
+ /** Delay between polls. Defaults to 5s. */
23
+ intervalMs?: number;
24
+ /** Injectable for tests. */
25
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
26
+ }
27
+ export interface CreateDropletOptions {
28
+ name: string;
29
+ region: string;
30
+ size: string;
31
+ image: string | number;
32
+ ssh_keys?: Array<string | number>;
33
+ user_data?: string;
34
+ tags?: string[];
35
+ vpc_uuid?: string;
36
+ with_droplet_agent?: boolean;
37
+ monitoring?: boolean;
38
+ backups?: boolean;
39
+ ipv6?: boolean;
40
+ }
41
+ /**
42
+ * Static GPU droplet catalog. Self-serve sizes are listed first.
43
+ *
44
+ * Categories:
45
+ * - self-serve: bookable via the API or panel without DO contract approval.
46
+ * - contracted: requires reaching out to DO sales.
47
+ * - preview: available in select regions only, may change without notice.
48
+ */
49
+ export interface GpuDropletSize {
50
+ slug: string;
51
+ gpu: {
52
+ vendor: 'nvidia' | 'amd';
53
+ model: string;
54
+ count: number;
55
+ vramGb: number;
56
+ };
57
+ memoryGb: number;
58
+ vcpus: number;
59
+ availability: 'self-serve' | 'contracted' | 'preview';
60
+ }
61
+ export declare const GPU_DROPLET_SIZES: ReadonlyArray<GpuDropletSize>;
62
+ export declare function findGpuSizeForVramGb(minVramGb: number): GpuDropletSize | undefined;
63
+ export declare class DigitalOceanDropletsClient {
64
+ private readonly client;
65
+ constructor(client: DigitalOceanControlPlaneClient);
66
+ list(filters?: {
67
+ tag?: string;
68
+ name?: string;
69
+ }): Promise<DoDroplet[]>;
70
+ get(dropletId: number): Promise<DoDroplet>;
71
+ getOrNull(dropletId: number): Promise<DoDroplet | null>;
72
+ create(options: CreateDropletOptions): Promise<DoDroplet>;
73
+ delete(dropletId: number): Promise<void>;
74
+ listFirewalls(): Promise<DoFirewall[]>;
75
+ listSnapshots(): Promise<DoSnapshot[]>;
76
+ /** Snapshots taken of one droplet, newest first. */
77
+ listSnapshotsFor(dropletId: number): Promise<DoSnapshot[]>;
78
+ action(dropletId: number, payload: import('../schemas/control-plane.ts').DigitalOceanJsonInput): Promise<DoDropletAction>;
79
+ getAction(dropletId: number, actionId: number): Promise<DoDropletAction>;
80
+ /**
81
+ * Poll an action to a terminal state. Throws on `errored` and on timeout, so a
82
+ * caller can never mistake an unfinished snapshot for a durable backup.
83
+ */
84
+ waitForAction(dropletId: number, actionId: number, options?: WaitForActionOptions): Promise<DoDropletAction>;
85
+ /** Power off. A snapshot of a running droplet is crash-consistent, not clean. */
86
+ powerOff(dropletId: number): Promise<DoDropletAction>;
87
+ powerOn(dropletId: number): Promise<DoDropletAction>;
88
+ /** Graceful in-guest shutdown. Falls back to nothing — poll and power off if it stalls. */
89
+ shutdown(dropletId: number): Promise<DoDropletAction>;
90
+ reboot(dropletId: number): Promise<DoDropletAction>;
91
+ /** Start a snapshot. Returns the action; the image is not durable until it completes. */
92
+ snapshot(dropletId: number, name: string): Promise<DoDropletAction>;
93
+ /**
94
+ * Take a snapshot and wait for it. Powers the droplet off first by default so the
95
+ * disk image is filesystem-clean rather than crash-consistent, then restores the
96
+ * prior power state.
97
+ */
98
+ snapshotAndWait(dropletId: number, name: string, options?: WaitForActionOptions & {
99
+ powerOffFirst?: boolean;
100
+ }): Promise<DoDropletAction>;
101
+ deleteSnapshot(snapshotId: string): Promise<void>;
102
+ deleteFirewall(firewallId: string): Promise<void>;
103
+ listSshKeys(): Promise<DoSshKey[]>;
104
+ addSshKey(name: string, publicKey: string): Promise<DoSshKey>;
105
+ }
106
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/droplets/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { DropletsListResponseSchema, DoDropletSchema, DropletResponseSchema, FirewallsListResponseSchema, DoFirewallSchema, SnapshotsListResponseSchema, DoSnapshotSchema, DropletActionResponseSchema, SshKeysListResponseSchema, DoSshKeySchema, SshKeyResponseSchema } from "../schemas/http.js";
2
+ /**
3
+ * DigitalOcean Droplets and the GPU catalog.
4
+ *
5
+ * GPU size catalog (`GPU_DROPLET_SIZES`) is captured here as documented in
6
+ * https://docs.digitalocean.com/products/kubernetes/details/supported-gpus/
7
+ * and https://docs.digitalocean.com/products/droplets/details/gpu-droplets/.
8
+ * The list is intentionally static — DO does not (yet) expose a typed catalog
9
+ * endpoint that distinguishes GPU classes from regular droplet sizes.
10
+ */
11
+ import { isCapabilityError } from '@vibesdotdev/kernel';
12
+ export const GPU_DROPLET_SIZES = [
13
+ {
14
+ slug: 'gpu-h100x1-80gb',
15
+ gpu: { vendor: 'nvidia', model: 'H100', count: 1, vramGb: 80 },
16
+ memoryGb: 240,
17
+ vcpus: 20,
18
+ availability: 'self-serve'
19
+ },
20
+ {
21
+ slug: 'gpu-h100x8-640gb',
22
+ gpu: { vendor: 'nvidia', model: 'H100', count: 8, vramGb: 80 },
23
+ memoryGb: 1920,
24
+ vcpus: 160,
25
+ availability: 'contracted'
26
+ },
27
+ {
28
+ slug: 'gpu-h200x1-141gb',
29
+ gpu: { vendor: 'nvidia', model: 'H200', count: 1, vramGb: 141 },
30
+ memoryGb: 240,
31
+ vcpus: 20,
32
+ availability: 'self-serve'
33
+ },
34
+ {
35
+ slug: 'gpu-l40sx1-48gb',
36
+ gpu: { vendor: 'nvidia', model: 'L40s', count: 1, vramGb: 48 },
37
+ memoryGb: 64,
38
+ vcpus: 8,
39
+ availability: 'self-serve'
40
+ },
41
+ {
42
+ slug: 'gpu-4000adax1-20gb',
43
+ gpu: { vendor: 'nvidia', model: 'RTX 4000 Ada', count: 1, vramGb: 20 },
44
+ memoryGb: 32,
45
+ vcpus: 8,
46
+ availability: 'self-serve'
47
+ },
48
+ {
49
+ slug: 'gpu-6000adax1-48gb',
50
+ gpu: { vendor: 'nvidia', model: 'RTX 6000 Ada', count: 1, vramGb: 48 },
51
+ memoryGb: 64,
52
+ vcpus: 12,
53
+ availability: 'self-serve'
54
+ },
55
+ {
56
+ slug: 'gpu-mi300x-192gb',
57
+ gpu: { vendor: 'amd', model: 'MI300X', count: 1, vramGb: 192 },
58
+ memoryGb: 240,
59
+ vcpus: 20,
60
+ availability: 'preview'
61
+ }
62
+ ];
63
+ export function findGpuSizeForVramGb(minVramGb) {
64
+ const ordered = [...GPU_DROPLET_SIZES]
65
+ .filter((s) => s.gpu.vramGb >= minVramGb)
66
+ .sort((a, b) => a.gpu.vramGb - b.gpu.vramGb);
67
+ return ordered[0];
68
+ }
69
+ export class DigitalOceanDropletsClient {
70
+ client;
71
+ constructor(client) {
72
+ this.client = client;
73
+ }
74
+ async list(filters = {}) {
75
+ return this.client.collect({
76
+ path: '/droplets',
77
+ request: { query: { tag_name: filters.tag, name: filters.name } },
78
+ extract: (page) => page.droplets ?? [],
79
+ schema: DropletsListResponseSchema,
80
+ itemSchema: DoDropletSchema
81
+ });
82
+ }
83
+ async get(dropletId) {
84
+ const res = await this.client.get(`/droplets/${dropletId}`, {}, DropletResponseSchema);
85
+ return res.droplet;
86
+ }
87
+ async getOrNull(dropletId) {
88
+ const res = await this.client.getOrNull(`/droplets/${dropletId}`, {}, DropletResponseSchema);
89
+ return res?.droplet ?? null;
90
+ }
91
+ async create(options) {
92
+ const res = await this.client.post('/droplets', options, {}, DropletResponseSchema);
93
+ return res.droplet;
94
+ }
95
+ async delete(dropletId) {
96
+ await this.client.delete(`/droplets/${dropletId}`);
97
+ }
98
+ async listFirewalls() {
99
+ return this.client.collect({
100
+ path: '/firewalls',
101
+ extract: (page) => page.firewalls ?? [],
102
+ schema: FirewallsListResponseSchema,
103
+ itemSchema: DoFirewallSchema
104
+ });
105
+ }
106
+ async listSnapshots() {
107
+ return this.client.collect({
108
+ path: '/snapshots',
109
+ extract: (page) => page.snapshots ?? [],
110
+ schema: SnapshotsListResponseSchema,
111
+ itemSchema: DoSnapshotSchema
112
+ });
113
+ }
114
+ /** Snapshots taken of one droplet, newest first. */
115
+ async listSnapshotsFor(dropletId) {
116
+ const snapshots = await this.client.collect({
117
+ path: `/droplets/${dropletId}/snapshots`,
118
+ extract: (page) => page.snapshots ?? [],
119
+ schema: SnapshotsListResponseSchema,
120
+ itemSchema: DoSnapshotSchema
121
+ });
122
+ return [...snapshots].sort((a, b) => b.created_at.localeCompare(a.created_at));
123
+ }
124
+ async action(dropletId, payload) {
125
+ const res = await this.client.post(`/droplets/${dropletId}/actions`, payload, {}, DropletActionResponseSchema);
126
+ return res.action;
127
+ }
128
+ async getAction(dropletId, actionId) {
129
+ const res = await this.client.get(`/droplets/${dropletId}/actions/${actionId}`, {}, DropletActionResponseSchema);
130
+ return res.action;
131
+ }
132
+ /**
133
+ * Poll an action to a terminal state. Throws on `errored` and on timeout, so a
134
+ * caller can never mistake an unfinished snapshot for a durable backup.
135
+ */
136
+ async waitForAction(dropletId, actionId, options = {}) {
137
+ const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000;
138
+ const intervalMs = options.intervalMs ?? 5_000;
139
+ const { lifecycle } = this.client.context.runtime;
140
+ const sleep = options.sleep ?? ((ms, signal) => lifecycle.delay(ms, signal));
141
+ let lastType = 'unknown';
142
+ try {
143
+ return await lifecycle.wait(async (signal) => {
144
+ for (;;) {
145
+ const action = await this.getAction(dropletId, actionId);
146
+ lastType = action.type;
147
+ if (action.status === 'completed')
148
+ return action;
149
+ if (action.status === 'errored') {
150
+ throw new Error(`droplet ${dropletId} action ${action.type} (${actionId}) errored`);
151
+ }
152
+ await sleep(intervalMs, signal);
153
+ }
154
+ }, { timeoutMs, reason: `waiting-for-droplet-action-${actionId}` });
155
+ }
156
+ catch (error) {
157
+ if (error instanceof Error && isCapabilityError(error) && error.reason === 'wait-timeout') {
158
+ throw new Error(`droplet ${dropletId} action ${lastType} (${actionId}) did not complete within ${timeoutMs}ms`, { cause: error });
159
+ }
160
+ throw error;
161
+ }
162
+ }
163
+ /** Power off. A snapshot of a running droplet is crash-consistent, not clean. */
164
+ async powerOff(dropletId) {
165
+ return this.action(dropletId, { type: 'power_off' });
166
+ }
167
+ async powerOn(dropletId) {
168
+ return this.action(dropletId, { type: 'power_on' });
169
+ }
170
+ /** Graceful in-guest shutdown. Falls back to nothing — poll and power off if it stalls. */
171
+ async shutdown(dropletId) {
172
+ return this.action(dropletId, { type: 'shutdown' });
173
+ }
174
+ async reboot(dropletId) {
175
+ return this.action(dropletId, { type: 'reboot' });
176
+ }
177
+ /** Start a snapshot. Returns the action; the image is not durable until it completes. */
178
+ async snapshot(dropletId, name) {
179
+ return this.action(dropletId, { type: 'snapshot', name });
180
+ }
181
+ /**
182
+ * Take a snapshot and wait for it. Powers the droplet off first by default so the
183
+ * disk image is filesystem-clean rather than crash-consistent, then restores the
184
+ * prior power state.
185
+ */
186
+ async snapshotAndWait(dropletId, name, options = {}) {
187
+ const powerOffFirst = options.powerOffFirst ?? true;
188
+ let restorePower = false;
189
+ if (powerOffFirst) {
190
+ const droplet = await this.get(dropletId);
191
+ if (droplet.status === 'active') {
192
+ restorePower = true;
193
+ const off = await this.powerOff(dropletId);
194
+ await this.waitForAction(dropletId, off.id, options);
195
+ }
196
+ }
197
+ const started = await this.snapshot(dropletId, name);
198
+ const completed = await this.waitForAction(dropletId, started.id, options);
199
+ if (restorePower) {
200
+ const on = await this.powerOn(dropletId);
201
+ await this.waitForAction(dropletId, on.id, options);
202
+ }
203
+ return completed;
204
+ }
205
+ async deleteSnapshot(snapshotId) {
206
+ await this.client.delete(`/snapshots/${snapshotId}`);
207
+ }
208
+ async deleteFirewall(firewallId) {
209
+ await this.client.delete(`/firewalls/${firewallId}`);
210
+ }
211
+ async listSshKeys() {
212
+ return this.client.collect({
213
+ path: '/account/keys',
214
+ extract: (page) => page.ssh_keys ?? [],
215
+ schema: SshKeysListResponseSchema,
216
+ itemSchema: DoSshKeySchema
217
+ });
218
+ }
219
+ async addSshKey(name, publicKey) {
220
+ const res = await this.client.post('/account/keys', {
221
+ name,
222
+ public_key: publicKey
223
+ }, {}, SshKeyResponseSchema);
224
+ return res.ssh_key;
225
+ }
226
+ }
227
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/droplets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,MAAM,oBAAoB,CAAC;AAC5B;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAqExD,MAAM,CAAC,MAAM,iBAAiB,GAAkC;IAC/D;QACC,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,GAAG;QACV,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;QAC/D,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,oBAAoB;QAC1B,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtE,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,oBAAoB;QAC1B,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtE,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,YAAY;KAC1B;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;QAC9D,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,SAAS;KACvB;CACD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACrD,MAAM,OAAO,GAAG,CAAC,GAAG,iBAAiB,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,0BAA0B;IACT;IAA7B,YAA6B,MAAsC;QAAtC,WAAM,GAAN,MAAM,CAAgC;IAAG,CAAC;IAEvE,KAAK,CAAC,IAAI,CAAC,UAA2C,EAAE;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE;YACjE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;YACtC,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,eAAe;SAC3B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAChC,aAAa,SAAS,EAAE,EACxB,EAAE,EACF,qBAAqB,CACrB,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,aAAa,SAAS,EAAE,EACxB,EAAE,EACF,qBAAqB,CACrB,CAAC;QACF,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA6B;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,WAAW,EACX,OAAO,EACP,EAAE,EACF,qBAAqB,CACrB,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;YACvC,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,gBAAgB;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;YACvC,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,gBAAgB;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE,aAAa,SAAS,YAAY;YACxC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;YACvC,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,MAAM,CACX,SAAiB,EACjB,OAAoE;QAEpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,aAAa,SAAS,UAAU,EAChC,OAAO,EACP,EAAE,EACF,2BAA2B,CAC3B,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,QAAgB;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAChC,aAAa,SAAS,YAAY,QAAQ,EAAE,EAC5C,EAAE,EACF,2BAA2B,CAC3B,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAClB,SAAiB,EACjB,QAAgB,EAChB,UAAgC,EAAE;QAElC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAClD,MAAM,KAAK,GACV,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,MAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,IAAI,QAAQ,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC;YACJ,OAAO,MAAM,SAAS,CAAC,IAAI,CAC1B,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChB,SAAS,CAAC;oBACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBACzD,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;wBAAE,OAAO,MAAM,CAAC;oBACjD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,WAAW,MAAM,CAAC,IAAI,KAAK,QAAQ,WAAW,CAAC,CAAC;oBACrF,CAAC;oBACD,MAAM,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACjC,CAAC;YACF,CAAC,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,QAAQ,EAAE,EAAE,CAC/D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBAC3F,MAAM,IAAI,KAAK,CACd,WAAW,SAAS,WAAW,QAAQ,KAAK,QAAQ,6BAA6B,SAAS,IAAI,EAC9F,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CACpB,SAAiB,EACjB,IAAY,EACZ,UAA8D,EAAE;QAEhE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACpD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACjC,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACtC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACtC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;YACtC,MAAM,EAAE,yBAAyB;YACjC,UAAU,EAAE,cAAc;SAC1B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,SAAiB;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,eAAe,EACf;YACC,IAAI;YACJ,UAAU,EAAE,SAAS;SACrB,EACD,EAAE,EACF,oBAAoB,CACpB,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;CACD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @vibesdotdev/integrations-digitalocean
3
+ *
4
+ * Shared low-level DigitalOcean API surface for the Vibes runtime.
5
+ * Workstream A landed control-plane scaffolding (do-fetch / retry /
6
+ * pagination / credentials) plus the domain submodules used by AI,
7
+ * infra, and ops packages. Workstream D builds on top with the App
8
+ * Platform spec builder and deploy client.
9
+ */
10
+ export * from './client/index.ts';
11
+ export * from './credentials/index.ts';
12
+ export { default as digitalOceanInfraPlugin } from './infra/digitalocean-infra.plugin.ts';
13
+ export type * from './infra/doks/service-release.ts';
14
+ export type * from './infra/droplet.impl.ts';
15
+ export type * from './infra/functions.impl.ts';
16
+ export { digitalOceanConnectorPlugin } from './digitalocean.plugin.ts';
17
+ export { buildDigitalOceanAppSpec, DigitalOceanAppDeployClient, type BuildAppSpecOptions, type DeployAppOptions, type DeployAppResult, type DigitalOceanAppDeployClientOptions, type DOAppSpec, type DOAppServiceSpec, type DOAppWorkerSpec, type DOAppJobSpec, type DOAppStaticSiteSpec, type DOAppEnvSpec, type DOAppHealthCheck, type DOAppAutoscaling, type DOAppImageSpec, type DOAppGitHubSpec, type DOAppDomainSpec, type DOAppAlertSpec, type DOAppLogDestination, type DOAppDeployment, type DOAppDeploymentResource } from './apps/index.ts';
18
+ export { DigitalOceanAppsClient, type DoApp, type DoAppEnvSpec, type DoAppGitHubRef, type DoAppHealthCheck, type DoAppServiceSpec, type DoAppStaticSiteSpec, type DoAppSpec, type DoAppDeployment as DoAppDeploymentSummary } from './apps/api-client.ts';
19
+ export { DigitalOceanKubernetesClient, type CreateClusterOptions, type UpdateClusterOptions, type DoKubernetesCluster, type DoKubernetesClusterStatus, type DoKubernetesMaintenancePolicy, type DoKubernetesNodePool, type DoKubernetesOptions, type DoKubernetesVersion } from './kubernetes/index.ts';
20
+ export { DigitalOceanDropletsClient, GPU_DROPLET_SIZES, findGpuSizeForVramGb, type CreateDropletOptions, type DoDroplet, type DoFirewall, type DoSnapshot, type DoSshKey, type GpuDropletSize } from './droplets/index.ts';
21
+ export { DigitalOceanStorageClient, DigitalOceanSpacesKeysClient, type CreateVolumeOptions, type DoCdnEndpoint, type DoNfsShare, type DoSpacesKey, type DoSpacesKeyGrant, type DoSpacesKeyPermission, type DoVolume, type DoVolumeSnapshot } from './storage/index.ts';
22
+ export { createKubernetesApi, parseKubeconfig, KUBERNETES_AUTHORITY_TTL_SECONDS, type KubernetesApi, type KubernetesAuthority, type KubernetesFetchImpl } from './kubernetes/authority.ts';
23
+ export { DigitalOceanNetworkClient, type DoLoadBalancer, type DoLoadBalancerForwardingRule } from './network/index.ts';
24
+ export { DigitalOceanContainerRegistryClient, type DoContainerRegistry, type DoContainerRegistryRepository, type DoContainerRegistrySubscription } from './registry/index.ts';
25
+ export { DigitalOceanDatabasesClient, type CreateDatabaseClusterOptions, type DoConnectionPool, type DoDatabaseCluster, type DoDatabaseConnection, type DoDatabaseEngine, type DoDatabaseMaintenance } from './databases/index.ts';
26
+ export { DigitalOceanInferenceCatalogClient, DigitalOceanInferenceControlPlaneClient, type DoInferenceEndpoint, type DoInferenceModelEntry, type DoInferenceModelsList, type InferenceCatalogOptions, type ModelAccessKeyMetadata } from './inference-control-plane/index.ts';
27
+ export * from './ai/index.ts';
28
+ export { DoksDeploymentWorkerConfigSchema, DigitalOceanFunctionsWorkerConfigSchema, type DigitalOceanFunctionsWorkerConfig } from './schemas/worker.ts';
29
+ export { EvictionPolicySchema, DOManagedRedisConfigSchema, DOKSRedisCacheConfigSchema, DoksDatabaseConfigSchema, DOManagedPostgresConfigSchema } from './schemas/cache-database.ts';
30
+ export { DOSpacesConfigSchema } from './schemas/object-storage.ts';
31
+ export { GiteaDoksGitHostingConfigSchema, type GiteaDoksGitHostingConfig } from './schemas/gitea-git-hosting.ts';
32
+ export { DigitalOceanKubernetesClusterConfigSchema, DigitalOceanContainerRegistryConfigSchema, DigitalOceanKubernetesNodePoolConfigSchema, DigitalOceanLoadBalancerConfigSchema, DigitalOceanFirewallConfigSchema, DigitalOceanVpcConfigSchema, DoksSandboxJobConfigSchema } from './schemas/infra-kinds.ts';
33
+ export { DigitalOceanDropletSandboxConfigSchema } from './schemas/droplet.ts';
34
+ export { DigitalOceanAppWebAppConfigSchema, DigitalOceanAppGitHubRefSchema, DigitalOceanAppImageRefSchema, DigitalOceanAppEnvVarSchema, DigitalOceanAppHealthCheckSchema, DigitalOceanAppAutoscalingSchema, DigitalOceanAppAutoscalingMetricSchema, DigitalOceanAppDomainSchema, DigitalOceanAppAlertSchema, DigitalOceanAppLogDestinationSchema, DigitalOceanAppServiceComponentSchema, DigitalOceanAppWorkerComponentSchema, DigitalOceanAppJobComponentSchema, DigitalOceanAppCronJobComponentSchema, DigitalOceanAppStaticSiteComponentSchema, type DigitalOceanAppWebAppConfig } from './schemas/app-platform.ts';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @vibesdotdev/integrations-digitalocean
3
+ *
4
+ * Shared low-level DigitalOcean API surface for the Vibes runtime.
5
+ * Workstream A landed control-plane scaffolding (do-fetch / retry /
6
+ * pagination / credentials) plus the domain submodules used by AI,
7
+ * infra, and ops packages. Workstream D builds on top with the App
8
+ * Platform spec builder and deploy client.
9
+ */
10
+ export * from "./client/index.js";
11
+ export * from "./credentials/index.js";
12
+ export { default as digitalOceanInfraPlugin } from "./infra/digitalocean-infra.plugin.js";
13
+ export { digitalOceanConnectorPlugin } from "./digitalocean.plugin.js";
14
+ export { buildDigitalOceanAppSpec, DigitalOceanAppDeployClient } from "./apps/index.js";
15
+ export { DigitalOceanAppsClient } from "./apps/api-client.js";
16
+ export { DigitalOceanKubernetesClient } from "./kubernetes/index.js";
17
+ export { DigitalOceanDropletsClient, GPU_DROPLET_SIZES, findGpuSizeForVramGb } from "./droplets/index.js";
18
+ export { DigitalOceanStorageClient, DigitalOceanSpacesKeysClient } from "./storage/index.js";
19
+ export { createKubernetesApi, parseKubeconfig, KUBERNETES_AUTHORITY_TTL_SECONDS } from "./kubernetes/authority.js";
20
+ export { DigitalOceanNetworkClient } from "./network/index.js";
21
+ export { DigitalOceanContainerRegistryClient } from "./registry/index.js";
22
+ export { DigitalOceanDatabasesClient } from "./databases/index.js";
23
+ export { DigitalOceanInferenceCatalogClient, DigitalOceanInferenceControlPlaneClient } from "./inference-control-plane/index.js";
24
+ export * from "./ai/index.js";
25
+ export { DoksDeploymentWorkerConfigSchema, DigitalOceanFunctionsWorkerConfigSchema } from "./schemas/worker.js";
26
+ export { EvictionPolicySchema, DOManagedRedisConfigSchema, DOKSRedisCacheConfigSchema, DoksDatabaseConfigSchema, DOManagedPostgresConfigSchema } from "./schemas/cache-database.js";
27
+ export { DOSpacesConfigSchema } from "./schemas/object-storage.js";
28
+ export { GiteaDoksGitHostingConfigSchema } from "./schemas/gitea-git-hosting.js";
29
+ export { DigitalOceanKubernetesClusterConfigSchema, DigitalOceanContainerRegistryConfigSchema, DigitalOceanKubernetesNodePoolConfigSchema, DigitalOceanLoadBalancerConfigSchema, DigitalOceanFirewallConfigSchema, DigitalOceanVpcConfigSchema, DoksSandboxJobConfigSchema } from "./schemas/infra-kinds.js";
30
+ export { DigitalOceanDropletSandboxConfigSchema } from "./schemas/droplet.js";
31
+ export { DigitalOceanAppWebAppConfigSchema, DigitalOceanAppGitHubRefSchema, DigitalOceanAppImageRefSchema, DigitalOceanAppEnvVarSchema, DigitalOceanAppHealthCheckSchema, DigitalOceanAppAutoscalingSchema, DigitalOceanAppAutoscalingMetricSchema, DigitalOceanAppDomainSchema, DigitalOceanAppAlertSchema, DigitalOceanAppLogDestinationSchema, DigitalOceanAppServiceComponentSchema, DigitalOceanAppWorkerComponentSchema, DigitalOceanAppJobComponentSchema, DigitalOceanAppCronJobComponentSchema, DigitalOceanAppStaticSiteComponentSchema } from "./schemas/app-platform.js";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAI1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EACN,wBAAwB,EACxB,2BAA2B,EAoB3B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,sBAAsB,EAStB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,4BAA4B,EAS5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EAOpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,yBAAyB,EACzB,4BAA4B,EAS5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,gCAAgC,EAIhC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,yBAAyB,EAGzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,mCAAmC,EAInC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,2BAA2B,EAO3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,kCAAkC,EAClC,uCAAuC,EAMvC,MAAM,oCAAoC,CAAC;AAE5C,cAAc,eAAe,CAAC;AAE9B,OAAO,EACN,gCAAgC,EAChC,uCAAuC,EAEvC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACN,+BAA+B,EAE/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,yCAAyC,EACzC,yCAAyC,EACzC,0CAA0C,EAC1C,oCAAoC,EACpC,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACN,iCAAiC,EACjC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,sCAAsC,EACtC,2BAA2B,EAC3B,0BAA0B,EAC1B,mCAAmC,EACnC,qCAAqC,EACrC,oCAAoC,EACpC,iCAAiC,EACjC,qCAAqC,EACrC,wCAAwC,EAExC,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * DigitalOcean Inference control plane.
3
+ *
4
+ * Wraps:
5
+ * - serverless model catalog at `GET /v1/models` (against the inference
6
+ * base URL, NOT the v2 control plane)
7
+ * - model access key metadata (where API is available; DO currently
8
+ * scopes this via the personal account portal — read-only listing)
9
+ * - dedicated inference endpoint lifecycle on the v2 control plane
10
+ *
11
+ * Like the other domain modules, this never reads env directly. Callers
12
+ * inject either a control-plane client (for v2 calls) or an explicit
13
+ * inference base URL + token (for /v1/models).
14
+ */
15
+ import { type DoFetchImpl } from '../client/do-fetch.ts';
16
+ import type { DigitalOceanApiToken } from '../credentials/index.ts';
17
+ import type { DigitalOceanControlPlaneClient } from '../client/control-plane.ts';
18
+ import type { RetryOptions, RetryRuntime } from '../client/retry.ts';
19
+ export type DoInferenceModelEntry = DoInferenceModelsList['data'][number];
20
+ export type DoInferenceModelsList = import('zod/v4').infer<typeof import('../schemas/http.ts').DoInferenceModelsListSchema>;
21
+ export type DoInferenceEndpoint = import('zod/v4').infer<typeof import('../schemas/http.ts').DoInferenceEndpointSchema>;
22
+ export interface InferenceCatalogOptions {
23
+ /** The handed runtime; retry backoff waits through its lifecycle. */
24
+ runtime: RetryRuntime;
25
+ /** Override the inference base URL (defaults to https://inference.do-ai.run). */
26
+ baseUrl?: string;
27
+ token: DigitalOceanApiToken;
28
+ fetchImpl?: DoFetchImpl;
29
+ retry?: RetryOptions;
30
+ }
31
+ export declare class DigitalOceanInferenceCatalogClient {
32
+ private readonly context;
33
+ constructor(options: InferenceCatalogOptions);
34
+ listModels(): Promise<DoInferenceModelsList>;
35
+ modelExists(modelId: string): Promise<boolean>;
36
+ }
37
+ export type ModelAccessKeyMetadata = import('zod/v4').infer<typeof import('../schemas/http.ts').ModelAccessKeyMetadataSchema>;
38
+ /**
39
+ * Dedicated endpoint and model-access-key metadata sit on the v2 control
40
+ * plane. Both surfaces are preview — fields may shift.
41
+ */
42
+ export declare class DigitalOceanInferenceControlPlaneClient {
43
+ private readonly client;
44
+ constructor(client: DigitalOceanControlPlaneClient);
45
+ listDedicatedEndpoints(): Promise<DoInferenceEndpoint[]>;
46
+ getDedicatedEndpoint(endpointId: string): Promise<DoInferenceEndpoint>;
47
+ getDedicatedEndpointOrNull(endpointId: string): Promise<DoInferenceEndpoint | null>;
48
+ createDedicatedEndpoint(options: {
49
+ name: string;
50
+ model_id: string;
51
+ region?: string;
52
+ gpu_size_slug?: string;
53
+ instance_count?: number;
54
+ }): Promise<DoInferenceEndpoint>;
55
+ deleteDedicatedEndpoint(endpointId: string): Promise<void>;
56
+ /**
57
+ * Read-only list of model access key metadata. Returns an empty array if
58
+ * the account does not have any model access keys, or if the API surface
59
+ * is not enabled for the token (the DO portal manages most key creation).
60
+ */
61
+ listModelAccessKeys(): Promise<ModelAccessKeyMetadata[]>;
62
+ }
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inference-control-plane/index.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAIN,KAAK,WAAW,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIrE,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,MAAM,qBAAqB,GAAG,OAAO,QAAQ,EAAE,KAAK,CACzD,cAAc,oBAAoB,EAAE,2BAA2B,CAC/D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,QAAQ,EAAE,KAAK,CACvD,cAAc,oBAAoB,EAAE,yBAAyB,CAC7D,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACvC,qEAAqE;IACrE,OAAO,EAAE,YAAY,CAAC;IACtB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,qBAAa,kCAAkC;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAE7B,OAAO,EAAE,uBAAuB;IAU5C,UAAU,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAStC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQpD;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,QAAQ,EAAE,KAAK,CAC1D,cAAc,oBAAoB,EAAE,4BAA4B,CAChE,CAAC;AAEF;;;GAGG;AACH,qBAAa,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,8BAA8B;IAE7D,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IASxD,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAStE,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IASnF,uBAAuB,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAU1B,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;CAa9D"}
@@ -0,0 +1,93 @@
1
+ import { DoInferenceModelsListSchema, DedicatedEndpointsListResponseSchema, DoInferenceEndpointSchema, EndpointResponseSchema, ModelAccessKeysListResponseSchema, ModelAccessKeyMetadataSchema } from "../schemas/http.js";
2
+ /**
3
+ * DigitalOcean Inference control plane.
4
+ *
5
+ * Wraps:
6
+ * - serverless model catalog at `GET /v1/models` (against the inference
7
+ * base URL, NOT the v2 control plane)
8
+ * - model access key metadata (where API is available; DO currently
9
+ * scopes this via the personal account portal — read-only listing)
10
+ * - dedicated inference endpoint lifecycle on the v2 control plane
11
+ *
12
+ * Like the other domain modules, this never reads env directly. Callers
13
+ * inject either a control-plane client (for v2 calls) or an explicit
14
+ * inference base URL + token (for /v1/models).
15
+ */
16
+ import { DIGITALOCEAN_INFERENCE_BASE_URL, doFetch } from "../client/do-fetch.js";
17
+ import { settle } from '@vibesdotdev/kernel';
18
+ import { digitalOceanHttpStatus } from "../client/errors.js";
19
+ export class DigitalOceanInferenceCatalogClient {
20
+ context;
21
+ constructor(options) {
22
+ this.context = {
23
+ runtime: options.runtime,
24
+ baseUrl: options.baseUrl ?? DIGITALOCEAN_INFERENCE_BASE_URL,
25
+ token: options.token,
26
+ fetchImpl: options.fetchImpl,
27
+ retry: options.retry
28
+ };
29
+ }
30
+ listModels() {
31
+ return doFetch(this.context, '/v1/models', {}, DoInferenceModelsListSchema);
32
+ }
33
+ async modelExists(modelId) {
34
+ const outcome = await settle(() => doFetch(this.context, `/v1/models/${encodeURIComponent(modelId)}`));
35
+ if (outcome.ok)
36
+ return true;
37
+ if (digitalOceanHttpStatus(outcome.cause) === 404)
38
+ return false;
39
+ throw outcome.cause;
40
+ }
41
+ }
42
+ /**
43
+ * Dedicated endpoint and model-access-key metadata sit on the v2 control
44
+ * plane. Both surfaces are preview — fields may shift.
45
+ */
46
+ export class DigitalOceanInferenceControlPlaneClient {
47
+ client;
48
+ constructor(client) {
49
+ this.client = client;
50
+ }
51
+ async listDedicatedEndpoints() {
52
+ return this.client.collect({
53
+ path: '/gen-ai/endpoints',
54
+ extract: (page) => page.endpoints ?? [],
55
+ schema: DedicatedEndpointsListResponseSchema,
56
+ itemSchema: DoInferenceEndpointSchema
57
+ });
58
+ }
59
+ async getDedicatedEndpoint(endpointId) {
60
+ const res = await this.client.get(`/gen-ai/endpoints/${endpointId}`, {}, EndpointResponseSchema);
61
+ return res.endpoint;
62
+ }
63
+ async getDedicatedEndpointOrNull(endpointId) {
64
+ const res = await this.client.getOrNull(`/gen-ai/endpoints/${endpointId}`, {}, EndpointResponseSchema);
65
+ return res?.endpoint ?? null;
66
+ }
67
+ async createDedicatedEndpoint(options) {
68
+ const res = await this.client.post('/gen-ai/endpoints', options, {}, EndpointResponseSchema);
69
+ return res.endpoint;
70
+ }
71
+ async deleteDedicatedEndpoint(endpointId) {
72
+ await this.client.delete(`/gen-ai/endpoints/${endpointId}`);
73
+ }
74
+ /**
75
+ * Read-only list of model access key metadata. Returns an empty array if
76
+ * the account does not have any model access keys, or if the API surface
77
+ * is not enabled for the token (the DO portal manages most key creation).
78
+ */
79
+ async listModelAccessKeys() {
80
+ const outcome = await settle(() => this.client.collect({
81
+ path: '/gen-ai/model_access_keys',
82
+ extract: (page) => page.model_access_keys ?? [],
83
+ schema: ModelAccessKeysListResponseSchema,
84
+ itemSchema: ModelAccessKeyMetadataSchema
85
+ }));
86
+ if (outcome.ok)
87
+ return outcome.value;
88
+ if (digitalOceanHttpStatus(outcome.cause) === 404)
89
+ return [];
90
+ throw outcome.cause;
91
+ }
92
+ }
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inference-control-plane/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { DigitalOceanControlPlaneClient } from '../client/control-plane.ts';
2
+ import { type BillingSummary } from '@vibesdotdev/infra-core';
3
+ interface Balance {
4
+ account_balance?: string;
5
+ month_to_date_usage?: string;
6
+ month_to_date_balance?: string;
7
+ generated_at?: string;
8
+ }
9
+ interface Preview {
10
+ product_charges?: {
11
+ amount?: string;
12
+ };
13
+ credits_and_adjustments?: {
14
+ amount?: string;
15
+ };
16
+ }
17
+ export declare class DigitalOceanBillingClient {
18
+ private readonly client;
19
+ constructor(client: DigitalOceanControlPlaneClient);
20
+ getBalance(): Promise<Balance>;
21
+ getInvoicePreviewSummary(): Promise<Preview>;
22
+ getBillingHistory(): Promise<import("@vibesdotdev/kernel/bootstrap").JsonValue | undefined>;
23
+ summary(): Promise<BillingSummary>;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/infra/billing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,yBAAyB,CAAC;AACjC,UAAU,OAAO;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,UAAU,OAAO;IAChB,eAAe,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,uBAAuB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAGD,qBAAa,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,8BAA8B;IACnE,UAAU;IAGV,wBAAwB;IAGxB,iBAAiB;IAGX,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;CA0BxC"}