@hasna/sandboxes 0.1.5 → 0.1.7
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/cli/index.js +204 -14
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/sandboxes.d.ts.map +1 -1
- package/dist/db/templates.d.ts +7 -0
- package/dist/db/templates.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +254 -5
- package/dist/lib/agent-runner.d.ts.map +1 -1
- package/dist/lib/agents/claude.d.ts +10 -0
- package/dist/lib/agents/claude.d.ts.map +1 -0
- package/dist/lib/agents/codex.d.ts +10 -0
- package/dist/lib/agents/codex.d.ts.map +1 -0
- package/dist/lib/agents/gemini.d.ts +10 -0
- package/dist/lib/agents/gemini.d.ts.map +1 -0
- package/dist/lib/agents/index.d.ts +5 -0
- package/dist/lib/agents/index.d.ts.map +1 -0
- package/dist/lib/agents/opencode.d.ts +10 -0
- package/dist/lib/agents/opencode.d.ts.map +1 -0
- package/dist/lib/agents/pi.d.ts +10 -0
- package/dist/lib/agents/pi.d.ts.map +1 -0
- package/dist/lib/agents/types.d.ts +23 -0
- package/dist/lib/agents/types.d.ts.map +1 -0
- package/dist/mcp/index.js +395 -21
- package/dist/providers/daytona.d.ts +2 -0
- package/dist/providers/daytona.d.ts.map +1 -1
- package/dist/providers/e2b.d.ts +2 -0
- package/dist/providers/e2b.d.ts.map +1 -1
- package/dist/providers/modal.d.ts +2 -0
- package/dist/providers/modal.d.ts.map +1 -1
- package/dist/providers/types.d.ts +4 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/server/index.js +77 -3
- package/dist/types/index.d.ts +41 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/cli/index.js
CHANGED
|
@@ -2225,6 +2225,44 @@ var init_database = __esm(() => {
|
|
|
2225
2225
|
);
|
|
2226
2226
|
|
|
2227
2227
|
INSERT OR IGNORE INTO _migrations (id) VALUES (1);
|
|
2228
|
+
`,
|
|
2229
|
+
`
|
|
2230
|
+
ALTER TABLE sandboxes ADD COLUMN on_timeout TEXT NOT NULL DEFAULT 'terminate' CHECK(on_timeout IN ('pause', 'terminate'));
|
|
2231
|
+
ALTER TABLE sandboxes ADD COLUMN auto_resume INTEGER NOT NULL DEFAULT 0;
|
|
2232
|
+
|
|
2233
|
+
CREATE TABLE IF NOT EXISTS templates (
|
|
2234
|
+
id TEXT PRIMARY KEY,
|
|
2235
|
+
name TEXT NOT NULL UNIQUE,
|
|
2236
|
+
description TEXT,
|
|
2237
|
+
image TEXT,
|
|
2238
|
+
env_vars TEXT NOT NULL DEFAULT '{}',
|
|
2239
|
+
setup_script TEXT,
|
|
2240
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
2241
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2242
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
2243
|
+
);
|
|
2244
|
+
CREATE INDEX IF NOT EXISTS idx_templates_name ON templates(name);
|
|
2245
|
+
|
|
2246
|
+
INSERT OR IGNORE INTO _migrations (id) VALUES (2);
|
|
2247
|
+
`,
|
|
2248
|
+
`
|
|
2249
|
+
CREATE TABLE IF NOT EXISTS sandbox_sessions_new (
|
|
2250
|
+
id TEXT PRIMARY KEY,
|
|
2251
|
+
sandbox_id TEXT NOT NULL REFERENCES sandboxes(id) ON DELETE CASCADE,
|
|
2252
|
+
agent_name TEXT,
|
|
2253
|
+
agent_type TEXT,
|
|
2254
|
+
command TEXT,
|
|
2255
|
+
status TEXT NOT NULL DEFAULT 'running' CHECK(status IN ('running', 'completed', 'failed', 'killed')),
|
|
2256
|
+
exit_code INTEGER,
|
|
2257
|
+
started_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
2258
|
+
ended_at TEXT
|
|
2259
|
+
);
|
|
2260
|
+
INSERT INTO sandbox_sessions_new SELECT * FROM sandbox_sessions;
|
|
2261
|
+
DROP TABLE sandbox_sessions;
|
|
2262
|
+
ALTER TABLE sandbox_sessions_new RENAME TO sandbox_sessions;
|
|
2263
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_sandbox ON sandbox_sessions(sandbox_id);
|
|
2264
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_status ON sandbox_sessions(status);
|
|
2265
|
+
INSERT OR IGNORE INTO _migrations (id) VALUES (3);
|
|
2228
2266
|
`
|
|
2229
2267
|
];
|
|
2230
2268
|
});
|
|
@@ -2274,6 +2312,8 @@ function rowToSandbox(row) {
|
|
|
2274
2312
|
env_vars: JSON.parse(row.env_vars),
|
|
2275
2313
|
keep_alive_until: row.keep_alive_until,
|
|
2276
2314
|
project_id: row.project_id,
|
|
2315
|
+
on_timeout: row.on_timeout ?? "terminate",
|
|
2316
|
+
auto_resume: row.auto_resume === 1,
|
|
2277
2317
|
created_at: row.created_at,
|
|
2278
2318
|
updated_at: row.updated_at
|
|
2279
2319
|
};
|
|
@@ -2289,8 +2329,10 @@ function createSandbox(input) {
|
|
|
2289
2329
|
const config = JSON.stringify(input.config ?? {});
|
|
2290
2330
|
const env_vars = JSON.stringify(input.env_vars ?? {});
|
|
2291
2331
|
const project_id = input.project_id ?? null;
|
|
2292
|
-
|
|
2293
|
-
|
|
2332
|
+
const on_timeout = input.on_timeout ?? "terminate";
|
|
2333
|
+
const auto_resume = input.auto_resume ? 1 : 0;
|
|
2334
|
+
db2.query(`INSERT INTO sandboxes (id, provider, name, status, image, timeout, config, env_vars, project_id, on_timeout, auto_resume, created_at, updated_at)
|
|
2335
|
+
VALUES (?, ?, ?, 'creating', ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, provider, name, image, timeout, config, env_vars, project_id, on_timeout, auto_resume, timestamp, timestamp);
|
|
2294
2336
|
return getSandbox(id);
|
|
2295
2337
|
}
|
|
2296
2338
|
function getSandbox(id) {
|
|
@@ -2581,7 +2623,10 @@ class E2BProvider {
|
|
|
2581
2623
|
try {
|
|
2582
2624
|
const sandbox = await E2BSandbox.create({
|
|
2583
2625
|
apiKey: this.apiKey,
|
|
2584
|
-
timeoutMs: (opts?.timeout || 3600) * 1000
|
|
2626
|
+
timeoutMs: (opts?.timeout || 3600) * 1000,
|
|
2627
|
+
...opts?.onTimeout === "pause" ? {
|
|
2628
|
+
lifecycle: { onTimeout: "pause", autoResume: opts?.autoResume ?? true }
|
|
2629
|
+
} : {}
|
|
2585
2630
|
});
|
|
2586
2631
|
instanceCache.set(sandbox.sandboxId, sandbox);
|
|
2587
2632
|
return {
|
|
@@ -2690,6 +2735,23 @@ class E2BProvider {
|
|
|
2690
2735
|
async delete(sandboxId) {
|
|
2691
2736
|
await this.stop(sandboxId);
|
|
2692
2737
|
}
|
|
2738
|
+
async pause(sandboxId) {
|
|
2739
|
+
const sandbox = await this.getInstance(sandboxId);
|
|
2740
|
+
try {
|
|
2741
|
+
await sandbox.pause();
|
|
2742
|
+
instanceCache.delete(sandboxId);
|
|
2743
|
+
} catch (err) {
|
|
2744
|
+
throw new ProviderError("e2b", `Failed to pause sandbox: ${err.message}`);
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
async resume(sandboxId) {
|
|
2748
|
+
try {
|
|
2749
|
+
const sandbox = await E2BSandbox.connect(sandboxId, { apiKey: this.apiKey });
|
|
2750
|
+
instanceCache.set(sandboxId, sandbox);
|
|
2751
|
+
} catch (err) {
|
|
2752
|
+
throw new ProviderError("e2b", `Failed to resume sandbox: ${err.message}`);
|
|
2753
|
+
}
|
|
2754
|
+
}
|
|
2693
2755
|
async keepAlive(sandboxId, durationMs) {
|
|
2694
2756
|
const sandbox = await this.getInstance(sandboxId);
|
|
2695
2757
|
try {
|
|
@@ -2850,6 +2912,12 @@ class DaytonaProvider {
|
|
|
2850
2912
|
throw new ProviderError("daytona", `Failed to delete sandbox: ${err.message}`);
|
|
2851
2913
|
}
|
|
2852
2914
|
}
|
|
2915
|
+
async pause(_sandboxId) {
|
|
2916
|
+
throw new ProviderError("daytona", "Pause/resume not supported by Daytona provider");
|
|
2917
|
+
}
|
|
2918
|
+
async resume(_sandboxId) {
|
|
2919
|
+
throw new ProviderError("daytona", "Pause/resume not supported by Daytona provider");
|
|
2920
|
+
}
|
|
2853
2921
|
async keepAlive(sandboxId, durationMs) {
|
|
2854
2922
|
const sandbox = await this.getInstance(sandboxId);
|
|
2855
2923
|
try {
|
|
@@ -3072,6 +3140,12 @@ class ModalProvider {
|
|
|
3072
3140
|
async delete(sandboxId) {
|
|
3073
3141
|
await this.stop(sandboxId);
|
|
3074
3142
|
}
|
|
3143
|
+
async pause(_sandboxId) {
|
|
3144
|
+
throw new ProviderError("modal", "Pause/resume not supported by Modal provider");
|
|
3145
|
+
}
|
|
3146
|
+
async resume(_sandboxId) {
|
|
3147
|
+
throw new ProviderError("modal", "Pause/resume not supported by Modal provider");
|
|
3148
|
+
}
|
|
3075
3149
|
async keepAlive(_sandboxId, _durationMs) {}
|
|
3076
3150
|
parseCommand(command) {
|
|
3077
3151
|
const args = [];
|
|
@@ -3217,6 +3291,118 @@ var init_stream = __esm(() => {
|
|
|
3217
3291
|
listeners = new Map;
|
|
3218
3292
|
});
|
|
3219
3293
|
|
|
3294
|
+
// src/lib/agents/claude.ts
|
|
3295
|
+
class ClaudeDriver {
|
|
3296
|
+
name = "claude";
|
|
3297
|
+
requiredEnvVars = ["ANTHROPIC_API_KEY"];
|
|
3298
|
+
async install(provider, providerSandboxId) {
|
|
3299
|
+
const check = await provider.exec(providerSandboxId, "which claude 2>/dev/null || echo MISSING");
|
|
3300
|
+
if (check.stdout.trim() !== "MISSING")
|
|
3301
|
+
return;
|
|
3302
|
+
await provider.exec(providerSandboxId, "npm install -g @anthropic-ai/claude-code 2>&1 || sudo npm install -g @anthropic-ai/claude-code 2>&1");
|
|
3303
|
+
}
|
|
3304
|
+
async configure(provider, providerSandboxId, _envVars) {
|
|
3305
|
+
const config = JSON.stringify({
|
|
3306
|
+
hasCompletedOnboarding: true,
|
|
3307
|
+
hasTrustDialogAccepted: true,
|
|
3308
|
+
hasAcknowledgedCostThreshold: true
|
|
3309
|
+
});
|
|
3310
|
+
await provider.exec(providerSandboxId, `mkdir -p ~/.claude && echo '${config}' > ~/.claude.json`);
|
|
3311
|
+
}
|
|
3312
|
+
buildCommand(prompt) {
|
|
3313
|
+
return `claude --dangerously-skip-permissions -p ${JSON.stringify(prompt)}`;
|
|
3314
|
+
}
|
|
3315
|
+
}
|
|
3316
|
+
|
|
3317
|
+
// src/lib/agents/codex.ts
|
|
3318
|
+
class CodexDriver {
|
|
3319
|
+
name = "codex";
|
|
3320
|
+
requiredEnvVars = ["OPENAI_API_KEY"];
|
|
3321
|
+
async install(provider, providerSandboxId) {
|
|
3322
|
+
const check = await provider.exec(providerSandboxId, "which codex 2>/dev/null || echo MISSING");
|
|
3323
|
+
if (check.stdout.trim() !== "MISSING")
|
|
3324
|
+
return;
|
|
3325
|
+
await provider.exec(providerSandboxId, "npm install -g @openai/codex 2>&1 || sudo npm install -g @openai/codex 2>&1");
|
|
3326
|
+
}
|
|
3327
|
+
async configure(provider, providerSandboxId, _envVars) {
|
|
3328
|
+
const config = `[core]
|
|
3329
|
+
approvalMode = "full-auto"
|
|
3330
|
+
quiet = true
|
|
3331
|
+
`;
|
|
3332
|
+
await provider.exec(providerSandboxId, `mkdir -p ~/.codex && printf '${config.replace(/'/g, "'\\''")}' > ~/.codex/config.toml`);
|
|
3333
|
+
}
|
|
3334
|
+
buildCommand(prompt) {
|
|
3335
|
+
return `codex --approval-mode full-auto -q ${JSON.stringify(prompt)}`;
|
|
3336
|
+
}
|
|
3337
|
+
}
|
|
3338
|
+
|
|
3339
|
+
// src/lib/agents/gemini.ts
|
|
3340
|
+
class GeminiDriver {
|
|
3341
|
+
name = "gemini";
|
|
3342
|
+
requiredEnvVars = ["GEMINI_API_KEY"];
|
|
3343
|
+
async install(provider, providerSandboxId) {
|
|
3344
|
+
const check = await provider.exec(providerSandboxId, "which gemini 2>/dev/null || echo MISSING");
|
|
3345
|
+
if (check.stdout.trim() !== "MISSING")
|
|
3346
|
+
return;
|
|
3347
|
+
await provider.exec(providerSandboxId, "npm install -g @google/gemini-cli 2>&1 || sudo npm install -g @google/gemini-cli 2>&1");
|
|
3348
|
+
}
|
|
3349
|
+
async configure(provider, providerSandboxId, _envVars) {
|
|
3350
|
+
const settings = JSON.stringify({ theme: "Default", selectedAuthType: "gemini-api-key" });
|
|
3351
|
+
await provider.exec(providerSandboxId, `mkdir -p ~/.gemini && echo '${settings}' > ~/.gemini/settings.json`);
|
|
3352
|
+
}
|
|
3353
|
+
buildCommand(prompt) {
|
|
3354
|
+
return `gemini -p ${JSON.stringify(prompt)}`;
|
|
3355
|
+
}
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
// src/lib/agents/opencode.ts
|
|
3359
|
+
class OpenCodeDriver {
|
|
3360
|
+
name = "opencode";
|
|
3361
|
+
requiredEnvVars = [];
|
|
3362
|
+
async install(provider, providerSandboxId) {
|
|
3363
|
+
const check = await provider.exec(providerSandboxId, "which opencode 2>/dev/null || echo MISSING");
|
|
3364
|
+
if (check.stdout.trim() !== "MISSING")
|
|
3365
|
+
return;
|
|
3366
|
+
await provider.exec(providerSandboxId, "npm install -g opencode-ai 2>&1 || sudo npm install -g opencode-ai 2>&1");
|
|
3367
|
+
}
|
|
3368
|
+
async configure(_provider, _providerSandboxId, _envVars) {}
|
|
3369
|
+
buildCommand(prompt) {
|
|
3370
|
+
return `opencode run ${JSON.stringify(prompt)}`;
|
|
3371
|
+
}
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3374
|
+
// src/lib/agents/pi.ts
|
|
3375
|
+
class PiDriver {
|
|
3376
|
+
name = "pi";
|
|
3377
|
+
requiredEnvVars = ["PI_API_KEY"];
|
|
3378
|
+
async install(provider, providerSandboxId) {
|
|
3379
|
+
const check = await provider.exec(providerSandboxId, "which pi 2>/dev/null || echo MISSING");
|
|
3380
|
+
if (check.stdout.trim() !== "MISSING")
|
|
3381
|
+
return;
|
|
3382
|
+
await provider.exec(providerSandboxId, "npm install -g @pi-ai/cli 2>&1 || sudo npm install -g @pi-ai/cli 2>&1");
|
|
3383
|
+
}
|
|
3384
|
+
async configure(_provider, _providerSandboxId, _envVars) {}
|
|
3385
|
+
buildCommand(prompt) {
|
|
3386
|
+
return `pi ask ${JSON.stringify(prompt)}`;
|
|
3387
|
+
}
|
|
3388
|
+
}
|
|
3389
|
+
|
|
3390
|
+
// src/lib/agents/index.ts
|
|
3391
|
+
function getAgentDriver(name) {
|
|
3392
|
+
return DRIVER_MAP.get(name);
|
|
3393
|
+
}
|
|
3394
|
+
var DRIVERS, DRIVER_MAP;
|
|
3395
|
+
var init_agents = __esm(() => {
|
|
3396
|
+
DRIVERS = [
|
|
3397
|
+
new ClaudeDriver,
|
|
3398
|
+
new CodexDriver,
|
|
3399
|
+
new GeminiDriver,
|
|
3400
|
+
new OpenCodeDriver,
|
|
3401
|
+
new PiDriver
|
|
3402
|
+
];
|
|
3403
|
+
DRIVER_MAP = new Map(DRIVERS.map((d) => [d.name, d]));
|
|
3404
|
+
});
|
|
3405
|
+
|
|
3220
3406
|
// src/lib/agent-runner.ts
|
|
3221
3407
|
var exports_agent_runner = {};
|
|
3222
3408
|
__export(exports_agent_runner, {
|
|
@@ -3228,7 +3414,19 @@ async function runAgent(sandboxId, opts) {
|
|
|
3228
3414
|
if (!sandbox.provider_sandbox_id) {
|
|
3229
3415
|
throw new Error("Sandbox has no provider instance");
|
|
3230
3416
|
}
|
|
3231
|
-
const
|
|
3417
|
+
const provider = await getProvider(sandbox.provider);
|
|
3418
|
+
const env = Object.keys(sandbox.env_vars ?? {}).length > 0 ? sandbox.env_vars : undefined;
|
|
3419
|
+
let cmd;
|
|
3420
|
+
const driver = opts.agentType !== "custom" ? getAgentDriver(opts.agentType) : undefined;
|
|
3421
|
+
if (opts.command) {
|
|
3422
|
+
cmd = opts.command;
|
|
3423
|
+
} else if (driver) {
|
|
3424
|
+
await driver.install(provider, sandbox.provider_sandbox_id);
|
|
3425
|
+
await driver.configure(provider, sandbox.provider_sandbox_id, sandbox.env_vars ?? {});
|
|
3426
|
+
cmd = driver.buildCommand(opts.prompt);
|
|
3427
|
+
} else {
|
|
3428
|
+
cmd = opts.prompt;
|
|
3429
|
+
}
|
|
3232
3430
|
const session = createSession({
|
|
3233
3431
|
sandbox_id: sandbox.id,
|
|
3234
3432
|
agent_name: opts.agentName,
|
|
@@ -3237,8 +3435,6 @@ async function runAgent(sandboxId, opts) {
|
|
|
3237
3435
|
});
|
|
3238
3436
|
emitLifecycleEvent(sandbox.id, `Agent ${opts.agentType} started: ${opts.prompt.slice(0, 100)}`);
|
|
3239
3437
|
const collector = createStreamCollector(sandbox.id, session.id);
|
|
3240
|
-
const provider = await getProvider(sandbox.provider);
|
|
3241
|
-
const env = Object.keys(sandbox.env_vars ?? {}).length > 0 ? sandbox.env_vars : undefined;
|
|
3242
3438
|
provider.exec(sandbox.provider_sandbox_id, cmd, {
|
|
3243
3439
|
onStdout: (data) => {
|
|
3244
3440
|
collector.onStdout(data);
|
|
@@ -3266,22 +3462,16 @@ async function stopAgent(sandboxId) {
|
|
|
3266
3462
|
return;
|
|
3267
3463
|
const provider = await getProvider(sandbox.provider);
|
|
3268
3464
|
try {
|
|
3269
|
-
await provider.exec(sandbox.provider_sandbox_id, "pkill -f 'claude\\|codex\\|gemini' || true");
|
|
3465
|
+
await provider.exec(sandbox.provider_sandbox_id, "pkill -f 'claude\\|codex\\|gemini\\|opencode\\|pi' || true");
|
|
3270
3466
|
} catch {}
|
|
3271
3467
|
emitLifecycleEvent(sandbox.id, "Agent stopped by user");
|
|
3272
3468
|
}
|
|
3273
|
-
var CLAUDE_ONBOARDING_SETUP, AGENT_COMMANDS;
|
|
3274
3469
|
var init_agent_runner = __esm(() => {
|
|
3275
3470
|
init_sandboxes();
|
|
3276
3471
|
init_sessions();
|
|
3277
3472
|
init_providers();
|
|
3278
3473
|
init_stream();
|
|
3279
|
-
|
|
3280
|
-
AGENT_COMMANDS = {
|
|
3281
|
-
claude: (prompt) => `${CLAUDE_ONBOARDING_SETUP} && claude --dangerously-skip-permissions -p ${JSON.stringify(prompt)}`,
|
|
3282
|
-
codex: (prompt) => `codex -q ${JSON.stringify(prompt)}`,
|
|
3283
|
-
gemini: (prompt) => `gemini -p ${JSON.stringify(prompt)}`
|
|
3284
|
-
};
|
|
3474
|
+
init_agents();
|
|
3285
3475
|
});
|
|
3286
3476
|
|
|
3287
3477
|
// node_modules/commander/esm.mjs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6LtC,wBAAgB,WAAW,IAAI,QAAQ,CAYtC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAcf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../../src/db/sandboxes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../../src/db/sandboxes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAkBrD;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAkChE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAY9C;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,EAAE,CAwBZ;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CACd,IAAI,CACF,OAAO,EACL,QAAQ,GACR,qBAAqB,GACrB,MAAM,GACN,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,kBAAkB,CACrB,CACF,GACA,OAAO,CAuDT;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAO9C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Template, CreateTemplateInput } from "../types/index.js";
|
|
2
|
+
export declare function createTemplate(input: CreateTemplateInput): Template;
|
|
3
|
+
export declare function getTemplate(id: string): Template;
|
|
4
|
+
export declare function getTemplateByName(name: string): Template | null;
|
|
5
|
+
export declare function listTemplates(): Template[];
|
|
6
|
+
export declare function deleteTemplate(id: string): void;
|
|
7
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/db/templates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAe,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAiBpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,QAAQ,CAanE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAI/D;AAED,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAI1C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAK/C"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,11 @@ export { addEvent, listEvents } from "./db/events.js";
|
|
|
6
6
|
export { registerAgent, getAgent, getAgentByName, listAgents, deleteAgent } from "./db/agents.js";
|
|
7
7
|
export { createProject, getProject, getProjectByPath, listProjects, ensureProject, deleteProject } from "./db/projects.js";
|
|
8
8
|
export { createWebhook, getWebhook, listWebhooks, deleteWebhook } from "./db/webhooks.js";
|
|
9
|
+
export { createTemplate, getTemplate, getTemplateByName, listTemplates, deleteTemplate } from "./db/templates.js";
|
|
9
10
|
export { loadConfig, saveConfig, getDefaultProvider, getDefaultTimeout, getDefaultImage, getProviderApiKey, setConfigValue, getConfigValue } from "./lib/config.js";
|
|
10
11
|
export { getProvider } from "./providers/index.js";
|
|
11
12
|
export type { SandboxProvider, ProviderSandbox, CreateSandboxOpts, ExecOptions } from "./providers/types.js";
|
|
12
13
|
export { createStreamCollector, addStreamListener, emitLifecycleEvent } from "./lib/stream.js";
|
|
14
|
+
export { getAgentDriver, listAgentDrivers } from "./lib/agents/index.js";
|
|
15
|
+
export type { AgentDriver } from "./lib/agents/types.js";
|
|
13
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGlH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpK,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG7G,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
|