@alchemy.run/e2b 0.0.0-stage → 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 (284) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +60 -2
  3. package/lib/ApiKey.d.ts +53 -0
  4. package/lib/ApiKey.d.ts.map +1 -0
  5. package/lib/ApiKey.js +107 -0
  6. package/lib/ApiKey.js.map +1 -0
  7. package/lib/AuthProvider.d.ts +60 -0
  8. package/lib/AuthProvider.d.ts.map +1 -0
  9. package/lib/AuthProvider.js +293 -0
  10. package/lib/AuthProvider.js.map +1 -0
  11. package/lib/Bootstrap.d.ts +7 -0
  12. package/lib/Bootstrap.d.ts.map +1 -0
  13. package/lib/Bootstrap.js +25 -0
  14. package/lib/Bootstrap.js.map +1 -0
  15. package/lib/ConnectSandbox.d.ts +67 -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 +22 -0
  20. package/lib/ConnectSandboxHttp.d.ts.map +1 -0
  21. package/lib/ConnectSandboxHttp.js +30 -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 +139 -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 +22 -0
  32. package/lib/CreateSandboxHttp.d.ts.map +1 -0
  33. package/lib/CreateSandboxHttp.js +99 -0
  34. package/lib/CreateSandboxHttp.js.map +1 -0
  35. package/lib/CreateSecret.d.ts +57 -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 +20 -0
  40. package/lib/CreateSecretHttp.d.ts.map +1 -0
  41. package/lib/CreateSecretHttp.js +64 -0
  42. package/lib/CreateSecretHttp.js.map +1 -0
  43. package/lib/CreateSnapshot.d.ts +53 -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 +20 -0
  48. package/lib/CreateSnapshotHttp.d.ts.map +1 -0
  49. package/lib/CreateSnapshotHttp.js +41 -0
  50. package/lib/CreateSnapshotHttp.js.map +1 -0
  51. package/lib/CreateTemplate.d.ts +96 -0
  52. package/lib/CreateTemplate.d.ts.map +1 -0
  53. package/lib/CreateTemplate.js +3 -0
  54. package/lib/CreateTemplate.js.map +1 -0
  55. package/lib/CreateTemplateHttp.d.ts +20 -0
  56. package/lib/CreateTemplateHttp.d.ts.map +1 -0
  57. package/lib/CreateTemplateHttp.js +99 -0
  58. package/lib/CreateTemplateHttp.js.map +1 -0
  59. package/lib/CreateVolume.d.ts +58 -0
  60. package/lib/CreateVolume.d.ts.map +1 -0
  61. package/lib/CreateVolume.js +3 -0
  62. package/lib/CreateVolume.js.map +1 -0
  63. package/lib/CreateVolumeHttp.d.ts +20 -0
  64. package/lib/CreateVolumeHttp.d.ts.map +1 -0
  65. package/lib/CreateVolumeHttp.js +51 -0
  66. package/lib/CreateVolumeHttp.js.map +1 -0
  67. package/lib/Credentials.d.ts +18 -0
  68. package/lib/Credentials.d.ts.map +1 -0
  69. package/lib/Credentials.js +55 -0
  70. package/lib/Credentials.js.map +1 -0
  71. package/lib/E2BBindings.d.ts +35 -0
  72. package/lib/E2BBindings.d.ts.map +1 -0
  73. package/lib/E2BBindings.js +127 -0
  74. package/lib/E2BBindings.js.map +1 -0
  75. package/lib/Errors.d.ts +61 -0
  76. package/lib/Errors.d.ts.map +1 -0
  77. package/lib/Errors.js +23 -0
  78. package/lib/Errors.js.map +1 -0
  79. package/lib/InferEnv.d.ts +26 -0
  80. package/lib/InferEnv.d.ts.map +1 -0
  81. package/lib/InferEnv.js +1 -0
  82. package/lib/InferEnv.js.map +1 -0
  83. package/lib/MountVolume.d.ts +86 -0
  84. package/lib/MountVolume.d.ts.map +1 -0
  85. package/lib/MountVolume.js +3 -0
  86. package/lib/MountVolume.js.map +1 -0
  87. package/lib/MountVolumeLive.d.ts +23 -0
  88. package/lib/MountVolumeLive.d.ts.map +1 -0
  89. package/lib/MountVolumeLive.js +41 -0
  90. package/lib/MountVolumeLive.js.map +1 -0
  91. package/lib/Providers.d.ts +14 -0
  92. package/lib/Providers.d.ts.map +1 -0
  93. package/lib/Providers.js +23 -0
  94. package/lib/Providers.js.map +1 -0
  95. package/lib/ReadTeam.d.ts +41 -0
  96. package/lib/ReadTeam.d.ts.map +1 -0
  97. package/lib/ReadTeam.js +3 -0
  98. package/lib/ReadTeam.js.map +1 -0
  99. package/lib/ReadTeamHttp.d.ts +20 -0
  100. package/lib/ReadTeamHttp.d.ts.map +1 -0
  101. package/lib/ReadTeamHttp.js +40 -0
  102. package/lib/ReadTeamHttp.js.map +1 -0
  103. package/lib/ReadVolume.d.ts +25 -0
  104. package/lib/ReadVolume.d.ts.map +1 -0
  105. package/lib/ReadVolume.js +3 -0
  106. package/lib/ReadVolume.js.map +1 -0
  107. package/lib/ReadVolumeHttp.d.ts +20 -0
  108. package/lib/ReadVolumeHttp.d.ts.map +1 -0
  109. package/lib/ReadVolumeHttp.js +27 -0
  110. package/lib/ReadVolumeHttp.js.map +1 -0
  111. package/lib/ReadWebhook.d.ts +32 -0
  112. package/lib/ReadWebhook.d.ts.map +1 -0
  113. package/lib/ReadWebhook.js +3 -0
  114. package/lib/ReadWebhook.js.map +1 -0
  115. package/lib/ReadWebhookHttp.d.ts +20 -0
  116. package/lib/ReadWebhookHttp.d.ts.map +1 -0
  117. package/lib/ReadWebhookHttp.js +31 -0
  118. package/lib/ReadWebhookHttp.js.map +1 -0
  119. package/lib/ReadWriteVolume.d.ts +26 -0
  120. package/lib/ReadWriteVolume.d.ts.map +1 -0
  121. package/lib/ReadWriteVolume.js +3 -0
  122. package/lib/ReadWriteVolume.js.map +1 -0
  123. package/lib/ReadWriteVolumeHttp.d.ts +20 -0
  124. package/lib/ReadWriteVolumeHttp.d.ts.map +1 -0
  125. package/lib/ReadWriteVolumeHttp.js +27 -0
  126. package/lib/ReadWriteVolumeHttp.js.map +1 -0
  127. package/lib/Sandbox.d.ts +295 -0
  128. package/lib/Sandbox.d.ts.map +1 -0
  129. package/lib/Sandbox.js +351 -0
  130. package/lib/Sandbox.js.map +1 -0
  131. package/lib/SandboxClient.d.ts +226 -0
  132. package/lib/SandboxClient.d.ts.map +1 -0
  133. package/lib/SandboxClient.js +1 -0
  134. package/lib/SandboxClient.js.map +1 -0
  135. package/lib/SandboxEvents.d.ts +87 -0
  136. package/lib/SandboxEvents.d.ts.map +1 -0
  137. package/lib/SandboxEvents.js +39 -0
  138. package/lib/SandboxEvents.js.map +1 -0
  139. package/lib/SandboxEventsLive.d.ts +13 -0
  140. package/lib/SandboxEventsLive.d.ts.map +1 -0
  141. package/lib/SandboxEventsLive.js +80 -0
  142. package/lib/SandboxEventsLive.js.map +1 -0
  143. package/lib/Secret.d.ts +105 -0
  144. package/lib/Secret.d.ts.map +1 -0
  145. package/lib/Secret.js +161 -0
  146. package/lib/Secret.js.map +1 -0
  147. package/lib/Snapshot.d.ts +118 -0
  148. package/lib/Snapshot.d.ts.map +1 -0
  149. package/lib/Snapshot.js +158 -0
  150. package/lib/Snapshot.js.map +1 -0
  151. package/lib/Template.d.ts +313 -0
  152. package/lib/Template.d.ts.map +1 -0
  153. package/lib/Template.js +421 -0
  154. package/lib/Template.js.map +1 -0
  155. package/lib/Volume.d.ts +88 -0
  156. package/lib/Volume.d.ts.map +1 -0
  157. package/lib/Volume.js +136 -0
  158. package/lib/Volume.js.map +1 -0
  159. package/lib/VolumeFiles.d.ts +39 -0
  160. package/lib/VolumeFiles.d.ts.map +1 -0
  161. package/lib/VolumeFiles.js +1 -0
  162. package/lib/VolumeFiles.js.map +1 -0
  163. package/lib/Webhook.d.ts +83 -0
  164. package/lib/Webhook.d.ts.map +1 -0
  165. package/lib/Webhook.js +138 -0
  166. package/lib/Webhook.js.map +1 -0
  167. package/lib/WriteSecret.d.ts +34 -0
  168. package/lib/WriteSecret.d.ts.map +1 -0
  169. package/lib/WriteSecret.js +3 -0
  170. package/lib/WriteSecret.js.map +1 -0
  171. package/lib/WriteSecretHttp.d.ts +20 -0
  172. package/lib/WriteSecretHttp.d.ts.map +1 -0
  173. package/lib/WriteSecretHttp.js +37 -0
  174. package/lib/WriteSecretHttp.js.map +1 -0
  175. package/lib/WriteVolume.d.ts +25 -0
  176. package/lib/WriteVolume.d.ts.map +1 -0
  177. package/lib/WriteVolume.js +3 -0
  178. package/lib/WriteVolume.js.map +1 -0
  179. package/lib/WriteVolumeHttp.d.ts +20 -0
  180. package/lib/WriteVolumeHttp.d.ts.map +1 -0
  181. package/lib/WriteVolumeHttp.js +27 -0
  182. package/lib/WriteVolumeHttp.js.map +1 -0
  183. package/lib/index.d.ts +43 -0
  184. package/lib/index.d.ts.map +1 -0
  185. package/lib/index.js +43 -0
  186. package/lib/index.js.map +1 -0
  187. package/lib/internal/Declared.d.ts +29 -0
  188. package/lib/internal/Declared.d.ts.map +1 -0
  189. package/lib/internal/Declared.js +31 -0
  190. package/lib/internal/Declared.js.map +1 -0
  191. package/lib/internal/Login.d.ts +45 -0
  192. package/lib/internal/Login.d.ts.map +1 -0
  193. package/lib/internal/Login.js +157 -0
  194. package/lib/internal/Login.js.map +1 -0
  195. package/lib/internal/Ownership.d.ts +29 -0
  196. package/lib/internal/Ownership.d.ts.map +1 -0
  197. package/lib/internal/Ownership.js +49 -0
  198. package/lib/internal/Ownership.js.map +1 -0
  199. package/lib/internal/Program.d.ts +31 -0
  200. package/lib/internal/Program.d.ts.map +1 -0
  201. package/lib/internal/Program.js +60 -0
  202. package/lib/internal/Program.js.map +1 -0
  203. package/lib/internal/SandboxHandle.d.ts +25 -0
  204. package/lib/internal/SandboxHandle.d.ts.map +1 -0
  205. package/lib/internal/SandboxHandle.js +316 -0
  206. package/lib/internal/SandboxHandle.js.map +1 -0
  207. package/lib/internal/SnapshotBuild.d.ts +19 -0
  208. package/lib/internal/SnapshotBuild.d.ts.map +1 -0
  209. package/lib/internal/SnapshotBuild.js +49 -0
  210. package/lib/internal/SnapshotBuild.js.map +1 -0
  211. package/lib/internal/Tar.d.ts +10 -0
  212. package/lib/internal/Tar.d.ts.map +1 -0
  213. package/lib/internal/Tar.js +61 -0
  214. package/lib/internal/Tar.js.map +1 -0
  215. package/lib/internal/TemplateBuild.d.ts +142 -0
  216. package/lib/internal/TemplateBuild.d.ts.map +1 -0
  217. package/lib/internal/TemplateBuild.js +220 -0
  218. package/lib/internal/TemplateBuild.js.map +1 -0
  219. package/lib/internal/TemplatePlan.d.ts +57 -0
  220. package/lib/internal/TemplatePlan.d.ts.map +1 -0
  221. package/lib/internal/TemplatePlan.js +185 -0
  222. package/lib/internal/TemplatePlan.js.map +1 -0
  223. package/lib/internal/VolumeHttp.d.ts +5 -0
  224. package/lib/internal/VolumeHttp.d.ts.map +1 -0
  225. package/lib/internal/VolumeHttp.js +46 -0
  226. package/lib/internal/VolumeHttp.js.map +1 -0
  227. package/package.json +78 -3
  228. package/src/ApiKey.ts +148 -0
  229. package/src/AuthProvider.ts +437 -0
  230. package/src/Bootstrap.ts +51 -0
  231. package/src/ConnectSandbox.ts +71 -0
  232. package/src/ConnectSandboxHttp.ts +38 -0
  233. package/src/Contributions.ts +9 -0
  234. package/src/CreateSandbox.ts +157 -0
  235. package/src/CreateSandboxHttp.ts +131 -0
  236. package/src/CreateSecret.ts +65 -0
  237. package/src/CreateSecretHttp.ts +94 -0
  238. package/src/CreateSnapshot.ts +64 -0
  239. package/src/CreateSnapshotHttp.ts +55 -0
  240. package/src/CreateTemplate.ts +135 -0
  241. package/src/CreateTemplateHttp.ts +152 -0
  242. package/src/CreateVolume.ts +65 -0
  243. package/src/CreateVolumeHttp.ts +80 -0
  244. package/src/Credentials.ts +81 -0
  245. package/src/E2BBindings.ts +160 -0
  246. package/src/Errors.ts +47 -0
  247. package/src/InferEnv.ts +27 -0
  248. package/src/MountVolume.ts +92 -0
  249. package/src/MountVolumeLive.ts +49 -0
  250. package/src/Providers.ts +48 -0
  251. package/src/ReadTeam.ts +55 -0
  252. package/src/ReadTeamHttp.ts +44 -0
  253. package/src/ReadVolume.ts +29 -0
  254. package/src/ReadVolumeHttp.ts +32 -0
  255. package/src/ReadWebhook.ts +41 -0
  256. package/src/ReadWebhookHttp.ts +42 -0
  257. package/src/ReadWriteVolume.ts +30 -0
  258. package/src/ReadWriteVolumeHttp.ts +32 -0
  259. package/src/Sandbox.ts +581 -0
  260. package/src/SandboxClient.ts +268 -0
  261. package/src/SandboxEvents.ts +101 -0
  262. package/src/SandboxEventsLive.ts +118 -0
  263. package/src/Secret.ts +229 -0
  264. package/src/Snapshot.ts +234 -0
  265. package/src/Template.ts +636 -0
  266. package/src/Volume.ts +173 -0
  267. package/src/VolumeFiles.ts +53 -0
  268. package/src/Webhook.ts +215 -0
  269. package/src/WriteSecret.ts +39 -0
  270. package/src/WriteSecretHttp.ts +43 -0
  271. package/src/WriteVolume.ts +29 -0
  272. package/src/WriteVolumeHttp.ts +32 -0
  273. package/src/globals.d.ts +2 -0
  274. package/src/index.ts +42 -0
  275. package/src/internal/Declared.ts +80 -0
  276. package/src/internal/Login.ts +210 -0
  277. package/src/internal/Ownership.ts +67 -0
  278. package/src/internal/Program.ts +75 -0
  279. package/src/internal/SandboxHandle.ts +534 -0
  280. package/src/internal/SnapshotBuild.ts +74 -0
  281. package/src/internal/Tar.ts +74 -0
  282. package/src/internal/TemplateBuild.ts +383 -0
  283. package/src/internal/TemplatePlan.ts +230 -0
  284. package/src/internal/VolumeHttp.ts +88 -0
