Skip to content

Commit f0b59cd

Browse files
committed
feat(sandbox): add NAS, OSS, and PolarFS configuration support
Add new configuration interfaces for NAS, OSS, and PolarFS mounting capabilities across sandbox implementations. Update createFromTemplate methods and API calls to accept these new configuration options. Enhance model definitions with comprehensive type interfaces for cloud storage integrations. New types added: - NASConfig/NASMountConfig for Network Attached Storage - OSSMountConfig/OSSMountPoint for Object Storage Service - PolarFsConfig/PolarFsMountConfig for Polar File System The changes enable advanced storage mounting scenarios for sandbox environments. Change-Id: Ib07c8562f9056a15cbe95718a7194addc2ac002b Signed-off-by: OhYee <[email protected]>
1 parent 40ad20b commit f0b59cd

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)