computesdk 1.18.2 → 1.20.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/dist/index.d.mts +477 -286
- package/dist/index.d.ts +477 -286
- package/dist/index.js +126 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +124 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1333,6 +1333,7 @@ var Server = class {
|
|
|
1333
1333
|
this.listHandler = handlers.list;
|
|
1334
1334
|
this.retrieveHandler = handlers.retrieve;
|
|
1335
1335
|
this.stopHandler = handlers.stop;
|
|
1336
|
+
this.deleteHandler = handlers.delete;
|
|
1336
1337
|
this.restartHandler = handlers.restart;
|
|
1337
1338
|
this.updateStatusHandler = handlers.updateStatus;
|
|
1338
1339
|
this.logsHandler = handlers.logs;
|
|
@@ -1398,12 +1399,19 @@ var Server = class {
|
|
|
1398
1399
|
return response.data.server;
|
|
1399
1400
|
}
|
|
1400
1401
|
/**
|
|
1401
|
-
* Stop a server by slug
|
|
1402
|
+
* Stop a server by slug (non-destructive)
|
|
1402
1403
|
* @param slug - The server slug
|
|
1403
1404
|
*/
|
|
1404
1405
|
async stop(slug) {
|
|
1405
1406
|
await this.stopHandler(slug);
|
|
1406
1407
|
}
|
|
1408
|
+
/**
|
|
1409
|
+
* Delete a server config by slug (stops + removes persistence)
|
|
1410
|
+
* @param slug - The server slug
|
|
1411
|
+
*/
|
|
1412
|
+
async delete(slug) {
|
|
1413
|
+
await this.deleteHandler(slug);
|
|
1414
|
+
}
|
|
1407
1415
|
/**
|
|
1408
1416
|
* Restart a server by slug
|
|
1409
1417
|
* @param slug - The server slug
|
|
@@ -1873,8 +1881,8 @@ var Child = class {
|
|
|
1873
1881
|
* Create a new child sandbox
|
|
1874
1882
|
* @returns Child sandbox info including URL and subdomain
|
|
1875
1883
|
*/
|
|
1876
|
-
async create() {
|
|
1877
|
-
return this.createHandler();
|
|
1884
|
+
async create(options) {
|
|
1885
|
+
return this.createHandler(options);
|
|
1878
1886
|
}
|
|
1879
1887
|
/**
|
|
1880
1888
|
* List all child sandboxes
|
|
@@ -2196,6 +2204,9 @@ var Sandbox = class {
|
|
|
2196
2204
|
stop: async (slug) => {
|
|
2197
2205
|
await this.stopServer(slug);
|
|
2198
2206
|
},
|
|
2207
|
+
delete: async (slug) => {
|
|
2208
|
+
await this.deleteServer(slug);
|
|
2209
|
+
},
|
|
2199
2210
|
restart: async (slug) => this.restartServer(slug),
|
|
2200
2211
|
updateStatus: async (slug, status) => {
|
|
2201
2212
|
await this.updateServerStatus(slug, status);
|
|
@@ -2248,7 +2259,7 @@ var Sandbox = class {
|
|
|
2248
2259
|
info: async () => this.getAuthInfo()
|
|
2249
2260
|
});
|
|
2250
2261
|
this.child = new Child({
|
|
2251
|
-
create: async () => this.createSandbox(),
|
|
2262
|
+
create: async (options) => this.createSandbox(options),
|
|
2252
2263
|
list: async () => this.listSandboxes(),
|
|
2253
2264
|
retrieve: async (subdomain) => this.getSandbox(subdomain),
|
|
2254
2265
|
destroy: async (subdomain, deleteFiles) => this.deleteSandbox(subdomain, deleteFiles)
|
|
@@ -3111,6 +3122,12 @@ API request failed (${response.status}): ${error}`
|
|
|
3111
3122
|
* @param options.path - Working directory (optional)
|
|
3112
3123
|
* @param options.env_file - Path to .env file relative to path (optional)
|
|
3113
3124
|
* @param options.environment - Inline environment variables (merged with env_file if both provided)
|
|
3125
|
+
* @param options.port - Requested port (preallocated before start)
|
|
3126
|
+
* @param options.strict_port - If true, fail instead of auto-incrementing when port is taken
|
|
3127
|
+
* @param options.autostart - Auto-start on daemon boot (default: true)
|
|
3128
|
+
* @param options.overlay - Inline overlay to create before starting
|
|
3129
|
+
* @param options.overlays - Additional overlays to create before starting
|
|
3130
|
+
* @param options.depends_on - Overlay IDs this server depends on
|
|
3114
3131
|
* @param options.restart_policy - When to automatically restart: 'never' (default), 'on-failure', 'always'
|
|
3115
3132
|
* @param options.max_restarts - Maximum restart attempts, 0 = unlimited (default: 0)
|
|
3116
3133
|
* @param options.restart_delay_ms - Delay between restart attempts in milliseconds (default: 1000)
|
|
@@ -3137,6 +3154,18 @@ API request failed (${response.status}): ${error}`
|
|
|
3137
3154
|
* restart_delay_ms: 2000,
|
|
3138
3155
|
* stop_timeout_ms: 5000,
|
|
3139
3156
|
* });
|
|
3157
|
+
*
|
|
3158
|
+
* // With inline overlay dependencies
|
|
3159
|
+
* await sandbox.startServer({
|
|
3160
|
+
* slug: 'web',
|
|
3161
|
+
* start: 'npm run dev',
|
|
3162
|
+
* path: '/app',
|
|
3163
|
+
* overlay: {
|
|
3164
|
+
* source: '/templates/nextjs',
|
|
3165
|
+
* target: 'app',
|
|
3166
|
+
* strategy: 'smart',
|
|
3167
|
+
* },
|
|
3168
|
+
* });
|
|
3140
3169
|
* ```
|
|
3141
3170
|
*/
|
|
3142
3171
|
async startServer(options) {
|
|
@@ -3153,17 +3182,26 @@ API request failed (${response.status}): ${error}`
|
|
|
3153
3182
|
return this.request(`/servers/${encodeURIComponent(slug)}`);
|
|
3154
3183
|
}
|
|
3155
3184
|
/**
|
|
3156
|
-
* Stop a managed server
|
|
3185
|
+
* Stop a managed server (non-destructive)
|
|
3157
3186
|
* @param slug - Server slug
|
|
3158
3187
|
*/
|
|
3159
3188
|
async stopServer(slug) {
|
|
3160
3189
|
return this.request(
|
|
3161
|
-
`/servers/${encodeURIComponent(slug)}`,
|
|
3190
|
+
`/servers/${encodeURIComponent(slug)}/stop`,
|
|
3162
3191
|
{
|
|
3163
|
-
method: "
|
|
3192
|
+
method: "POST"
|
|
3164
3193
|
}
|
|
3165
3194
|
);
|
|
3166
3195
|
}
|
|
3196
|
+
/**
|
|
3197
|
+
* Delete a managed server configuration
|
|
3198
|
+
* @param slug - Server slug
|
|
3199
|
+
*/
|
|
3200
|
+
async deleteServer(slug) {
|
|
3201
|
+
await this.request(`/servers/${encodeURIComponent(slug)}`, {
|
|
3202
|
+
method: "DELETE"
|
|
3203
|
+
});
|
|
3204
|
+
}
|
|
3167
3205
|
/**
|
|
3168
3206
|
* Restart a managed server
|
|
3169
3207
|
* @param slug - Server slug
|
|
@@ -3206,15 +3244,29 @@ API request failed (${response.status}): ${error}`
|
|
|
3206
3244
|
);
|
|
3207
3245
|
}
|
|
3208
3246
|
// ============================================================================
|
|
3247
|
+
// Ready Management
|
|
3248
|
+
// ============================================================================
|
|
3249
|
+
/**
|
|
3250
|
+
* Get readiness status for autostarted servers and overlays
|
|
3251
|
+
*/
|
|
3252
|
+
async ready() {
|
|
3253
|
+
const response = await this.request("/ready");
|
|
3254
|
+
return {
|
|
3255
|
+
ready: response.ready,
|
|
3256
|
+
servers: response.servers ?? [],
|
|
3257
|
+
overlays: response.overlays ?? []
|
|
3258
|
+
};
|
|
3259
|
+
}
|
|
3260
|
+
// ============================================================================
|
|
3209
3261
|
// Sandbox Management
|
|
3210
3262
|
// ============================================================================
|
|
3211
3263
|
/**
|
|
3212
3264
|
* Create a new sandbox environment
|
|
3213
3265
|
*/
|
|
3214
|
-
async createSandbox() {
|
|
3266
|
+
async createSandbox(options) {
|
|
3215
3267
|
return this.request("/sandboxes", {
|
|
3216
3268
|
method: "POST",
|
|
3217
|
-
body: JSON.stringify({})
|
|
3269
|
+
body: JSON.stringify(options || {})
|
|
3218
3270
|
});
|
|
3219
3271
|
}
|
|
3220
3272
|
/**
|
|
@@ -3448,6 +3500,42 @@ API request failed (${response.status}): ${error}`
|
|
|
3448
3500
|
}
|
|
3449
3501
|
};
|
|
3450
3502
|
|
|
3503
|
+
// src/setup.ts
|
|
3504
|
+
var encodeBase64 = (value) => {
|
|
3505
|
+
if (typeof Buffer !== "undefined") {
|
|
3506
|
+
return Buffer.from(value, "utf8").toString("base64");
|
|
3507
|
+
}
|
|
3508
|
+
if (typeof btoa !== "undefined" && typeof TextEncoder !== "undefined") {
|
|
3509
|
+
const bytes = new TextEncoder().encode(value);
|
|
3510
|
+
let binary = "";
|
|
3511
|
+
for (const byte of bytes) {
|
|
3512
|
+
binary += String.fromCharCode(byte);
|
|
3513
|
+
}
|
|
3514
|
+
return btoa(binary);
|
|
3515
|
+
}
|
|
3516
|
+
throw new Error("Base64 encoding is not supported in this environment.");
|
|
3517
|
+
};
|
|
3518
|
+
var buildSetupPayload = (options) => {
|
|
3519
|
+
const overlays = options.overlays?.map((overlay) => {
|
|
3520
|
+
const { source, target, ignore, strategy } = overlay;
|
|
3521
|
+
return {
|
|
3522
|
+
source,
|
|
3523
|
+
target,
|
|
3524
|
+
ignore,
|
|
3525
|
+
strategy
|
|
3526
|
+
};
|
|
3527
|
+
});
|
|
3528
|
+
const servers = options.servers;
|
|
3529
|
+
return {
|
|
3530
|
+
overlays: overlays?.length ? overlays : void 0,
|
|
3531
|
+
servers: servers?.length ? servers : void 0
|
|
3532
|
+
};
|
|
3533
|
+
};
|
|
3534
|
+
var encodeSetupPayload = (options) => {
|
|
3535
|
+
const payload = buildSetupPayload(options);
|
|
3536
|
+
return encodeBase64(JSON.stringify(payload));
|
|
3537
|
+
};
|
|
3538
|
+
|
|
3451
3539
|
// src/provider-config.ts
|
|
3452
3540
|
var PROVIDER_AUTH = {
|
|
3453
3541
|
e2b: [["E2B_API_KEY"]],
|
|
@@ -4042,6 +4130,27 @@ var ComputeManager = class {
|
|
|
4042
4130
|
this.sandbox = {
|
|
4043
4131
|
/**
|
|
4044
4132
|
* Create a new sandbox
|
|
4133
|
+
*
|
|
4134
|
+
* @example
|
|
4135
|
+
* ```typescript
|
|
4136
|
+
* const sandbox = await compute.sandbox.create({
|
|
4137
|
+
* directory: '/custom/path',
|
|
4138
|
+
* overlays: [
|
|
4139
|
+
* {
|
|
4140
|
+
* source: '/templates/nextjs',
|
|
4141
|
+
* target: 'app',
|
|
4142
|
+
* strategy: 'smart',
|
|
4143
|
+
* },
|
|
4144
|
+
* ],
|
|
4145
|
+
* servers: [
|
|
4146
|
+
* {
|
|
4147
|
+
* slug: 'web',
|
|
4148
|
+
* start: 'npm run dev',
|
|
4149
|
+
* path: '/app',
|
|
4150
|
+
* },
|
|
4151
|
+
* ],
|
|
4152
|
+
* });
|
|
4153
|
+
* ```
|
|
4045
4154
|
*/
|
|
4046
4155
|
create: async (options) => {
|
|
4047
4156
|
const config = this.getGatewayConfig();
|
|
@@ -4052,7 +4161,7 @@ var ComputeManager = class {
|
|
|
4052
4161
|
if (!result.success || !result.data) {
|
|
4053
4162
|
throw new Error(`Gateway returned invalid response`);
|
|
4054
4163
|
}
|
|
4055
|
-
const { sandboxId, url, token, provider, metadata, name, namespace } = result.data;
|
|
4164
|
+
const { sandboxId, url, token, provider, metadata, name, namespace, overlays, servers } = result.data;
|
|
4056
4165
|
const sandbox = new Sandbox({
|
|
4057
4166
|
sandboxUrl: url,
|
|
4058
4167
|
sandboxId,
|
|
@@ -4061,7 +4170,9 @@ var ComputeManager = class {
|
|
|
4061
4170
|
metadata: {
|
|
4062
4171
|
...metadata,
|
|
4063
4172
|
...name && { name },
|
|
4064
|
-
...namespace && { namespace }
|
|
4173
|
+
...namespace && { namespace },
|
|
4174
|
+
...overlays && { overlays },
|
|
4175
|
+
...servers && { servers }
|
|
4065
4176
|
},
|
|
4066
4177
|
WebSocket: config.WebSocket || globalThis.WebSocket,
|
|
4067
4178
|
destroyHandler: async () => {
|
|
@@ -4299,10 +4410,12 @@ export {
|
|
|
4299
4410
|
TerminalInstance,
|
|
4300
4411
|
autoConfigureCompute,
|
|
4301
4412
|
buildProviderHeaders,
|
|
4413
|
+
buildSetupPayload,
|
|
4302
4414
|
compute,
|
|
4303
4415
|
decodeBinaryMessage,
|
|
4304
4416
|
detectProvider,
|
|
4305
4417
|
encodeBinaryMessage,
|
|
4418
|
+
encodeSetupPayload,
|
|
4306
4419
|
getMissingEnvVars,
|
|
4307
4420
|
getProviderConfigFromEnv,
|
|
4308
4421
|
getProviderHeaders,
|