@@ -0,0 +1,293 @@
1
+ import * as auth from "@distilled.cloud/e2b/auth";
2
+ import { credentials as e2bCredentials, DEFAULT_DOMAIN } from "@distilled.cloud/e2b/Credentials";
3
+ import { AuthError, AuthProviderLayer, NeedsReauth, refreshHint, } from "alchemy/Auth/AuthProvider";
4
+ import { browserOAuth } from "alchemy/Auth/BrowserOAuth";
5
+ import { displayRedacted } from "alchemy/Auth/Credentials";
6
+ import { getEnv, getEnvRedacted, mapPromptCancellation } from "alchemy/Auth/Env";
7
+ import { withProfileCredentialsLock } from "alchemy/Auth/Lock";
8
+ import { collectFieldValues, storedSecret, storedValueText, validateFieldValues, } from "alchemy/Auth/StoredAuthProvider";
9
+ import * as Interaction from "alchemy/Interaction";
10
+ import * as Clock from "effect/Clock";
11
+ import * as Duration from "effect/Duration";
12
+ import * as Effect from "effect/Effect";
13
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
14
+ import * as Layer from "effect/Layer";
15
+ import * as Match from "effect/Match";
16
+ import * as Redacted from "effect/Redacted";
17
+ import * as Schema from "effect/Schema";
18
+ import { grantFromUrl, refreshGrant, revokeGrant, startLogin, } from "./internal/Login.js";
19
+ export const E2B_AUTH_PROVIDER_NAME = "E2B";
20
+ /**
21
+ * A profile's E2B values: an OAuth grant from the browser login (`oauth`),
22
+ * or a pasted access token or API key (`stored`).
23
+ */
24
+ export const E2BAuthConfigSchema = Schema.Union([
25
+ Schema.Struct({
26
+ method: Schema.Literal("oauth"),
27
+ email: Schema.String,
28
+ teamId: Schema.String,
29
+ teamName: Schema.String,
30
+ clientId: Schema.String,
31
+ tokenEndpoint: Schema.String,
32
+ revokeEndpoint: Schema.String,
33
+ access: Schema.String,
34
+ refresh: Schema.String,
35
+ expires: Schema.Number,
36
+ domain: Schema.optional(Schema.String),
37
+ }),
38
+ Schema.Struct({
39
+ method: Schema.Literal("stored"),
40
+ accessToken: Schema.optional(Schema.String),
41
+ teamId: Schema.optional(Schema.String),
42
+ apiKey: Schema.optional(Schema.String),
43
+ domain: Schema.optional(Schema.String),
44
+ }),
45
+ ]);
46
+ const storedFields = [
47
+ {
48
+ name: "accessToken",
49
+ label: "E2B access token",
50
+ description: "Reaches every endpoint and mints the API keys bindings need.",
51
+ secret: true,
52
+ optional: true,
53
+ },
54
+ { name: "teamId", label: "E2B team id, if not your default team", optional: true },
55
+ {
56
+ name: "apiKey",
57
+ label: "E2B API key (e2b_…)",
58
+ description: "Only without an access token: enough for resources, not for bindings.",
59
+ secret: true,
60
+ optional: true,
61
+ },
62
+ { name: "domain", label: "E2B domain", optional: true, placeholder: DEFAULT_DOMAIN },
63
+ ];
64
+ const storedConfig = (values) => ({
65
+ method: "stored",
66
+ ...Object.fromEntries(Object.entries(values).flatMap(([key, value]) => {
67
+ const text = storedValueText(value);
68
+ return text === undefined ? [] : [[key, text]];
69
+ })),
70
+ });
71
+ const grantOf = (config) => ({
72
+ email: config.email,
73
+ access: Redacted.make(config.access),
74
+ refresh: Redacted.make(config.refresh),
75
+ tokenEndpoint: config.tokenEndpoint,
76
+ revokeEndpoint: config.revokeEndpoint,
77
+ clientId: config.clientId,
78
+ expires: config.expires,
79
+ });
80
+ const withGrant = (config, grant) => ({
81
+ ...config,
82
+ access: Redacted.value(grant.access),
83
+ refresh: Redacted.value(grant.refresh),
84
+ expires: grant.expires,
85
+ });
86
+ /** The team the token acts on: its default team, as `e2b auth login` picks it. */
87
+ const defaultTeam = (access, domain) => auth.listTeams({}).pipe(Effect.provide(Layer.mergeAll(e2bCredentials({ accessToken: access, domain }), FetchHttpClient.layer)), Effect.flatMap((teams) => {
88
+ const team = teams.find((t) => t.isDefault) ?? (teams.length === 1 ? teams[0] : undefined);
89
+ return team === undefined
90
+ ? Effect.fail(AuthError.make({ message: "E2B: the account has no default team" }))
91
+ : Effect.succeed(team);
92
+ }), Effect.mapError((cause) => cause._tag === "AuthError"
93
+ ? cause
94
+ : AuthError.make({ message: "E2B: could not list the account's teams", cause })));
95
+ const readEnvironment = Effect.gen(function* () {
96
+ const apiKey = yield* getEnvRedacted("E2B_API_KEY");
97
+ const accessToken = yield* getEnvRedacted("E2B_ACCESS_TOKEN");
98
+ if (!apiKey && !accessToken) {
99
+ return yield* AuthError.make({
100
+ message: "E2B CI credentials not found. Set E2B_ACCESS_TOKEN (or E2B_API_KEY for resources only).",
101
+ });
102
+ }
103
+ return {
104
+ apiKey,
105
+ accessToken,
106
+ teamId: yield* getEnv("E2B_TEAM_ID"),
107
+ domain: (yield* getEnv("E2B_DOMAIN")) ?? DEFAULT_DOMAIN,
108
+ source: { type: "env" },
109
+ };
110
+ });
111
+ /**
112
+ * Layer that registers the E2B {@link AuthProvider} into the
113
+ * {@link AuthProviders} registry when built. Included in `E2B.providers()`
114
+ * so `alchemy profile edit --add E2B` can configure it.
115
+ *
116
+ * Methods:
117
+ * - `oauth`: E2B's browser login, the one `e2b auth login` runs; the access
118
+ * token refreshes itself.
119
+ * - `stored`: a pasted access token or API key.
120
+ */
121
+ export const E2BAuth = AuthProviderLayer()(E2B_AUTH_PROVIDER_NAME, Effect.gen(function* () {
122
+ const browserLogin = Effect.fn(function* (domain) {
123
+ const grant = yield* Effect.scoped(Effect.gen(function* () {
124
+ const login = yield* startLogin(domain);
125
+ return yield* browserOAuth({
126
+ provider: "E2B",
127
+ url: login.url,
128
+ callback: login.grant,
129
+ exchange: grantFromUrl,
130
+ });
131
+ }));
132
+ const team = yield* defaultTeam(grant.access, domain);
133
+ yield* Interaction.success(`E2B: logged in as ${grant.email} (team ${team.name}).`);
134
+ return {
135
+ method: "oauth",
136
+ email: grant.email,
137
+ teamId: team.teamID,
138
+ teamName: team.name,
139
+ clientId: grant.clientId,
140
+ tokenEndpoint: grant.tokenEndpoint,
141
+ revokeEndpoint: grant.revokeEndpoint,
142
+ access: Redacted.value(grant.access),
143
+ refresh: Redacted.value(grant.refresh),
144
+ expires: grant.expires,
145
+ ...(domain === DEFAULT_DOMAIN ? {} : { domain }),
146
+ };
147
+ });
148
+ const configure = (_profileName) => Interaction.select({
149
+ message: "E2B authentication method",
150
+ options: [
151
+ {
152
+ value: "oauth",
153
+ label: "Browser login",
154
+ description: "recommended — sign in to E2B; the token refreshes itself",
155
+ },
156
+ {
157
+ value: "stored",
158
+ label: "Access token or API key",
159
+ description: "paste a token and store it in the profile",
160
+ },
161
+ ],
162
+ }).pipe(mapPromptCancellation, Effect.flatMap((method) => method === "oauth"
163
+ ? browserLogin(DEFAULT_DOMAIN)
164
+ : collectFieldValues(storedFields).pipe(Effect.map(storedConfig), Effect.tap(() => Interaction.success("E2B: credentials saved.")))), Effect.mapError((cause) => cause._tag === "AuthError"
165
+ ? cause
166
+ : AuthError.make({
167
+ message: `E2B: failed to configure credentials: ${cause.message}`,
168
+ cause,
169
+ })));
170
+ const configureMethods = [
171
+ { method: "oauth", fields: [] },
172
+ { method: "stored", fields: storedFields },
173
+ ];
174
+ const configureWith = (_profileName, input) => input.method === "oauth"
175
+ ? browserLogin(DEFAULT_DOMAIN).pipe(Effect.mapError((cause) => cause._tag === "AuthError"
176
+ ? cause
177
+ : AuthError.make({ message: `E2B: browser login failed: ${cause.message}`, cause })))
178
+ : input.method === "stored"
179
+ ? validateFieldValues(E2B_AUTH_PROVIDER_NAME, storedFields, input.values).pipe(Effect.map(storedConfig), Effect.tap(() => Interaction.success("E2B: credentials saved.")))
180
+ : Effect.fail(AuthError.make({
181
+ message: `E2B: unknown method '${input.method}'. Valid methods: oauth, stored.`,
182
+ }));
183
+ /** Refreshes an OAuth grant that is within a minute of expiring. */
184
+ const freshGrant = Effect.fn(function* (profileName, config) {
185
+ const now = yield* Clock.currentTimeMillis;
186
+ if (config.expires > now + 60_000)
187
+ return config;
188
+ return withGrant(config, yield* refreshGrant(grantOf(config)).pipe(Effect.mapError((cause) => NeedsReauth.make({
189
+ provider: E2B_AUTH_PROVIDER_NAME,
190
+ profile: profileName,
191
+ message: `E2B login expired. ${refreshHint(E2B_AUTH_PROVIDER_NAME, profileName)}`,
192
+ cause,
193
+ }))));
194
+ });
195
+ const read = (profileName, config, updateConfig) => Match.value(config).pipe(Match.when({ method: "stored" }, (stored) => Effect.succeed({
196
+ apiKey: storedSecret(stored.apiKey),
197
+ accessToken: storedSecret(stored.accessToken),
198
+ teamId: stored.teamId,
199
+ domain: stored.domain ?? DEFAULT_DOMAIN,
200
+ source: { type: "stored" },
201
+ })), Match.when({ method: "oauth" }, (oauth) => Effect.gen(function* () {
202
+ const fresh = yield* freshGrant(profileName, oauth);
203
+ if (fresh !== oauth)
204
+ yield* updateConfig?.(fresh) ?? Effect.void;
205
+ return {
206
+ apiKey: undefined,
207
+ accessToken: Redacted.make(fresh.access),
208
+ teamId: fresh.teamId,
209
+ domain: fresh.domain ?? DEFAULT_DOMAIN,
210
+ expires: fresh.expires,
211
+ source: { type: "oauth", details: fresh.email },
212
+ };
213
+ })), Match.exhaustive);
214
+ const login = (profileName, config, updateConfig, reload) => Match.value(config).pipe(Match.when({ method: "stored" }, (stored) => Effect.succeed(stored)), Match.when({ method: "oauth" }, (oauth) =>
215
+ // Refresh tokens can be single-use: refresh the one stored now,
216
+ // under the lock; a refused refresh falls back to the browser.
217
+ withProfileCredentialsLock(profileName, Effect.gen(function* () {
218
+ const current = yield* reload ?? Effect.succeed(oauth);
219
+ if (current.method !== "oauth")
220
+ return current;
221
+ const refreshed = withGrant(current, yield* refreshGrant(grantOf(current)));
222
+ if (updateConfig === undefined)
223
+ return refreshed;
224
+ yield* updateConfig(refreshed);
225
+ return undefined;
226
+ })).pipe(Effect.catchTag("E2BLoginError", () => browserLogin(oauth.domain ?? DEFAULT_DOMAIN)))), Match.exhaustive, Effect.mapError((cause) => cause._tag === "AuthError"
227
+ ? cause
228
+ : AuthError.make({ message: `E2B: login failed: ${cause.message}`, cause })));
229
+ const logout = (_profileName, config) => config.method === "oauth" ? revokeGrant(grantOf(config)) : Effect.void;
230
+ const details = (profileName, config, updateConfig) => Effect.all([read(profileName, config, updateConfig), Clock.currentTimeMillis]).pipe(Effect.map(([creds, now]) => {
231
+ const lines = [];
232
+ if (config.method === "oauth")
233
+ lines.push({ key: "email", value: config.email });
234
+ if (creds.accessToken) {
235
+ lines.push({ key: "accessToken", value: displayRedacted(creds.accessToken) });
236
+ }
237
+ if (creds.expires !== undefined) {
238
+ const remaining = creds.expires - now;
239
+ lines.push({
240
+ key: "expires",
241
+ value: remaining <= 0
242
+ ? "expired"
243
+ : `in ${Duration.format(Duration.millis(remaining))} (refreshes itself)`,
244
+ });
245
+ }
246
+ if (creds.apiKey)
247
+ lines.push({ key: "apiKey", value: displayRedacted(creds.apiKey) });
248
+ lines.push({
249
+ key: "team",
250
+ value: config.method === "oauth"
251
+ ? `${config.teamName} (${config.teamId})`
252
+ : (creds.teamId ?? "default"),
253
+ });
254
+ lines.push({ key: "source", value: creds.source.type });
255
+ return { lines };
256
+ }));
257
+ return {
258
+ configSchema: E2BAuthConfigSchema,
259
+ configure,
260
+ configureWith,
261
+ configureMethods,
262
+ login,
263
+ logout,
264
+ details,
265
+ read,
266
+ readEnvironment,
267
+ environment: [
268
+ {
269
+ name: "E2B_ACCESS_TOKEN",
270
+ required: false,
271
+ secret: true,
272
+ description: "Access token. Reaches every endpoint and mints the API keys bindings and E2B.ApiKey need.",
273
+ },
274
+ {
275
+ name: "E2B_TEAM_ID",
276
+ required: false,
277
+ description: "Team id sent with the access token. Defaults to the token's default team.",
278
+ },
279
+ {
280
+ name: "E2B_API_KEY",
281
+ required: false,
282
+ secret: true,
283
+ description: "Team API key, sent as X-API-Key. Enough for resources; bindings need the access token.",
284
+ },
285
+ {
286
+ name: "E2B_DOMAIN",
287
+ required: false,
288
+ description: "E2B domain for self-hosted deployments.",
289
+ },
290
+ ],
291
+ };
292
+ }));
293
+ //# sourceMappingURL=AuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthProvider.js","sources":["../src/AuthProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolve the bundled program (the runners registered via `host.run` /
3
+ * serve) and run it with a Bun HTTP server bound to `PORT`, so the returned
4
+ * `{ fetch }` handler is actually served and `host.run` loops stay alive.
5
+ */
6
+ export declare const bootstrap: (entrypoint: unknown) => Promise<void>;
7
+ //# sourceMappingURL=Bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bootstrap.d.ts","sources":["../src/Bootstrap.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,eAAO,MAAM,SAAS,eAAgB,OAAO,KAAG,OAAO,CAAC,IAAI,CAyB3D,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Process bootstrap for `E2B.Template` programs (a Bun process serving the
3
+ * bundled program). The generated entry imports this module and the user's
4
+ * `main`, nothing else — see `alchemy/Runtime/Bootstrap` for why.
5
+ */
6
+ import { BunServices } from "@effect/platform-bun";
7
+ import { BunHttpServer } from "alchemy/Http";
8
+ import { reifyBoundConfigProvider } from "alchemy/Runtime";
9
+ import { entrypointLayer, resolveProgram, runProcess, stackFromEnv, } from "alchemy/Runtime/Bootstrap";
10
+ import * as ConfigProvider from "effect/ConfigProvider";
11
+ import * as Effect from "effect/Effect";
12
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
13
+ import * as Layer from "effect/Layer";
14
+ import * as Logger from "effect/Logger";
15
+ /**
16
+ * Resolve the bundled program (the runners registered via `host.run` /
17
+ * serve) and run it with a Bun HTTP server bound to `PORT`, so the returned
18
+ * `{ fetch }` handler is actually served and `host.run` loops stay alive.
19
+ */
20
+ export const bootstrap = (entrypoint) => {
21
+ const platform = Layer.mergeAll(BunServices.layer, FetchHttpClient.layer, Logger.layer([Logger.consolePretty()]));
22
+ const program = resolveProgram("program").pipe(Effect.provide(entrypointLayer(entrypoint).pipe(Layer.provideMerge(stackFromEnv), Layer.provideMerge(BunHttpServer()), Layer.provideMerge(platform), Layer.provideMerge(Layer.succeed(ConfigProvider.ConfigProvider, reifyBoundConfigProvider(ConfigProvider.fromEnv(), process.env))))), Effect.scoped);
23
+ return runProcess("Docker service", program);
24
+ };
25
+ //# sourceMappingURL=Bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bootstrap.js","sources":["../src/Bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAmB,EAAiB,EAAE;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAC7B,WAAW,CAAC,KAAK,EACjB,eAAe,CAAC,KAAK,EACrB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CACvC,CAAC;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,OAAO,CACZ,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAC9B,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAChC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,EACnC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,OAAO,CACX,cAAc,CAAC,cAAc,EAC7B,wBAAwB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAChE,CACF,CACF,CACF,EACD,MAAM,CAAC,MAAM,CACd,CAAC;IAEF,OAAO,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { Sandbox } from "./Sandbox.ts";
4
+ import type { ConnectedSandbox } from "./SandboxClient.ts";
5
+ /**
6
+ * Work with one {@link Sandbox} declared in the stack, from a Worker,
7
+ * Function or any other host: run commands, read and write files, open
8
+ * terminals, call its ports, snapshot or fork it. The handle has the same
9
+ * operations as the sandboxes `CreateSandbox` returns; its `sandboxId` and
10
+ * `url(port)` are Effects, read at runtime.
11
+ *
12
+ * A declared sandbox pauses when it is idle. With `autoResume` (the
13
+ * default), E2B resumes it on the next request, to one of its ports or from
14
+ * any call here. With `autoResume: false`, calls inside it (`exec`,
15
+ * `start`, `files`, `pty`) fail with `SandboxNotRunning` until you call
16
+ * `resume()`.
17
+ *
18
+ * The host gets its own E2B API key, minted at deploy and revoked when the
19
+ * host is destroyed. E2B keys are not scoped, so the key reaches the whole
20
+ * team; it is never the deployer's own.
21
+ *
22
+ * ### Running commands in a dev box
23
+ * **Example:** Pull and test on request
24
+ * ```typescript
25
+ * const devBox = yield* E2B.ConnectSandbox(DevBox);
26
+ * return {
27
+ * fetch: Effect.gen(function* () {
28
+ * yield* devBox.resume({ timeout: "10 minutes" });
29
+ * const test = yield* devBox.exec("git pull && npm test", { cwd: "/home/user/repo" });
30
+ * return yield* HttpServerResponse.json(test);
31
+ * }),
32
+ * };
33
+ * ```
34
+ *
35
+ * ### Streaming a process
36
+ * **Example:** Stream a build's output
37
+ * ```typescript
38
+ * const build = yield* devBox.start("npm run build", { cwd: "/home/user/repo" });
39
+ * const output = build.output.pipe(Stream.map((chunk) => chunk.data));
40
+ * ```
41
+ *
42
+ * ### Calling a program in the sandbox
43
+ * **Example:** Call port 3000
44
+ * ```typescript
45
+ * const port = yield* api.getTcpPort(3000);
46
+ * const response = yield* port.fetch(HttpClientRequest.get("/health"));
47
+ * ```
48
+ *
49
+ * **Example:** Proxy the Worker's request to port 3000
50
+ * ```typescript
51
+ * const port = yield* api.getTcpPort(3000);
52
+ * return yield* port.fetch(yield* HttpServerRequest);
53
+ * ```
54
+ *
55
+ * ### Pausing it early
56
+ * **Example:** Pause when the work is done
57
+ * ```typescript
58
+ * yield* devBox.pause();
59
+ * ```
60
+ *
61
+ * @binding
62
+ * @product Sandbox
63
+ */
64
+ export interface ConnectSandbox extends Binding.Service<ConnectSandbox, "E2B.ConnectSandbox", (sandbox: Sandbox) => Effect.Effect<ConnectedSandbox>> {
65
+ }
66
+ export declare const ConnectSandbox: ConnectSandbox;
67
+ //# sourceMappingURL=ConnectSandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSandbox.d.ts","sources":["../src/ConnectSandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,OAAO,CACrD,cAAc,EACd,oBAAoB,EACpB,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACtD;CAAG;AAEJ,eAAO,MAAM,cAAc,gBAAwD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const ConnectSandbox = Binding.Service("E2B.ConnectSandbox");
3
+ //# sourceMappingURL=ConnectSandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSandbox.js","sources":["../src/ConnectSandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAsE3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAiB,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ConnectSandbox } from "./ConnectSandbox.ts";
3
+ /**
4
+ * HTTP implementation of {@link ConnectSandbox}: E2B's control plane with
5
+ * the host's key, and envd inside the sandbox with the sandbox's own token.
6
+ * Works on any host.
7
+ *
8
+ * ### Provide the layer
9
+ * **Example:** On a Cloudflare Worker
10
+ * ```typescript
11
+ * Effect.gen(function* () {
12
+ * const devBox = yield* E2B.ConnectSandbox(DevBox);
13
+ * // ...
14
+ * }).pipe(Effect.provide(E2B.ConnectSandboxHttp))
15
+ * ```
16
+ *
17
+ * @layer
18
+ * @product Sandbox
19
+ * @provides E2B.ConnectSandbox
20
+ */
21
+ export declare const ConnectSandboxHttp: Layer.Layer<ConnectSandbox, never, never>;
22
+ //# sourceMappingURL=ConnectSandboxHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSandboxHttp.d.ts","sources":["../src/ConnectSandboxHttp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,2CAU9B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { ConnectSandbox } from "./ConnectSandbox.js";
4
+ import { bindE2B } from "./E2BBindings.js";
5
+ import { makeConnectedSandbox } from "./internal/SandboxHandle.js";
6
+ /**
7
+ * HTTP implementation of {@link ConnectSandbox}: E2B's control plane with
8
+ * the host's key, and envd inside the sandbox with the sandbox's own token.
9
+ * Works on any host.
10
+ *
11
+ * ### Provide the layer
12
+ * **Example:** On a Cloudflare Worker
13
+ * ```typescript
14
+ * Effect.gen(function* () {
15
+ * const devBox = yield* E2B.ConnectSandbox(DevBox);
16
+ * // ...
17
+ * }).pipe(Effect.provide(E2B.ConnectSandboxHttp))
18
+ * ```
19
+ *
20
+ * @layer
21
+ * @product Sandbox
22
+ * @provides E2B.ConnectSandbox
23
+ */
24
+ export const ConnectSandboxHttp = Layer.succeed(ConnectSandbox, Effect.fn("E2B.ConnectSandbox")(function* (sandbox) {
25
+ const auth = yield* bindE2B;
26
+ const sandboxId = yield* sandbox.sandboxId.asEffect();
27
+ const trafficToken = yield* sandbox.trafficAccessToken.asEffect();
28
+ return makeConnectedSandbox(auth, sandboxId, trafficToken);
29
+ }));
30
+ //# sourceMappingURL=ConnectSandboxHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSandboxHttp.js","sources":["../src/ConnectSandboxHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAC7C,cAAc,EACd,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAgB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;IAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAE,OAAO,CAAC,SAA0C,CAAC,QAAQ,EAAE,CAAC;IACxF,MAAM,YAAY,GAAG,KAAK,CAAC,CACzB,OAAO,CAAC,kBACT,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC,CAAC,CACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as Contributions from "alchemy/Contributions";
2
+ declare const _default: {
3
+ readonly name: "e2b";
4
+ readonly auth: Contributions.Lazy<import("effect/Layer").Layer<never, never, import("alchemy/Auth/Registry").AuthProviders | import("effect/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("effect/crypto/SecureRandom").SecureRandom>>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=Contributions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Contributions.d.ts","sources":["../src/Contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;;;;;AAEvD,wBAMG"}
@@ -0,0 +1,6 @@
1
+ import * as Contributions from "alchemy/Contributions";
2
+ export default Contributions.make({
3
+ name: "e2b",
4
+ auth: Contributions.lazy(() => import("./AuthProvider.js"), (module) => module.E2BAuth),
5
+ });
6
+ //# sourceMappingURL=Contributions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Contributions.js","sources":["../src/Contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AAEvD,eAAe,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,aAAa,CAAC,IAAI,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,EACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAC3B;CACF,CAAC,CAAC"}