@solarisdk/e2b-compat 0.0.0-stage → 0.1.0
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.
- package/COMPAT.md +88 -0
- package/LICENSE +17 -0
- package/LICENSE-E2B +9 -0
- package/NOTICE +13 -0
- package/README.md +67 -2
- package/dist/box.d.ts +28 -0
- package/dist/box.d.ts.map +1 -0
- package/dist/box.js +102 -0
- package/dist/box.js.map +1 -0
- package/dist/code-interpreter.d.ts +157 -0
- package/dist/code-interpreter.d.ts.map +1 -0
- package/dist/code-interpreter.js +357 -0
- package/dist/code-interpreter.js.map +1 -0
- package/dist/commands.d.ts +141 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +302 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +79 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +159 -0
- package/dist/errors.js.map +1 -0
- package/dist/filesystem.d.ts +99 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +245 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/sandbox.d.ts +190 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +431 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/template.d.ts +187 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +360 -0
- package/dist/template.js.map +1 -0
- package/package.json +52 -4
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Image } from "@solarisdk/core";
|
|
2
|
+
import { type Conn, type ConnectionOpts } from "./config.js";
|
|
3
|
+
export type PathLike = string | URL;
|
|
4
|
+
export type LogEntryLevel = "debug" | "info" | "warn" | "error";
|
|
5
|
+
export declare class LogEntry {
|
|
6
|
+
readonly timestamp: Date;
|
|
7
|
+
readonly level: LogEntryLevel;
|
|
8
|
+
readonly message: string;
|
|
9
|
+
constructor(timestamp: Date, level: LogEntryLevel, message: string);
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
export declare class LogEntryStart extends LogEntry {
|
|
13
|
+
constructor(timestamp: Date, message: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class LogEntryEnd extends LogEntry {
|
|
16
|
+
constructor(timestamp: Date, message: string);
|
|
17
|
+
}
|
|
18
|
+
export declare function defaultBuildLogger(options?: {
|
|
19
|
+
minLevel?: LogEntryLevel;
|
|
20
|
+
}): (logEntry: LogEntry) => void;
|
|
21
|
+
export declare class ReadyCmd {
|
|
22
|
+
private readonly cmd;
|
|
23
|
+
constructor(cmd: string);
|
|
24
|
+
getCmd(): string;
|
|
25
|
+
}
|
|
26
|
+
export declare const waitForPort: (port: number) => ReadyCmd;
|
|
27
|
+
export declare const waitForURL: (url: string, statusCode?: number) => ReadyCmd;
|
|
28
|
+
export declare const waitForProcess: (processName: string) => ReadyCmd;
|
|
29
|
+
export declare const waitForFile: (filename: string) => ReadyCmd;
|
|
30
|
+
export declare const waitForTimeout: (timeout: number) => ReadyCmd;
|
|
31
|
+
export type TemplateOptions = {
|
|
32
|
+
fileContextPath?: PathLike;
|
|
33
|
+
fileIgnorePatterns?: string[];
|
|
34
|
+
};
|
|
35
|
+
export type BasicBuildOptions = {
|
|
36
|
+
alias: string;
|
|
37
|
+
tags?: string[];
|
|
38
|
+
cpuCount?: number;
|
|
39
|
+
memoryMB?: number;
|
|
40
|
+
minFreeDiskMb?: number;
|
|
41
|
+
skipCache?: boolean;
|
|
42
|
+
onBuildLogs?: (logEntry: LogEntry) => void;
|
|
43
|
+
};
|
|
44
|
+
export type BuildOptions = ConnectionOpts & BasicBuildOptions;
|
|
45
|
+
export type BuildInfo = {
|
|
46
|
+
alias: string;
|
|
47
|
+
name: string;
|
|
48
|
+
tags: string[];
|
|
49
|
+
templateId: string;
|
|
50
|
+
buildId: string;
|
|
51
|
+
};
|
|
52
|
+
export type TemplateBuildStatus = "building" | "waiting" | "ready" | "error";
|
|
53
|
+
export type TemplateBuildStatusResponse = {
|
|
54
|
+
buildID: string;
|
|
55
|
+
templateID: string;
|
|
56
|
+
status: TemplateBuildStatus;
|
|
57
|
+
logEntries: LogEntry[];
|
|
58
|
+
logs: string[];
|
|
59
|
+
reason?: {
|
|
60
|
+
message: string;
|
|
61
|
+
logEntries: LogEntry[];
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export type CopyItem = {
|
|
65
|
+
src: PathLike | PathLike[];
|
|
66
|
+
dest: PathLike;
|
|
67
|
+
forceUpload?: true;
|
|
68
|
+
user?: string;
|
|
69
|
+
mode?: number;
|
|
70
|
+
resolveSymlinks?: boolean;
|
|
71
|
+
gzip?: boolean;
|
|
72
|
+
};
|
|
73
|
+
export declare class TemplateBase {
|
|
74
|
+
private image;
|
|
75
|
+
private readonly ctx;
|
|
76
|
+
private final;
|
|
77
|
+
constructor(options?: TemplateOptions);
|
|
78
|
+
private base;
|
|
79
|
+
private run;
|
|
80
|
+
/** @internal */
|
|
81
|
+
_image(): Image;
|
|
82
|
+
fromDebianImage(v?: string): this;
|
|
83
|
+
fromUbuntuImage(v?: string): this;
|
|
84
|
+
fromFedoraImage(v?: string): this;
|
|
85
|
+
fromAlpineImage(v?: string): this;
|
|
86
|
+
fromArchImage(v?: string): this;
|
|
87
|
+
fromPythonImage(v?: string): this;
|
|
88
|
+
fromNodeImage(v?: string): this;
|
|
89
|
+
fromBunImage(v?: string): this;
|
|
90
|
+
/** Solari's own base sandbox image. */
|
|
91
|
+
fromBaseImage(): this;
|
|
92
|
+
fromImage(baseImage: string, credentials?: {
|
|
93
|
+
username: string;
|
|
94
|
+
password: string;
|
|
95
|
+
}): this;
|
|
96
|
+
fromTemplate(template: string): this;
|
|
97
|
+
fromDockerfile(_dockerfileContentOrPath: string): this;
|
|
98
|
+
fromAWSRegistry(_image: string, _credentials: unknown): this;
|
|
99
|
+
fromGCPRegistry(_image: string, _credentials: unknown): this;
|
|
100
|
+
copy(src: PathLike | PathLike[], dest: PathLike, options?: {
|
|
101
|
+
forceUpload?: true;
|
|
102
|
+
user?: string;
|
|
103
|
+
mode?: number;
|
|
104
|
+
resolveSymlinks?: boolean;
|
|
105
|
+
gzip?: boolean;
|
|
106
|
+
}): this;
|
|
107
|
+
copyItems(items: CopyItem[]): this;
|
|
108
|
+
remove(path: PathLike | PathLike[], options?: {
|
|
109
|
+
force?: boolean;
|
|
110
|
+
recursive?: boolean;
|
|
111
|
+
user?: string;
|
|
112
|
+
}): this;
|
|
113
|
+
rename(src: PathLike, dest: PathLike, options?: {
|
|
114
|
+
force?: boolean;
|
|
115
|
+
user?: string;
|
|
116
|
+
}): this;
|
|
117
|
+
makeDir(path: PathLike | PathLike[], options?: {
|
|
118
|
+
mode?: number;
|
|
119
|
+
user?: string;
|
|
120
|
+
}): this;
|
|
121
|
+
makeSymlink(src: PathLike, dest: PathLike, options?: {
|
|
122
|
+
user?: string;
|
|
123
|
+
force?: boolean;
|
|
124
|
+
}): this;
|
|
125
|
+
runCmd(commandOrCommands: string | string[], options?: {
|
|
126
|
+
user?: string;
|
|
127
|
+
}): this;
|
|
128
|
+
setWorkdir(workdir: PathLike): this;
|
|
129
|
+
setUser(_user: string): this;
|
|
130
|
+
pipInstall(packages?: string | string[], options?: {
|
|
131
|
+
g?: boolean;
|
|
132
|
+
}): this;
|
|
133
|
+
npmInstall(packages?: string | string[], options?: {
|
|
134
|
+
g?: boolean;
|
|
135
|
+
dev?: boolean;
|
|
136
|
+
}): this;
|
|
137
|
+
bunInstall(packages?: string | string[], options?: {
|
|
138
|
+
g?: boolean;
|
|
139
|
+
dev?: boolean;
|
|
140
|
+
}): this;
|
|
141
|
+
aptInstall(packages: string | string[], options?: {
|
|
142
|
+
noInstallRecommends?: boolean;
|
|
143
|
+
fixMissing?: boolean;
|
|
144
|
+
}): this;
|
|
145
|
+
gitClone(url: string, path?: PathLike, options?: {
|
|
146
|
+
branch?: string;
|
|
147
|
+
depth?: number;
|
|
148
|
+
user?: string;
|
|
149
|
+
}): this;
|
|
150
|
+
setEnvs(envs: Record<string, string>): this;
|
|
151
|
+
skipCache(): this;
|
|
152
|
+
addMcpServer(_servers: unknown): this;
|
|
153
|
+
betaDevContainerPrebuild(_dir: string): this;
|
|
154
|
+
betaSetDevContainerStart(_dir: string): this;
|
|
155
|
+
setStartCmd(_startCommand: string, _readyCommand: string | ReadyCmd): this;
|
|
156
|
+
setReadyCmd(_readyCommand: string | ReadyCmd): this;
|
|
157
|
+
static toJSON(_template: TemplateBase, _computeHashes?: boolean): Promise<string>;
|
|
158
|
+
static toDockerfile(_template: TemplateBase): string;
|
|
159
|
+
static build(template: TemplateBase, name: string, options?: Omit<BuildOptions, "alias">): Promise<BuildInfo>;
|
|
160
|
+
static build(template: TemplateBase, options: BuildOptions): Promise<BuildInfo>;
|
|
161
|
+
static buildInBackground(template: TemplateBase, name: string, options?: Omit<BuildOptions, "alias">): Promise<BuildInfo>;
|
|
162
|
+
static buildInBackground(template: TemplateBase, options: BuildOptions): Promise<BuildInfo>;
|
|
163
|
+
static getBuildStatus(data: Pick<BuildInfo, "templateId" | "buildId">, options?: ConnectionOpts & {
|
|
164
|
+
logsOffset?: number;
|
|
165
|
+
}): Promise<TemplateBuildStatusResponse>;
|
|
166
|
+
static exists(name: string, options?: ConnectionOpts): Promise<boolean>;
|
|
167
|
+
static aliasExists(alias: string, options?: ConnectionOpts): Promise<boolean>;
|
|
168
|
+
static assignTags(_target: string, _tags: string | string[], _o?: ConnectionOpts): Promise<never>;
|
|
169
|
+
static removeTags(_name: string, _tags: string | string[], _o?: ConnectionOpts): Promise<void>;
|
|
170
|
+
static getTags(_templateId: string, _o?: ConnectionOpts): Promise<never>;
|
|
171
|
+
}
|
|
172
|
+
/** Resolve an E2B template name (or a `tpl_` id) to a Solari template id. `base` is Solari's built-in base image. */
|
|
173
|
+
export declare function resolveTemplateId(conn: Conn, template: string): Promise<string>;
|
|
174
|
+
/** E2B's `Template` is both a factory (`Template().fromImage(...)`) and a holder of statics (`Template.build(...)`). */
|
|
175
|
+
export declare const Template: ((options?: TemplateOptions) => TemplateBase) & {
|
|
176
|
+
build: typeof TemplateBase.build;
|
|
177
|
+
buildInBackground: typeof TemplateBase.buildInBackground;
|
|
178
|
+
getBuildStatus: typeof TemplateBase.getBuildStatus;
|
|
179
|
+
exists: typeof TemplateBase.exists;
|
|
180
|
+
aliasExists: typeof TemplateBase.aliasExists;
|
|
181
|
+
assignTags: typeof TemplateBase.assignTags;
|
|
182
|
+
removeTags: typeof TemplateBase.removeTags;
|
|
183
|
+
getTags: typeof TemplateBase.getTags;
|
|
184
|
+
toJSON: typeof TemplateBase.toJSON;
|
|
185
|
+
toDockerfile: typeof TemplateBase.toDockerfile;
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
package/dist/template.js
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
// E2B `Template` builder, compiled onto Solari's Image/TemplateClient. Template names resolve to Solari template ids.
|
|
2
|
+
// Not supported (throws): start/ready commands, setUser, tags, private-registry bases, Dockerfile input (see COMPAT.md).
|
|
3
|
+
import { statSync } from "node:fs";
|
|
4
|
+
import { resolve as resolvePath } from "node:path";
|
|
5
|
+
import { Image, TemplateClient } from "@solarisdk/core";
|
|
6
|
+
import { resolveConn } from "./config.js";
|
|
7
|
+
import { InvalidArgumentError, SolariCompatUnsupported, TemplateError, BuildError, translateError } from "./errors.js";
|
|
8
|
+
export class LogEntry {
|
|
9
|
+
timestamp;
|
|
10
|
+
level;
|
|
11
|
+
message;
|
|
12
|
+
constructor(timestamp, level, message) {
|
|
13
|
+
this.timestamp = timestamp;
|
|
14
|
+
this.level = level;
|
|
15
|
+
this.message = message;
|
|
16
|
+
}
|
|
17
|
+
toString() {
|
|
18
|
+
return `[${this.timestamp.toISOString()}] [${this.level}] ${this.message}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class LogEntryStart extends LogEntry {
|
|
22
|
+
constructor(timestamp, message) {
|
|
23
|
+
super(timestamp, "debug", message);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class LogEntryEnd extends LogEntry {
|
|
27
|
+
constructor(timestamp, message) {
|
|
28
|
+
super(timestamp, "debug", message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function defaultBuildLogger(options) {
|
|
32
|
+
const order = ["debug", "info", "warn", "error"];
|
|
33
|
+
const min = order.indexOf(options?.minLevel ?? "info");
|
|
34
|
+
return (e) => {
|
|
35
|
+
if (order.indexOf(e.level) >= min)
|
|
36
|
+
console.log(e.toString());
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export class ReadyCmd {
|
|
40
|
+
cmd;
|
|
41
|
+
constructor(cmd) {
|
|
42
|
+
this.cmd = cmd;
|
|
43
|
+
}
|
|
44
|
+
getCmd() {
|
|
45
|
+
return this.cmd;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export const waitForPort = (port) => new ReadyCmd(`ss -tuln | grep :${port}`);
|
|
49
|
+
export const waitForURL = (url, statusCode = 200) => new ReadyCmd(`curl -s -o /dev/null -w "%{http_code}" ${url} | grep -q "${statusCode}"`);
|
|
50
|
+
export const waitForProcess = (processName) => new ReadyCmd(`pgrep ${processName} > /dev/null`);
|
|
51
|
+
export const waitForFile = (filename) => new ReadyCmd(`[ -f ${filename} ]`);
|
|
52
|
+
export const waitForTimeout = (timeout) => new ReadyCmd(`sleep ${Math.max(1, Math.floor(timeout / 1000))}`);
|
|
53
|
+
const str = (p) => (p instanceof URL ? p.pathname : p);
|
|
54
|
+
const arr = (v) => (Array.isArray(v) ? v : [v]);
|
|
55
|
+
const q = (s) => `'${s.replace(/'/g, `'\\''`)}'`;
|
|
56
|
+
const IMAGES = {
|
|
57
|
+
fromDebianImage: (v) => `debian:${v ?? "stable"}`,
|
|
58
|
+
fromUbuntuImage: (v) => `ubuntu:${v ?? "latest"}`,
|
|
59
|
+
fromFedoraImage: (v) => `fedora:${v ?? "44"}`,
|
|
60
|
+
fromAlpineImage: (v) => `alpine:${v ?? "3.24"}`,
|
|
61
|
+
fromArchImage: (v) => `archlinux:${v ?? "latest"}`,
|
|
62
|
+
fromPythonImage: (v) => `python:${v ?? "3"}`,
|
|
63
|
+
fromNodeImage: (v) => `node:${v ?? "lts"}`,
|
|
64
|
+
fromBunImage: (v) => `oven/bun:${v ?? "latest"}`,
|
|
65
|
+
};
|
|
66
|
+
/** Split `name:tag`. Solari templates are not versioned, so only the default tags are accepted. */
|
|
67
|
+
function splitName(raw) {
|
|
68
|
+
const i = raw.lastIndexOf(":");
|
|
69
|
+
if (i < 0)
|
|
70
|
+
return raw;
|
|
71
|
+
const tag = raw.slice(i + 1);
|
|
72
|
+
if (tag === "latest" || tag === "default")
|
|
73
|
+
return raw.slice(0, i);
|
|
74
|
+
throw new SolariCompatUnsupported(`template tag "${tag}"`, "Solari templates are not versioned; build under a different name instead");
|
|
75
|
+
}
|
|
76
|
+
export class TemplateBase {
|
|
77
|
+
image;
|
|
78
|
+
ctx;
|
|
79
|
+
final = false;
|
|
80
|
+
constructor(options = {}) {
|
|
81
|
+
this.ctx = options.fileContextPath ? resolvePath(str(options.fileContextPath)) : process.cwd();
|
|
82
|
+
}
|
|
83
|
+
base() {
|
|
84
|
+
if (!this.image)
|
|
85
|
+
throw new InvalidArgumentError("Choose a base image first (fromImage, fromTemplate, fromBaseImage, …)");
|
|
86
|
+
return this.image;
|
|
87
|
+
}
|
|
88
|
+
run(...cmds) {
|
|
89
|
+
this.base().runCommands(...cmds);
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/** @internal */
|
|
93
|
+
_image() {
|
|
94
|
+
return this.base();
|
|
95
|
+
}
|
|
96
|
+
// --- base images --------------------------------------------------------------------------------------------
|
|
97
|
+
fromDebianImage(v) { return this.fromImage(IMAGES.fromDebianImage(v)); }
|
|
98
|
+
fromUbuntuImage(v) { return this.fromImage(IMAGES.fromUbuntuImage(v)); }
|
|
99
|
+
fromFedoraImage(v) { return this.fromImage(IMAGES.fromFedoraImage(v)); }
|
|
100
|
+
fromAlpineImage(v) { return this.fromImage(IMAGES.fromAlpineImage(v)); }
|
|
101
|
+
fromArchImage(v) { return this.fromImage(IMAGES.fromArchImage(v)); }
|
|
102
|
+
fromPythonImage(v) { return this.fromImage(IMAGES.fromPythonImage(v)); }
|
|
103
|
+
fromNodeImage(v) { return this.fromImage(IMAGES.fromNodeImage(v)); }
|
|
104
|
+
fromBunImage(v) { return this.fromImage(IMAGES.fromBunImage(v)); }
|
|
105
|
+
/** Solari's own base sandbox image. */
|
|
106
|
+
fromBaseImage() {
|
|
107
|
+
this.image = Image.fromTemplate("base");
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
fromImage(baseImage, credentials) {
|
|
111
|
+
if (credentials)
|
|
112
|
+
throw new SolariCompatUnsupported("fromImage credentials", "only public registry images can be used as a base");
|
|
113
|
+
this.image = Image.fromImage(baseImage);
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
fromTemplate(template) {
|
|
117
|
+
this.image = Image.fromTemplate(splitName(template));
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
fromDockerfile(_dockerfileContentOrPath) {
|
|
121
|
+
throw new SolariCompatUnsupported("fromDockerfile", "use fromImage(...) plus the builder steps");
|
|
122
|
+
}
|
|
123
|
+
fromAWSRegistry(_image, _credentials) {
|
|
124
|
+
throw new SolariCompatUnsupported("fromAWSRegistry", "only public registry images can be used as a base");
|
|
125
|
+
}
|
|
126
|
+
fromGCPRegistry(_image, _credentials) {
|
|
127
|
+
throw new SolariCompatUnsupported("fromGCPRegistry", "only public registry images can be used as a base");
|
|
128
|
+
}
|
|
129
|
+
// --- steps -------------------------------------------------------------------------------------------------
|
|
130
|
+
copy(src, dest, options) {
|
|
131
|
+
if (options?.user)
|
|
132
|
+
throw new SolariCompatUnsupported("copy user");
|
|
133
|
+
const img = this.base();
|
|
134
|
+
const srcs = arr(src);
|
|
135
|
+
for (const s of srcs) {
|
|
136
|
+
const abs = resolvePath(this.ctx, str(s));
|
|
137
|
+
let isDir = false;
|
|
138
|
+
try {
|
|
139
|
+
isDir = statSync(abs).isDirectory();
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
throw new InvalidArgumentError(`copy: ${abs} does not exist`);
|
|
143
|
+
}
|
|
144
|
+
const target = srcs.length > 1 ? `${str(dest).replace(/\/+$/, "")}/${str(s).split("/").pop()}` : str(dest);
|
|
145
|
+
if (isDir)
|
|
146
|
+
img.addLocalDir(abs, target);
|
|
147
|
+
else
|
|
148
|
+
img.addLocalFile(abs, target);
|
|
149
|
+
if (options?.mode !== undefined)
|
|
150
|
+
img.runCommands(`chmod -R ${options.mode.toString(8)} ${q(target)}`);
|
|
151
|
+
}
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
copyItems(items) {
|
|
155
|
+
for (const i of items)
|
|
156
|
+
this.copy(i.src, i.dest, i);
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
remove(path, options) {
|
|
160
|
+
if (options?.user)
|
|
161
|
+
throw new SolariCompatUnsupported("remove user");
|
|
162
|
+
const flags = `${options?.recursive ? "r" : ""}${options?.force ? "f" : ""}`;
|
|
163
|
+
return this.run(`rm ${flags ? `-${flags} ` : ""}${arr(path).map((p) => q(str(p))).join(" ")}`);
|
|
164
|
+
}
|
|
165
|
+
rename(src, dest, options) {
|
|
166
|
+
if (options?.user)
|
|
167
|
+
throw new SolariCompatUnsupported("rename user");
|
|
168
|
+
return this.run(`mv ${options?.force ? "-f " : ""}${q(str(src))} ${q(str(dest))}`);
|
|
169
|
+
}
|
|
170
|
+
makeDir(path, options) {
|
|
171
|
+
if (options?.user)
|
|
172
|
+
throw new SolariCompatUnsupported("makeDir user");
|
|
173
|
+
return this.run(`mkdir -p ${options?.mode !== undefined ? `-m ${options.mode.toString(8)} ` : ""}${arr(path).map((p) => q(str(p))).join(" ")}`);
|
|
174
|
+
}
|
|
175
|
+
makeSymlink(src, dest, options) {
|
|
176
|
+
if (options?.user)
|
|
177
|
+
throw new SolariCompatUnsupported("makeSymlink user");
|
|
178
|
+
return this.run(`ln -s ${options?.force ? "-f " : ""}${q(str(src))} ${q(str(dest))}`);
|
|
179
|
+
}
|
|
180
|
+
runCmd(commandOrCommands, options) {
|
|
181
|
+
if (options?.user && options.user !== "root")
|
|
182
|
+
throw new SolariCompatUnsupported("runCmd user", "build steps run as root");
|
|
183
|
+
return this.run(...arr(commandOrCommands));
|
|
184
|
+
}
|
|
185
|
+
setWorkdir(workdir) {
|
|
186
|
+
this.base().workdir(str(workdir));
|
|
187
|
+
return this;
|
|
188
|
+
}
|
|
189
|
+
setUser(_user) {
|
|
190
|
+
throw new SolariCompatUnsupported("setUser", "Solari sandboxes run as a single user");
|
|
191
|
+
}
|
|
192
|
+
pipInstall(packages, options) {
|
|
193
|
+
const pkgs = packages === undefined ? [] : arr(packages);
|
|
194
|
+
if (pkgs.length === 0)
|
|
195
|
+
return this.run(`pip install ${options?.g === false ? "--user " : ""}.`);
|
|
196
|
+
if (options?.g === false)
|
|
197
|
+
return this.run(`pip install --user ${pkgs.map(q).join(" ")}`);
|
|
198
|
+
this.base().pipInstall(pkgs);
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
npmInstall(packages, options) {
|
|
202
|
+
const pkgs = packages === undefined ? [] : arr(packages);
|
|
203
|
+
return this.run(`npm install ${options?.g ? "-g " : ""}${options?.dev ? "--save-dev " : ""}${pkgs.map(q).join(" ")}`.trimEnd());
|
|
204
|
+
}
|
|
205
|
+
bunInstall(packages, options) {
|
|
206
|
+
const pkgs = packages === undefined ? [] : arr(packages);
|
|
207
|
+
return this.run(`bun install ${options?.g ? "-g " : ""}${options?.dev ? "--dev " : ""}${pkgs.map(q).join(" ")}`.trimEnd());
|
|
208
|
+
}
|
|
209
|
+
aptInstall(packages, options) {
|
|
210
|
+
const pkgs = arr(packages).map(q).join(" ");
|
|
211
|
+
return this.run(`apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y ${options?.noInstallRecommends ? "--no-install-recommends " : ""}${options?.fixMissing ? "--fix-missing " : ""}${pkgs}`);
|
|
212
|
+
}
|
|
213
|
+
gitClone(url, path, options) {
|
|
214
|
+
if (options?.user)
|
|
215
|
+
throw new SolariCompatUnsupported("gitClone user");
|
|
216
|
+
return this.run(`git clone ${options?.branch ? `--branch ${q(options.branch)} ` : ""}${options?.depth ? `--depth ${options.depth} ` : ""}${q(url)}${path ? ` ${q(str(path))}` : ""}`);
|
|
217
|
+
}
|
|
218
|
+
setEnvs(envs) {
|
|
219
|
+
this.base().env(envs);
|
|
220
|
+
return this;
|
|
221
|
+
}
|
|
222
|
+
skipCache() {
|
|
223
|
+
return this;
|
|
224
|
+
}
|
|
225
|
+
addMcpServer(_servers) {
|
|
226
|
+
throw new SolariCompatUnsupported("addMcpServer", "the E2B MCP gateway has no Solari equivalent");
|
|
227
|
+
}
|
|
228
|
+
betaDevContainerPrebuild(_dir) {
|
|
229
|
+
throw new SolariCompatUnsupported("betaDevContainerPrebuild");
|
|
230
|
+
}
|
|
231
|
+
betaSetDevContainerStart(_dir) {
|
|
232
|
+
throw new SolariCompatUnsupported("betaSetDevContainerStart");
|
|
233
|
+
}
|
|
234
|
+
setStartCmd(_startCommand, _readyCommand) {
|
|
235
|
+
throw new SolariCompatUnsupported("setStartCmd", "Solari templates do not run a start command; start the process after Sandbox.create with commands.run({ background: true })");
|
|
236
|
+
}
|
|
237
|
+
setReadyCmd(_readyCommand) {
|
|
238
|
+
throw new SolariCompatUnsupported("setReadyCmd", "Solari templates have no ready command");
|
|
239
|
+
}
|
|
240
|
+
// --- static API ----------------------------------------------------------------------------------------------
|
|
241
|
+
static async toJSON(_template, _computeHashes) {
|
|
242
|
+
throw new SolariCompatUnsupported("Template.toJSON");
|
|
243
|
+
}
|
|
244
|
+
static toDockerfile(_template) {
|
|
245
|
+
throw new SolariCompatUnsupported("Template.toDockerfile");
|
|
246
|
+
}
|
|
247
|
+
static async build(template, a, b) {
|
|
248
|
+
const { name, opts } = unpack(a, b);
|
|
249
|
+
const conn = resolveConn(opts);
|
|
250
|
+
const client = tplClient(conn);
|
|
251
|
+
const log = opts.onBuildLogs;
|
|
252
|
+
log?.(new LogEntryStart(new Date(), `Building template ${name}`));
|
|
253
|
+
try {
|
|
254
|
+
const view = await client.build(template._image(), buildOpts(name, opts));
|
|
255
|
+
log?.(new LogEntryEnd(new Date(), `Template ${name} is ${view.status}`));
|
|
256
|
+
return info(name, view.templateId);
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
throw buildError(e);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
static async buildInBackground(template, a, b) {
|
|
263
|
+
const { name, opts } = unpack(a, b);
|
|
264
|
+
const client = tplClient(resolveConn(opts));
|
|
265
|
+
try {
|
|
266
|
+
const r = await client.buildRaw(template._image().compile(), buildOpts(name, opts));
|
|
267
|
+
return info(name, r.templateId);
|
|
268
|
+
}
|
|
269
|
+
catch (e) {
|
|
270
|
+
throw buildError(e);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
static async getBuildStatus(data, options = {}) {
|
|
274
|
+
try {
|
|
275
|
+
const v = await tplClient(resolveConn(options)).get(data.templateId);
|
|
276
|
+
const status = v.status === "ready" ? "ready" : v.status === "failed" ? "error" : "building";
|
|
277
|
+
return { buildID: data.buildId, templateID: data.templateId, status, logEntries: [], logs: [], ...(v.error ? { reason: { message: v.error, logEntries: [] } } : {}) };
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
throw translateError(e);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
static async exists(name, options = {}) {
|
|
284
|
+
const conn = resolveConn(options);
|
|
285
|
+
return (await findTemplate(conn, splitName(name))) !== undefined;
|
|
286
|
+
}
|
|
287
|
+
static aliasExists(alias, options = {}) {
|
|
288
|
+
return TemplateBase.exists(alias, options);
|
|
289
|
+
}
|
|
290
|
+
static async assignTags(_target, _tags, _o) {
|
|
291
|
+
throw new SolariCompatUnsupported("Template.assignTags", "Solari templates are not versioned");
|
|
292
|
+
}
|
|
293
|
+
static async removeTags(_name, _tags, _o) {
|
|
294
|
+
throw new SolariCompatUnsupported("Template.removeTags", "Solari templates are not versioned");
|
|
295
|
+
}
|
|
296
|
+
static async getTags(_templateId, _o) {
|
|
297
|
+
throw new SolariCompatUnsupported("Template.getTags", "Solari templates are not versioned");
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function unpack(a, b) {
|
|
301
|
+
const opts = (typeof a === "string" ? { ...(b ?? {}), alias: a } : a);
|
|
302
|
+
if (opts.tags && opts.tags.length > 0)
|
|
303
|
+
throw new SolariCompatUnsupported("build tags", "Solari templates are not versioned");
|
|
304
|
+
return { name: splitName(opts.alias), opts };
|
|
305
|
+
}
|
|
306
|
+
function buildOpts(name, o) {
|
|
307
|
+
return {
|
|
308
|
+
name,
|
|
309
|
+
...(o.cpuCount ? { cpu: o.cpuCount } : {}),
|
|
310
|
+
...(o.memoryMB ? { memMb: o.memoryMB } : {}),
|
|
311
|
+
...(o.onBuildLogs ? { onLog: (line) => o.onBuildLogs(new LogEntry(new Date(), "info", line)) } : {}),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function info(name, templateId) {
|
|
315
|
+
return { alias: name, name, tags: [], templateId, buildId: templateId };
|
|
316
|
+
}
|
|
317
|
+
function buildError(e) {
|
|
318
|
+
const t = translateError(e);
|
|
319
|
+
return t instanceof Error && !(t instanceof SolariCompatUnsupported) ? new BuildError(t.message, { cause: e }) : t;
|
|
320
|
+
}
|
|
321
|
+
function tplClient(conn) {
|
|
322
|
+
return new TemplateClient({ apiKey: conn.apiKey, baseUrl: conn.baseUrl });
|
|
323
|
+
}
|
|
324
|
+
async function findTemplate(conn, name) {
|
|
325
|
+
const list = await tplClient(conn).list();
|
|
326
|
+
const matches = list.filter((t) => t.name === name && t.kind === "sandbox");
|
|
327
|
+
return matches.find((t) => t.status === "ready") ?? matches[0];
|
|
328
|
+
}
|
|
329
|
+
/** Resolve an E2B template name (or a `tpl_` id) to a Solari template id. `base` is Solari's built-in base image. */
|
|
330
|
+
export async function resolveTemplateId(conn, template) {
|
|
331
|
+
const name = splitName(template);
|
|
332
|
+
if (name === "base" || name.startsWith("tpl_"))
|
|
333
|
+
return name;
|
|
334
|
+
let found;
|
|
335
|
+
try {
|
|
336
|
+
found = await findTemplate(conn, name);
|
|
337
|
+
}
|
|
338
|
+
catch (e) {
|
|
339
|
+
throw translateError(e);
|
|
340
|
+
}
|
|
341
|
+
if (!found)
|
|
342
|
+
throw new TemplateError(`Template "${name}" not found. Build it with Template.build(...) first.`);
|
|
343
|
+
if (found.status !== "ready")
|
|
344
|
+
throw new TemplateError(`Template "${name}" is ${found.status}${found.error ? `: ${found.error}` : ""}`);
|
|
345
|
+
return found.templateId;
|
|
346
|
+
}
|
|
347
|
+
/** E2B's `Template` is both a factory (`Template().fromImage(...)`) and a holder of statics (`Template.build(...)`). */
|
|
348
|
+
export const Template = Object.assign((options) => new TemplateBase(options), {
|
|
349
|
+
build: TemplateBase.build.bind(TemplateBase),
|
|
350
|
+
buildInBackground: TemplateBase.buildInBackground.bind(TemplateBase),
|
|
351
|
+
getBuildStatus: TemplateBase.getBuildStatus.bind(TemplateBase),
|
|
352
|
+
exists: TemplateBase.exists.bind(TemplateBase),
|
|
353
|
+
aliasExists: TemplateBase.aliasExists.bind(TemplateBase),
|
|
354
|
+
assignTags: TemplateBase.assignTags.bind(TemplateBase),
|
|
355
|
+
removeTags: TemplateBase.removeTags.bind(TemplateBase),
|
|
356
|
+
getTags: TemplateBase.getTags.bind(TemplateBase),
|
|
357
|
+
toJSON: TemplateBase.toJSON.bind(TemplateBase),
|
|
358
|
+
toDockerfile: TemplateBase.toDockerfile.bind(TemplateBase),
|
|
359
|
+
});
|
|
360
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solarisdk/e2b-compat",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "E2B-compatible API (sandboxes and code interpreter) on top of Solari Sandbox: change the import, keep your E2B code. Not affiliated with E2B.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./code-interpreter": {
|
|
15
|
+
"types": "./dist/code-interpreter.d.ts",
|
|
16
|
+
"import": "./dist/code-interpreter.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md",
|
|
22
|
+
"COMPAT.md",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"NOTICE",
|
|
25
|
+
"LICENSE-E2B"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"typecheck": "tsc --noEmit",
|
|
30
|
+
"test": "npm run build && node --test test/*.test.mjs"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"solari",
|
|
37
|
+
"sandbox",
|
|
38
|
+
"e2b",
|
|
39
|
+
"code-interpreter",
|
|
40
|
+
"compat"
|
|
41
|
+
],
|
|
42
|
+
"license": "Apache-2.0",
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@solarisdk/core": "^0.2.0",
|
|
48
|
+
"@solarisdk/sandbox": "^0.2.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^22.0.0",
|
|
52
|
+
"typescript": "^5.6.0"
|
|
53
|
+
}
|
|
54
|
+
}
|