@alchemy.run/daytona 0.0.0 → 2.0.0-beta.86

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 (274) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +76 -4
  3. package/lib/ApiKey.d.ts +99 -0
  4. package/lib/ApiKey.d.ts.map +1 -0
  5. package/lib/ApiKey.js +152 -0
  6. package/lib/ApiKey.js.map +1 -0
  7. package/lib/AuthProvider.d.ts +55 -0
  8. package/lib/AuthProvider.d.ts.map +1 -0
  9. package/lib/AuthProvider.js +280 -0
  10. package/lib/AuthProvider.js.map +1 -0
  11. package/lib/Bootstrap.d.ts +8 -0
  12. package/lib/Bootstrap.d.ts.map +1 -0
  13. package/lib/Bootstrap.js +28 -0
  14. package/lib/Bootstrap.js.map +1 -0
  15. package/lib/ConnectSandbox.d.ts +72 -0
  16. package/lib/ConnectSandbox.d.ts.map +1 -0
  17. package/lib/ConnectSandbox.js +3 -0
  18. package/lib/ConnectSandbox.js.map +1 -0
  19. package/lib/ConnectSandboxHttp.d.ts +5 -0
  20. package/lib/ConnectSandboxHttp.d.ts.map +1 -0
  21. package/lib/ConnectSandboxHttp.js +22 -0
  22. package/lib/ConnectSandboxHttp.js.map +1 -0
  23. package/lib/Contributions.d.ts +7 -0
  24. package/lib/Contributions.d.ts.map +1 -0
  25. package/lib/Contributions.js +6 -0
  26. package/lib/Contributions.js.map +1 -0
  27. package/lib/CreateSandbox.d.ts +86 -0
  28. package/lib/CreateSandbox.d.ts.map +1 -0
  29. package/lib/CreateSandbox.js +3 -0
  30. package/lib/CreateSandbox.js.map +1 -0
  31. package/lib/CreateSandboxHttp.d.ts +5 -0
  32. package/lib/CreateSandboxHttp.d.ts.map +1 -0
  33. package/lib/CreateSandboxHttp.js +65 -0
  34. package/lib/CreateSandboxHttp.js.map +1 -0
  35. package/lib/CreateSecret.d.ts +56 -0
  36. package/lib/CreateSecret.d.ts.map +1 -0
  37. package/lib/CreateSecret.js +3 -0
  38. package/lib/CreateSecret.js.map +1 -0
  39. package/lib/CreateSecretHttp.d.ts +5 -0
  40. package/lib/CreateSecretHttp.d.ts.map +1 -0
  41. package/lib/CreateSecretHttp.js +39 -0
  42. package/lib/CreateSecretHttp.js.map +1 -0
  43. package/lib/CreateSnapshot.d.ts +80 -0
  44. package/lib/CreateSnapshot.d.ts.map +1 -0
  45. package/lib/CreateSnapshot.js +3 -0
  46. package/lib/CreateSnapshot.js.map +1 -0
  47. package/lib/CreateSnapshotHttp.d.ts +5 -0
  48. package/lib/CreateSnapshotHttp.d.ts.map +1 -0
  49. package/lib/CreateSnapshotHttp.js +47 -0
  50. package/lib/CreateSnapshotHttp.js.map +1 -0
  51. package/lib/CreateVolume.d.ts +81 -0
  52. package/lib/CreateVolume.d.ts.map +1 -0
  53. package/lib/CreateVolume.js +10 -0
  54. package/lib/CreateVolume.js.map +1 -0
  55. package/lib/CreateVolumeHttp.d.ts +5 -0
  56. package/lib/CreateVolumeHttp.d.ts.map +1 -0
  57. package/lib/CreateVolumeHttp.js +31 -0
  58. package/lib/CreateVolumeHttp.js.map +1 -0
  59. package/lib/Credentials.d.ts +9 -0
  60. package/lib/Credentials.d.ts.map +1 -0
  61. package/lib/Credentials.js +18 -0
  62. package/lib/Credentials.js.map +1 -0
  63. package/lib/DaytonaBindings.d.ts +51 -0
  64. package/lib/DaytonaBindings.d.ts.map +1 -0
  65. package/lib/DaytonaBindings.js +61 -0
  66. package/lib/DaytonaBindings.js.map +1 -0
  67. package/lib/IdentityProvider.d.ts +80 -0
  68. package/lib/IdentityProvider.d.ts.map +1 -0
  69. package/lib/IdentityProvider.js +111 -0
  70. package/lib/IdentityProvider.js.map +1 -0
  71. package/lib/MountVolume.d.ts +86 -0
  72. package/lib/MountVolume.d.ts.map +1 -0
  73. package/lib/MountVolume.js +27 -0
  74. package/lib/MountVolume.js.map +1 -0
  75. package/lib/OAuthClient.d.ts +14 -0
  76. package/lib/OAuthClient.d.ts.map +1 -0
  77. package/lib/OAuthClient.js +23 -0
  78. package/lib/OAuthClient.js.map +1 -0
  79. package/lib/Organization.d.ts +40 -0
  80. package/lib/Organization.d.ts.map +1 -0
  81. package/lib/Organization.js +80 -0
  82. package/lib/Organization.js.map +1 -0
  83. package/lib/OrganizationInvitation.d.ts +70 -0
  84. package/lib/OrganizationInvitation.d.ts.map +1 -0
  85. package/lib/OrganizationInvitation.js +109 -0
  86. package/lib/OrganizationInvitation.js.map +1 -0
  87. package/lib/OrganizationMember.d.ts +86 -0
  88. package/lib/OrganizationMember.d.ts.map +1 -0
  89. package/lib/OrganizationMember.js +109 -0
  90. package/lib/OrganizationMember.js.map +1 -0
  91. package/lib/OrganizationOtelConfig.d.ts +59 -0
  92. package/lib/OrganizationOtelConfig.d.ts.map +1 -0
  93. package/lib/OrganizationOtelConfig.js +87 -0
  94. package/lib/OrganizationOtelConfig.js.map +1 -0
  95. package/lib/OrganizationRole.d.ts +66 -0
  96. package/lib/OrganizationRole.d.ts.map +1 -0
  97. package/lib/OrganizationRole.js +106 -0
  98. package/lib/OrganizationRole.js.map +1 -0
  99. package/lib/OrganizationSettings.d.ts +76 -0
  100. package/lib/OrganizationSettings.d.ts.map +1 -0
  101. package/lib/OrganizationSettings.js +107 -0
  102. package/lib/OrganizationSettings.js.map +1 -0
  103. package/lib/Providers.d.ts +14 -0
  104. package/lib/Providers.d.ts.map +1 -0
  105. package/lib/Providers.js +53 -0
  106. package/lib/Providers.js.map +1 -0
  107. package/lib/ReadAuditLogs.d.ts +30 -0
  108. package/lib/ReadAuditLogs.d.ts.map +1 -0
  109. package/lib/ReadAuditLogs.js +17 -0
  110. package/lib/ReadAuditLogs.js.map +1 -0
  111. package/lib/ReadOrganization.d.ts +39 -0
  112. package/lib/ReadOrganization.d.ts.map +1 -0
  113. package/lib/ReadOrganization.js +39 -0
  114. package/lib/ReadOrganization.js.map +1 -0
  115. package/lib/ReadUsage.d.ts +31 -0
  116. package/lib/ReadUsage.d.ts.map +1 -0
  117. package/lib/ReadUsage.js +17 -0
  118. package/lib/ReadUsage.js.map +1 -0
  119. package/lib/Region.d.ts +78 -0
  120. package/lib/Region.d.ts.map +1 -0
  121. package/lib/Region.js +169 -0
  122. package/lib/Region.js.map +1 -0
  123. package/lib/Registry.d.ts +84 -0
  124. package/lib/Registry.d.ts.map +1 -0
  125. package/lib/Registry.js +97 -0
  126. package/lib/Registry.js.map +1 -0
  127. package/lib/Runner.d.ts +66 -0
  128. package/lib/Runner.d.ts.map +1 -0
  129. package/lib/Runner.js +116 -0
  130. package/lib/Runner.js.map +1 -0
  131. package/lib/Sandbox.d.ts +376 -0
  132. package/lib/Sandbox.d.ts.map +1 -0
  133. package/lib/Sandbox.js +565 -0
  134. package/lib/Sandbox.js.map +1 -0
  135. package/lib/SandboxClient.d.ts +258 -0
  136. package/lib/SandboxClient.d.ts.map +1 -0
  137. package/lib/SandboxClient.js +233 -0
  138. package/lib/SandboxClient.js.map +1 -0
  139. package/lib/Secret.d.ts +93 -0
  140. package/lib/Secret.d.ts.map +1 -0
  141. package/lib/Secret.js +130 -0
  142. package/lib/Secret.js.map +1 -0
  143. package/lib/Snapshot.d.ts +327 -0
  144. package/lib/Snapshot.d.ts.map +1 -0
  145. package/lib/Snapshot.js +447 -0
  146. package/lib/Snapshot.js.map +1 -0
  147. package/lib/Volume.d.ts +99 -0
  148. package/lib/Volume.d.ts.map +1 -0
  149. package/lib/Volume.js +152 -0
  150. package/lib/Volume.js.map +1 -0
  151. package/lib/WarmPool.d.ts +61 -0
  152. package/lib/WarmPool.d.ts.map +1 -0
  153. package/lib/WarmPool.js +81 -0
  154. package/lib/WarmPool.js.map +1 -0
  155. package/lib/Webhooks.d.ts +58 -0
  156. package/lib/Webhooks.d.ts.map +1 -0
  157. package/lib/Webhooks.js +75 -0
  158. package/lib/Webhooks.js.map +1 -0
  159. package/lib/index.d.ts +37 -0
  160. package/lib/index.d.ts.map +1 -0
  161. package/lib/index.js +36 -0
  162. package/lib/index.js.map +1 -0
  163. package/lib/internal/BuildContext.d.ts +16 -0
  164. package/lib/internal/BuildContext.d.ts.map +1 -0
  165. package/lib/internal/BuildContext.js +50 -0
  166. package/lib/internal/BuildContext.js.map +1 -0
  167. package/lib/internal/Declared.d.ts +29 -0
  168. package/lib/internal/Declared.d.ts.map +1 -0
  169. package/lib/internal/Declared.js +31 -0
  170. package/lib/internal/Declared.js.map +1 -0
  171. package/lib/internal/Derived.d.ts +40 -0
  172. package/lib/internal/Derived.d.ts.map +1 -0
  173. package/lib/internal/Derived.js +64 -0
  174. package/lib/internal/Derived.js.map +1 -0
  175. package/lib/internal/Errors.d.ts +4 -0
  176. package/lib/internal/Errors.d.ts.map +1 -0
  177. package/lib/internal/Errors.js +1 -0
  178. package/lib/internal/Errors.js.map +1 -0
  179. package/lib/internal/Labels.d.ts +20 -0
  180. package/lib/internal/Labels.d.ts.map +1 -0
  181. package/lib/internal/Labels.js +22 -0
  182. package/lib/internal/Labels.js.map +1 -0
  183. package/lib/internal/Names.d.ts +18 -0
  184. package/lib/internal/Names.d.ts.map +1 -0
  185. package/lib/internal/Names.js +25 -0
  186. package/lib/internal/Names.js.map +1 -0
  187. package/lib/internal/Organization.d.ts +27 -0
  188. package/lib/internal/Organization.d.ts.map +1 -0
  189. package/lib/internal/Organization.js +32 -0
  190. package/lib/internal/Organization.js.map +1 -0
  191. package/lib/internal/Process.d.ts +14 -0
  192. package/lib/internal/Process.d.ts.map +1 -0
  193. package/lib/internal/Process.js +15 -0
  194. package/lib/internal/Process.js.map +1 -0
  195. package/lib/internal/Program.d.ts +83 -0
  196. package/lib/internal/Program.d.ts.map +1 -0
  197. package/lib/internal/Program.js +169 -0
  198. package/lib/internal/Program.js.map +1 -0
  199. package/lib/internal/Ref.d.ts +14 -0
  200. package/lib/internal/Ref.d.ts.map +1 -0
  201. package/lib/internal/Ref.js +7 -0
  202. package/lib/internal/Ref.js.map +1 -0
  203. package/lib/internal/Scoped.d.ts +31 -0
  204. package/lib/internal/Scoped.d.ts.map +1 -0
  205. package/lib/internal/Scoped.js +48 -0
  206. package/lib/internal/Scoped.js.map +1 -0
  207. package/lib/internal/Tar.d.ts +13 -0
  208. package/lib/internal/Tar.d.ts.map +1 -0
  209. package/lib/internal/Tar.js +62 -0
  210. package/lib/internal/Tar.js.map +1 -0
  211. package/lib/internal/Toolbox.d.ts +11 -0
  212. package/lib/internal/Toolbox.d.ts.map +1 -0
  213. package/lib/internal/Toolbox.js +20 -0
  214. package/lib/internal/Toolbox.js.map +1 -0
  215. package/lib/internal/Wait.d.ts +49 -0
  216. package/lib/internal/Wait.d.ts.map +1 -0
  217. package/lib/internal/Wait.js +57 -0
  218. package/lib/internal/Wait.js.map +1 -0
  219. package/package.json +64 -3
  220. package/src/ApiKey.ts +221 -0
  221. package/src/AuthProvider.ts +406 -0
  222. package/src/Bootstrap.ts +55 -0
  223. package/src/ConnectSandbox.ts +76 -0
  224. package/src/ConnectSandboxHttp.ts +26 -0
  225. package/src/Contributions.ts +9 -0
  226. package/src/CreateSandbox.ts +107 -0
  227. package/src/CreateSandboxHttp.ts +97 -0
  228. package/src/CreateSecret.ts +73 -0
  229. package/src/CreateSecretHttp.ts +58 -0
  230. package/src/CreateSnapshot.ts +133 -0
  231. package/src/CreateSnapshotHttp.ts +77 -0
  232. package/src/CreateVolume.ts +104 -0
  233. package/src/CreateVolumeHttp.ts +50 -0
  234. package/src/Credentials.ts +37 -0
  235. package/src/DaytonaBindings.ts +111 -0
  236. package/src/IdentityProvider.ts +181 -0
  237. package/src/MountVolume.ts +122 -0
  238. package/src/OAuthClient.ts +27 -0
  239. package/src/Organization.ts +121 -0
  240. package/src/OrganizationInvitation.ts +174 -0
  241. package/src/OrganizationMember.ts +174 -0
  242. package/src/OrganizationOtelConfig.ts +138 -0
  243. package/src/OrganizationRole.ts +167 -0
  244. package/src/OrganizationSettings.ts +187 -0
  245. package/src/Providers.ts +93 -0
  246. package/src/ReadAuditLogs.ts +50 -0
  247. package/src/ReadOrganization.ts +83 -0
  248. package/src/ReadUsage.ts +51 -0
  249. package/src/Region.ts +226 -0
  250. package/src/Registry.ts +164 -0
  251. package/src/Runner.ts +166 -0
  252. package/src/Sandbox.ts +927 -0
  253. package/src/SandboxClient.ts +625 -0
  254. package/src/Secret.ts +203 -0
  255. package/src/Snapshot.ts +685 -0
  256. package/src/Volume.ts +229 -0
  257. package/src/WarmPool.ts +128 -0
  258. package/src/Webhooks.ts +121 -0
  259. package/src/globals.d.ts +2 -0
  260. package/src/index.ts +46 -0
  261. package/src/internal/BuildContext.ts +62 -0
  262. package/src/internal/Declared.ts +80 -0
  263. package/src/internal/Derived.ts +97 -0
  264. package/src/internal/Errors.ts +4 -0
  265. package/src/internal/Labels.ts +39 -0
  266. package/src/internal/Names.ts +37 -0
  267. package/src/internal/Organization.ts +40 -0
  268. package/src/internal/Process.ts +25 -0
  269. package/src/internal/Program.ts +239 -0
  270. package/src/internal/Ref.ts +15 -0
  271. package/src/internal/Scoped.ts +102 -0
  272. package/src/internal/Tar.ts +72 -0
  273. package/src/internal/Toolbox.ts +27 -0
  274. package/src/internal/Wait.ts +105 -0
