Skip to content

Commit 29d92f3

Browse files
authored
Merge pull request #2 from Serverless-Devs/feat-dynamic-mount
feat(sandbox): add NAS, OSS, and PolarFS configuration support
2 parents 40ad20b + f0b59cd commit 29d92f3

File tree

10 files changed

+479
-10
lines changed

10 files changed

+479
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
},
5656
"dependencies": {
5757
"@ai-sdk/openai": "^3.0.0",
58-
"@alicloud/agentrun20250910": "^4.0.3",
58+
"@alicloud/agentrun20250910": "^5.0.0",
5959
"@alicloud/devs20230714": "^2.4.1",
6060
"@alicloud/openapi-client": "^0.4.12",
6161
"@alicloud/tea-util": "^1.4.9",

src/sandbox/aio-sandbox.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ import { logger } from "../utils/log";
1010
import { ServerError } from "../utils/exception";
1111

1212
import { AioDataAPI } from "./api/aio-data";
13-
import { CodeLanguage, TemplateType } from "./model";
13+
import {
14+
CodeLanguage,
15+
NASConfig,
16+
OSSMountConfig,
17+
PolarFsConfig,
18+
TemplateType,
19+
} from "./model";
1420
import { Sandbox } from "./sandbox";
1521

1622
/**
@@ -288,18 +294,25 @@ export class AioSandbox extends Sandbox {
288294

289295
/**
290296
* Create an AIO Sandbox from template
297+
* 从模板创建 AIO 沙箱 / Create AIO Sandbox from Template
291298
*/
292299
static async createFromTemplate(
293300
templateName: string,
294301
options?: {
295302
sandboxIdleTimeoutSeconds?: number;
303+
nasConfig?: NASConfig;
304+
ossMountConfig?: OSSMountConfig;
305+
polarFsConfig?: PolarFsConfig;
296306
},
297307
config?: Config,
298308
): Promise<AioSandbox> {
299309
const sandbox = await Sandbox.create(
300310
{
301311
templateName,
302312
sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,
313+
nasConfig: options?.nasConfig,
314+
ossMountConfig: options?.ossMountConfig,
315+
polarFsConfig: options?.polarFsConfig,
303316
},
304317
config,
305318
);

src/sandbox/api/sandbox-data.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,23 +401,41 @@ export class SandboxDataAPI {
401401

402402
/**
403403
* Create sandbox from template
404+
* 从模板创建沙箱 / Create Sandbox from Template
404405
*/
405406
createSandbox = async (params: {
406407
templateName: string;
407408
sandboxIdleTimeoutSeconds?: number;
409+
nasConfig?: Record<string, any>;
410+
ossMountConfig?: Record<string, any>;
411+
polarFsConfig?: Record<string, any>;
408412
config?: Config;
409413
}): Promise<any> => {
410414
await this.refreshAccessToken({
411415
templateName: params.templateName,
412416
config: params.config,
413417
});
414418

419+
// Build request data / 构建请求数据
420+
const data: Record<string, any> = {
421+
templateName: params.templateName,
422+
sandboxIdleTimeoutSeconds: params.sandboxIdleTimeoutSeconds || 600,
423+
};
424+
425+
// Add optional parameters / 添加可选参数
426+
if (params.nasConfig !== undefined) {
427+
data.nasConfig = params.nasConfig;
428+
}
429+
if (params.ossMountConfig !== undefined) {
430+
data.ossMountConfig = params.ossMountConfig;
431+
}
432+
if (params.polarFsConfig !== undefined) {
433+
data.polarFsConfig = params.polarFsConfig;
434+
}
435+
415436
return this.post({
416437
path: "/",
417-
data: {
418-
templateName: params.templateName,
419-
sandboxIdleTimeoutSeconds: params.sandboxIdleTimeoutSeconds || 600,
420-
},
438+
data,
421439
});
422440
};
423441

src/sandbox/browser-sandbox.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ import { Config } from "../utils/config";
99
import { logger } from "../utils/log";
1010

1111
import { BrowserDataAPI } from "./api/browser-data";
12-
import { TemplateType } from "./model";
12+
import {
13+
NASConfig,
14+
OSSMountConfig,
15+
PolarFsConfig,
16+
TemplateType,
17+
} from "./model";
1318
import { Sandbox } from "./sandbox";
1419

1520
/**
@@ -22,18 +27,25 @@ export class BrowserSandbox extends Sandbox {
2227

2328
/**
2429
* Create a Browser Sandbox from template
30+
* 从模板创建浏览器沙箱 / Create Browser Sandbox from Template
2531
*/
2632
static async createFromTemplate(
2733
templateName: string,
2834
options?: {
2935
sandboxIdleTimeoutSeconds?: number;
36+
nasConfig?: NASConfig;
37+
ossMountConfig?: OSSMountConfig;
38+
polarFsConfig?: PolarFsConfig;
3039
},
3140
config?: Config,
3241
): Promise<BrowserSandbox> {
3342
const sandbox = await Sandbox.create(
3443
{
3544
templateName,
3645
sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,
46+
nasConfig: options?.nasConfig,
47+
ossMountConfig: options?.ossMountConfig,
48+
polarFsConfig: options?.polarFsConfig,
3749
},
3850
config,
3951
);

src/sandbox/client.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import { Config } from "../utils/config";
1010
import { BrowserSandbox } from "./browser-sandbox";
1111
import { CodeInterpreterSandbox } from "./code-interpreter-sandbox";
1212
import {
13+
NASConfig,
14+
OSSMountConfig,
15+
PolarFsConfig,
1316
SandboxCreateInput,
1417
SandboxListInput,
1518
TemplateCreateInput,
@@ -116,10 +119,16 @@ export class SandboxClient {
116119

117120
/**
118121
* Create a Code Interpreter Sandbox
122+
* 创建代码解释器沙箱 / Create Code Interpreter Sandbox
119123
*/
120124
createCodeInterpreterSandbox = async (params: {
121125
templateName: string;
122-
options?: { sandboxIdleTimeoutSeconds?: number };
126+
options?: {
127+
sandboxIdleTimeoutSeconds?: number;
128+
nasConfig?: NASConfig;
129+
ossMountConfig?: OSSMountConfig;
130+
polarFsConfig?: PolarFsConfig;
131+
};
123132
config?: Config;
124133
}): Promise<CodeInterpreterSandbox> => {
125134
const { templateName, options, config } = params;
@@ -132,10 +141,16 @@ export class SandboxClient {
132141

133142
/**
134143
* Create a Browser Sandbox
144+
* 创建浏览器沙箱 / Create Browser Sandbox
135145
*/
136146
createBrowserSandbox = async (params: {
137147
templateName: string;
138-
options?: { sandboxIdleTimeoutSeconds?: number };
148+
options?: {
149+
sandboxIdleTimeoutSeconds?: number;
150+
nasConfig?: NASConfig;
151+
ossMountConfig?: OSSMountConfig;
152+
polarFsConfig?: PolarFsConfig;
153+
};
139154
config?: Config;
140155
}): Promise<BrowserSandbox> => {
141156
const { templateName, options, config } = params;

src/sandbox/code-interpreter-sandbox.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ import { logger } from "../utils/log";
1010
import { ServerError } from "../utils/exception";
1111

1212
import { CodeInterpreterDataAPI } from "./api/code-interpreter-data";
13-
import { CodeLanguage, TemplateType } from "./model";
13+
import {
14+
CodeLanguage,
15+
NASConfig,
16+
OSSMountConfig,
17+
PolarFsConfig,
18+
TemplateType,
19+
} from "./model";
1420
import { Sandbox } from "./sandbox";
1521

1622
/**
@@ -288,18 +294,25 @@ export class CodeInterpreterSandbox extends Sandbox {
288294

289295
/**
290296
* Create a Code Interpreter Sandbox from template
297+
* 从模板创建代码解释器沙箱 / Create Code Interpreter Sandbox from Template
291298
*/
292299
static async createFromTemplate(
293300
templateName: string,
294301
options?: {
295302
sandboxIdleTimeoutSeconds?: number;
303+
nasConfig?: NASConfig;
304+
ossMountConfig?: OSSMountConfig;
305+
polarFsConfig?: PolarFsConfig;
296306
},
297307
config?: Config,
298308
): Promise<CodeInterpreterSandbox> {
299309
const sandbox = await Sandbox.create(
300310
{
301311
templateName,
302312
sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,
313+
nasConfig: options?.nasConfig,
314+
ossMountConfig: options?.ossMountConfig,
315+
polarFsConfig: options?.polarFsConfig,
303316
},
304317
config,
305318
);

src/sandbox/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,11 @@ export type {
4141
SandboxData,
4242
ExecuteCodeResult,
4343
FileInfo,
44+
// New types / 新增类型
45+
NASConfig,
46+
NASMountConfig,
47+
OSSMountConfig,
48+
OSSMountPoint,
49+
PolarFsConfig,
50+
PolarFsMountConfig,
4451
} from "./model";

0 commit comments

Comments
 (0)