@@ -0,0 +1,169 @@
1
+ import * as fileSystem from "@distilled.cloud/daytona/file_system";
2
+ import * as port from "@distilled.cloud/daytona/port";
3
+ import * as process from "@distilled.cloud/daytona/process";
4
+ import * as sandboxes from "@distilled.cloud/daytona/sandbox";
5
+ import * as Toolbox from "@distilled.cloud/daytona/Toolbox";
6
+ import * as Bundle from "alchemy/Bundle/Bundle";
7
+ import { findCwdForBundle, resolveMainPath } from "alchemy/Bundle/TempRoot";
8
+ import { sha256Object } from "alchemy/Util/sha256";
9
+ import * as Data from "effect/Data";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schedule from "effect/Schedule";
12
+ import { inSandbox } from "./Toolbox.js";
13
+ /**
14
+ * INTERNAL — the program a `Daytona.Sandbox` with `main` runs: bundled with
15
+ * rolldown, uploaded into the sandbox, and run with Node in a session.
16
+ */
17
+ /** The program didn't come up: it exited, or never listened on its port. */
18
+ export class ProgramStartFailed extends Data.TaggedError("Daytona.ProgramStartFailed") {
19
+ }
20
+ export const DEFAULT_PORT = 3000;
21
+ const DIR = "/home/daytona/.alchemy/program";
22
+ const SESSION = "alchemy-program";
23
+ /** The generated entry: a shim importing only the bootstrap and `main`. */
24
+ const makeBootstrap = (handler) => (importPath) => `
25
+ import { bootstrap } from "@alchemy.run/daytona/Bootstrap";
26
+ import { ${handler} as entrypoint } from ${JSON.stringify(importPath)};
27
+
28
+ await bootstrap(entrypoint);
29
+ `;
30
+ const shellQuote = (value) => {
31
+ const text = typeof value === "string" ? value : JSON.stringify(value ?? null);
32
+ return `'${text.replaceAll("'", `'\\''`)}'`;
33
+ };
34
+ /** The process environment as a shell file, sorted so its hash is stable. */
35
+ export const renderEnv = (env) => Object.entries(env)
36
+ .filter(([, value]) => value !== undefined)
37
+ .sort(([a], [b]) => a.localeCompare(b))
38
+ .map(([key, value]) => `${key}=${shellQuote(value)}`)
39
+ .join("\n") + "\n";
40
+ /** Bundle `main` for Node, with the Daytona bootstrap around an Effect program. */
41
+ export const bundleProgram = Effect.fn(function* (source) {
42
+ const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
43
+ const realMain = yield* resolveMainPath(source.main);
44
+ const cwd = yield* findCwdForBundle(realMain);
45
+ const plugins = source.isExternal
46
+ ? undefined
47
+ : virtualEntryPlugin(makeBootstrap(source.handler ?? "default"));
48
+ const output = yield* Bundle.build({
49
+ ...source.build?.input,
50
+ input: realMain,
51
+ cwd,
52
+ platform: "node",
53
+ resolve: {
54
+ conditionNames: [...Bundle.NODE_CONDITION_NAMES],
55
+ ...source.build?.input?.resolve,
56
+ },
57
+ plugins: [source.build?.input?.plugins, plugins],
58
+ }, {
59
+ ...source.build?.output,
60
+ format: "esm",
61
+ sourcemap: source.build?.output?.sourcemap ?? false,
62
+ minify: source.build?.output?.minify ?? false,
63
+ entryFileNames: "index.mjs",
64
+ }, source.build);
65
+ const files = output.files.map((file) => ({
66
+ path: file.path,
67
+ content: typeof file.content === "string" ? new TextEncoder().encode(file.content) : file.content,
68
+ }));
69
+ return { files, hash: (yield* sha256Object({ bundle: output.hash })).slice(0, 16) };
70
+ });
71
+ /** The hash of a process environment. */
72
+ export const envHashOf = (env) => Effect.map(sha256Object({ env: renderEnv(env) }), (hash) => hash.slice(0, 16));
73
+ /**
74
+ * Whether the program's process still runs. A stopped or deleted sandbox,
75
+ * or a gone session, is not running.
76
+ */
77
+ export const isProgramRunning = (sandboxId, state) => process.getSessionCommand({ sessionId: state.sessionId, commandId: state.commandId }).pipe(inSandbox(sandboxId), Effect.map((command) => command.exitCode === undefined), Effect.orElseSucceed(() => false));
78
+ /**
79
+ * Upload the bundle and (re)start the process, unless the same bundle and
80
+ * environment already run. Returns the program's state and its URL.
81
+ */
82
+ export const deployProgram = Effect.fn(function* (input) {
83
+ const { id, sandboxId, port: programPort } = input;
84
+ const inBox = inSandbox(sandboxId, input.toolboxProxyUrl);
85
+ const envFile = renderEnv(input.env);
86
+ const envHash = yield* envHashOf(input.env);
87
+ const { files, hash } = yield* bundleProgram(input.source);
88
+ const previous = input.previous;
89
+ const running = previous !== undefined &&
90
+ previous.codeHash === hash &&
91
+ previous.envHash === envHash &&
92
+ previous.port === programPort &&
93
+ (yield* isProgramRunning(sandboxId, previous));
94
+ let commandId = previous?.commandId ?? "";
95
+ if (!running) {
96
+ const dir = `${DIR}/${hash}`;
97
+ yield* input.note(`Uploading ${id}'s program...`);
98
+ yield* Toolbox.uploadFiles({
99
+ files: [
100
+ // Rolldown's entry chunk is `index.mjs`; other chunks keep their names.
101
+ ...files.map((file, i) => ({
102
+ path: `${dir}/${i === 0 ? "index.mjs" : file.path}`,
103
+ content: file.content,
104
+ })),
105
+ { path: `${dir}/.env`, content: envFile },
106
+ ],
107
+ }).pipe(inBox);
108
+ yield* fileSystem.setFilePermissions({ path: `${dir}/.env`, mode: "600" }).pipe(inBox);
109
+ // Replace the running process: deleting its session ends it.
110
+ yield* process.deleteSession({ sessionId: SESSION }).pipe(inBox, Effect.catchTag("SessionNotFound", () => Effect.void));
111
+ yield* process.createSession({ sessionId: SESSION }).pipe(inBox);
112
+ const started = yield* process
113
+ .sessionExecuteCommand({
114
+ sessionId: SESSION,
115
+ command: `cd ${dir} && set -a && . ./.env && set +a && exec node index.mjs`,
116
+ runAsync: true,
117
+ })
118
+ .pipe(inBox);
119
+ commandId = started.cmdId;
120
+ // Ready once the port listens; fail with the logs if the process exits.
121
+ yield* input.note(`Starting ${id}'s program on port ${programPort}...`);
122
+ const ready = yield* Effect.gen(function* () {
123
+ const command = yield* process
124
+ .getSessionCommand({ sessionId: SESSION, commandId })
125
+ .pipe(inBox);
126
+ if (command.exitCode !== undefined)
127
+ return "exited";
128
+ const { ports } = yield* port.getPorts({}).pipe(inBox);
129
+ return (ports ?? []).includes(programPort) ? "listening" : "starting";
130
+ }).pipe(Effect.repeat({
131
+ schedule: Schedule.spaced("1 second"),
132
+ until: (state) => state !== "starting",
133
+ times: 60,
134
+ }));
135
+ if (ready !== "listening") {
136
+ const logs = yield* process
137
+ .getSessionCommandLogs({ sessionId: SESSION, commandId })
138
+ .pipe(inBox);
139
+ return yield* new ProgramStartFailed({
140
+ message: ready === "exited"
141
+ ? `${id}'s program exited before listening on port ${programPort}`
142
+ : `${id}'s program did not listen on port ${programPort} within 60 seconds`,
143
+ stdout: logs.stdout,
144
+ stderr: logs.stderr,
145
+ });
146
+ }
147
+ // Keep only the running bundle.
148
+ yield* process
149
+ .executeCommand({
150
+ command: `find ${DIR} -mindepth 1 -maxdepth 1 ! -name ${hash} -exec rm -rf {} +`,
151
+ })
152
+ .pipe(inBox);
153
+ }
154
+ const preview = yield* sandboxes.getPortPreviewUrl({
155
+ sandboxIdOrName: sandboxId,
156
+ port: programPort,
157
+ });
158
+ return {
159
+ url: preview.url,
160
+ state: {
161
+ port: programPort,
162
+ sessionId: SESSION,
163
+ commandId,
164
+ codeHash: hash,
165
+ envHash,
166
+ },
167
+ };
168
+ });
169
+ //# sourceMappingURL=Program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Program.js","sources":["../../src/internal/Program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type * as Effect from "effect/Effect";
2
+ import type { Providers } from "../Providers.ts";
3
+ /**
4
+ * A prop that takes another resource, or a stub with the attributes it
5
+ * needs (`{ name }`, `{ volumeId }`). Users pass the declaration itself.
6
+ */
7
+ export type Ref<T> = T | Effect.Effect<T, never, Providers>;
8
+ /**
9
+ * A `Ref` prop as lifecycle operations see it. The engine resolves
10
+ * resource-valued props to their attributes before `diff`, `reconcile`
11
+ * and the other lifecycle operations run, so the value is always plain.
12
+ */
13
+ export declare const resolved: <T>(ref: Ref<T>) => T;
14
+ //# sourceMappingURL=Ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ref.d.ts","sources":["../../src/internal/Ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAG,CAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A `Ref` prop as lifecycle operations see it. The engine resolves
3
+ * resource-valued props to their attributes before `diff`, `reconcile`
4
+ * and the other lifecycle operations run, so the value is always plain.
5
+ */
6
+ export const resolved = (ref) => ref;
7
+ //# sourceMappingURL=Ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ref.js","sources":["../../src/internal/Ref.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,GAAW,EAAK,EAAE,CAAC,GAAQ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Credentials } from "@distilled.cloud/daytona/Credentials";
2
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
3
+ import * as Effect from "effect/Effect";
4
+ import type * as HttpClient from "effect/http/HttpClient";
5
+ /** A generated Daytona operation: callable with its input, and an Effect. */
6
+ type Operation<I, O, E> = ((input: I) => Effect.Effect<O, E, Credentials | HttpClient.HttpClient>) & Effect.Effect<unknown, never, unknown>;
7
+ /** Members a sandbox-scoped client fills in itself. */
8
+ export type SandboxFixed = "sandboxIdOrName" | "sandboxId" | "organizationId" | "xDaytonaOrganizationID";
9
+ /** Members an organization-scoped client fills in itself. */
10
+ export type OrganizationFixed = "organizationId" | "xDaytonaOrganizationID";
11
+ /** One operation, with the fields the client fixes removed from its input. */
12
+ export type ScopedOperation<I, O, E, F extends PropertyKey = SandboxFixed> = {} extends Omit<I, F> ? (input?: Omit<I, F>) => Effect.Effect<O, E, RuntimeContext> : (input: Omit<I, F>) => Effect.Effect<O, E, RuntimeContext>;
13
+ /**
14
+ * Every operation of a generated service module (`@distilled.cloud/daytona/process`,
15
+ * `/git`, …), re-exposed with Daytona's own parameters and typed errors,
16
+ * minus the fields the client supplies (the sandbox and organization).
17
+ */
18
+ export type ScopedModule<M, F extends PropertyKey = SandboxFixed> = {
19
+ readonly [K in keyof M as M[K] extends Operation<any, any, any> ? K : never]: M[K] extends Operation<infer I, infer O, infer E> ? ScopedOperation<I, O, E, F> : never;
20
+ };
21
+ /**
22
+ * Wrap every operation of `module`: merge `fixed` into each input and run
23
+ * the call through `run` (which supplies credentials and sandbox scope).
24
+ * `fixed` may be an Effect when the fields are only known at runtime (a
25
+ * sandbox declared at deploy).
26
+ */
27
+ export declare const scopeModule: <M extends object, F extends PropertyKey = SandboxFixed>(module: M, fixed: Record<string, unknown> | Effect.Effect<Record<string, unknown>, never, RuntimeContext>, run: <A, E>(effect: Effect.Effect<A, E, Credentials | HttpClient.HttpClient>) => Effect.Effect<A, E, RuntimeContext>) => ScopedModule<M, F>;
28
+ /** The named operations of a module, as a module-shaped object. */
29
+ export declare const pick: <M extends object, K extends keyof M>(module: M, names: readonly K[]) => Pick<M, K>;
30
+ export {};
31
+ //# sourceMappingURL=Scoped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scoped.d.ts","sources":["../../src/internal/Scoped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAG1D,6EAA6E;AAC7E,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,GAChG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAEzC,uDAAuD;AACvD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,wBAAwB,CAAC;AAE7B,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,wBAAwB,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,YAAY,IACvE,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACjB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,GAC3D,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,YAAY,IAAI;IAClE,QAAQ,EACN,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAChE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;CAC3F,CAAC;AAuBF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,GAAG,YAAY,UACxE,CAAC,SACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,OACzF,CAAC,CAAC,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,KACvC,YAAY,CAAC,CAAC,EAAE,CAAC,CAyBnB,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,UAC9C,CAAC,SACF,SAAS,CAAC,EAAE,KAClB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAgF,CAAC"}
@@ -0,0 +1,48 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as SchemaAST from "effect/SchemaAST";
3
+ // Generated operations are plain callables, not Effects, so the name tells
4
+ // them apart: a service module exports operations camelCase and its error
5
+ // classes and schemas PascalCase.
6
+ const isOperation = (name, value) => typeof value === "function" && /^[a-z]/.test(name);
7
+ /** The members an operation's input declares, read from its schema on first use. */
8
+ const inputMembers = (op) => {
9
+ if (!("input" in op))
10
+ return undefined;
11
+ const schema = op.input;
12
+ if (typeof schema !== "object" || schema === null || !("ast" in schema))
13
+ return undefined;
14
+ let ast = schema.ast;
15
+ while (SchemaAST.isSuspend(ast))
16
+ ast = ast.thunk();
17
+ return SchemaAST.isObjects(ast)
18
+ ? new Set(ast.propertySignatures.map((p) => String(p.name)))
19
+ : undefined;
20
+ };
21
+ /**
22
+ * Wrap every operation of `module`: merge `fixed` into each input and run
23
+ * the call through `run` (which supplies credentials and sandbox scope).
24
+ * `fixed` may be an Effect when the fields are only known at runtime (a
25
+ * sandbox declared at deploy).
26
+ */
27
+ export const scopeModule = (module, fixed, run) => {
28
+ const fields = Effect.isEffect(fixed) ? fixed : Effect.succeed(fixed);
29
+ return Object.fromEntries(Object.entries(module)
30
+ .filter(([name, value]) => isOperation(name, value))
31
+ .map(([name, op]) => {
32
+ // Only the fixed fields the operation takes: the protocol sends any
33
+ // member it doesn't model as a body, which a GET can't carry.
34
+ let members;
35
+ const fixedFor = (all) => {
36
+ members ??= inputMembers(op) ?? new Set(Object.keys(all));
37
+ return Object.fromEntries(Object.entries(all).filter(([key]) => members.has(key)));
38
+ };
39
+ const call = op;
40
+ return [
41
+ name,
42
+ (input) => Effect.flatMap(fields, (all) => run(call({ ...input, ...fixedFor(all) }))),
43
+ ];
44
+ }));
45
+ };
46
+ /** The named operations of a module, as a module-shaped object. */
47
+ export const pick = (module, names) => Object.fromEntries(names.map((name) => [name, module[name]]));
48
+ //# sourceMappingURL=Scoped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scoped.js","sources":["../../src/internal/Scoped.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A minimal POSIX ustar writer: regular files and their parent
3
+ * directories, no compression. Enough for a Docker build context.
4
+ */
5
+ export interface TarEntry {
6
+ /** `/`-separated, relative. */
7
+ readonly path: string;
8
+ readonly mode: number;
9
+ readonly bytes: Uint8Array;
10
+ }
11
+ /** The archive bytes for `entries`, with a directory entry for every parent. */
12
+ export declare const tar: (entries: ReadonlyArray<TarEntry>) => Uint8Array;
13
+ //# sourceMappingURL=Tar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tar.d.ts","sources":["../../src/internal/Tar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAqCD,gFAAgF;AAChF,eAAO,MAAM,GAAG,YAAa,aAAa,CAAC,QAAQ,CAAC,KAAG,UAwBtD,CAAC"}
@@ -0,0 +1,62 @@
1
+ const BLOCK = 512;
2
+ const encoder = new TextEncoder();
3
+ const octal = (value, width) => value.toString(8).padStart(width - 1, "0") + "\0";
4
+ const splitPath = (path) => {
5
+ if (encoder.encode(path).length <= 100)
6
+ return { name: path, prefix: "" };
7
+ const cut = path.lastIndexOf("/", 155);
8
+ if (cut <= 0 || encoder.encode(path.slice(cut + 1)).length > 100) {
9
+ throw new Error(`path too long for a ustar archive: ${path}`);
10
+ }
11
+ return { name: path.slice(cut + 1), prefix: path.slice(0, cut) };
12
+ };
13
+ const header = (path, mode, size, type) => {
14
+ const block = new Uint8Array(BLOCK);
15
+ const write = (offset, text) => block.set(encoder.encode(text), offset);
16
+ const { name, prefix } = splitPath(path);
17
+ write(0, name);
18
+ write(100, octal(mode & 0o7777, 8));
19
+ write(108, octal(0, 8));
20
+ write(116, octal(0, 8));
21
+ write(124, octal(size, 12));
22
+ write(136, octal(0, 12));
23
+ write(148, " ");
24
+ write(156, type);
25
+ write(257, "ustar\0");
26
+ write(263, "00");
27
+ write(345, prefix);
28
+ let sum = 0;
29
+ for (const byte of block)
30
+ sum += byte;
31
+ write(148, octal(sum, 7) + " ");
32
+ return block;
33
+ };
34
+ /** The archive bytes for `entries`, with a directory entry for every parent. */
35
+ export const tar = (entries) => {
36
+ const parts = [];
37
+ const dirs = new Set();
38
+ for (const entry of entries) {
39
+ const segments = entry.path.split("/").slice(0, -1);
40
+ for (let i = 1; i <= segments.length; i++) {
41
+ const dir = segments.slice(0, i).join("/");
42
+ if (dirs.has(dir))
43
+ continue;
44
+ dirs.add(dir);
45
+ parts.push(header(`${dir}/`, 0o755, 0, "5"));
46
+ }
47
+ parts.push(header(entry.path, entry.mode, entry.bytes.length, "0"));
48
+ parts.push(entry.bytes);
49
+ const pad = (BLOCK - (entry.bytes.length % BLOCK)) % BLOCK;
50
+ if (pad > 0)
51
+ parts.push(new Uint8Array(pad));
52
+ }
53
+ parts.push(new Uint8Array(BLOCK * 2));
54
+ const out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));
55
+ let offset = 0;
56
+ for (const part of parts) {
57
+ out.set(part, offset);
58
+ offset += part.length;
59
+ }
60
+ return out;
61
+ };
62
+ //# sourceMappingURL=Tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tar.js","sources":["../../src/internal/Tar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Credentials } from "@distilled.cloud/daytona/Credentials";
2
+ import * as Effect from "effect/Effect";
3
+ /**
4
+ * Point toolbox operations (process, files, git, LSP, computer use, …) at
5
+ * one sandbox. Daytona addresses the toolbox by sandbox in the base URL,
6
+ * not in the request, so the sandbox is client configuration: this
7
+ * re-provides `Credentials` with `sandboxId` (and the sandbox's own proxy
8
+ * URL when known) on top of the ambient credentials.
9
+ */
10
+ export declare const inSandbox: (sandboxId: string, toolboxProxyUrl?: string) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | Credentials>;
11
+ //# sourceMappingURL=Toolbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbox.d.ts","sources":["../../src/internal/Toolbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,cACR,MAAM,oBAAoB,MAAM,MAC3C,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,WAAW,CAc1E,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Credentials } from "@distilled.cloud/daytona/Credentials";
2
+ import * as Effect from "effect/Effect";
3
+ /**
4
+ * Point toolbox operations (process, files, git, LSP, computer use, …) at
5
+ * one sandbox. Daytona addresses the toolbox by sandbox in the base URL,
6
+ * not in the request, so the sandbox is client configuration: this
7
+ * re-provides `Credentials` with `sandboxId` (and the sandbox's own proxy
8
+ * URL when known) on top of the ambient credentials.
9
+ */
10
+ export const inSandbox = (sandboxId, toolboxProxyUrl) => (effect) => Effect.gen(function* () {
11
+ const base = yield* Credentials;
12
+ return yield* Effect.provideService(effect, Credentials, Effect.map(base, (config) => ({
13
+ ...config,
14
+ sandboxId,
15
+ toolboxBaseUrl: toolboxProxyUrl
16
+ ? `${toolboxProxyUrl.replace(/\/$/, "")}/${sandboxId}`
17
+ : config.toolboxBaseUrl,
18
+ })));
19
+ });
20
+ //# sourceMappingURL=Toolbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbox.js","sources":["../../src/internal/Toolbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,SAAiB,EAAE,eAAwB,EAAE,EAAE,CAChD,CAAU,MAA8B,EAAwC,EAAE,CAChF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CACjC,MAAM,EACN,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,MAAM;QACT,SAAS;QACT,cAAc,EAAE,eAAe;YAC7B,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE;YACtD,CAAC,CAAC,MAAM,CAAC,cAAc;KAC1B,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import * as Duration from "effect/Duration";
2
+ import * as Effect from "effect/Effect";
3
+ declare const StateTimeout_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
4
+ readonly _tag: "Daytona.StateTimeout";
5
+ } & Readonly<A>;
6
+ /** A Daytona object did not reach the state it was waiting for. */
7
+ export declare class StateTimeout extends StateTimeout_base<{
8
+ readonly kind: string;
9
+ readonly id: string;
10
+ readonly want: readonly string[];
11
+ readonly last: string | undefined;
12
+ }> {
13
+ get message(): string;
14
+ }
15
+ declare const StateFailed_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
16
+ readonly _tag: "Daytona.StateFailed";
17
+ } & Readonly<A>;
18
+ /** A Daytona object reached a failure state. */
19
+ export declare class StateFailed extends StateFailed_base<{
20
+ readonly kind: string;
21
+ readonly id: string;
22
+ readonly state: string;
23
+ readonly reason: string | undefined;
24
+ }> {
25
+ get message(): string;
26
+ }
27
+ /**
28
+ * Poll `observe` until its state is one of `want`, failing fast on one of
29
+ * `fail`. Bounded by `budget` (spaced polls, capped at 5 s apart).
30
+ */
31
+ export declare const waitForState: <A extends {
32
+ readonly state?: string | undefined;
33
+ }, E, R>(options: {
34
+ readonly kind: string;
35
+ readonly id: string;
36
+ readonly observe: Effect.Effect<A, E, R>;
37
+ readonly want: readonly string[];
38
+ readonly fail?: readonly string[];
39
+ readonly reason?: (a: A) => string | null | undefined;
40
+ readonly budget?: Duration.Input;
41
+ }) => Effect.Effect<A, E | StateTimeout | StateFailed, R>;
42
+ /** Poll until `exists` reports false (a typed not-found mapped to `false`). */
43
+ export declare const waitUntilGone: <E, R>(kind: string, id: string, exists: Effect.Effect<boolean, E, R>, budget?: Duration.Input) => Effect.Effect<void, E | StateTimeout, R>;
44
+ /** Minutes for Daytona's interval fields (`0` disables). */
45
+ export declare const toMinutes: (d: Duration.Input | undefined) => number | undefined;
46
+ /** Whole seconds, for Daytona's command timeouts. */
47
+ export declare const toSeconds: (d: Duration.Input | undefined) => number | undefined;
48
+ export {};
49
+ //# sourceMappingURL=Wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wait.d.ts","sources":["../../src/internal/Wait.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;;;AAGxC,mEAAmE;AACnE,qBAAa,YAAa,SAAQ,kBAAyC;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;IACA,IAAa,OAAO,WAEnB;CACF;;;;AAED,gDAAgD;AAChD,qBAAa,WAAY,SAAQ,iBAAwC;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;IACA,IAAa,OAAO,WAEnB;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,WAAW;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;CAClC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,GAAG,WAAW,EAAE,CAAC,CAkCrD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,QAC1B,MAAM,MACR,MAAM,UACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,WAC5B,QAAQ,CAAC,KAAK,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAavC,CAAC;AAEJ,4DAA4D;AAC5D,eAAO,MAAM,SAAS,MAAO,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAG,MAAM,GAAG,SACwB,CAAC;AAE5F,qDAAqD;AACrD,eAAO,MAAM,SAAS,MAAO,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAG,MAAM,GAAG,SACuB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Duration from "effect/Duration";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Schedule from "effect/Schedule";
5
+ /** A Daytona object did not reach the state it was waiting for. */
6
+ export class StateTimeout extends Data.TaggedError("Daytona.StateTimeout") {
7
+ get message() {
8
+ return `Daytona ${this.kind} ${this.id} did not reach ${this.want.join(" | ")} (last state: ${this.last ?? "unknown"})`;
9
+ }
10
+ }
11
+ /** A Daytona object reached a failure state. */
12
+ export class StateFailed extends Data.TaggedError("Daytona.StateFailed") {
13
+ get message() {
14
+ return `Daytona ${this.kind} ${this.id} is ${this.state}${this.reason ? `: ${this.reason}` : ""}`;
15
+ }
16
+ }
17
+ /**
18
+ * Poll `observe` until its state is one of `want`, failing fast on one of
19
+ * `fail`. Bounded by `budget` (spaced polls, capped at 5 s apart).
20
+ */
21
+ export const waitForState = (options) => {
22
+ const budget = Duration.fromInputUnsafe(options.budget ?? "5 minutes");
23
+ const fail = options.fail ?? ["error", "build_failed"];
24
+ let last;
25
+ return options.observe.pipe(Effect.flatMap((a) => {
26
+ last = a.state;
27
+ if (a.state !== undefined && fail.includes(a.state)) {
28
+ return Effect.fail(new StateFailed({
29
+ kind: options.kind,
30
+ id: options.id,
31
+ state: a.state,
32
+ reason: options.reason?.(a) ?? undefined,
33
+ }));
34
+ }
35
+ return Effect.succeed(a);
36
+ }), Effect.repeat({
37
+ schedule: Schedule.min([
38
+ Schedule.exponential("500 millis", 1.5),
39
+ Schedule.spaced("5 seconds"),
40
+ ]).pipe(Schedule.upTo({ duration: budget })),
41
+ until: (a) => a.state !== undefined && options.want.includes(a.state),
42
+ }), Effect.flatMap((a) => a.state !== undefined && options.want.includes(a.state)
43
+ ? Effect.succeed(a)
44
+ : Effect.fail(new StateTimeout({ kind: options.kind, id: options.id, want: options.want, last }))));
45
+ };
46
+ /** Poll until `exists` reports false (a typed not-found mapped to `false`). */
47
+ export const waitUntilGone = (kind, id, exists, budget = "2 minutes") => exists.pipe(Effect.repeat({
48
+ schedule: Schedule.spaced("2 seconds").pipe(Schedule.upTo({ duration: Duration.fromInputUnsafe(budget) })),
49
+ until: (present) => !present,
50
+ }), Effect.flatMap((present) => present
51
+ ? Effect.fail(new StateTimeout({ kind, id, want: ["deleted"], last: "present" }))
52
+ : Effect.void));
53
+ /** Minutes for Daytona's interval fields (`0` disables). */
54
+ export const toMinutes = (d) => d === undefined ? undefined : Math.round(Duration.toMinutes(Duration.fromInputUnsafe(d)));
55
+ /** Whole seconds, for Daytona's command timeouts. */
56
+ export const toSeconds = (d) => d === undefined ? undefined : Math.ceil(Duration.toSeconds(Duration.fromInputUnsafe(d)));
57
+ //# sourceMappingURL=Wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wait.js","sources":["../../src/internal/Wait.ts"],"names":[],"mappings":"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"}