@agentrun/sdk 0.0.1-test.70561fe → 0.0.1-test.eab07a8

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/config.ts","../src/utils/exception.ts","../src/utils/log.ts","../src/utils/model.ts","../src/utils/control-api.ts","../src/utils/data-api.ts","../src/utils/resource.ts","../src/utils/index.ts","../src/credential/api/control.ts","../src/credential/credential.ts","../src/credential/model.ts","../src/credential/client.ts","../src/model/api/control.ts","../src/model/model.ts","../src/model/model-proxy.ts","../src/model/model-service.ts","../src/model/client.ts","../src/toolset/model.ts","../src/toolset/openapi.ts","../src/toolset/api/mcp.ts","../src/index.ts","../src/agent-runtime/client.ts","../src/agent-runtime/api/control.ts","../src/agent-runtime/api/data.ts","../src/agent-runtime/endpoint.ts","../src/agent-runtime/runtime.ts","../src/agent-runtime/model.ts","../src/credential/index.ts","../src/sandbox/browser-sandbox.ts","../src/sandbox/api/browser-data.ts","../src/sandbox/api/sandbox-data.ts","../src/sandbox/model.ts","../src/sandbox/sandbox.ts","../src/sandbox/code-interpreter-sandbox.ts","../src/sandbox/api/code-interpreter-data.ts","../src/sandbox/template.ts","../src/sandbox/client.ts","../src/sandbox/aio-sandbox.ts","../src/sandbox/api/aio-data.ts","../src/model/index.ts","../src/toolset/toolset.ts","../src/toolset/client.ts","../src/toolset/index.ts","../src/toolset/api/control.ts","../src/server/server.ts","../src/server/model.ts","../src/server/agui-protocol.ts","../src/integration/adapter.ts","../src/integration/mastra/adapter.ts"],"names":["config","fp","$AgentRun","Client","path","URL","ControlAPI","$Util2","$AgentRun5","init_model","CredentialClient","agentrun","init_control","$Util6","$AgentRun9","ModelClient","Credential","_","client_exports","init_client","$AgentRun10","ToolSetSchemaType","ToolInfo","mcpClient","$AgentRun2","$AgentRun3","$AgentRun6","$Util3","fs2","TemplateType","SandboxState","TemplateNetworkMode","TemplateOSSPermission","CodeLanguage","$Util4","$AgentRun7","fs3","$Util5","$AgentRun8","$OpenApi2","$Util7","ApiSet","MCPToolSet","OpenAPI","MessageRole","EventType","uuidv4","http2"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Configuration Management Module\n *\n * 此模块提供 AgentRun SDK 的全局配置管理功能。\n * This module provides global configuration management for AgentRun SDK.\n */\n\nimport * as dotenv from \"dotenv\";\n\n// Load environment variables\ndotenv.config();\n\n/**\n * Get environment variable with fallback keys\n */\nfunction getEnvWithDefault(defaultValue: string, ...keys: string[]): string {\n for (const key of keys) {\n const value = process.env[key];\n if (value !== undefined && value !== \"\") {\n return value;\n }\n }\n return defaultValue;\n}\n\n/**\n * Configuration options for AgentRun SDK\n */\nexport interface ConfigOptions {\n /**\n * Access Key ID for authentication.\n * Read from AGENTRUN_ACCESS_KEY_ID or ALIBABA_CLOUD_ACCESS_KEY_ID if not provided.\n */\n accessKeyId?: string;\n\n /**\n * Access Key Secret for authentication.\n * Read from AGENTRUN_ACCESS_KEY_SECRET or ALIBABA_CLOUD_ACCESS_KEY_SECRET if not provided.\n */\n accessKeySecret?: string;\n\n /**\n * Security token for STS authentication.\n * Read from AGENTRUN_SECURITY_TOKEN or ALIBABA_CLOUD_SECURITY_TOKEN if not provided.\n */\n securityToken?: string;\n\n /**\n * Account ID.\n * Read from AGENTRUN_ACCOUNT_ID or FC_ACCOUNT_ID if not provided.\n */\n accountId?: string;\n\n /**\n * Custom token for data API calls.\n */\n token?: string;\n\n /**\n * Region ID. Defaults to cn-hangzhou.\n * Read from AGENTRUN_REGION or FC_REGION if not provided.\n */\n regionId?: string;\n\n /**\n * Request timeout in milliseconds. Defaults to 600000 (10 minutes).\n */\n timeout?: number;\n\n /**\n * Read timeout in milliseconds. Defaults to 100000000.\n */\n readTimeout?: number;\n\n /**\n * Custom control API endpoint.\n * Read from AGENTRUN_CONTROL_ENDPOINT if not provided.\n */\n controlEndpoint?: string;\n\n /**\n * Custom data API endpoint.\n * Read from AGENTRUN_DATA_ENDPOINT if not provided.\n */\n dataEndpoint?: string;\n\n /**\n * Custom DevS API endpoint.\n * Read from DEVS_ENDPOINT if not provided.\n */\n devsEndpoint?: string;\n\n /**\n * Custom request headers.\n */\n headers?: Record<string, string>;\n}\n\n/**\n * AgentRun SDK Global Configuration Class\n *\n * 用于管理账号凭证和客户端配置。\n * Used for managing account credentials and client configuration.\n *\n * @example\n * ```typescript\n * // Create config from parameters\n * const config = new Config({\n * accountId: 'your-account-id',\n * accessKeyId: 'your-key-id',\n * accessKeySecret: 'your-secret',\n * });\n *\n * // Or read from environment variables\n * const config = new Config();\n * ```\n */\nexport class Config {\n private _accessKeyId: string;\n private _accessKeySecret: string;\n private _securityToken: string;\n private _accountId: string;\n private _token?: string;\n private _regionId: string;\n private _timeout: number;\n private _readTimeout: number;\n private _controlEndpoint: string;\n private _dataEndpoint: string;\n private _devsEndpoint: string;\n private _headers: Record<string, string>;\n\n constructor(options: ConfigOptions = {}) {\n this._accessKeyId =\n options.accessKeyId ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_ACCESS_KEY_ID\",\n \"ALIBABA_CLOUD_ACCESS_KEY_ID\",\n );\n\n this._accessKeySecret =\n options.accessKeySecret ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_ACCESS_KEY_SECRET\",\n \"ALIBABA_CLOUD_ACCESS_KEY_SECRET\",\n );\n\n this._securityToken =\n options.securityToken ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_SECURITY_TOKEN\",\n \"ALIBABA_CLOUD_SECURITY_TOKEN\",\n );\n\n this._accountId =\n options.accountId ??\n getEnvWithDefault(\"\", \"AGENTRUN_ACCOUNT_ID\", \"FC_ACCOUNT_ID\");\n\n this._token = options.token;\n\n this._regionId =\n options.regionId ??\n getEnvWithDefault(\"cn-hangzhou\", \"AGENTRUN_REGION\", \"FC_REGION\");\n\n this._timeout = options.timeout ?? 600000;\n this._readTimeout = options.readTimeout ?? 100000000;\n\n this._controlEndpoint =\n options.controlEndpoint ??\n getEnvWithDefault(\"\", \"AGENTRUN_CONTROL_ENDPOINT\");\n\n this._dataEndpoint =\n options.dataEndpoint ?? getEnvWithDefault(\"\", \"AGENTRUN_DATA_ENDPOINT\");\n\n this._devsEndpoint =\n options.devsEndpoint ?? getEnvWithDefault(\"\", \"DEVS_ENDPOINT\");\n\n this._headers = options.headers ?? {};\n }\n\n /**\n * Create a new Config by merging multiple configs.\n * Later configs take precedence.\n */\n static withConfigs(...configs: (Config | undefined)[]): Config {\n return new Config().update(...configs);\n }\n\n /**\n * Update this config with values from other configs.\n * Non-undefined values from later configs take precedence.\n */\n update(...configs: (Config | undefined)[]): Config {\n for (const config of configs) {\n if (!config) continue;\n\n if (config._accessKeyId) this._accessKeyId = config._accessKeyId;\n if (config._accessKeySecret)\n this._accessKeySecret = config._accessKeySecret;\n if (config._securityToken) this._securityToken = config._securityToken;\n if (config._accountId) this._accountId = config._accountId;\n if (config._token) this._token = config._token;\n if (config._regionId) this._regionId = config._regionId;\n if (config._timeout) this._timeout = config._timeout;\n if (config._readTimeout) this._readTimeout = config._readTimeout;\n if (config._controlEndpoint)\n this._controlEndpoint = config._controlEndpoint;\n if (config._dataEndpoint) this._dataEndpoint = config._dataEndpoint;\n if (config._devsEndpoint) this._devsEndpoint = config._devsEndpoint;\n if (config._headers && Object.keys(config._headers).length > 0) {\n this._headers = { ...this._headers, ...config._headers };\n }\n }\n return this;\n }\n\n get accessKeyId(): string {\n return this._accessKeyId;\n }\n\n get accessKeySecret(): string {\n return this._accessKeySecret;\n }\n\n get securityToken(): string {\n return this._securityToken;\n }\n\n get accountId(): string {\n if (!this._accountId) {\n throw new Error(\n \"Account ID is not set. Please add AGENTRUN_ACCOUNT_ID environment variable or set it in code.\",\n );\n }\n return this._accountId;\n }\n\n get token(): string | undefined {\n return this._token;\n }\n\n get regionId(): string {\n return this._regionId || \"cn-hangzhou\";\n }\n\n get timeout(): number {\n return this._timeout || 600000;\n }\n\n get readTimeout(): number {\n return this._readTimeout || 100000000;\n }\n\n get controlEndpoint(): string {\n if (this._controlEndpoint) {\n return this._controlEndpoint;\n }\n return `https://agentrun.${this.regionId}.aliyuncs.com`;\n }\n\n get dataEndpoint(): string {\n if (this._dataEndpoint) {\n return this._dataEndpoint;\n }\n return `https://${this.accountId}.agentrun-data.${this.regionId}.aliyuncs.com`;\n }\n\n get devsEndpoint(): string {\n if (this._devsEndpoint) {\n return this._devsEndpoint;\n }\n return `https://devs.${this.regionId}.aliyuncs.com`;\n }\n\n get headers(): Record<string, string> {\n return this._headers;\n }\n}\n","/**\n * Exception classes for AgentRun SDK\n *\n * 此模块定义 AgentRun SDK 的异常类。\n * This module defines exception classes for AgentRun SDK.\n */\n\n/**\n * Base error class for AgentRun SDK\n */\nexport class AgentRunError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentRunError';\n Object.setPrototypeOf(this, AgentRunError.prototype);\n }\n}\n\n/**\n * HTTP error with status code and request ID\n */\nexport class HTTPError extends AgentRunError {\n readonly statusCode: number;\n readonly requestId?: string;\n readonly errorCode?: string;\n\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(message);\n this.name = 'HTTPError';\n this.statusCode = statusCode;\n this.requestId = options?.requestId;\n this.errorCode = options?.errorCode;\n Object.setPrototypeOf(this, HTTPError.prototype);\n }\n\n /**\n * Convert HTTP error to resource-specific error based on status code\n */\n toResourceError(resourceType: string, resourceId?: string): HTTPError {\n if (this.statusCode == 404)\n return new ResourceNotExistError(resourceType, resourceId);\n else if (this.statusCode == 409)\n return new ResourceAlreadyExistError(resourceType, resourceId);\n else if (\n (this.statusCode == 400 || this.statusCode == 500) &&\n this.message.includes('already exists')\n )\n return new ResourceAlreadyExistError(resourceType, resourceId);\n else return this;\n }\n}\n\n/**\n * Client-side error (4xx status codes)\n */\nexport class ClientError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ClientError';\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\n\n/**\n * Server-side error (5xx status codes)\n */\nexport class ServerError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ServerError';\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n\n/**\n * Resource not found error\n */\nexport class ResourceNotExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' does not exist`\n : `${resourceType} does not exist`;\n super(404, message, options);\n this.name = 'ResourceNotExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceNotExistError.prototype);\n }\n}\n\n/**\n * Resource already exists error\n */\nexport class ResourceAlreadyExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' already exists`\n : `${resourceType} already exists`;\n super(409, message, options);\n this.name = 'ResourceAlreadyExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceAlreadyExistError.prototype);\n }\n}\n","/**\n * Logging utilities for AgentRun SDK\n *\n * 此模块提供日志功能。\n * This module provides logging utilities.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n// concise ANSI color codes we need\nconst COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nclass Logger {\n private level: LogLevel = 'info';\n // match Python logger name\n private prefix = 'agentrun-logger';\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private getColor(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return COLORS.cyan;\n case 'info':\n return COLORS.blue;\n case 'warn':\n return COLORS.yellow;\n case 'error':\n return COLORS.red;\n default:\n return COLORS.reset;\n }\n }\n\n // format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS\n private formatTimestamp(d = new Date()): string {\n const pad = (n: number, sz = 2) => n.toString().padStart(sz, '0');\n const year = d.getFullYear();\n const month = pad(d.getMonth() + 1);\n const day = pad(d.getDate());\n const hour = pad(d.getHours());\n const minute = pad(d.getMinutes());\n const second = pad(d.getSeconds());\n const ms = pad(d.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;\n }\n\n // attempt to infer caller file and line by parsing Error.stack\n // helper: parse a single stack frame into {filepath, line, functionName}\n private parseFrame(frame: string) {\n const m = frame.match(/^(?:at\\s+)?(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (!m) return null;\n return {\n functionName: m[1] ? m[1].trim() : undefined,\n filepath: m[2],\n line: parseInt(m[3], 10),\n };\n }\n\n // get caller by fixed stack offset (used in public log methods)\n private getCallerByOffset(): { filepath?: string; line?: number } {\n const err = new Error();\n const stack = err.stack;\n if (!stack) return {};\n const lines = stack.split('\\n').map((l) => l.trim());\n // try the requested offset, if absent try next few frames\n\n for (let i = 3; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n // fallback: try extract /path:line:col substring\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n // skip logger internal frames\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // fallback: scan all frames and return first project frame\n const cwd = process.cwd();\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n if (fp.startsWith(cwd))\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // final fallback: first non-node_modules parsed frame\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n return { filepath: parsed.filepath, line: parsed.line };\n }\n return {};\n }\n\n private formatMessage(\n level: LogLevel,\n message: string,\n filepath?: string,\n line?: number\n ): string {\n const timestamp = this.formatTimestamp();\n const color = this.getColor(level);\n const reset = COLORS.reset;\n\n // filepath/line should be provided by caller via getCallerByOffset;\n // if missing, leave blank\n\n const levelName = level === 'warn' ? 'WARNING' : level.toUpperCase();\n const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;\n const nameStr = `${color}[${this.prefix}]${reset}`;\n const tsStr = `${color} ${timestamp}${reset}`;\n const pathInfo =\n filepath && line !== undefined\n ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}`\n : '';\n const msg = level === 'debug' ? `${COLORS.dim}${message}${reset}` : message;\n\n return `\\n${levelStr} ${nameStr}${tsStr}${pathInfo}\\n${msg}\\n`;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n const caller = this.getCallerByOffset();\n console.debug(\n this.formatMessage('debug', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n const caller = this.getCallerByOffset();\n console.info(\n this.formatMessage('info', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n const caller = this.getCallerByOffset();\n console.warn(\n this.formatMessage('warn', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n const caller = this.getCallerByOffset();\n console.error(\n this.formatMessage('error', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n}\n\nexport const logger = new Logger();\n\nif (\n ![undefined, null, '', 'False', 'FALSE', 'false', '0'].includes(\n process.env['AGENTRUN_SDK_DEBUG']\n )\n) {\n logger.setLevel('debug');\n logger.warn(\n '启用 AgentRun SDK 调试日志, 移除 AGENTRUN_SDK_DEBUG 环境变量以关闭'\n );\n} else {\n logger.setLevel('info');\n}\n","/**\n * Common data models for AgentRun SDK\n *\n * 此模块定义通用的数据模型。\n * This module defines common data models.\n */\n\nimport { logger } from './log';\n\n/**\n * Resource status enum\n */\nexport type Status =\n | 'CREATING'\n | 'CREATE_FAILED'\n | 'READY'\n | 'UPDATING'\n | 'UPDATE_FAILED'\n | 'DELETING'\n | 'DELETE_FAILED';\n\nexport const Status = {\n CREATING: 'CREATING' as Status,\n CREATE_FAILED: 'CREATE_FAILED' as Status,\n READY: 'READY' as Status,\n UPDATING: 'UPDATING' as Status,\n UPDATE_FAILED: 'UPDATE_FAILED' as Status,\n DELETING: 'DELETING' as Status,\n DELETE_FAILED: 'DELETE_FAILED' as Status,\n};\n\nexport function isFinalStatus(status?: Status) {\n return [\n undefined,\n null,\n '',\n ...([\n 'READY',\n 'CREATE_FAILED',\n 'UPDATE_FAILED',\n 'DELETE_FAILED',\n ] as Status[]),\n ].includes(status);\n}\n\n/**\n * 从 SDK 内部对象创建资源对象 / Create resource object from SDK inner object\n * \n * 此函数记录对象转换过程,类似于 Python 版本的 from_inner_object\n * This function logs object conversion process, similar to Python's from_inner_object\n * \n * @param obj - SDK 返回的对象 / Object returned from SDK\n * @param extra - 额外的属性 (可选) / Extra properties (optional)\n * @returns 转换后的对象 / Converted object\n */\nexport function fromInnerObject<T>(obj: any, extra?: Record<string, any>): T {\n logger.debug(\n 'before parse object obj=%s, extra=%s', \n JSON.stringify(obj), \n extra ? JSON.stringify(extra) : 'null'\n );\n \n if (extra) {\n return { ...obj, ...extra } as T;\n }\n \n return obj as T;\n}\n\n/**\n * Network mode enum\n */\nexport type NetworkMode = 'PUBLIC' | 'PRIVATE' | 'PUBLIC_AND_PRIVATE';\n\nexport const NetworkMode = {\n PUBLIC: 'PUBLIC' as NetworkMode,\n PRIVATE: 'PRIVATE' as NetworkMode,\n PUBLIC_AND_PRIVATE: 'PUBLIC_AND_PRIVATE' as NetworkMode,\n};\n\n/**\n * Pageable input for list operations\n */\nexport interface PageableInput {\n pageNumber?: number;\n pageSize?: number;\n}\n\n/**\n * Network configuration\n */\nexport interface NetworkConfig {\n networkMode?: NetworkMode;\n vpcId?: string;\n vSwitchIds?: string[];\n securityGroupId?: string;\n}\n\n/**\n * Helper to convert camelCase to snake_case\n */\nexport function toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Helper to convert snake_case to camelCase\n */\nexport function toCamelCase(str: string): string {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Convert object keys from camelCase to snake_case\n */\nexport function toSnakeCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const snakeKey = toSnakeCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[snakeKey] = toSnakeCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[snakeKey] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? toSnakeCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[snakeKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Convert object keys from snake_case to camelCase\n */\nexport function toCamelCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const camelKey = toCamelCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[camelKey] = toCamelCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[camelKey] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? toCamelCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[camelKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Remove undefined values from object\n */\nexport function removeUndefined<T extends Record<string, unknown>>(\n obj: T\n): Partial<T> {\n const result: Partial<T> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n (result as Record<string, unknown>)[key] = value;\n }\n }\n return result;\n}\n","/**\n * Control API Base Module\n *\n * 此模块定义控制链路 API 的基类。\n * This module defines the base class for control API.\n */\n\nimport Client, * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\n\nimport { Config } from \"./config\";\n\n/**\n * Base class for Control API clients\n *\n * 提供控制链路和 DevS API 客户端的获取功能。\n * Provides functionality to get control API and DevS API clients.\n */\nexport class ControlAPI {\n protected config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Get the underlying AgentRun client instance\n */\n getClient(config?: Config): Client {\n const cfg = Config.withConfigs(this.config, config);\n let endpoint = cfg.controlEndpoint;\n\n // Remove protocol prefix\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new Client(openApiConfig);\n }\n}\n\n// Re-export the AgentRun models for use in generated code\nexport { $AgentRun };\n","/**\n * AgentRun Data API Client\n *\n * 用于与 AgentRun Data API 交互的 HTTP 客户端。\n * HTTP client for interacting with the AgentRun Data API.\n */\n\nimport * as http from \"http\";\nimport * as https from \"https\";\nimport * as fs from \"fs\";\nimport * as nodePath from \"path\";\nimport { URL } from \"url\";\n\nimport { Config } from \"./config\";\nimport { ClientError } from \"./exception\";\nimport { logger } from \"./log\";\n\n/**\n * Resource type enumeration\n */\nexport enum ResourceType {\n Runtime = \"runtime\",\n LiteLLM = \"litellm\",\n Tool = \"tool\",\n Template = \"template\",\n Sandbox = \"sandbox\",\n}\n\n/**\n * Data API response interface\n */\nexport interface DataAPIResponse {\n [key: string]: unknown;\n}\n\n/**\n * File download result\n */\nexport interface FileDownloadResult {\n savedPath: string;\n size: number;\n}\n\n/**\n * AgentRun Data API Client\n *\n * This client provides methods for making HTTP requests to the AgentRun Data API\n * with automatic URL construction, JSON handling, and error management.\n */\nexport class DataAPI {\n private resourceName: string;\n private resourceType: ResourceType;\n private accessToken: string | null = null;\n private config: Config;\n private namespace: string;\n\n /**\n * Initialize the Data API Client.\n *\n * @param resourceName - Resource name for access token\n * @param resourceType - Resource type for access token\n * @param config - Configuration options\n * @param namespace - API namespace (default: \"agents\")\n */\n constructor(\n resourceName: string,\n resourceType: ResourceType,\n config?: Config,\n namespace: string = \"agents\",\n ) {\n this.resourceName = resourceName;\n this.resourceType = resourceType;\n this.config = Config.withConfigs(config);\n this.namespace = namespace;\n\n // Check for provided access token\n const token = this.config.token;\n if (token) {\n logger.debug(`Using provided access token from config`);\n this.accessToken = token;\n }\n }\n\n /**\n * Get the base URL for API requests.\n */\n private getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with the given path and query parameters.\n *\n * @param path - API path (may include query string)\n * @param query - Query parameters to add/merge\n * @returns Complete URL string with query parameters\n */\n withPath(path: string, query?: Record<string, unknown>): string {\n // Remove leading slash if present\n path = path.replace(/^\\//, \"\");\n\n const parts = [this.getBaseUrl(), this.namespace, path]\n .filter(Boolean)\n .map((part) => part.replace(/^\\/|\\/$/g, \"\"));\n\n const baseUrl = parts.join(\"/\");\n\n if (!query || Object.keys(query).length === 0) {\n return baseUrl;\n }\n\n const urlObj = new URL(baseUrl);\n const existingParams = urlObj.searchParams;\n\n for (const key in query) {\n if (Object.prototype.hasOwnProperty.call(query, key)) {\n const value = query[key];\n if (Array.isArray(value)) {\n value.forEach((v) => existingParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n existingParams.set(key, String(value));\n }\n }\n }\n\n urlObj.search = existingParams.toString();\n return urlObj.toString();\n }\n\n /**\n * Authenticate and prepare headers for the request.\n *\n * @param url - Request URL\n * @param headers - Request headers\n * @param query - Query parameters\n * @param config - Optional config override\n * @returns Tuple of [url, headers, query]\n */\n private async auth(\n url: string,\n headers: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config,\n ): Promise<\n [string, Record<string, string>, Record<string, unknown> | undefined]\n > {\n const cfg = Config.withConfigs(this.config, config);\n\n // Fetch access token if not already available\n if (\n this.accessToken === null &&\n this.resourceName &&\n this.resourceType &&\n !cfg.token\n ) {\n try {\n // Dynamically import to avoid circular dependencies\n const { ControlAPI } = await import(\"./control-api\");\n const $AgentRun = await import(\"@alicloud/agentrun20250910\");\n\n const cli = new ControlAPI(this.config).getClient();\n\n const input =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const resp = await cli.getAccessToken(input);\n this.accessToken = resp.body?.data?.accessToken || null;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}`,\n );\n } catch (e) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${e}`,\n );\n }\n }\n\n // Merge headers with authentication\n const authHeaders = {\n \"Agentrun-Access-Token\": cfg.token || this.accessToken || \"\",\n ...cfg.headers,\n ...headers,\n };\n\n return [url, authHeaders, query];\n }\n\n /**\n * Prepare the HTTP request.\n */\n private async prepareRequest(\n method: string,\n url: string,\n data?: Record<string, unknown> | string | Buffer,\n headers?: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config,\n ): Promise<{\n method: string;\n url: string;\n headers: Record<string, string>;\n body?: string | Buffer;\n }> {\n const reqHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"AgentRunDataClient/1.0\",\n };\n\n const cfg = Config.withConfigs(this.config, config);\n Object.assign(reqHeaders, cfg.headers);\n if (headers) {\n Object.assign(reqHeaders, headers);\n }\n\n // Apply authentication\n const [authUrl, authHeaders, authQuery] = await this.auth(\n url,\n reqHeaders,\n query,\n cfg,\n );\n\n // Add query parameters to URL\n let finalUrl = authUrl;\n if (authQuery && Object.keys(authQuery).length > 0) {\n const urlObj = new URL(authUrl);\n for (const key in authQuery) {\n if (Object.prototype.hasOwnProperty.call(authQuery, key)) {\n const value = authQuery[key];\n if (value !== undefined && value !== null) {\n urlObj.searchParams.set(key, String(value));\n }\n }\n }\n finalUrl = urlObj.toString();\n }\n\n // Prepare request body\n let body: string | Buffer | undefined;\n if (data !== undefined) {\n if (Buffer.isBuffer(data)) {\n body = data;\n } else if (typeof data === \"object\") {\n body = JSON.stringify(data);\n } else {\n body = data;\n }\n }\n\n logger.debug(\n `${method} ${finalUrl} headers=${JSON.stringify(authHeaders)}`,\n );\n\n return { method, url: finalUrl, headers: authHeaders, body };\n }\n\n /**\n * Make an HTTP request.\n */\n private async makeRequest(\n method: string,\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const {\n method: reqMethod,\n url: reqUrl,\n headers: reqHeaders,\n body: reqBody,\n } = await this.prepareRequest(\n method,\n fullUrl,\n data,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: reqMethod,\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n return new Promise((resolve, reject) => {\n const req = client.request(options, (res) => {\n let responseData = \"\";\n res.on(\"data\", (chunk) => (responseData += chunk));\n res.on(\"end\", () => {\n logger.debug(`Response: ${responseData}`);\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n const errorMsg = `Failed to parse JSON response: ${e}`;\n logger.error(errorMsg);\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n } else {\n const errorMsg =\n responseData || res.statusMessage || \"Unknown error\";\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n });\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.on(\"timeout\", () => {\n req.destroy();\n reject(new ClientError(0, \"Request timeout\"));\n });\n\n if (reqBody) {\n req.write(reqBody);\n }\n req.end();\n });\n }\n\n /**\n * Make a GET request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async get(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"GET\", path, undefined, query, headers, config);\n }\n\n /**\n * Make a POST request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async post(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"POST\", path, data, query, headers, config);\n }\n\n /**\n * Make a PUT request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async put(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"PUT\", path, data, query, headers, config);\n }\n\n /**\n * Make a PATCH request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async patch(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"PATCH\", path, data, query, headers, config);\n }\n\n /**\n * Make a DELETE request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async delete(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"DELETE\", path, undefined, query, headers, config);\n }\n\n /**\n * Upload a file using multipart/form-data.\n *\n * @param path - API path\n * @param localFilePath - Local file path to upload\n * @param targetFilePath - Target file path on the server\n * @param formData - Additional form data fields\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async postFile(\n path: string,\n localFilePath: string,\n targetFilePath: string,\n formData?: Record<string, string>,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n \"POST\",\n fullUrl,\n undefined,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const boundary = `----WebKitFormBoundary${Math.random().toString(36).substring(2)}`;\n const contentHeaders = {\n ...reqHeaders,\n \"Content-Type\": `multipart/form-data; boundary=${boundary}`,\n };\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: \"POST\",\n headers: contentHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, (res) => {\n let responseData = \"\";\n res.on(\"data\", (chunk) => (responseData += chunk));\n res.on(\"end\", () => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n logger.error(`Failed to parse JSON response: ${e}`);\n reject(\n new ClientError(\n res.statusCode || 0,\n `Failed to parse JSON: ${e}`,\n ),\n );\n }\n } else {\n reject(\n new ClientError(\n res.statusCode || 0,\n responseData || \"Unknown error\",\n ),\n );\n }\n });\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n // Helper to write form fields\n const appendField = (name: string, value: string) => {\n req.write(`--${boundary}\\r\\n`);\n req.write(`Content-Disposition: form-data; name=\"${name}\"\\r\\n`);\n req.write(\"\\r\\n\");\n req.write(`${value}\\r\\n`);\n };\n\n // Write form data fields\n if (formData) {\n for (const key in formData) {\n if (Object.prototype.hasOwnProperty.call(formData, key)) {\n appendField(key, formData[key]);\n }\n }\n }\n\n // Add target path field\n appendField(\"path\", targetFilePath);\n\n // Write file\n const filename = nodePath.basename(localFilePath);\n req.write(`--${boundary}\\r\\n`);\n req.write(\n `Content-Disposition: form-data; name=\"file\"; filename=\"${filename}\"\\r\\n`,\n );\n req.write(\"Content-Type: application/octet-stream\\r\\n\");\n req.write(\"\\r\\n\");\n\n const fileStream = fs.createReadStream(localFilePath);\n fileStream.pipe(req, { end: false });\n\n fileStream.on(\"end\", () => {\n req.write(`\\r\\n--${boundary}--\\r\\n`);\n req.end();\n });\n\n fileStream.on(\"error\", (e) => {\n reject(new ClientError(0, `File stream error: ${e.message}`));\n });\n });\n }\n\n /**\n * Download a file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded file\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getFile(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<FileDownloadResult> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n \"GET\",\n fullUrl,\n undefined,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: \"GET\",\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, (res) => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n const fileStream = fs.createWriteStream(savePath);\n let downloadedSize = 0;\n\n res.on(\"data\", (chunk) => {\n fileStream.write(chunk);\n downloadedSize += chunk.length;\n });\n\n res.on(\"end\", () => {\n fileStream.end();\n resolve({ savedPath: savePath, size: downloadedSize });\n });\n\n res.on(\"error\", (e) => {\n fileStream.end();\n reject(new ClientError(0, `Response error: ${e.message}`));\n });\n } else {\n let errorData = \"\";\n res.on(\"data\", (chunk) => (errorData += chunk));\n res.on(\"end\", () => {\n reject(\n new ClientError(\n res.statusCode || 0,\n errorData || \"Download failed\",\n ),\n );\n });\n }\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.end();\n });\n }\n\n /**\n * Download a video file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded video\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getVideo(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<FileDownloadResult> {\n // Video download is the same as file download\n return this.getFile(path, savePath, query, headers, config);\n }\n}\n","/**\n资源基类模板 / Resource Base Template\n\n此模板用于生成资源对象的基类代码。\nThis template is used to generate base class code for resource objects.\n*/\n\nimport { Config } from './config';\nimport { ResourceNotExistError } from './exception';\nimport { logger } from './log';\nimport { isFinalStatus, PageableInput, Status } from './model';\n\n/**\n * 更新对象属性的辅助函数 / Helper function to update object properties\n * \n * 只复制数据属性,跳过方法和私有属性\n * Only copies data properties, skips methods and private properties\n * \n * @param target - 目标对象 / Target object\n * @param source - 源对象 / Source object\n */\nexport function updateObjectProperties(target: any, source: any): void {\n for (const key in source) {\n if (\n Object.prototype.hasOwnProperty.call(source, key) &&\n typeof source[key] !== 'function' &&\n !key.startsWith('_') // 跳过私有属性\n ) {\n target[key] = source[key];\n }\n }\n}\n\nexport abstract class ResourceBase {\n status?: Status;\n protected _config?: Config;\n\n abstract get(params?: { config?: Config }): Promise<any>;\n abstract delete(params?: { config?: Config }): Promise<any>;\n\n static async list(_params: { input?: PageableInput; config?: Config }) {\n return [] as ThisType<ResourceBase>[];\n }\n\n static async listAll(params: {\n uniqIdCallback: (item: any) => string;\n input?: Record<string, any>;\n config?: Config;\n }) {\n const { uniqIdCallback, input, config } = params;\n\n const allResults: any[] = [];\n let page = 1;\n const pageSize = 50;\n while (true) {\n const pageResults = await this.list({\n input: { ...input, pageNumber: page, pageSize: pageSize },\n config,\n });\n\n page += 1;\n allResults.push(...pageResults);\n if (pageResults.length < pageSize) break;\n }\n\n const resultSet = new Set<string>();\n const results: any[] = [];\n for (const item of allResults) {\n const uniqId = uniqIdCallback(item);\n if (!resultSet.has(uniqId)) {\n resultSet.add(uniqId);\n results.push(item);\n }\n }\n\n return results;\n }\n\n waitUntil = async (params: {\n checkFinishedCallback: (resource: ResourceBase) => Promise<boolean>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }): Promise<ResourceBase> => {\n const {\n checkFinishedCallback,\n intervalSeconds = 5,\n timeoutSeconds = 300,\n } = params;\n\n const startTime = Date.now();\n while (true) {\n if (await checkFinishedCallback(this)) return this;\n\n if (Date.now() - startTime >= timeoutSeconds * 1000) {\n throw new Error('Timeout waiting for resource to reach desired state');\n }\n\n await new Promise((resolve) => setTimeout(resolve, intervalSeconds * 1000));\n }\n };\n\n waitUntilReadyOrFailed = async (params: {\n callback: (resource: ResourceBase) => Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params;\n\n async function checkFinishedCallback(resource: ResourceBase) {\n await resource.refresh();\n if (callback) await callback(resource);\n logger.debug(`Resource status: ${(resource as any).status}`);\n\n return isFinalStatus(resource.status);\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n delete_and_wait_until_finished = async (params: {\n callback: (resource: ResourceBase) => Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params;\n\n try {\n await this.delete();\n } catch (error) {\n if (error instanceof ResourceNotExistError) return;\n }\n\n async function checkFinishedCallback(resource: ResourceBase) {\n try {\n await resource.refresh();\n if (callback) await callback(resource);\n } catch (error) {\n // Assuming that an error during refresh indicates the resource no longer exists\n if (error instanceof ResourceNotExistError) return true;\n if (resource.status === Status.DELETING) return false;\n\n throw Error(`Resource status is ${resource.status}`);\n }\n\n return false;\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n refresh = async (params?: { config?: Config }) => await this.get(params);\n\n /**\n * 更新实例自身的属性 / Update instance properties\n * \n * @param source - 源对象 / Source object\n */\n updateSelf(source: any): void {\n updateObjectProperties(this, source);\n }\n\n /**\n * 列出所有资源(带去重)/ List all resources (with deduplication)\n * \n * @param uniqIdCallback - 唯一ID回调函数 / Unique ID callback function\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 资源列表 / Resource list\n */\n protected static async listAllResources(\n uniqIdCallback: (item: any) => string,\n config?: Config,\n kwargs?: Record<string, any>\n ): Promise<any[]> {\n return await this.listAll({\n uniqIdCallback,\n input: kwargs,\n config,\n });\n }\n\n setConfig = (config: Config) => {\n this._config = config;\n return this;\n };\n}\n","/**\n * Utility exports\n */\n\nexport { Config, type ConfigOptions } from \"./config\";\nexport {\n AgentRunError,\n ClientError,\n ServerError,\n HTTPError,\n ResourceNotExistError,\n ResourceAlreadyExistError,\n} from \"./exception\";\nexport {\n Status,\n NetworkMode,\n type PageableInput,\n type NetworkConfig,\n toSnakeCase,\n toCamelCase,\n toSnakeCaseKeys,\n toCamelCaseKeys,\n removeUndefined,\n} from \"./model\";\nexport { logger, type LogLevel } from \"./log\";\nexport { DataAPI, ResourceType } from \"./data-api\";\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: credential_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Credential Control API\n */\nexport class CredentialControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create credential\n *\n * @param params - Method parameters\n * @param params.input - Credential configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created credential object\n */\n createCredential = async (params: { input: $AgentRun.CreateCredentialInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createCredentialWithOptions(\n new $AgentRun.CreateCredentialRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted credential object\n */\n deleteCredential = async (params: { credentialName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteCredentialWithOptions(\n credentialName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.input - Credential configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated credential object\n */\n updateCredential = async (params: { credentialName: string; input: $AgentRun.UpdateCredentialInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateCredentialWithOptions(\n credentialName,\n new $AgentRun.UpdateCredentialRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Credential object\n */\n getCredential = async (params: { credentialName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getCredentialWithOptions(\n credentialName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List credentials\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of credential objects\n */\n listCredentials = async (params: { input: $AgentRun.ListCredentialsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListCredentialsOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listCredentialsWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listCredentials, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListCredentialsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Credential Resource\n *\n * 此模块定义 Credential 资源类。\n * This module defines the Credential resource class.\n */\n\nimport { Config } from '../utils/config';\nimport { HTTPError } from '../utils/exception';\nimport { updateObjectProperties } from '../utils/resource';\n\nimport { ResourceBase } from '../utils/resource';\nimport { CredentialClient } from './client';\nimport {\n CredentialAuthType,\n CredentialCreateInput,\n CredentialInterface,\n CredentialListInput,\n CredentialListOutput,\n CredentialSourceType,\n CredentialUpdateInput,\n RelatedResource,\n} from './model';\n\nexport class Credential extends ResourceBase implements CredentialInterface {\n credentialName?: string;\n /** 描述 */\n description?: string;\n /** 是否启用 */\n enabled?: boolean;\n credentialId?: string;\n createdAt?: string;\n updatedAt?: string;\n relatedResources?: RelatedResource[];\n /** 凭证认证类型 */\n credentialAuthType?: CredentialAuthType;\n /** 凭证来源类型 */\n credentialSourceType?: CredentialSourceType;\n /** 凭证公共配置 */\n credentialPublicConfig?: Record<string, any>;\n /** 凭证密钥 */\n credentialSecret?: string;\n\n protected _config?: Config;\n\n constructor(data?: CredentialInterface, config?: Config) {\n super();\n\n if (data) updateObjectProperties(this, data);\n this._config = config;\n }\n\n private static getClient = () => {\n return new CredentialClient();\n };\n\n /**\n * Create a new Credential\n */\n static create = async (paramsOrInput: any) => {\n // Backwards compatibility: allow calling Credential.create(input)\n const hasInputProp = paramsOrInput && paramsOrInput.input !== undefined;\n const input: CredentialCreateInput = hasInputProp\n ? paramsOrInput.input\n : paramsOrInput;\n const config: Config | undefined = hasInputProp\n ? paramsOrInput.config\n : undefined;\n const client = Credential.getClient();\n try {\n return await client.create({ input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', input.credentialName || '');\n }\n throw error;\n }\n };\n\n /**\n * Delete a Credential by name\n */\n static delete = async (paramsOrName: any) => {\n // Accept either (name: string) or ({ name, config })\n const isString = typeof paramsOrName === 'string';\n const name: string = isString ? paramsOrName : paramsOrName.name;\n const config: Config | undefined = isString\n ? undefined\n : paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.delete({ name, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * Update a Credential by name\n */\n static update = async (paramsOrName: any) => {\n // Accept either (name, input) wrapped as object or ({ name, input, config })\n const name: string = paramsOrName.name;\n const input: CredentialUpdateInput = paramsOrName.input;\n const config: Config | undefined = paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.update({ name, input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * Get a Credential by name\n */\n static get = async (paramsOrName: any) => {\n // Accept either name string or { name, config }\n const isString = typeof paramsOrName === 'string';\n const name: string = isString ? paramsOrName : paramsOrName.name;\n const config: Config | undefined = isString\n ? undefined\n : paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.get({ name, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * List all Credentials (with pagination)\n */\n static list = async (paramsOrUndefined?: any) => {\n const input = paramsOrUndefined?.input ?? paramsOrUndefined;\n const config: Config | undefined = paramsOrUndefined?.config;\n const client = Credential.getClient();\n try {\n return await client.list({ input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', 'list');\n }\n throw error;\n }\n };\n\n static listAll = async (params?: {\n input?: CredentialListInput;\n config?: Config;\n }) => {\n const result = await super.listAll({\n uniqIdCallback: (item) => item.credentialName || '',\n input: params?.input,\n config: params?.config,\n });\n return result as CredentialListOutput[];\n };\n\n /**\n * Delete this credential\n */\n delete = async (params?: any) => {\n const config: Config | undefined = params?.config;\n if (!this.credentialName) {\n throw new Error('credentialName is required to delete a Credential');\n }\n\n const result = await Credential.delete({\n name: this.credentialName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this credential\n */\n update = async (params: any) => {\n // Allow calling update(updateInput) for backward compatibility\n const hasInputProp = params && params.input !== undefined;\n const input: CredentialUpdateInput = hasInputProp ? params.input : params;\n const config: Config | undefined = hasInputProp ? params.config : undefined;\n\n if (!this.credentialName) {\n throw new Error('credentialName is required to update a Credential');\n }\n\n const result = await Credential.update({\n name: this.credentialName,\n input,\n config: config ?? this._config,\n });\n \n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this credential's data\n */\n get = async (params?: any): Promise<Credential> => {\n const config: Config | undefined = params?.config;\n if (!this.credentialName) {\n throw new Error('credentialName is required to refresh a Credential');\n }\n\n const result = await Credential.get({\n name: this.credentialName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n}\n","/**\n * Credential Data Models\n *\n * 此模块定义 Credential 相关的所有数据模型。\n * This module defines all data models related to Credential.\n */\n\nimport { PageableInput } from '../utils/model';\nimport { updateObjectProperties } from '../utils/resource';\nimport { Config } from '../utils/config';\n\n/** 凭证认证类型 / Credential Authentication Types */\nexport type CredentialAuthType =\n | 'jwt'\n | 'api_key'\n | 'basic'\n | 'aksk'\n | 'custom_header';\n\n/** 凭证来源类型 / Credential Source Types */\nexport type CredentialSourceType = 'external_llm' | 'external_tool' | 'internal';\n\n/**\n * Credential basic authentication configuration\n */\nexport interface CredentialBasicAuth {\n /** Username */\n username?: string;\n /** Password */\n password?: string;\n}\n\n/**\n * Related resource for credential\n */\nexport interface RelatedResource {\n /** 资源 IDj*/\n resourceId?: string;\n /** 资源名称j*/\n resourceName?: string;\n /** 资源类型j*/\n resourceType?: string;\n}\n\nexport interface CredentialConfigInterface {\n /** 凭证认证类型 */\n credentialAuthType?: CredentialAuthType;\n /** 凭证来源类型 */\n credentialSourceType?: CredentialSourceType;\n /** 凭证公共配置 */\n credentialPublicConfig?: Record<string, any>;\n /** 凭证密钥 */\n credentialSecret?: string;\n}\n\n/**\n * 凭证配置 / Credential configuration\n */\nexport class CredentialConfig implements CredentialConfigInterface {\n constructor(data?: CredentialConfigInterface) {\n if (data) updateObjectProperties(this, data);\n }\n\n /** 配置访问 AgentRun 的 api key 凭证 */\n static inboundApiKey(params: { apiKey: string; headerKey?: string }) {\n const { apiKey, headerKey = 'Authorization' } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'api_key',\n credentialPublicConfig: { headerKey },\n credentialSecret: apiKey,\n });\n }\n\n /** 配置访问 AgentRun 的静态 JWKS 凭证 */\n static inboundStaticJwt(params: { jwks: string }) {\n const { jwks } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'jwt',\n credentialPublicConfig: { authType: 'static_jwks', jwks },\n credentialSecret: '',\n });\n }\n\n /** 配置访问 AgentRun 的远程 JWT 凭证 */\n static inboundRemoteJwt(\n uri: string,\n timeout: number = 3000,\n ttl: number = 30000,\n publicConfig?: Record<string, any>\n ) {\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'jwt',\n credentialPublicConfig: { uri, timeout, ttl, ...publicConfig },\n credentialSecret: '',\n });\n }\n\n /** 配置访问 AgentRun 的 Basic 凭证 */\n static inboundBasic(params: { users: CredentialBasicAuth[] }) {\n const { users } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'basic',\n credentialPublicConfig: { users },\n credentialSecret: '',\n });\n }\n\n /** 配置访问第三方工具的 api key 凭证 */\n static outboundLLMApiKey(params: { apiKey: string; provider: string }) {\n const { apiKey, provider } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_llm',\n credentialAuthType: 'api_key',\n credentialPublicConfig: { provider },\n credentialSecret: apiKey,\n });\n }\n\n /** 配置访问第三方工具的 ak/sk 凭证 */\n static outboundLLMAKSK(\n provider: string,\n accessKeyId: string,\n accessKeySecret: string,\n accountId: string\n ) {\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'aksk',\n credentialPublicConfig: {\n provider,\n authConfig: { accessKey: accessKeyId, accountId: accountId },\n },\n credentialSecret: accessKeySecret,\n });\n }\n\n /** 配置访问第三方工具的自定义凭证 */\n static outboundToolAKSKCustom(params: { authConfig: Record<string, string> }) {\n const { authConfig } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'aksk',\n credentialPublicConfig: { provider: 'custom', authConfig },\n credentialSecret: '',\n });\n }\n\n /** 配置访问第三方工具的自定义 Header 凭证 */\n static outboundToolCustomHeader(params: { headers: Record<string, string> }) {\n const { headers } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'custom_header',\n credentialPublicConfig: { authConfig: headers },\n credentialSecret: '',\n });\n }\n}\n\n/** 凭证公共配置 */\nexport interface CredentialMutableProps {\n /** 描述 */\n description?: string;\n /** 是否启用 */\n enabled?: boolean;\n}\n\nexport interface CredentialImmutableProps {\n credentialName?: string;\n}\n\nexport interface CredentialSystemProps {\n credentialId?: string;\n createdAt?: string;\n updatedAt?: string;\n relatedResources?: RelatedResource[];\n}\n\nexport interface CredentialCreateInput\n extends CredentialMutableProps,\n CredentialImmutableProps {\n credentialConfig?: CredentialConfig;\n}\n\n/**\n * Credential update input\n */\nexport interface CredentialUpdateInput extends CredentialMutableProps {\n credentialConfig?: CredentialConfig;\n}\n\n/**\n * Credential list input\n */\nexport interface CredentialListInput extends PageableInput {\n credentialAuthType?: CredentialAuthType;\n credentialName?: string;\n credentialSourceType?: CredentialSourceType;\n provider?: string;\n}\n\nexport class CredentialListOutput {\n createdAt?: string;\n credentialAuthType?: CredentialAuthType;\n credentialId?: string;\n credentialName?: string;\n credentialSourceType?: CredentialSourceType;\n enabled?: boolean;\n relatedResourceCount?: number;\n updatedAt?: string;\n\n constructor(data?: any) {\n if (data) updateObjectProperties(this, data);\n }\n\n toCredential = async (params?: { config?: Config }) => {\n const { CredentialClient } = await import('./client');\n return await new CredentialClient(params?.config).get({\n name: this.credentialName || '',\n config: params?.config,\n });\n };\n}\n\n/**\n * Credential resource class\n */\n\nexport interface CredentialInterface\n extends CredentialMutableProps,\n CredentialImmutableProps,\n CredentialSystemProps,\n CredentialConfigInterface {}\n","/**\n * Credential Client\n *\n * 此模块提供 Credential 的客户端 API。\n * This module provides the client API for Credential.\n */\n\nimport { HTTPError } from '../utils';\nimport { Config } from '../utils/config';\nimport { fromInnerObject } from '../utils/model';\n\nimport * as agentrun from '@alicloud/agentrun20250910';\nimport { CredentialControlAPI } from './api/control';\nimport { Credential } from './credential';\nimport {\n CredentialCreateInput,\n CredentialListInput,\n CredentialListOutput,\n CredentialUpdateInput,\n} from './model';\n\n/**\n * Credential Client\n *\n * 提供 Credential 的创建、删除、更新、查询功能。\n * Provides create, delete, update, query functions for Credential.\n */\nexport class CredentialClient {\n private config?: Config;\n private controlApi: CredentialControlAPI;\n\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new CredentialControlAPI(config);\n }\n\n /**\n * Create a Credential\n */\n create = async (params: {\n input: CredentialCreateInput;\n config?: Config;\n }): Promise<Credential> => {\n try {\n const { input, config } = params;\n\n // Normalize credentialConfig to SDK expected field names.\n const cfg = input.credentialConfig as any | undefined;\n const normalized = {\n ...input,\n credentialAuthType: cfg?.credentialAuthType ?? cfg?.authType,\n credentialSourceType: cfg?.credentialSourceType ?? cfg?.sourceType,\n credentialPublicConfig:\n cfg?.credentialPublicConfig ?? cfg?.publicConfig,\n credentialSecret: cfg?.credentialSecret ?? cfg?.secret,\n };\n\n // Ensure users field is always present in credentialPublicConfig\n if (normalized.credentialPublicConfig) {\n const publicConfig = normalized.credentialPublicConfig as any;\n if (!('users' in publicConfig)) {\n publicConfig.users = [];\n }\n }\n\n // Special-case: tests may provide a simplified Basic auth shape\n if (normalized.credentialAuthType === 'basic') {\n const pub = normalized.credentialPublicConfig ?? {};\n // If tests provided `username` and `secret`, convert to users array\n if (pub.username) {\n normalized.credentialPublicConfig = {\n users: [\n {\n username: pub.username,\n password: normalized.credentialSecret ?? '',\n },\n ],\n };\n // server validation expects no credentialSecret for basic\n normalized.credentialSecret = '';\n }\n }\n\n const result = await this.controlApi.createCredential({\n input: new agentrun.CreateCredentialInput(normalized),\n config: config ?? this.config,\n });\n\n const credential = fromInnerObject<any>(result);\n return new Credential(credential);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n 'Credential',\n params?.input?.credentialName\n );\n }\n\n throw error;\n }\n };\n\n /**\n * Delete a Credential\n */\n delete = async (params: { name: string; config?: Config }): Promise<Credential> => {\n try {\n const { name, config } = params;\n const result = await this.controlApi.deleteCredential({\n credentialName: name,\n config: config ?? this.config,\n });\n\n const credential = fromInnerObject<any>(result);\n return new Credential(credential);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * Update a Credential\n */\n update = async (params: {\n name: string;\n input: CredentialUpdateInput;\n config?: Config;\n }): Promise<Credential> => {\n try {\n const { name, input, config } = params;\n const cfg = input.credentialConfig as any | undefined;\n const normalized: any = { ...input };\n if (cfg) {\n normalized.credentialAuthType =\n cfg?.credentialAuthType ?? cfg?.authType;\n normalized.credentialSourceType =\n cfg?.credentialSourceType ?? cfg?.sourceType;\n normalized.credentialPublicConfig =\n cfg?.credentialPublicConfig ?? cfg?.publicConfig;\n normalized.credentialSecret = cfg?.credentialSecret ?? cfg?.secret;\n\n // Ensure users field is always present in credentialPublicConfig\n if (normalized.credentialPublicConfig) {\n const publicConfig = normalized.credentialPublicConfig as any;\n if (!('users' in publicConfig)) {\n publicConfig.users = [];\n }\n }\n\n if (normalized.credentialAuthType === 'basic') {\n const pub = normalized.credentialPublicConfig ?? {};\n if (pub.username) {\n normalized.credentialPublicConfig = {\n users: [\n {\n username: pub.username,\n password: normalized.credentialSecret ?? '',\n },\n ],\n };\n normalized.credentialSecret = '';\n }\n }\n }\n\n const result = await this.controlApi.updateCredential({\n credentialName: name,\n input: new agentrun.UpdateCredentialInput(normalized),\n config: config ?? this.config,\n });\n\n return new Credential(result as any);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * Get a Credential\n */\n get = async (params: { name: string; config?: Config }): Promise<Credential> => {\n try {\n const { name, config } = params;\n\n const result = await this.controlApi.getCredential({\n credentialName: name,\n config: config ?? this.config,\n });\n return new Credential(result as any);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * List Credentials\n */\n list = async (params: {\n input?: CredentialListInput;\n config?: Config;\n }): Promise<CredentialListOutput[]> => {\n try {\n const { input, config } = params;\n const results = await this.controlApi.listCredentials({\n input: new agentrun.ListCredentialsRequest(input),\n config: config ?? this.config,\n });\n\n return results.items?.map((item) => new CredentialListOutput(item as any)) ?? [];\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential');\n }\n\n throw error;\n }\n };\n}\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: model_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Model Control API\n */\nexport class ModelControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create model service\n *\n * @param params - Method parameters\n * @param params.input - Model service configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created model service object\n */\n createModelService = async (params: { input: $AgentRun.CreateModelServiceInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createModelServiceWithOptions(\n new $AgentRun.CreateModelServiceRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted model service object\n */\n deleteModelService = async (params: { modelServiceName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteModelServiceWithOptions(\n modelServiceName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.input - Model service configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated model service object\n */\n updateModelService = async (params: { modelServiceName: string; input: $AgentRun.UpdateModelServiceInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateModelServiceWithOptions(\n modelServiceName,\n new $AgentRun.UpdateModelServiceRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Model service object\n */\n getModelService = async (params: { modelServiceName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getModelServiceWithOptions(\n modelServiceName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List model services\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of model service objects\n */\n listModelServices = async (params: { input: $AgentRun.ListModelServicesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListModelServicesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listModelServicesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listModelServices, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListModelServicesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Create model proxy\n *\n * @param params - Method parameters\n * @param params.input - Model proxy configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created model proxy object\n */\n createModelProxy = async (params: { input: $AgentRun.CreateModelProxyInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createModelProxyWithOptions(\n new $AgentRun.CreateModelProxyRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted model proxy object\n */\n deleteModelProxy = async (params: { modelProxyName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteModelProxyWithOptions(\n modelProxyName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.input - Model proxy configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated model proxy object\n */\n updateModelProxy = async (params: { modelProxyName: string; input: $AgentRun.UpdateModelProxyInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateModelProxyWithOptions(\n modelProxyName,\n new $AgentRun.UpdateModelProxyRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Model proxy object\n */\n getModelProxy = async (params: { modelProxyName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getModelProxyWithOptions(\n modelProxyName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List model proxies\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of model proxy objects\n */\n listModelProxies = async (params: { input: $AgentRun.ListModelProxiesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListModelProxiesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listModelProxiesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listModelProxies, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListModelProxiesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Model Service Data Models\n *\n * 此模块定义 Model Service 相关的所有数据模型。\n * This module defines all data models related to Model Service.\n */\n\nimport { Status, PageableInput, NetworkConfig } from '../utils/model';\n\n/**\n * Backend type enum\n */\nexport type BackendType = 'proxy' | 'service';\n\nexport const BackendType = {\n PROXY: 'proxy' as BackendType,\n SERVICE: 'service' as BackendType,\n};\n\n/**\n * Model type enum\n */\nexport type ModelType =\n | 'llm'\n | 'text-embedding'\n | 'speech2text'\n | 'tts'\n | 'rerank'\n | 'moderation';\n\nexport const ModelType = {\n LLM: 'llm' as ModelType,\n TEXT_EMBEDDING: 'text-embedding' as ModelType,\n SPEECH2TEXT: 'speech2text' as ModelType,\n TTS: 'tts' as ModelType,\n RERANK: 'rerank' as ModelType,\n MODERATION: 'moderation' as ModelType,\n};\n\n/**\n * Provider enum\n */\nexport type Provider =\n | 'openai'\n | 'anthropic'\n | 'baichuan'\n | 'deepseek'\n | 'gemini'\n | 'hunyuan'\n | 'minimax'\n | 'moonshot'\n | 'spark'\n | 'stepfun'\n | 'tongyi'\n | 'vertex_ai'\n | 'wenxin'\n | 'yi'\n | 'zhipuai'\n | 'custom';\n\nexport const Provider = {\n OPENAI: 'openai' as Provider,\n ANTHROPIC: 'anthropic' as Provider,\n BAICHUAN: 'baichuan' as Provider,\n DEEPSEEK: 'deepseek' as Provider,\n GEMINI: 'gemini' as Provider,\n HUNYUAN: 'hunyuan' as Provider,\n MINIMAX: 'minimax' as Provider,\n MOONSHOT: 'moonshot' as Provider,\n SPARK: 'spark' as Provider,\n STEPFUN: 'stepfun' as Provider,\n TONGYI: 'tongyi' as Provider,\n VERTEX_AI: 'vertex_ai' as Provider,\n WENXIN: 'wenxin' as Provider,\n YI: 'yi' as Provider,\n ZHIPUAI: 'zhipuai' as Provider,\n CUSTOM: 'custom' as Provider,\n};\n\nexport type ProxyMode = 'single' | 'multi';\n\nexport const ProxyMode = {\n SINGLE: 'single' as ProxyMode,\n MULTI: 'multi' as ProxyMode,\n};\n\n/**\n * Provider settings\n */\nexport interface ProviderSettings {\n apiKey?: string;\n baseUrl?: string;\n modelNames?: string[];\n}\n\n/**\n * Model features\n */\nexport interface ModelFeatures {\n agentThought?: boolean;\n multiToolCall?: boolean;\n streamToolCall?: boolean;\n toolCall?: boolean;\n vision?: boolean;\n}\n\n/**\n * Model properties\n */\nexport interface ModelProperties {\n contextSize?: number;\n}\n\n/**\n * Model parameter rule\n */\nexport interface ModelParameterRule {\n default?: unknown;\n max?: number;\n min?: number;\n name?: string;\n required?: boolean;\n type?: string;\n}\n\n/**\n * Model info config\n */\nexport interface ModelInfoConfig {\n modelName?: string;\n modelFeatures?: ModelFeatures;\n modelProperties?: ModelProperties;\n modelParameterRules?: ModelParameterRule[];\n}\n\n/**\n * Proxy config endpoint\n */\nexport interface ProxyConfigEndpoint {\n baseUrl?: string;\n modelNames?: string[];\n modelServiceName?: string;\n weight?: number;\n}\n\n/**\n * Proxy config fallback\n */\nexport interface ProxyConfigFallback {\n modelName?: string;\n modelServiceName?: string;\n}\n\nexport interface ProxyConfigTokenRateLimiter {\n tps?: number;\n tpm?: number;\n tph?: number;\n tpd?: number;\n}\n\nexport interface ProxyConfigAIGuardrailConfig {\n checkRequest?: boolean;\n checkResponse?: boolean;\n}\n\n/**\n * Proxy config policies\n */\nexport interface ProxyConfigPolicies {\n cache?: boolean;\n concurrencyLimit?: number;\n fallbacks?: ProxyConfigFallback[];\n numRetries?: number;\n requestTimeout?: number;\n aiGuardrailConfig?: ProxyConfigAIGuardrailConfig;\n tokenRateLimiter?: ProxyConfigTokenRateLimiter;\n}\n\n/**\n * Proxy config\n */\nexport interface ProxyConfig {\n endpoints?: ProxyConfigEndpoint[];\n policies?: ProxyConfigPolicies;\n}\n\nexport interface CommonModelMutableProps {\n credentialName?: string;\n description?: string;\n networkConfiguration?: NetworkConfig;\n tags?: string[];\n}\n\nexport interface CommonModelImmutableProps {\n modelType?: ModelType;\n}\n\nexport interface CommonModelSystemProps {\n createdAt?: string;\n lastUpdatedAt?: string;\n status?: Status;\n}\n\nexport interface ModelServiceMutableProps extends CommonModelMutableProps {\n providerSettings?: ProviderSettings;\n}\n\nexport interface ModelServiceImmutableProps extends CommonModelImmutableProps {\n modelInfoConfigs?: ModelInfoConfig[];\n modelServiceName?: string;\n provider?: string;\n}\n\nexport interface ModelServiceSystemProps extends CommonModelSystemProps {\n modelServiceId?: string;\n}\n\nexport interface ModelProxyMutableProps extends CommonModelMutableProps {\n cpu?: number;\n litellmVersion?: string;\n memory?: number;\n modelProxyName?: string;\n proxyModel?: ProxyMode;\n serviceRegionId?: string;\n proxyConfig?: ProxyConfig;\n executionRoleArn?: string;\n}\n\nexport interface ModelProxyImmutableProps extends CommonModelImmutableProps {}\n\nexport interface ModelProxySystemProps extends CommonModelSystemProps {\n endpoint?: string;\n functionName?: string;\n modelProxyId?: string;\n}\n\nexport interface ModelServiceCreateInput\n extends ModelServiceImmutableProps,\n ModelServiceMutableProps {}\n\nexport interface ModelServiceUpdateInput extends ModelServiceMutableProps {}\n\nexport interface ModelServiceListInput extends PageableInput {\n modelServiceName?: string;\n modelType?: ModelType;\n provider?: string;\n}\n\n/**\n * Model proxy create input\n */\nexport interface ModelProxyCreateInput\n extends ModelServiceImmutableProps,\n ModelProxyMutableProps {}\n\n/**\n * Model proxy update input\n */\nexport interface ModelProxyUpdateInput extends ModelServiceMutableProps {\n proxyModel?: string;\n executionRoleArn?: string;\n}\n\n/**\n * Model proxy list input\n */\nexport interface ModelProxyListInput extends PageableInput {\n modelProxyName?: string;\n proxyMode?: string;\n status?: Status;\n}\n\nexport interface ModelProxyInterface\n extends ModelProxyMutableProps,\n ModelProxyImmutableProps,\n ModelProxySystemProps {}\nexport interface ModelServiceInterface\n extends ModelServiceMutableProps,\n ModelServiceImmutableProps,\n ModelServiceSystemProps {}\n\n/**\n * Model service data type (complete data structure)\n */\nexport type ModelServiceData = ModelServiceInterface;\n\n/**\n * Model proxy data type (complete data structure)\n */\nexport type ModelProxyData = ModelProxyInterface;\n\n","/**\n * Model Proxy 高层 API / Model Proxy High-Level API\n *\n * 此模块定义模型代理资源的高级API。\n * This module defines the high-level API for model proxy resources.\n */\n\nimport * as _ from 'lodash';\n\nimport { Config } from '../utils/config';\nimport { Status } from '../utils/model';\nimport { PageableInput } from '../utils/model';\nimport { ResourceBase } from '../utils/resource';\n\nimport {\n BackendType,\n ModelProxyCreateInput,\n ModelProxyImmutableProps,\n ModelProxyListInput,\n ModelProxyMutableProps,\n ModelProxySystemProps,\n ModelProxyUpdateInput,\n ProxyMode,\n} from './model';\n\n/**\n * 模型代理 / Model Proxy\n */\nexport class ModelProxy\n extends ResourceBase\n implements\n ModelProxyImmutableProps,\n ModelProxyMutableProps,\n ModelProxySystemProps\n{\n // ImmutableProps\n modelType?: ModelProxyImmutableProps['modelType'];\n\n // MutableProps\n credentialName?: string;\n description?: string;\n networkConfiguration?: ModelProxyMutableProps['networkConfiguration'];\n tags?: string[];\n cpu?: number;\n litellmVersion?: string;\n memory?: number;\n modelProxyName?: string;\n proxyModel?: ProxyMode;\n serviceRegionId?: string;\n proxyConfig?: ModelProxyMutableProps['proxyConfig'];\n executionRoleArn?: string;\n\n // SystemProps\n endpoint?: string;\n functionName?: string;\n modelProxyId?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n declare status?: ModelProxySystemProps['status'];\n\n /**\n * 获取客户端 / Get client\n * \n * @returns ModelClient 实例\n */\n private static getClient() {\n // 延迟导入以避免循环依赖\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ModelClient } = require('./client');\n return new ModelClient();\n }\n\n /**\n * 创建模型代理 / Create model proxy\n * \n * @param params - 参数 / Parameters\n * @returns 创建的模型代理对象 / Created model proxy object\n */\n static async create(params: {\n input: ModelProxyCreateInput;\n config?: Config;\n }): Promise<ModelProxy> {\n const { input, config } = params;\n return await this.getClient().create(input, config);\n }\n\n /**\n * 根据名称删除模型代理 / Delete model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型代理对象 / Deleted model proxy object\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, config } = params;\n return await this.getClient().delete(\n name,\n BackendType.PROXY,\n config\n );\n }\n\n /**\n * 根据名称更新模型代理 / Update model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型代理对象 / Updated model proxy object\n */\n static async update(params: {\n name: string;\n input: ModelProxyUpdateInput;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, input, config } = params;\n return await this.getClient().update(name, input, config);\n }\n\n /**\n * 根据名称获取模型代理 / Get model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 模型代理对象 / Model proxy object\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, config } = params;\n return await this.getClient().get(\n name,\n BackendType.PROXY,\n config\n );\n }\n\n /**\n * 列出模型代理(分页)/ List model proxies (paginated)\n * \n * @param pageInput - 分页参数 / Pagination parameters\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 模型代理列表 / Model proxy list\n */\n protected static async listPage(\n pageInput: PageableInput,\n config?: Config,\n kwargs?: Partial<ModelProxyListInput>\n ): Promise<ModelProxy[]> {\n return await this.getClient().list(\n {\n ...kwargs,\n ...pageInput,\n } as ModelProxyListInput,\n config\n );\n }\n\n /**\n * 列出所有模型代理 / List all model proxies\n * \n * @param options - 查询选项 / Query options\n * @param config - 配置 / Configuration\n * @returns 模型代理列表 / Model proxy list\n */\n static async listAll(options?: {\n proxyMode?: string;\n status?: Status;\n config?: Config;\n }): Promise<ModelProxy[]> {\n return await this.listAllResources(\n (m: ModelProxy) => m.modelProxyId || '',\n options?.config,\n {\n proxyMode: options?.proxyMode,\n status: options?.status,\n }\n );\n }\n\n /**\n * 更新模型代理 / Update model proxy\n * \n * @param input - 模型代理更新输入参数 / Model proxy update input parameters\n * @param config - 配置 / Configuration\n * @returns 更新后的模型代理对象 / Updated model proxy object\n */\n update = async (params: {\n input: ModelProxyUpdateInput;\n config?: Config;\n }): Promise<ModelProxy> => {\n const { input, config } = params;\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to update a ModelProxy'\n );\n }\n\n const result = await ModelProxy.update({\n name: this.modelProxyName,\n input,\n config,\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 删除模型代理 / Delete model proxy\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型代理对象 / Deleted model proxy object\n */\n delete = async (params?: { config?: Config }): Promise<ModelProxy> => {\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to delete a ModelProxy'\n );\n }\n\n return await ModelProxy.delete({ name: this.modelProxyName, config: params?.config });\n };\n\n /**\n * 刷新模型代理信息 / Refresh model proxy information\n * \n * @param params - 参数 / Parameters\n * @returns 刷新后的模型代理对象 / Refreshed model proxy object\n */\n get = async (params?: { config?: Config }): Promise<ModelProxy> => {\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to refresh a ModelProxy'\n );\n }\n\n const result = await ModelProxy.get({\n name: this.modelProxyName,\n config: params?.config,\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 获取模型信息 / Get model information\n * \n * @param params - 参数 / Parameters\n * @param params.config - 配置 / Configuration\n * @returns 模型基本信息 / Model base information\n */\n modelInfo = async (params?: { config?: Config }): Promise<{\n apiKey: string;\n baseUrl: string;\n model?: string;\n headers?: Record<string, string>;\n }> => {\n const cfg = Config.withConfigs(this._config, params?.config);\n\n if (!this.modelProxyName) {\n throw new Error('modelProxyName is required');\n }\n if (!this.endpoint) {\n throw new Error('endpoint is required');\n }\n\n let apiKey = '';\n \n // 如果有 credentialName,从 Credential 获取\n if (this.credentialName) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { Credential } = require('../credential/credential');\n const credential = await Credential.get({\n name: this.credentialName,\n config: cfg,\n });\n apiKey = credential.credentialSecret || '';\n }\n\n // 根据 proxyMode 确定默认模型\n const defaultModel =\n this.proxyModel === 'single'\n ? _.get(this.proxyConfig, 'endpoints[0].modelNames[0]')\n : this.modelProxyName;\n\n return {\n apiKey: apiKey,\n baseUrl: this.endpoint,\n model: defaultModel,\n headers: cfg.headers,\n };\n };\n\n /**\n * 调用模型完成 / Call model completion\n * \n * @param params - 参数 / Parameters\n * @returns 完成结果 / Completion result\n */\n completions = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelProxyName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 获取响应 / Get responses\n * \n * @param params - 参数 / Parameters\n * @returns 响应结果 / Response result\n */\n responses = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelProxyName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 等待模型代理就绪 / Wait until model proxy is ready\n * \n * @param options - 选项 / Options\n * @param config - 配置 / Configuration\n * @returns 模型代理对象 / Model proxy object\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (proxy: ModelProxy) => void;\n },\n config?: Config\n ): Promise<ModelProxy> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Model proxy failed with status: ${this.status}`);\n }\n\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for model proxy to be ready after ${options?.timeoutSeconds ?? 300} seconds`\n );\n };\n}\n","/**\n * Model Service 高层 API / Model Service High-Level API\n *\n * 此模块定义模型服务资源的高级API。\n * This module defines the high-level API for model service resources.\n */\n\nimport { Config } from '../utils/config';\nimport { Status, PageableInput } from '../utils/model';\nimport { ResourceBase } from '../utils/resource';\n\nimport {\n BackendType,\n ModelServiceCreateInput,\n ModelServiceImmutableProps,\n ModelServiceListInput,\n ModelServiceMutableProps,\n ModelServiceSystemProps,\n ModelServiceUpdateInput,\n ModelType,\n} from './model';\n\n/**\n * 模型服务 / Model Service\n */\nexport class ModelService\n extends ResourceBase\n implements\n ModelServiceImmutableProps,\n ModelServiceMutableProps,\n ModelServiceSystemProps\n{\n // ImmutableProps\n modelInfoConfigs?: ModelServiceImmutableProps['modelInfoConfigs'];\n modelServiceName?: string;\n provider?: string;\n \n // MutableProps\n credentialName?: string;\n description?: string;\n networkConfiguration?: ModelServiceMutableProps['networkConfiguration'];\n tags?: string[];\n providerSettings?: ModelServiceMutableProps['providerSettings'];\n \n // SystemProps\n modelServiceId?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n declare status?: ModelServiceSystemProps['status'];\n \n // CommonProps\n modelType?: ModelServiceImmutableProps['modelType'];\n\n /**\n * 获取客户端 / Get client\n * \n * @returns ModelClient 实例\n */\n private static getClient() {\n // 延迟导入以避免循环依赖\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ModelClient } = require('./client');\n return new ModelClient();\n }\n\n /**\n * 创建模型服务 / Create model service\n * \n * @param params - 参数 / Parameters\n * @returns 创建的模型服务对象 / Created model service object\n */\n static async create(params: {\n input: ModelServiceCreateInput;\n config?: Config;\n }): Promise<ModelService> {\n const { input, config } = params;\n return await this.getClient().create(input, config);\n }\n\n /**\n * 根据名称删除模型服务 / Delete model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型服务对象 / Deleted model service object\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ModelService> {\n const { name, config } = params;\n return await this.getClient().delete(\n name,\n BackendType.SERVICE,\n config\n );\n }\n\n /**\n * 根据名称更新模型服务 / Update model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n */\n static async update(params: {\n name: string;\n input: ModelServiceUpdateInput;\n config?: Config;\n }): Promise<ModelService> {\n const { name, input, config } = params;\n return await this.getClient().update(name, input, config);\n }\n\n /**\n * 根据名称获取模型服务 / Get model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务对象 / Model service object\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ModelService> {\n const { name, config } = params;\n return await this.getClient().get(\n name,\n BackendType.SERVICE,\n config\n );\n }\n\n /**\n * 列出模型服务(分页)/ List model services (paginated)\n * \n * @param pageInput - 分页参数 / Pagination parameters\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 模型服务列表 / Model service list\n */\n protected static async listPage(\n pageInput: PageableInput,\n config?: Config,\n kwargs?: Partial<ModelServiceListInput>\n ): Promise<ModelService[]> {\n return await this.getClient().list(\n {\n ...kwargs,\n ...pageInput,\n } as ModelServiceListInput,\n config\n );\n }\n\n /**\n * 列出所有模型服务 / List all model services\n * \n * @param options - 查询选项 / Query options\n * @param config - 配置 / Configuration\n * @returns 模型服务列表 / Model service list\n */\n static async listAll(options?: {\n modelType?: ModelType;\n provider?: string;\n config?: Config;\n }): Promise<ModelService[]> {\n return await this.listAllResources(\n (m: ModelService) => m.modelServiceId || '',\n options?.config,\n {\n modelType: options?.modelType,\n provider: options?.provider,\n }\n );\n }\n\n /**\n * 更新模型服务 / Update model service\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n */\n update = async (params: {\n input: ModelServiceUpdateInput;\n config?: Config;\n }): Promise<ModelService> => {\n const { input, config } = params;\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to update a ModelService'\n );\n }\n\n const result = await ModelService.update({\n name: this.modelServiceName,\n input,\n config\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 删除模型服务 / Delete model service\n * \n * @param config - 配置 / Configuration\n * @returns 删除的模型服务对象 / Deleted model service object\n */\n delete = async (params?: { config?: Config }): Promise<ModelService> => {\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to delete a ModelService'\n );\n }\n\n return await ModelService.delete({ name: this.modelServiceName, config: params?.config });\n };\n\n /**\n * 刷新模型服务信息 / Refresh model service information\n * \n * @param config - 配置 / Configuration\n * @returns 刷新后的模型服务对象 / Refreshed model service object\n */\n get = async (params?: { config?: Config }): Promise<ModelService> => {\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to refresh a ModelService'\n );\n }\n\n const result = await ModelService.get({\n name: this.modelServiceName,\n config: params?.config\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 获取模型信息 / Get model information\n * \n * @param params - 参数 / Parameters\n * @param params.config - 配置 / Configuration\n * @returns 模型基本信息 / Model base information\n */\n modelInfo = async (params?: { config?: Config }): Promise<{\n apiKey: string;\n baseUrl: string;\n model?: string;\n headers?: Record<string, string>;\n provider?: string;\n }> => {\n const cfg = Config.withConfigs(this._config, params?.config);\n\n if (!this.providerSettings) {\n throw new Error('providerSettings is required');\n }\n if (!this.providerSettings.baseUrl) {\n throw new Error('providerSettings.baseUrl is required');\n }\n\n let apiKey = this.providerSettings.apiKey || '';\n \n // 如果没有 apiKey 但有 credentialName,从 Credential 获取\n if (!apiKey && this.credentialName) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { Credential } = require('../credential/credential');\n const credential = await Credential.get({\n name: this.credentialName,\n config: cfg,\n });\n apiKey = credential.credentialSecret || '';\n }\n\n const defaultModel =\n this.providerSettings.modelNames &&\n this.providerSettings.modelNames.length > 0\n ? this.providerSettings.modelNames[0]\n : undefined;\n\n return {\n apiKey: apiKey,\n baseUrl: this.providerSettings.baseUrl,\n model: defaultModel,\n headers: cfg.headers,\n provider: this.provider,\n };\n };\n\n /**\n * 调用模型完成 / Call model completion\n * \n * @param messages - 消息列表 / Message list\n * @param model - 模型名称(可选)/ Model name (optional)\n * @param stream - 是否流式输出 / Whether to stream output\n * @param kwargs - 其他参数 / Other parameters\n * @returns 完成结果 / Completion result\n */\n completions = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelServiceName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 获取响应 / Get responses\n * \n * @param input - 输入 / Input\n * @param model - 模型名称(可选)/ Model name (optional)\n * @param stream - 是否流式输出 / Whether to stream output\n * @param kwargs - 其他参数 / Other parameters\n * @returns 响应结果 / Response result\n */\n responses = async (params: {\n input: string | any;\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { input, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelServiceName || '';\n\n // 将 input 转换为 messages 格式\n const messages = typeof input === 'string' \n ? [{ role: 'user' as const, content: input }]\n : input;\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 等待模型服务就绪 / Wait until model service is ready\n * \n * @param options - 选项 / Options\n * @param config - 配置 / Configuration\n * @returns 模型服务对象 / Model service object\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (service: ModelService) => void;\n },\n config?: Config\n ): Promise<ModelService> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Model service failed with status: ${this.status}`);\n }\n\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for model service to be ready after ${options?.timeoutSeconds ?? 300} seconds`\n );\n };\n}\n","/**\n * Model Service 客户端 / Model Service Client\n *\n * 此模块提供模型服务和模型代理的客户端API。\n * This module provides the client API for model services and model proxies.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as _ from 'lodash';\n\nimport { Config } from '../utils/config';\nimport { HTTPError } from '../utils/exception';\n\nimport { ModelControlAPI } from './api/control';\nimport { BackendType, ModelProxyCreateInput, ModelProxyListInput, ModelProxyUpdateInput, ModelServiceCreateInput, ModelServiceListInput, ModelServiceUpdateInput } from './model';\nimport { ModelProxy } from './model-proxy';\nimport { ModelService } from './model-service';\n\n/**\n * Model Service 客户端 / Model Service Client\n *\n * 提供模型服务和模型代理的创建、删除、更新和查询功能。\n * Provides create, delete, update and query functions for model services and model proxies.\n */\nexport class ModelClient {\n private controlApi: ModelControlAPI;\n private config?: Config;\n\n /**\n * 初始化客户端 / Initialize client\n *\n * @param config - 配置对象,可选 / Configuration object, optional\n */\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new ModelControlAPI(config);\n }\n\n /**\n * 创建模型服务\n * Create model service\n * \n * @param params - 参数 / Parameters\n * @returns 创建的对象 / Created object\n */\n create = async (params: { input: ModelServiceCreateInput | ModelProxyCreateInput; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { input, config } = params;\n const cfg = config ?? this.config;\n \n try {\n if ('modelProxyName' in input) {\n // 处理 ModelProxyCreateInput\n const modelProxyInput = input as ModelProxyCreateInput;\n \n // 如果没有设置 proxyModel,根据 endpoints 数量自动判断\n if (!modelProxyInput.proxyModel) {\n const endpoints = _.get(modelProxyInput, 'proxyConfig.endpoints', []);\n modelProxyInput.proxyModel = endpoints.length > 1 ? 'multi' : 'single';\n }\n\n const createInput = new $AgentRun.CreateModelProxyInput({\n modelProxyName: modelProxyInput.modelProxyName,\n description: modelProxyInput.description,\n executionRoleArn: modelProxyInput.executionRoleArn,\n tags: modelProxyInput.tags,\n cpu: modelProxyInput.cpu ?? 2, // 默认值 2\n litellmVersion: modelProxyInput.litellmVersion,\n memory: modelProxyInput.memory ?? 4096, // 默认值 4096\n proxyMode: modelProxyInput.proxyModel,\n serviceRegionId: modelProxyInput.serviceRegionId,\n proxyConfig: modelProxyInput.proxyConfig,\n modelType: modelProxyInput.modelType,\n });\n\n const result = await this.controlApi.createModelProxy({\n input: createInput,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } else {\n // 处理 ModelServiceCreateInput\n const modelServiceInput = input as ModelServiceCreateInput;\n \n const createInput = new $AgentRun.CreateModelServiceInput({\n modelServiceName: modelServiceInput.modelServiceName,\n description: modelServiceInput.description,\n tags: modelServiceInput.tags,\n provider: modelServiceInput.provider,\n modelInfoConfigs: modelServiceInput.modelInfoConfigs,\n providerSettings: modelServiceInput.providerSettings,\n modelType: modelServiceInput.modelType,\n });\n\n const result = await this.controlApi.createModelService({\n input: createInput,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n }\n } catch (e) {\n if (e instanceof HTTPError) {\n const name = 'modelProxyName' in input \n ? (input as ModelProxyCreateInput).modelProxyName \n : (input as ModelServiceCreateInput).modelServiceName;\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 删除模型服务\n * Delete model service\n * \n * @param params - 参数 / Parameters\n * @returns 删除的对象 / Deleted object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n delete = async (params: { name: string; backendType?: BackendType; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, backendType, config } = params;\n const cfg = config ?? this.config;\n let error: HTTPError | null = null;\n \n // 如果是 proxy 或未指定类型,先尝试删除 proxy\n if (backendType === 'proxy' || backendType === undefined) {\n try {\n const result = await this.controlApi.deleteModelProxy({\n modelProxyName: name,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n error = e;\n } else {\n throw e;\n }\n }\n }\n\n // 如果明确指定为 proxy 且出错,抛出错误\n if (backendType === 'proxy' && error !== null) {\n throw error.toResourceError('Model', name);\n }\n\n // 尝试删除 service\n try {\n const result = await this.controlApi.deleteModelService({\n modelServiceName: name,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 更新模型服务\n * Update model service\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n update = async (params: { name: string; input: ModelServiceUpdateInput | ModelProxyUpdateInput; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, input, config } = params;\n const cfg = config ?? this.config;\n \n if ('proxyModel' in input || 'executionRoleArn' in input) {\n // 处理 ModelProxyUpdateInput\n const modelProxyInput = input as ModelProxyUpdateInput;\n \n try {\n // 如果没有设置 proxyModel,根据 endpoints 数量自动判断\n if (!modelProxyInput.proxyModel && modelProxyInput.proxyModel !== undefined) {\n const endpoints = _.get(modelProxyInput, 'proxyConfig.endpoints', []);\n modelProxyInput.proxyModel = endpoints.length > 1 ? 'multi' : 'single';\n }\n \n const updateInput = new $AgentRun.UpdateModelProxyInput({\n description: modelProxyInput.description,\n executionRoleArn: modelProxyInput.executionRoleArn,\n });\n \n const result = await this.controlApi.updateModelProxy({\n modelProxyName: name,\n input: updateInput,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n } else {\n // 处理 ModelServiceUpdateInput\n const modelServiceInput = input as ModelServiceUpdateInput;\n \n try {\n const updateInput = new $AgentRun.UpdateModelServiceInput({\n description: modelServiceInput.description,\n providerSettings: modelServiceInput.providerSettings,\n });\n \n const result = await this.controlApi.updateModelService({\n modelServiceName: name,\n input: updateInput,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n }\n };\n\n /**\n * 获取模型服务\n * Get model service\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务对象 / Model service object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n get = async (params: { name: string; backendType?: BackendType; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, backendType, config } = params;\n const cfg = config ?? this.config;\n let error: HTTPError | null = null;\n \n // 如果是 proxy 或未指定类型,先尝试获取 proxy\n if (backendType === 'proxy' || backendType === undefined) {\n try {\n const result = await this.controlApi.getModelProxy({\n modelProxyName: name,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n error = e;\n } else {\n throw e;\n }\n }\n }\n\n // 如果明确指定为 proxy 且出错,抛出错误\n if (backendType === 'proxy' && error !== null) {\n throw error.toResourceError('Model', name);\n }\n\n // 尝试获取 service\n try {\n const result = await this.controlApi.getModelService({\n modelServiceName: name,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 列出模型服务\n * List model services\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务列表 / Model service list\n */\n list = async (params: { input: ModelServiceListInput | ModelProxyListInput; config?: Config }): Promise<ModelService[] | ModelProxy[]> => {\n const { input, config } = params;\n const cfg = config ?? this.config;\n \n if ('modelProxyName' in input) {\n // 处理 ModelProxyListInput\n const modelProxyInput = input as ModelProxyListInput;\n \n const request = new $AgentRun.ListModelProxiesRequest({\n pageNumber: modelProxyInput.pageNumber,\n pageSize: modelProxyInput.pageSize,\n modelProxyName: modelProxyInput.modelProxyName,\n });\n \n const result = await this.controlApi.listModelProxies({\n input: request,\n config: cfg,\n });\n return (result.items || []).map(item => {\n const proxy = new ModelProxy();\n Object.assign(proxy, item);\n return proxy;\n });\n } else {\n // 处理 ModelServiceListInput\n const modelServiceInput = input as ModelServiceListInput;\n \n const request = new $AgentRun.ListModelServicesRequest({\n pageNumber: modelServiceInput.pageNumber,\n pageSize: modelServiceInput.pageSize,\n modelServiceName: modelServiceInput.modelServiceName,\n modelType: modelServiceInput.modelType,\n provider: modelServiceInput.provider,\n });\n \n const result = await this.controlApi.listModelServices({\n input: request,\n config: cfg,\n });\n return (result.items || []).map(item => {\n const service = new ModelService();\n Object.assign(service, item);\n return service;\n });\n }\n };\n}\n","/**\n * ToolSet Models\n *\n * ToolSet 相关的数据模型。\n * Data models for ToolSet.\n */\n\nimport { Status } from \"../utils/model\";\n\n/**\n * ToolSet schema type\n */\nexport enum ToolSetSchemaType {\n OPENAPI = \"OpenAPI\",\n MCP = \"MCP\",\n}\n\n/**\n * ToolSet schema\n */\nexport interface ToolSetSchema {\n /**\n * Schema type (OpenAPI, MCP)\n */\n type?: ToolSetSchemaType;\n /**\n * Schema detail (URL or inline definition)\n */\n detail?: string;\n}\n\n/**\n * ToolSet authorization configuration\n */\nexport interface ToolSetAuthorization {\n /**\n * Authorization type\n */\n type?: string;\n /**\n * API Key header name\n */\n apiKeyHeaderName?: string;\n /**\n * API Key value\n */\n apiKeyValue?: string;\n}\n\n/**\n * ToolSet specification\n */\nexport interface ToolSetSpec {\n /**\n * Schema configuration\n */\n schema?: ToolSetSchema;\n /**\n * Authorization configuration\n */\n authConfig?: ToolSetAuthorization;\n}\n\n/**\n * MCP Tool meta\n */\nexport interface MCPToolMeta {\n /**\n * Tool name\n */\n name?: string;\n /**\n * Tool description\n */\n description?: string;\n}\n\n/**\n * ToolSet status outputs\n */\nexport interface ToolSetStatusOutputs {\n /**\n * MCP server configuration\n */\n mcpServerConfig?: {\n url?: string;\n transport?: string;\n };\n /**\n * Tools list\n */\n tools?: MCPToolMeta[];\n /**\n * URLs\n */\n urls?: {\n cdpUrl?: string;\n liveViewUrl?: string;\n streamUrl?: string;\n };\n}\n\n/**\n * ToolSet status\n */\nexport interface ToolSetStatus {\n /**\n * Current status\n */\n status?: Status;\n /**\n * Status reason\n */\n statusReason?: string;\n /**\n * Outputs\n */\n outputs?: ToolSetStatusOutputs;\n}\n\n/**\n * ToolSet data interface\n */\nexport interface ToolSetData {\n name?: string;\n uid?: string;\n kind?: string;\n description?: string;\n createdTime?: string;\n generation?: number;\n labels?: Record<string, string>;\n spec?: ToolSetSpec;\n status?: ToolSetStatus;\n}\n\n/**\n * ToolSet create input\n */\nexport interface ToolSetCreateInput {\n /**\n * ToolSet name (required)\n */\n name: string;\n /**\n * Description\n */\n description?: string;\n /**\n * Labels\n */\n labels?: Record<string, string>;\n /**\n * Spec configuration\n */\n spec?: ToolSetSpec;\n}\n\n/**\n * ToolSet update input\n */\nexport interface ToolSetUpdateInput {\n /**\n * Description\n */\n description?: string;\n /**\n * Labels\n */\n labels?: Record<string, string>;\n /**\n * Spec configuration\n */\n spec?: ToolSetSpec;\n}\n\n/**\n * ToolSet list input\n */\nexport interface ToolSetListInput {\n /**\n * Prefix filter\n */\n prefix?: string;\n /**\n * Page size\n */\n pageSize?: number;\n /**\n * Next token for pagination\n */\n nextToken?: string;\n /**\n * Labels filter\n */\n labels?: Record<string, string>;\n}\n\n/**\n * JSON Schema compatible tool parameter description\n * \n * Supports complete JSON Schema fields for describing complex nested data structures.\n * JSON Schema 兼容的工具参数描述\n * \n * 支持完整的 JSON Schema 字段,能够描述复杂的嵌套数据结构。\n */\nexport class ToolSchema {\n // Basic fields / 基本字段\n type?: string;\n description?: string;\n title?: string;\n\n // Object type fields / 对象类型字段\n properties?: Record<string, ToolSchema>;\n required?: string[];\n additionalProperties?: boolean;\n\n // Array type fields / 数组类型字段\n items?: ToolSchema;\n minItems?: number;\n maxItems?: number;\n\n // String type fields / 字符串类型字段\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n format?: string; // date, date-time, email, uri, etc.\n enum?: unknown[];\n\n // Number type fields / 数值类型字段\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: number;\n exclusiveMaximum?: number;\n\n // Union types / 联合类型\n anyOf?: ToolSchema[];\n oneOf?: ToolSchema[];\n allOf?: ToolSchema[];\n\n // Default value / 默认值\n default?: unknown;\n\n constructor(data?: Partial<ToolSchema>) {\n if (data) {\n Object.assign(this, data);\n }\n }\n\n /**\n * Create ToolSchema from any OpenAPI/JSON Schema\n * 从任意 OpenAPI/JSON Schema 创建 ToolSchema\n * \n * Recursively parses all nested structures, preserving complete schema information.\n * 递归解析所有嵌套结构,保留完整的 schema 信息。\n */\n static fromAnyOpenAPISchema(schema: unknown): ToolSchema {\n if (!schema || typeof schema !== 'object') {\n return new ToolSchema({ type: 'string' });\n }\n\n const s = schema as Record<string, unknown>;\n\n // Parse properties / 解析 properties\n const propertiesRaw = s.properties as Record<string, unknown> | undefined;\n const properties = propertiesRaw\n ? Object.fromEntries(\n Object.entries(propertiesRaw).map(([key, value]) => [\n key,\n ToolSchema.fromAnyOpenAPISchema(value),\n ])\n )\n : undefined;\n\n // Parse items / 解析 items\n const itemsRaw = s.items;\n const items = itemsRaw ? ToolSchema.fromAnyOpenAPISchema(itemsRaw) : undefined;\n\n // Parse union types / 解析联合类型\n const anyOfRaw = s.anyOf as unknown[] | undefined;\n const anyOf = anyOfRaw\n ? anyOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n const oneOfRaw = s.oneOf as unknown[] | undefined;\n const oneOf = oneOfRaw\n ? oneOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n const allOfRaw = s.allOf as unknown[] | undefined;\n const allOf = allOfRaw\n ? allOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n return new ToolSchema({\n // Basic fields\n type: s.type as string | undefined,\n description: s.description as string | undefined,\n title: s.title as string | undefined,\n // Object type\n properties,\n required: s.required as string[] | undefined,\n additionalProperties: s.additionalProperties as boolean | undefined,\n // Array type\n items,\n minItems: s.minItems as number | undefined,\n maxItems: s.maxItems as number | undefined,\n // String type\n pattern: s.pattern as string | undefined,\n minLength: s.minLength as number | undefined,\n maxLength: s.maxLength as number | undefined,\n format: s.format as string | undefined,\n enum: s.enum as unknown[] | undefined,\n // Number type\n minimum: s.minimum as number | undefined,\n maximum: s.maximum as number | undefined,\n exclusiveMinimum: s.exclusiveMinimum as number | undefined,\n exclusiveMaximum: s.exclusiveMaximum as number | undefined,\n // Union types\n anyOf,\n oneOf,\n allOf,\n // Default value\n default: s.default,\n });\n }\n\n /**\n * Convert to standard JSON Schema format\n * 转换为标准 JSON Schema 格式\n */\n toJSONSchema(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n // Basic fields / 基本字段\n if (this.type !== undefined) result.type = this.type;\n if (this.description !== undefined) result.description = this.description;\n if (this.title !== undefined) result.title = this.title;\n\n // Object type / 对象类型\n if (this.properties) {\n result.properties = Object.fromEntries(\n Object.entries(this.properties).map(([k, v]) => [k, v.toJSONSchema()])\n );\n }\n if (this.required) result.required = this.required;\n if (this.additionalProperties !== undefined) {\n result.additionalProperties = this.additionalProperties;\n }\n\n // Array type / 数组类型\n if (this.items) result.items = this.items.toJSONSchema();\n if (this.minItems !== undefined) result.minItems = this.minItems;\n if (this.maxItems !== undefined) result.maxItems = this.maxItems;\n\n // String type / 字符串类型\n if (this.pattern) result.pattern = this.pattern;\n if (this.minLength !== undefined) result.minLength = this.minLength;\n if (this.maxLength !== undefined) result.maxLength = this.maxLength;\n if (this.format) result.format = this.format;\n if (this.enum) result.enum = this.enum;\n\n // Number type / 数值类型\n if (this.minimum !== undefined) result.minimum = this.minimum;\n if (this.maximum !== undefined) result.maximum = this.maximum;\n if (this.exclusiveMinimum !== undefined) {\n result.exclusiveMinimum = this.exclusiveMinimum;\n }\n if (this.exclusiveMaximum !== undefined) {\n result.exclusiveMaximum = this.exclusiveMaximum;\n }\n\n // Union types / 联合类型\n if (this.anyOf) result.anyOf = this.anyOf.map((s) => s.toJSONSchema());\n if (this.oneOf) result.oneOf = this.oneOf.map((s) => s.toJSONSchema());\n if (this.allOf) result.allOf = this.allOf.map((s) => s.toJSONSchema());\n\n // Default value / 默认值\n if (this.default !== undefined) result.default = this.default;\n\n return result;\n }\n}\n\n/**\n * Tool information\n * 工具信息\n */\nexport class ToolInfo {\n name?: string;\n description?: string;\n parameters?: ToolSchema;\n\n constructor(data?: Partial<ToolInfo>) {\n if (data) {\n this.name = data.name;\n this.description = data.description;\n this.parameters = data.parameters;\n }\n }\n\n /**\n * Create ToolInfo from MCP tool\n * 从 MCP tool 创建 ToolInfo\n */\n static fromMCPTool(tool: unknown): ToolInfo {\n if (!tool) {\n throw new Error('MCP tool is required');\n }\n\n let toolName: string | undefined;\n let toolDescription: string | undefined;\n let inputSchema: unknown;\n\n // Handle MCP Tool object / 处理 MCP Tool 对象\n if (typeof tool === 'object' && tool !== null) {\n const t = tool as Record<string, unknown>;\n \n if ('name' in t) {\n toolName = t.name as string;\n toolDescription = t.description as string | undefined;\n inputSchema = t.inputSchema || t.input_schema;\n } else {\n throw new Error(`Unsupported MCP tool format: ${typeof tool}`);\n }\n } else {\n throw new Error(`Unsupported MCP tool format: ${typeof tool}`);\n }\n\n if (!toolName) {\n throw new Error('MCP tool must have a name');\n }\n\n // Build parameters schema / 构建参数 schema\n let parameters: ToolSchema | undefined;\n if (inputSchema) {\n parameters = ToolSchema.fromAnyOpenAPISchema(inputSchema);\n }\n\n return new ToolInfo({\n name: toolName,\n description: toolDescription,\n parameters: parameters || new ToolSchema({ type: 'object', properties: {} }),\n });\n }\n}\n","/**\n * OpenAPI Protocol Handler\n *\n * 处理 OpenAPI 规范的工具解析和调用。\n * Handles tool parsing and invocation for OpenAPI specification.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport YAML from \"js-yaml\";\n\n/**\n * Tool parameter schema\n */\nexport interface ToolParameterSchema {\n type?: string;\n description?: string;\n properties?: Record<string, ToolParameterSchema>;\n required?: string[];\n items?: ToolParameterSchema;\n enum?: unknown[];\n default?: unknown;\n format?: string;\n minimum?: number;\n maximum?: number;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n}\n\n/**\n * Tool information\n */\nexport interface ToolInfo {\n name: string;\n description?: string;\n parameters?: ToolParameterSchema;\n operationId?: string;\n method?: string;\n path?: string;\n}\n\n/**\n * Invoke result\n */\nexport interface InvokeResult {\n status_code: number;\n headers?: Record<string, string>;\n body?: unknown;\n error?: string;\n}\n\n/**\n * OpenAPI handler options\n */\nexport interface OpenAPIOptions {\n /** OpenAPI schema (JSON string or object) */\n schema: string | Record<string, unknown>;\n /** Base URL for API calls */\n baseUrl?: string;\n /** Default headers for all requests */\n headers?: Record<string, string>;\n /** Default query parameters */\n queryParams?: Record<string, string>;\n /** Configuration */\n config?: Config;\n}\n\n/**\n * OpenAPI Handler class\n *\n * Parses OpenAPI schema and provides tool invocation capabilities.\n */\nexport class OpenAPI {\n private _schema: Record<string, unknown>;\n private _baseUrl: string;\n private _defaultHeaders: Record<string, string>;\n private _defaultQueryParams: Record<string, string>;\n private _config?: Config;\n private _tools: Map<string, ToolInfo> = new Map();\n\n constructor(options: OpenAPIOptions) {\n // Parse schema if it's a string\n if (typeof options.schema === \"string\") {\n // Try to parse as YAML first (since OpenAPI specs are often in YAML)\n try {\n this._schema = YAML.load(options.schema) as Record<string, unknown>;\n } catch {\n // If YAML parsing fails, try JSON\n this._schema = JSON.parse(options.schema);\n }\n } else {\n this._schema = JSON.parse(JSON.stringify(options.schema)); // Deep copy\n }\n\n // Resolve all $ref references\n this._resolveAllRefs();\n\n // Extract base URL\n this._baseUrl = options.baseUrl || this._extractBaseUrl();\n\n this._defaultHeaders = options.headers ? { ...options.headers } : {};\n this._defaultQueryParams = options.queryParams\n ? { ...options.queryParams }\n : {};\n this._config = options.config;\n\n // Parse tools from schema\n this._parseTools();\n }\n\n /**\n * Get the parsed schema\n */\n get schema(): Record<string, unknown> {\n return this._schema;\n }\n\n /**\n * Get all parsed tools\n */\n get tools(): ToolInfo[] {\n return Array.from(this._tools.values());\n }\n\n /**\n * Get a specific tool by name\n */\n getTool(name: string): ToolInfo | undefined {\n return this._tools.get(name);\n }\n\n /**\n * Invoke a tool\n */\n invokeToolAsync = async (\n name: string,\n args: Record<string, unknown> = {},\n _config?: Config,\n ): Promise<InvokeResult> => {\n const tool = this._tools.get(name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found.`);\n }\n\n const method = (tool.method || \"get\").toUpperCase();\n let path = tool.path || \"/\";\n\n // Build URL with path parameters\n const queryParams: Record<string, unknown> = {\n ...this._defaultQueryParams,\n };\n const headerParams: Record<string, string> = { ...this._defaultHeaders };\n let bodyContent: unknown = undefined;\n\n // Parse arguments into path, query, header, and body\n for (const [key, value] of Object.entries(args)) {\n if (key === \"body\") {\n bodyContent = value;\n } else if (path.includes(`{${key}}`)) {\n path = path.replace(`{${key}}`, String(value));\n } else if (typeof value === \"string\" && key.startsWith(\"X-\")) {\n // Assume header parameter\n headerParams[key] = value;\n } else {\n // Default to query parameter\n queryParams[key] = value;\n }\n }\n\n // Build full URL\n const url = new URL(path, this._baseUrl);\n for (const [key, value] of Object.entries(queryParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n\n // Make request\n try {\n const fetchOptions: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headerParams,\n },\n };\n\n if (bodyContent && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n fetchOptions.body = JSON.stringify(bodyContent);\n }\n\n const response = await fetch(url.toString(), fetchOptions);\n \n // Clone response to avoid \"Body already used\" error\n const responseClone = response.clone();\n let responseBody: unknown;\n \n try {\n responseBody = await response.json();\n } catch {\n // If JSON parsing fails, try text\n responseBody = await responseClone.text();\n }\n\n return {\n status_code: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: responseBody,\n };\n } catch (error) {\n return {\n status_code: 0,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n };\n\n /**\n * Synchronous invoke (wrapper for async)\n */\n invokeToolSync(\n _name: string,\n _args: Record<string, unknown> = {},\n ): InvokeResult {\n // Note: This is a simplified sync version that doesn't actually work in Node.js\n // It's mainly for testing purposes\n throw new Error(\n \"Synchronous invocation is not supported in Node.js. Use invokeToolAsync instead.\",\n );\n }\n\n // Alias for Python compatibility\n invoke_tool = (\n name: string,\n args: Record<string, unknown> = {},\n _config?: Config,\n ): Promise<InvokeResult> => {\n return this.invokeToolAsync(name, args);\n };\n\n /**\n * Extract base URL from schema\n */\n private _extractBaseUrl(): string {\n const servers = this._schema.servers as Array<{ url: string }> | undefined;\n if (servers && servers.length > 0) {\n return servers[0].url;\n }\n return \"\";\n }\n\n /**\n * Resolve all $ref references in the schema\n */\n private _resolveAllRefs(): void {\n this._schema = this._resolveRefs(this._schema, this._schema) as Record<\n string,\n unknown\n >;\n }\n\n /**\n * Recursively resolve $ref references\n */\n private _resolveRefs(obj: unknown, root: Record<string, unknown>): unknown {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => this._resolveRefs(item, root));\n }\n\n if (typeof obj === \"object\") {\n const result: Record<string, unknown> = {};\n const objRecord = obj as Record<string, unknown>;\n\n // Check for $ref\n if (\"$ref\" in objRecord && typeof objRecord.$ref === \"string\") {\n const refPath = objRecord.$ref;\n const resolved = this._resolveRef(refPath, root);\n\n // Recursively resolve the referenced object itself\n const resolvedDeep = this._resolveRefs(resolved, root);\n\n // Merge resolved reference with sibling properties\n if (typeof resolvedDeep === \"object\" && resolvedDeep !== null) {\n Object.assign(result, resolvedDeep);\n }\n\n // Add other properties (sibling to $ref)\n for (const [key, value] of Object.entries(objRecord)) {\n if (key !== \"$ref\") {\n result[key] = this._resolveRefs(value, root);\n }\n }\n\n return result;\n }\n\n // Recursively resolve all properties\n for (const [key, value] of Object.entries(objRecord)) {\n result[key] = this._resolveRefs(value, root);\n }\n\n return result;\n }\n\n return obj;\n }\n\n /**\n * Resolve a single $ref path\n */\n private _resolveRef(refPath: string, root: Record<string, unknown>): unknown {\n if (!refPath.startsWith(\"#/\")) {\n // External reference - not supported yet\n logger.warn(`External $ref not supported: ${refPath}`);\n return {};\n }\n\n const path = refPath.substring(2).split(\"/\");\n let current: unknown = root;\n\n for (const part of path) {\n if (current === null || current === undefined) {\n return {};\n }\n if (typeof current === \"object\" && !Array.isArray(current)) {\n current = (current as Record<string, unknown>)[part];\n } else {\n return {};\n }\n }\n\n return current;\n }\n\n /**\n * Parse tools from OpenAPI paths\n */\n private _parseTools(): void {\n const paths = this._schema.paths as\n | Record<string, Record<string, unknown>>\n | undefined;\n if (!paths) {\n return;\n }\n\n for (const [path, pathItem] of Object.entries(paths)) {\n if (typeof pathItem !== \"object\" || pathItem === null) {\n continue;\n }\n\n for (const [method, operation] of Object.entries(pathItem)) {\n if (\n ![\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"options\",\n \"head\",\n ].includes(method)\n ) {\n continue;\n }\n\n if (typeof operation !== \"object\" || operation === null) {\n continue;\n }\n\n const op = operation as Record<string, unknown>;\n const operationId = op.operationId as string | undefined;\n if (!operationId) {\n continue;\n }\n\n // Parse parameters\n const parameters = this._parseParameters(op, path);\n\n const tool: ToolInfo = {\n name: operationId,\n description: (op.summary as string) || (op.description as string),\n parameters,\n operationId,\n method,\n path,\n };\n\n this._tools.set(operationId, tool);\n }\n }\n }\n\n /**\n * Parse operation parameters into a schema\n */\n private _parseParameters(\n operation: Record<string, unknown>,\n _path: string,\n ): ToolParameterSchema {\n const result: ToolParameterSchema = {\n type: \"object\",\n properties: {},\n required: [],\n };\n\n // Parse path/query/header parameters\n const params = operation.parameters as\n | Array<Record<string, unknown>>\n | undefined;\n if (params && Array.isArray(params)) {\n for (const param of params) {\n const name = param.name as string;\n const schema = param.schema as ToolParameterSchema | undefined;\n const required = param.required as boolean;\n\n if (!name) continue;\n\n result.properties![name] = {\n type: schema?.type || \"string\",\n description: (param.description as string) || undefined,\n ...schema,\n };\n\n if (required) {\n result.required!.push(name);\n }\n }\n }\n\n // Parse request body\n const requestBody = operation.requestBody as\n | Record<string, unknown>\n | undefined;\n if (requestBody) {\n const content = requestBody.content as\n | Record<string, Record<string, unknown>>\n | undefined;\n if (content) {\n const jsonContent = content[\"application/json\"];\n if (jsonContent && jsonContent.schema) {\n result.properties![\"body\"] =\n jsonContent.schema as ToolParameterSchema;\n if (requestBody.required) {\n result.required!.push(\"body\");\n }\n }\n }\n }\n\n return result;\n }\n}\n\n/**\n * ApiSet class for unified tool invocation\n * 统一的工具集接口,支持 OpenAPI 和 MCP 工具\n */\nexport class ApiSet {\n private _tools: Map<string, ToolInfo>;\n private _invoker: any; // Can be OpenAPI or MCP invoker\n private _baseUrl?: string;\n private _defaultHeaders: Record<string, string>;\n private _defaultQueryParams: Record<string, unknown>;\n private _baseConfig?: Config;\n\n constructor(\n tools: ToolInfo[],\n invoker: any,\n baseUrl?: string,\n headers?: Record<string, string>,\n queryParams?: Record<string, unknown>,\n config?: Config,\n ) {\n this._tools = new Map(tools.filter((t) => t.name).map((t) => [t.name, t]));\n this._invoker = invoker;\n this._baseUrl = baseUrl;\n this._defaultHeaders = headers ? { ...headers } : {};\n this._defaultQueryParams = queryParams ? { ...queryParams } : {};\n this._baseConfig = config;\n }\n\n /**\n * Invoke a tool by name\n * 调用指定的工具\n */\n invoke = async (\n name: string,\n args: Record<string, unknown> = {},\n config?: Config,\n ): Promise<Record<string, unknown>> => {\n if (!this._tools.has(name)) {\n throw new Error(`Tool '${name}' not found.`);\n }\n\n // Convert arguments from non-serializable types\n const convertedArgs = this._convertArguments(args);\n\n // Merge configurations: prioritize passed config, otherwise use base_config\n const effectiveConfig = Config.withConfigs(this._baseConfig, config);\n\n // Call the actual invoker\n if (typeof this._invoker.invokeToolAsync === \"function\") {\n return await this._invoker.invokeToolAsync(\n name,\n convertedArgs,\n effectiveConfig\n );\n } else if (typeof this._invoker.invoke_tool === \"function\") {\n return await this._invoker.invoke_tool(name, convertedArgs, effectiveConfig);\n } else if (typeof this._invoker === \"function\") {\n return await this._invoker(name, convertedArgs);\n } else {\n throw new Error(\"Invalid invoker provided.\");\n }\n };\n\n /**\n * Get all tools\n * 返回所有工具列表\n */\n get tools(): ToolInfo[] {\n return Array.from(this._tools.values());\n }\n\n /**\n * Get a specific tool\n * 获取指定名称的工具\n */\n getTool(name: string): ToolInfo | undefined {\n return this._tools.get(name);\n }\n\n /**\n * Convert arguments from framework-specific types to native JavaScript types\n * 将常见框架类型转换为 JavaScript 原生类型\n * \n * Purpose: Ensure we send JSON-serializable data to OpenAPI\n * 目的:确保我们发送到 OpenAPI 的 JSON body 是可以被序列化的\n */\n private _convertToNative(value: unknown): unknown {\n // Basic types\n if (\n value === null ||\n value === undefined ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n\n // Arrays\n if (Array.isArray(value)) {\n return value.map((item) => this._convertToNative(item));\n }\n\n // Plain objects\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n\n // Handle objects with toJSON method\n if (typeof obj.toJSON === \"function\") {\n try {\n return this._convertToNative(obj.toJSON());\n } catch {\n // Ignore and continue\n }\n }\n\n // Handle plain objects\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n result[k] = this._convertToNative(v);\n }\n return result;\n }\n\n // Cannot convert, return original value\n return value;\n }\n\n /**\n * Convert arguments dictionary\n * 转换参数字典\n */\n private _convertArguments(\n args?: Record<string, unknown>\n ): Record<string, unknown> | undefined {\n if (!args || typeof args !== \"object\") {\n return args;\n }\n\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(args)) {\n result[k] = this._convertToNative(v);\n }\n return result;\n }\n\n /**\n * Create ApiSet from MCP tools\n * 从 MCP tools 创建 ApiSet\n * \n * @param tools - MCP tools list or single tool / MCP tools 列表或单个工具\n * @param mcpClient - MCP client (MCPToolSet instance) / MCP 客户端(MCPToolSet 实例)\n * @param config - Configuration object / 配置对象\n */\n static fromMCPTools(params: {\n tools: unknown;\n mcpClient: any;\n config?: Config;\n }): ApiSet {\n const { tools, mcpClient, config } = params;\n\n // Get tools list / 获取工具列表\n const toolInfos: ToolInfo[] = [];\n let toolArray: unknown[];\n\n // If tools is a single tool, convert to array\n // 如果 tools 是单个工具,转换为列表\n if (Array.isArray(tools)) {\n toolArray = tools;\n } else if (tools) {\n toolArray = [tools];\n } else {\n toolArray = [];\n }\n\n for (const tool of toolArray) {\n if (!tool) {\n continue;\n }\n\n try {\n // Use ToolInfo.fromMCPTool to parse the tool\n // 使用 ToolInfo.fromMCPTool 解析工具\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n const toolInfo = ToolInfo.fromMCPTool(tool);\n toolInfos.push(toolInfo);\n } catch (error) {\n logger.warn(`Failed to parse MCP tool:`, error);\n continue;\n }\n }\n\n // Create invoker wrapper / 创建调用器包装\n class MCPInvoker {\n constructor(private mcpClient: any, private config?: Config) {}\n\n invokeToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<Record<string, unknown>> => {\n const cfg = Config.withConfigs(this.config, config);\n return await this.mcpClient.callToolAsync(name, args, cfg);\n };\n }\n\n const invoker = new MCPInvoker(mcpClient, config);\n\n return new ApiSet(toolInfos, invoker, undefined, undefined, undefined, config);\n }\n}\n","/**\n * MCP Protocol Handler\n * MCP 协议处理\n * \n * Handles tool invocations for MCP (Model Context Protocol).\n * 处理 MCP(Model Context Protocol)协议的工具调用。\n */\n\nimport { Config } from \"../../utils/config\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * MCP Session\n * \n * Manages an MCP session connection.\n * 管理 MCP 会话连接。\n */\nexport class MCPSession {\n private url: string;\n private config: Config;\n private client: any; // Will be typed when @modelcontextprotocol/sdk is installed\n private clientSession: any;\n\n constructor(url: string, config?: Config) {\n this.url = url;\n this.config = Config.withConfigs(config);\n }\n\n /**\n * Create and initialize the session\n * 创建并初始化会话\n */\n connect = async (_params?: { config?: Config }): Promise<any> => {\n try {\n // Dynamically import MCP SDK\n const { Client } = await import(\"@modelcontextprotocol/sdk/client/index.js\");\n const { SSEClientTransport } = await import(\"@modelcontextprotocol/sdk/client/sse.js\");\n\n // Create SSE transport\n // Note: SSEClientTransport does not support timeout or headers in constructor\n const transport = new SSEClientTransport(new URL(this.url));\n\n // Create client\n this.client = new Client(\n {\n name: \"agentrun-nodejs-client\",\n version: \"1.0.0\",\n },\n {\n capabilities: {},\n }\n );\n\n // Connect\n await this.client.connect(transport);\n\n return this.client;\n } catch (error) {\n logger.error(\"Failed to create MCP session:\", error);\n throw error;\n }\n };\n\n /**\n * Close the session\n * 关闭会话\n */\n close = async (_params?: { config?: Config }): Promise<void> => {\n if (this.client) {\n try {\n await this.client.close();\n } catch (error) {\n logger.error(\"Failed to close MCP session:\", error);\n }\n }\n };\n\n /**\n * Get toolsets\n * 获取工具集\n */\n toolsets(config?: Config): MCPToolSet {\n const cfg = Config.withConfigs(this.config, config);\n return new MCPToolSet(this.url + \"/toolsets\", cfg);\n }\n}\n\n/**\n * MCP Tool Set\n * \n * Manages MCP tools and provides invocation capabilities.\n * 管理 MCP 工具并提供调用功能。\n */\nexport class MCPToolSet {\n private url: string;\n private config: Config;\n\n constructor(url: string, config?: Config) {\n this.url = url;\n this.config = Config.withConfigs(config);\n }\n\n /**\n * Create a new session\n * 创建新会话\n */\n newSession(config?: Config): MCPSession {\n const cfg = Config.withConfigs(this.config, config);\n return new MCPSession(this.url, cfg);\n }\n\n /**\n * List available tools (async)\n * 列出可用工具(异步)\n */\n toolsAsync = async (params?: { config?: Config }): Promise<any[]> => {\n const session = this.newSession(params?.config);\n try {\n const client = await session.connect();\n const result = await client.listTools();\n return result.tools || [];\n } finally {\n await session.close();\n }\n };\n\n /**\n * List available tools (sync wrapper)\n * 列出可用工具(同步包装)\n * \n * Note: This is a convenience method that wraps the async version.\n * In Node.js, prefer using toolsAsync() directly.\n */\n tools(config?: Config): Promise<any[]> {\n return this.toolsAsync({ config });\n }\n\n /**\n * Call a tool (async)\n * 调用工具(异步)\n */\n callToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n const session = this.newSession(config);\n try {\n const client = await session.connect();\n const result = await client.callTool({\n name,\n arguments: args || {},\n });\n\n // Convert content to plain objects\n if (result.content && Array.isArray(result.content)) {\n return result.content.map((item: any) => {\n if (typeof item === 'object' && item !== null) {\n // If item has a toJSON method, use it\n if (typeof item.toJSON === 'function') {\n return item.toJSON();\n }\n // Otherwise, create a plain object copy\n return { ...item };\n }\n return item;\n });\n }\n\n return result.content || [];\n } finally {\n await session.close();\n }\n };\n\n /**\n * Call a tool (sync wrapper)\n * 调用工具(同步包装)\n * \n * Note: This is a convenience method that wraps the async version.\n * In Node.js, prefer using callToolAsync() directly.\n */\n callTool(\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> {\n return this.callToolAsync(name, args, config);\n }\n}\n","/**\n * AgentRun SDK for Node.js\n *\n * AgentRun SDK 是阿里云 AgentRun 服务的 Node.js 客户端库。\n * Provides simple and easy-to-use APIs for managing AI Agent runtime environments,\n * model services, sandbox environments, etc.\n *\n * @packageDocumentation\n */\n\nexport const VERSION = '0.0.1';\n\n// Config\nexport { Config, type ConfigOptions } from './utils/config';\n\n// Exceptions\nexport {\n AgentRunError,\n ClientError,\n ServerError,\n HTTPError,\n ResourceNotExistError,\n ResourceAlreadyExistError,\n} from './utils/exception';\n\n// Status\nexport { Status } from './utils/model';\n\n// Agent Runtime\nexport {\n AgentRuntimeClient,\n AgentRuntime,\n AgentRuntimeEndpoint,\n AgentRuntimeControlAPI,\n} from './agent-runtime';\nexport type {\n AgentRuntimeCreateInput,\n AgentRuntimeUpdateInput,\n AgentRuntimeListInput,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeCode,\n AgentRuntimeContainer,\n AgentRuntimeHealthCheckConfig,\n AgentRuntimeLogConfig,\n AgentRuntimeProtocolConfig,\n AgentRuntimeEndpointRoutingConfig,\n AgentRuntimeEndpointRoutingWeight,\n AgentRuntimeVersion,\n} from './agent-runtime';\nexport {\n AgentRuntimeArtifact,\n AgentRuntimeLanguage,\n AgentRuntimeProtocolType,\n} from './agent-runtime';\n\n// Credential\nexport {\n CredentialClient,\n Credential,\n CredentialControlAPI,\n CredentialConfig,\n} from './credential';\nexport type {\n CredentialCreateInput,\n CredentialUpdateInput,\n CredentialListInput,\n CredentialBasicAuth,\n RelatedResource,\n} from './credential';\n\n// Sandbox\nexport {\n SandboxClient,\n Sandbox,\n Template,\n BrowserSandbox,\n CodeInterpreterSandbox,\n AioSandbox,\n SandboxDataAPI,\n CodeInterpreterDataAPI,\n BrowserDataAPI,\n AioDataAPI,\n} from \"./sandbox\";\nexport { TemplateType, SandboxState, CodeLanguage, TemplateNetworkMode, TemplateOSSPermission } from \"./sandbox\";\nexport type {\n TemplateNetworkConfiguration,\n TemplateOssConfiguration,\n TemplateLogConfiguration,\n TemplateCredentialConfiguration,\n TemplateArmsConfiguration,\n TemplateContainerConfiguration,\n TemplateMcpOptions,\n TemplateMcpState,\n TemplateCreateInput,\n TemplateUpdateInput,\n TemplateListInput,\n SandboxCreateInput,\n SandboxListInput,\n TemplateData,\n SandboxData,\n ExecuteCodeResult,\n FileInfo,\n} from \"./sandbox\";\n\n// Model\nexport {\n ModelClient,\n ModelService,\n ModelProxy,\n ModelControlAPI,\n} from './model';\nexport type {\n ModelServiceCreateInput,\n ModelServiceUpdateInput,\n ModelServiceListInput,\n ModelProxyCreateInput,\n ModelProxyUpdateInput,\n ModelProxyListInput,\n ProviderSettings,\n ModelFeatures,\n ModelProperties,\n ModelParameterRule,\n ModelInfoConfig,\n ProxyConfigEndpoint,\n ProxyConfigFallback,\n ProxyConfigPolicies,\n ProxyConfig,\n} from './model';\nexport { BackendType, ModelType, Provider } from './model';\n\n// ToolSet\nexport { ToolSetClient, ToolSet } from './toolset';\nexport type {\n ToolSetData,\n ToolSetCreateInput,\n ToolSetUpdateInput,\n ToolSetListInput,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetStatusOutputs,\n ToolSetSchema,\n ToolSetAuthorization,\n MCPToolMeta,\n} from './toolset';\nexport { ToolSetSchemaType } from './toolset';\n\n// Server\nexport { AgentRunServer } from './server';\nexport type {\n AgentRequest,\n AgentResult,\n Message,\n ServerConfig,\n} from './server';\nexport { MessageRole, EventType } from './server';\n\n// Integration\nexport * from './integration';\n","/**\n * Agent Runtime Client\n *\n * 此模块提供 Agent Runtime 的客户端 API。\n * This module provides the client API for Agent Runtime.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport { AgentRuntimeEndpoint } from \"./endpoint\";\nimport {\n AgentRuntimeCreateInput,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeListInput,\n AgentRuntimeUpdateInput,\n AgentRuntimeVersion,\n AgentRuntimeVersionListInput,\n} from \"./model\";\nimport { AgentRuntime } from \"./runtime\";\n\n/**\n * Agent Runtime Client\n *\n * 提供 Agent Runtime 的创建、删除、更新、查询和端点管理功能。\n * Provides create, delete, update, query and endpoint management functions for Agent Runtime.\n */\nexport class AgentRuntimeClient {\n private config?: Config;\n private controlApi: AgentRuntimeControlAPI;\n\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new AgentRuntimeControlAPI(config);\n }\n\n /**\n * Create an Agent Runtime\n */\n create = async (params: {\n input: AgentRuntimeCreateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { input, config } = params;\n return AgentRuntime.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete an Agent Runtime\n */\n delete = async (params: { id: string; config?: Config }): Promise<AgentRuntime> => {\n const { id, config } = params;\n return AgentRuntime.delete({ id, config: config ?? this.config });\n };\n\n /**\n * Update an Agent Runtime\n */\n update = async (params: {\n id: string;\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { id, input, config } = params;\n return AgentRuntime.update({ id, input, config: config ?? this.config });\n };\n\n /**\n * Get an Agent Runtime\n */\n get = async (params: { id: string; config?: Config }): Promise<AgentRuntime> => {\n const { id, config } = params;\n return AgentRuntime.get({ id, config: config ?? this.config });\n };\n\n /**\n * List Agent Runtimes\n */\n list = async (params?: {\n input?: AgentRuntimeListInput;\n config?: Config;\n }): Promise<AgentRuntime[]> => {\n const { input, config } = params ?? {};\n return AgentRuntime.list(input, config ?? this.config);\n };\n\n /**\n * List all Agent Runtimes (with pagination)\n */\n listAll = async (params?: {\n options?: {\n agentRuntimeName?: string;\n tags?: string;\n searchMode?: string;\n };\n config?: Config;\n }): Promise<AgentRuntime[]> => {\n const { options, config } = params ?? {};\n return AgentRuntime.listAll(options, config ?? this.config);\n };\n\n /**\n * Create an endpoint for an Agent Runtime\n */\n createEndpoint = async (params: {\n agentRuntimeId: string;\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntimeEndpoint.create({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Delete an endpoint\n */\n deleteEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, config } = params;\n return AgentRuntimeEndpoint.delete({\n agentRuntimeId,\n endpointId,\n config: config ?? this.config,\n });\n };\n\n /**\n * Update an endpoint\n */\n updateEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, input, config } = params;\n return AgentRuntimeEndpoint.update({\n agentRuntimeId,\n endpointId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Get an endpoint\n */\n getEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, config } = params;\n return AgentRuntimeEndpoint.get({\n agentRuntimeId,\n endpointId,\n config: config ?? this.config,\n });\n };\n\n /**\n * List endpoints for an Agent Runtime\n */\n listEndpoints = async (params: {\n agentRuntimeId: string;\n input?: AgentRuntimeEndpointListInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint[]> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntimeEndpoint.listById({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * List versions for an Agent Runtime\n */\n listVersions = async (params: {\n agentRuntimeId: string;\n input?: AgentRuntimeVersionListInput;\n config?: Config;\n }): Promise<AgentRuntimeVersion[]> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntime.listVersionsById({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime.\n *\n * @param params - Parameters including agent runtime name, endpoint name, and invocation args\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const client = new AgentRuntimeClient();\n * const response = await client.invokeOpenai({\n * agentRuntimeName: \"my-runtime\",\n * agentRuntimeEndpointName: \"Default\",\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (\n params: {\n agentRuntimeName: string;\n agentRuntimeEndpointName?: string;\n } & InvokeArgs,\n ) => {\n const {\n agentRuntimeName,\n agentRuntimeEndpointName = \"Default\",\n messages,\n stream,\n config,\n } = params;\n\n // Merge configs\n const cfg = Config.withConfigs(this.config, config);\n\n // Create Data API client\n const dataApi = new AgentRuntimeDataAPI(\n agentRuntimeName,\n agentRuntimeEndpointName,\n cfg,\n );\n\n return dataApi.invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: agent_runtime_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Agent Runtime Control API\n */\nexport class AgentRuntimeControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create Agent Runtime\n *\n * @param params - Method parameters\n * @param params.input - Agent Runtime configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Runtime object\n */\n createAgentRuntime = async (params: { input: $AgentRun.CreateAgentRuntimeInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createAgentRuntimeWithOptions(\n new $AgentRun.CreateAgentRuntimeRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Runtime object\n */\n deleteAgentRuntime = async (params: { agentId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteAgentRuntimeWithOptions(\n agentId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - Agent Runtime configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated Runtime object\n */\n updateAgentRuntime = async (params: { agentId: string; input: $AgentRun.UpdateAgentRuntimeInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateAgentRuntimeWithOptions(\n agentId,\n new $AgentRun.UpdateAgentRuntimeRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.request - Get request options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Runtime object\n */\n getAgentRuntime = async (params: { agentId: string; request?: $AgentRun.GetAgentRuntimeRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, request, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getAgentRuntimeWithOptions(\n agentId,\n request ?? new $AgentRun.GetAgentRuntimeRequest({}),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, request])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtimes\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Runtime objects\n */\n listAgentRuntimes = async (params: { input: $AgentRun.ListAgentRuntimesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimes, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Create Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - Endpoint configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Endpoint object\n */\n createAgentRuntimeEndpoint = async (params: { agentId: string; input: $AgentRun.CreateAgentRuntimeEndpointInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createAgentRuntimeEndpointWithOptions(\n agentId,\n new $AgentRun.CreateAgentRuntimeEndpointRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Endpoint object\n */\n deleteAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.input - Endpoint configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated Endpoint object\n */\n updateAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; input: $AgentRun.UpdateAgentRuntimeEndpointInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n new $AgentRun.UpdateAgentRuntimeEndpointRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Endpoint object\n */\n getAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtime Endpoints\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Endpoint objects\n */\n listAgentRuntimeEndpoints = async (params: { agentId: string; input: $AgentRun.ListAgentRuntimeEndpointsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimeEndpointsOutput> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimeEndpointsWithOptions(\n agentId,\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimeEndpoints, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimeEndpointsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtime Versions\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Version objects\n */\n listAgentRuntimeVersions = async (params: { agentId: string; input: $AgentRun.ListAgentRuntimeVersionsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimeVersionsOutput> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimeVersionsWithOptions(\n agentId,\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimeVersions, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimeVersionsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Agent Runtime Data API\n *\n * 此模块定义 Agent Runtime 的数据 API,用于调用 Agent Runtime 实例。\n * This module defines the Data API for Agent Runtime, used to invoke Agent Runtime instances.\n */\n\nimport type { ChatCompletionMessageParam } from \"openai/resources\";\nimport { Config } from \"../../utils/config\";\nimport { DataAPI, ResourceType } from \"../../utils/data-api\";\n\n/**\n * Invoke arguments for OpenAI-compatible API\n */\nexport interface InvokeArgs {\n /** Chat messages */\n messages: ChatCompletionMessageParam[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Optional config override */\n config?: Config;\n}\n\n/**\n * Agent Runtime Data API for invoking agent runtime through OpenAI-compatible API\n */\nexport class AgentRuntimeDataAPI extends DataAPI {\n constructor(\n agentRuntimeName: string,\n agentRuntimeEndpointName: string = \"Default\",\n config?: Config,\n ) {\n super(\n agentRuntimeName,\n ResourceType.Runtime,\n config,\n `agent-runtimes/${agentRuntimeName}/endpoints/${agentRuntimeEndpointName}/invocations`,\n );\n }\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n */\n async invokeOpenai(args: InvokeArgs) {\n const { messages, stream = false, config } = args;\n\n // Merge configs\n const cfg = Config.withConfigs(this.getConfig(), config);\n const apiBase = this.withPath(\"openai/v1\");\n\n // Get authenticated headers\n const [, headers] = await this.getAuthHeaders(apiBase, {}, cfg);\n\n // Use dynamic import to avoid bundling OpenAI SDK if not used\n const { default: OpenAI } = await import(\"openai\");\n\n // Create OpenAI client with custom base URL and auth headers\n const client = new OpenAI({\n apiKey: \"\", // Empty API key, we use custom headers for auth\n baseURL: apiBase,\n defaultHeaders: headers,\n timeout: cfg.timeout,\n });\n\n return client.chat.completions.create({\n model: this.getResourceName(),\n messages,\n stream,\n });\n }\n\n // Expose protected methods for use in this subclass\n private getConfig(): Config {\n return (this as any).config;\n }\n\n private getResourceName(): string {\n return (this as any).resourceName;\n }\n\n private async getAuthHeaders(\n url: string,\n headers: Record<string, string>,\n config?: Config,\n ): Promise<[string, Record<string, string>]> {\n const [authUrl, authHeaders] = await (this as any).auth(\n url,\n headers,\n undefined,\n config,\n );\n return [authUrl, authHeaders];\n }\n}\n","/**\n * Agent Runtime Endpoint Resource\n *\n * 此模块定义 Agent Runtime Endpoint 资源类。\n * This module defines the Agent Runtime Endpoint resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\n\nimport { Config } from \"../utils/config\";\nimport { HTTPError } from \"../utils/exception\";\nimport { updateObjectProperties } from \"../utils/resource\";\nimport { Status } from \"../utils/model\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport {\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeEndpointData,\n AgentRuntimeEndpointRoutingConfig,\n} from \"./model\";\n\n/**\n * Agent Runtime Endpoint resource class\n */\nexport class AgentRuntimeEndpoint implements AgentRuntimeEndpointData {\n // System properties\n agentRuntimeEndpointArn?: string;\n agentRuntimeEndpointId?: string;\n agentRuntimeEndpointName?: string;\n agentRuntimeId?: string;\n description?: string;\n endpointPublicUrl?: string;\n resourceName?: string;\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n targetVersion?: string;\n\n private _config?: Config;\n private _dataApi?: AgentRuntimeDataAPI;\n private _agentRuntimeName?: string;\n\n constructor(data?: Partial<AgentRuntimeEndpointData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create endpoint from SDK response object\n */\n static fromInnerObject(\n obj: $AgentRun.AgentRuntimeEndpoint,\n config?: Config,\n ): AgentRuntimeEndpoint {\n return new AgentRuntimeEndpoint(\n {\n agentRuntimeEndpointArn: obj.agentRuntimeEndpointArn,\n agentRuntimeEndpointId: obj.agentRuntimeEndpointId,\n agentRuntimeEndpointName: obj.agentRuntimeEndpointName,\n agentRuntimeId: obj.agentRuntimeId,\n description: obj.description,\n endpointPublicUrl: obj.endpointPublicUrl,\n resourceName: obj.resourceName,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n tags: obj.tags,\n targetVersion: obj.targetVersion,\n },\n config,\n );\n }\n\n private static getClient(): AgentRuntimeControlAPI {\n return new AgentRuntimeControlAPI();\n }\n\n /**\n * Create an endpoint by Agent Runtime ID\n */\n static async create(params: {\n agentRuntimeId: string;\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n // Set default targetVersion to \"LATEST\" if not provided (same as Python SDK)\n const targetVersion = input.targetVersion || 'LATEST';\n \n const result = await client.createAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n input: new $AgentRun.CreateAgentRuntimeEndpointInput({\n agentRuntimeEndpointName: input.agentRuntimeEndpointName,\n description: input.description,\n tags: input.tags,\n targetVersion: targetVersion,\n }),\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${input.agentRuntimeEndpointName}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Delete an endpoint by ID\n */\n static async delete(params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.deleteAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Update an endpoint by ID\n */\n static async update(params: {\n agentRuntimeId: string;\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.updateAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n input: new $AgentRun.UpdateAgentRuntimeEndpointInput({\n agentRuntimeEndpointName: input.agentRuntimeEndpointName,\n description: input.description,\n tags: input.tags,\n targetVersion: input.targetVersion,\n }),\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Get an endpoint by ID\n */\n static async get(params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.getAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * List endpoints by Agent Runtime ID\n */\n static async listById(params: {\n agentRuntimeId: string;\n input?: AgentRuntimeEndpointListInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint[]> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const request = new $AgentRun.ListAgentRuntimeEndpointsRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n });\n const result = await client.listAgentRuntimeEndpoints({\n agentId: agentRuntimeId,\n input: request,\n config,\n });\n return (result.items || []).map((item) =>\n AgentRuntimeEndpoint.fromInnerObject(item, config),\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", agentRuntimeId);\n }\n throw error;\n }\n }\n\n /**\n * Delete this endpoint\n */\n delete = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint> => {\n const config = params?.config;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to delete an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.delete({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this endpoint\n */\n update = async (params: {\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { input, config } = params;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to update an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.update({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n input,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this endpoint's data\n */\n refresh = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint> => {\n const config = params?.config;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to refresh an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.get({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the endpoint is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (endpoint: AgentRuntimeEndpoint) => void;\n },\n config?: Config,\n ): Promise<AgentRuntimeEndpoint> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Endpoint failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for endpoint to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API through this endpoint\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime\n * through this specific endpoint.\n *\n * @param args - Invocation arguments\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const endpoint = await AgentRuntimeEndpoint.get({\n * agentRuntimeId: \"runtime-id\",\n * endpointId: \"endpoint-id\"\n * });\n * const response = await endpoint.invokeOpenai({\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (args: InvokeArgs) => {\n const { messages, stream, config } = args;\n\n // Merge configs\n const cfg = Config.withConfigs(this._config, config);\n\n // Create Data API client if not already created\n if (!this._dataApi) {\n // Get agent runtime name if not available\n if (!this._agentRuntimeName && this.agentRuntimeId) {\n const client = AgentRuntimeEndpoint.getClient();\n const runtime = await client.getAgentRuntime({\n agentId: this.agentRuntimeId,\n config: cfg,\n });\n this._agentRuntimeName = runtime.agentRuntimeName;\n }\n\n if (!this._agentRuntimeName) {\n throw new Error(\n \"Unable to determine agent runtime name for this endpoint\",\n );\n }\n\n this._dataApi = new AgentRuntimeDataAPI(\n this._agentRuntimeName,\n this.agentRuntimeEndpointName || \"\",\n cfg,\n );\n }\n\n return this._dataApi.invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * Agent Runtime Resource\n *\n * 此模块定义 Agent Runtime 资源类。\n * This module defines the Agent Runtime resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\n\nimport { Config } from \"../utils/config\";\nimport { HTTPError } from \"../utils/exception\";\nimport { Status, NetworkMode } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\nimport type { NetworkConfig } from \"../utils/model\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport { AgentRuntimeEndpoint } from \"./endpoint\";\nimport {\n AgentRuntimeArtifact,\n AgentRuntimeCode,\n AgentRuntimeContainer,\n AgentRuntimeCreateInput,\n AgentRuntimeData,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeHealthCheckConfig,\n AgentRuntimeListInput,\n AgentRuntimeLogConfig,\n AgentRuntimeProtocolConfig,\n AgentRuntimeUpdateInput,\n AgentRuntimeVersion,\n AgentRuntimeVersionListInput,\n} from \"./model\";\n\n/**\n * Agent Runtime resource class\n */\nexport class AgentRuntime implements AgentRuntimeData {\n // System properties\n agentRuntimeArn?: string;\n agentRuntimeId?: string;\n agentRuntimeName?: string;\n agentRuntimeVersion?: string;\n artifactType?: string;\n codeConfiguration?: AgentRuntimeCode;\n containerConfiguration?: AgentRuntimeContainer;\n cpu?: number;\n createdAt?: string;\n credentialName?: string;\n description?: string;\n environmentVariables?: Record<string, string>;\n executionRoleArn?: string;\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n lastUpdatedAt?: string;\n logConfiguration?: AgentRuntimeLogConfig;\n memory?: number;\n networkConfiguration?: NetworkConfig;\n port?: number;\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n resourceName?: string;\n sessionConcurrencyLimitPerInstance?: number;\n sessionIdleTimeoutSeconds?: number;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n\n private _config?: Config;\n private _dataApiCache: Record<string, AgentRuntimeDataAPI> = {};\n\n constructor(data?: Partial<AgentRuntimeData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create runtime from SDK response object\n */\n static fromInnerObject(\n obj: $AgentRun.AgentRuntime,\n config?: Config,\n ): AgentRuntime {\n return new AgentRuntime(\n {\n agentRuntimeArn: obj.agentRuntimeArn,\n agentRuntimeId: obj.agentRuntimeId,\n agentRuntimeName: obj.agentRuntimeName,\n agentRuntimeVersion: obj.agentRuntimeVersion,\n artifactType: obj.artifactType,\n codeConfiguration: obj.codeConfiguration as AgentRuntimeCode | undefined,\n containerConfiguration: obj.containerConfiguration,\n cpu: obj.cpu,\n createdAt: obj.createdAt,\n credentialName: obj.credentialName,\n description: obj.description,\n environmentVariables: obj.environmentVariables,\n executionRoleArn: obj.executionRoleArn,\n healthCheckConfiguration: obj.healthCheckConfiguration,\n lastUpdatedAt: obj.lastUpdatedAt,\n logConfiguration: obj.logConfiguration as AgentRuntimeLogConfig | undefined,\n memory: obj.memory,\n networkConfiguration: obj.networkConfiguration as NetworkConfig | undefined,\n port: obj.port,\n protocolConfiguration: obj.protocolConfiguration as AgentRuntimeProtocolConfig | undefined,\n resourceName: obj.resourceName,\n sessionConcurrencyLimitPerInstance:\n obj.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: obj.sessionIdleTimeoutSeconds,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n tags: obj.tags,\n },\n config,\n );\n }\n\n private static getClient(): AgentRuntimeControlAPI {\n return new AgentRuntimeControlAPI();\n }\n\n /**\n * Create a new Agent Runtime\n */\n static async create(params: {\n input: AgentRuntimeCreateInput;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { input, config } = params;\n const client = AgentRuntime.getClient();\n\n // Set default network configuration\n if (!input.networkConfiguration) {\n input.networkConfiguration = {};\n }\n\n // Auto-detect artifact type\n if (!input.artifactType) {\n if (input.codeConfiguration) {\n input.artifactType = AgentRuntimeArtifact.CODE;\n } else if (input.containerConfiguration) {\n input.artifactType = AgentRuntimeArtifact.CONTAINER;\n } else {\n throw new Error(\n \"Either codeConfiguration or containerConfiguration must be provided\",\n );\n }\n }\n\n try {\n const result = await client.createAgentRuntime({\n input: new $AgentRun.CreateAgentRuntimeInput({\n agentRuntimeName: input.agentRuntimeName,\n artifactType: input.artifactType,\n codeConfiguration: input.codeConfiguration\n ? new $AgentRun.CodeConfiguration({\n checksum: input.codeConfiguration.checksum,\n command: input.codeConfiguration.command,\n language: input.codeConfiguration.language,\n ossBucketName: input.codeConfiguration.ossBucketName,\n ossObjectName: input.codeConfiguration.ossObjectName,\n zipFile: input.codeConfiguration.zipFile,\n })\n : undefined,\n containerConfiguration: input.containerConfiguration\n ? new $AgentRun.ContainerConfiguration({\n command: input.containerConfiguration.command,\n image: input.containerConfiguration.image,\n })\n : undefined,\n cpu: input.cpu,\n credentialName: input.credentialName,\n description: input.description,\n environmentVariables: input.environmentVariables,\n executionRoleArn: input.executionRoleArn,\n memory: input.memory,\n networkConfiguration: input.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: input.networkConfiguration.networkMode || NetworkMode.PUBLIC, // 默认使用公网模式\n securityGroupId: input.networkConfiguration.securityGroupId,\n vpcId: input.networkConfiguration.vpcId,\n vswitchIds: input.networkConfiguration.vSwitchIds,\n })\n : undefined,\n port: input.port,\n sessionConcurrencyLimitPerInstance:\n input.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: input.sessionIdleTimeoutSeconds,\n tags: input.tags,\n }),\n config,\n });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", input.agentRuntimeName);\n }\n throw error;\n }\n }\n\n /**\n * Delete an Agent Runtime by ID\n */\n static async delete(params: {\n id: string;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, config } = params;\n const client = AgentRuntime.getClient();\n\n // First delete all endpoints\n const endpoints = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n for (const endpoint of endpoints) {\n await endpoint.delete({ config });\n }\n\n // Wait for all endpoints to be deleted\n let remaining = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n while (remaining.length > 0) {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n remaining = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n }\n\n try {\n const result = await client.deleteAgentRuntime({ agentId: id, config });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * Update an Agent Runtime by ID\n */\n static async update(params: {\n id: string;\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, input, config } = params;\n const client = AgentRuntime.getClient();\n try {\n const result = await client.updateAgentRuntime({\n agentId: id,\n input: new $AgentRun.UpdateAgentRuntimeInput({\n agentRuntimeName: input.agentRuntimeName,\n artifactType: input.artifactType,\n codeConfiguration: input.codeConfiguration\n ? new $AgentRun.CodeConfiguration({\n checksum: input.codeConfiguration.checksum,\n command: input.codeConfiguration.command,\n language: input.codeConfiguration.language,\n ossBucketName: input.codeConfiguration.ossBucketName,\n ossObjectName: input.codeConfiguration.ossObjectName,\n zipFile: input.codeConfiguration.zipFile,\n })\n : undefined,\n containerConfiguration: input.containerConfiguration\n ? new $AgentRun.ContainerConfiguration({\n command: input.containerConfiguration.command,\n image: input.containerConfiguration.image,\n })\n : undefined,\n cpu: input.cpu,\n credentialName: input.credentialName,\n description: input.description,\n environmentVariables: input.environmentVariables,\n executionRoleArn: input.executionRoleArn,\n memory: input.memory,\n port: input.port,\n sessionConcurrencyLimitPerInstance:\n input.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: input.sessionIdleTimeoutSeconds,\n tags: input.tags,\n }),\n config,\n });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * Get an Agent Runtime by ID\n */\n static async get(params: {\n id: string;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, config } = params;\n const client = AgentRuntime.getClient();\n try {\n const result = await client.getAgentRuntime({ agentId: id, config });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * List Agent Runtimes\n */\n static async list(\n input?: AgentRuntimeListInput,\n config?: Config,\n ): Promise<AgentRuntime[]> {\n const client = AgentRuntime.getClient();\n const request = new $AgentRun.ListAgentRuntimesRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n agentRuntimeName: input?.agentRuntimeName,\n tags: input?.tags,\n });\n const result = await client.listAgentRuntimes({ input: request, config });\n return (result.items || []).map((item) =>\n AgentRuntime.fromInnerObject(item, config),\n );\n }\n\n /**\n * List all Agent Runtimes (with pagination)\n */\n static async listAll(\n options?: {\n agentRuntimeName?: string;\n tags?: string;\n searchMode?: string;\n },\n config?: Config,\n ): Promise<AgentRuntime[]> {\n const runtimes: AgentRuntime[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const result = await AgentRuntime.list(\n {\n pageNumber: page,\n pageSize,\n agentRuntimeName: options?.agentRuntimeName,\n tags: options?.tags,\n searchMode: options?.searchMode,\n },\n config,\n );\n\n runtimes.push(...result);\n page++;\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return runtimes.filter((r) => {\n if (!r.agentRuntimeId || seen.has(r.agentRuntimeId)) {\n return false;\n }\n seen.add(r.agentRuntimeId);\n return true;\n });\n }\n\n /**\n * List Agent Runtime versions by ID\n */\n static async listVersionsById(params: {\n agentRuntimeId: string;\n input?: AgentRuntimeVersionListInput;\n config?: Config;\n }): Promise<AgentRuntimeVersion[]> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntime.getClient();\n const versions: AgentRuntimeVersion[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const request = new $AgentRun.ListAgentRuntimeVersionsRequest({\n pageNumber: input?.pageNumber ?? page,\n pageSize: input?.pageSize ?? pageSize,\n });\n const result = await client.listAgentRuntimeVersions({\n agentId: agentRuntimeId,\n input: request,\n config,\n });\n\n if (result.items) {\n for (const item of result.items) {\n versions.push({\n agentRuntimeArn: item.agentRuntimeArn,\n agentRuntimeId: item.agentRuntimeId,\n agentRuntimeName: item.agentRuntimeName,\n agentRuntimeVersion: item.agentRuntimeVersion,\n description: item.description,\n lastUpdatedAt: item.lastUpdatedAt,\n });\n }\n }\n\n if (!result.items || result.items.length < pageSize) {\n break;\n }\n\n page++;\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return versions.filter((v) => {\n if (!v.agentRuntimeVersion || seen.has(v.agentRuntimeVersion)) {\n return false;\n }\n seen.add(v.agentRuntimeVersion);\n return true;\n });\n }\n\n /**\n * Delete this runtime\n */\n delete = async (params?: { config?: Config }): Promise<AgentRuntime> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to delete an Agent Runtime\");\n }\n\n const result = await AgentRuntime.delete({\n id: this.agentRuntimeId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this runtime\n */\n update = async (params: {\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to update an Agent Runtime\");\n }\n\n const result = await AgentRuntime.update({\n id: this.agentRuntimeId,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this runtime's data\n */\n refresh = async (params?: { config?: Config }): Promise<AgentRuntime> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to refresh an Agent Runtime\");\n }\n\n const result = await AgentRuntime.get({\n id: this.agentRuntimeId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Create an endpoint for this runtime\n */\n createEndpoint = async (params: {\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to create an endpoint\");\n }\n\n return AgentRuntimeEndpoint.create({\n agentRuntimeId: this.agentRuntimeId,\n input,\n config: config ?? this._config,\n });\n };\n\n /**\n * Delete an endpoint from this runtime\n */\n deleteEndpoint = async (params: {\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to delete an endpoint\");\n }\n\n return AgentRuntimeEndpoint.delete({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n config: config ?? this._config,\n });\n };\n\n /**\n * Update an endpoint of this runtime\n */\n updateEndpoint = async (params: {\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to update an endpoint\");\n }\n\n return AgentRuntimeEndpoint.update({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n input,\n config: config ?? this._config,\n });\n };\n\n /**\n * Get an endpoint of this runtime\n */\n getEndpoint = async (params: {\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to get an endpoint\");\n }\n\n return AgentRuntimeEndpoint.get({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n config: config ?? this._config,\n });\n };\n\n /**\n * List endpoints of this runtime\n */\n listEndpoints = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint[]> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to list endpoints\");\n }\n\n return AgentRuntimeEndpoint.listById({\n agentRuntimeId: this.agentRuntimeId,\n config: config ?? this._config,\n });\n };\n\n /**\n * List versions of this runtime\n */\n listVersions = async (params?: { config?: Config }): Promise<AgentRuntimeVersion[]> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to list versions\");\n }\n\n return AgentRuntime.listVersionsById({\n agentRuntimeId: this.agentRuntimeId,\n config: config ?? this._config,\n });\n };\n\n /**\n * Wait until the runtime is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (runtime: AgentRuntime) => void;\n },\n config?: Config,\n ): Promise<AgentRuntime> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Agent Runtime failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Agent Runtime to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Wait until agent runtime reaches READY or any FAILED state\n * Similar to waitUntilReady but does not throw on FAILED states\n * Compatible with Python SDK's wait_until_ready_or_failed method\n */\n waitUntilReadyOrFailed = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (runtime: AgentRuntime) => void;\n },\n config?: Config,\n ): Promise<AgentRuntime> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n // Check if reached any final state\n if (\n this.status === Status.READY ||\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n return this;\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Agent Runtime to reach final state after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime.\n * It creates a Data API client and forwards the invocation request.\n *\n * @param args - Invocation arguments\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const runtime = await AgentRuntime.get({ id: \"runtime-id\" });\n * const response = await runtime.invokeOpenai({\n * agentRuntimeEndpointName: \"Default\",\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (\n args: InvokeArgs & { agentRuntimeEndpointName?: string },\n ) => {\n const {\n agentRuntimeEndpointName = \"Default\",\n messages,\n stream,\n config,\n } = args;\n\n if (!this.agentRuntimeName) {\n throw new Error(\"agentRuntimeName is required to invoke OpenAI\");\n }\n\n // Merge configs\n const cfg = Config.withConfigs(this._config, config);\n\n // Create or reuse Data API client\n if (!this._dataApiCache[agentRuntimeEndpointName]) {\n this._dataApiCache[agentRuntimeEndpointName] = new AgentRuntimeDataAPI(\n this.agentRuntimeName,\n agentRuntimeEndpointName,\n cfg,\n );\n }\n\n return this._dataApiCache[agentRuntimeEndpointName].invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * Agent Runtime Data Models\n *\n * 此模块定义 Agent Runtime 相关的所有数据模型、枚举和输入输出对象。\n * This module defines all data models, enums, and input/output objects related to Agent Runtime.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as crc64Lib from \"crc64-ecma182.js\";\n\nimport { Status } from \"../utils/model\";\nimport type { NetworkConfig, PageableInput } from \"../utils/model\";\n\n/**\n * Agent Runtime artifact type\n */\nexport type AgentRuntimeArtifact = \"Code\" | \"Container\";\n\nexport const AgentRuntimeArtifact = {\n CODE: \"Code\" as AgentRuntimeArtifact,\n CONTAINER: \"Container\" as AgentRuntimeArtifact,\n};\n\n/**\n * Agent Runtime language\n */\nexport type AgentRuntimeLanguage =\n | \"python3.10\"\n | \"python3.12\"\n | \"nodejs18\"\n | \"nodejs20\"\n | \"java8\"\n | \"java11\";\n\nexport const AgentRuntimeLanguage = {\n PYTHON310: \"python3.10\" as AgentRuntimeLanguage,\n PYTHON312: \"python3.12\" as AgentRuntimeLanguage,\n NODEJS18: \"nodejs18\" as AgentRuntimeLanguage,\n NODEJS20: \"nodejs20\" as AgentRuntimeLanguage,\n JAVA8: \"java8\" as AgentRuntimeLanguage,\n JAVA11: \"java11\" as AgentRuntimeLanguage,\n};\n\n/**\n * Agent Runtime protocol type\n */\nexport type AgentRuntimeProtocolType = \"HTTP\" | \"MCP\";\n\nexport const AgentRuntimeProtocolType = {\n HTTP: \"HTTP\" as AgentRuntimeProtocolType,\n MCP: \"MCP\" as AgentRuntimeProtocolType,\n};\n\n/**\n * Agent Runtime code configuration\n */\nexport interface AgentRuntimeCode {\n /** CRC-64 checksum of the code package */\n checksum?: string;\n /** Command to run in the runtime (e.g., [\"python\"]) */\n command?: string[];\n /** Programming language runtime */\n language?: AgentRuntimeLanguage;\n /** OSS bucket name */\n ossBucketName?: string;\n /** OSS object name */\n ossObjectName?: string;\n /** Base64 encoded ZIP file */\n zipFile?: string;\n}\n\n/**\n * Create AgentRuntimeCode from a ZIP file\n */\nexport async function codeFromZipFile(\n language: AgentRuntimeLanguage,\n command: string[],\n zipFilePath: string,\n): Promise<AgentRuntimeCode> {\n const data = await fs.promises.readFile(zipFilePath);\n\n // Calculate CRC-64 checksum (same as Python's crcmod with CRC-64-ECMA182)\n const checksum = crc64Lib.crc64(data);\n\n return {\n language,\n command,\n zipFile: data.toString(\"base64\"),\n checksum: checksum,\n };\n}\n\n/**\n * Create AgentRuntimeCode from OSS\n */\nexport function codeFromOss(\n language: AgentRuntimeLanguage,\n command: string[],\n bucket: string,\n object: string,\n): AgentRuntimeCode {\n return {\n language,\n command,\n ossBucketName: bucket,\n ossObjectName: object,\n };\n}\n\n/**\n * Create AgentRuntimeCode from a file or directory\n */\nexport async function codeFromFile(\n language: AgentRuntimeLanguage,\n command: string[],\n filePath: string,\n): Promise<AgentRuntimeCode> {\n const archiver = await import(\"archiver\").catch(() => null);\n\n if (!archiver) {\n throw new Error(\n \"archiver package is required for codeFromFile. Install it with: npm install archiver\",\n );\n }\n\n const stats = await fs.promises.stat(filePath);\n const zipFilePath = path.join(path.dirname(filePath), `${Date.now()}.zip`);\n\n // Create ZIP archive\n const output = fs.createWriteStream(zipFilePath);\n const archive = archiver.default(\"zip\", { zlib: { level: 9 } });\n\n await new Promise<void>((resolve, reject) => {\n output.on(\"close\", resolve);\n archive.on(\"error\", reject);\n archive.pipe(output);\n\n if (stats.isDirectory()) {\n archive.directory(filePath, false);\n } else {\n archive.file(filePath, { name: path.basename(filePath) });\n }\n\n archive.finalize();\n });\n\n const code = await codeFromZipFile(language, command, zipFilePath);\n\n // Clean up temp file\n await fs.promises.unlink(zipFilePath);\n\n return code;\n}\n\n/**\n * Agent Runtime container configuration\n */\nexport interface AgentRuntimeContainer {\n /** Command to run in the runtime */\n command?: string[];\n /** Container image address */\n image?: string;\n}\n\n/**\n * Agent Runtime health check configuration\n */\nexport interface AgentRuntimeHealthCheckConfig {\n /** Failure threshold before marking unhealthy */\n failureThreshold?: number;\n /** HTTP GET URL for health check */\n httpGetUrl?: string;\n /** Initial delay before first health check (seconds) */\n initialDelaySeconds?: number;\n /** Health check interval (seconds) */\n periodSeconds?: number;\n /** Success threshold before marking healthy */\n successThreshold?: number;\n /** Health check timeout (seconds) */\n timeoutSeconds?: number;\n}\n\n/**\n * Agent Runtime log configuration\n */\nexport interface AgentRuntimeLogConfig {\n /** SLS project name */\n project: string;\n /** SLS logstore name */\n logstore: string;\n}\n\n/**\n * Agent Runtime protocol configuration\n */\nexport interface AgentRuntimeProtocolConfig {\n /** Protocol type */\n type?: AgentRuntimeProtocolType;\n}\n\n/**\n * Endpoint routing weight configuration\n */\nexport interface AgentRuntimeEndpointRoutingWeight {\n /** Version identifier */\n version?: string;\n /** Weight value */\n weight?: number;\n}\n\n/**\n * Endpoint routing configuration\n */\nexport interface AgentRuntimeEndpointRoutingConfig {\n /** Version weights list */\n versionWeights?: AgentRuntimeEndpointRoutingWeight[];\n}\n\n/**\n * Agent Runtime create input\n */\nexport interface AgentRuntimeCreateInput {\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Artifact type (Code or Container) */\n artifactType?: AgentRuntimeArtifact;\n /** Code configuration */\n codeConfiguration?: AgentRuntimeCode;\n /** Container configuration */\n containerConfiguration?: AgentRuntimeContainer;\n /** CPU cores */\n cpu?: number;\n /** Credential name */\n credentialName?: string;\n /** Description */\n description?: string;\n /** Environment variables */\n environmentVariables?: Record<string, string>;\n /** Execution role ARN */\n executionRoleArn?: string;\n /** Health check configuration */\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n /** Log configuration */\n logConfiguration?: AgentRuntimeLogConfig;\n /** Memory in MB */\n memory?: number;\n /** Network configuration */\n networkConfiguration?: NetworkConfig;\n /** Port number */\n port?: number;\n /** Protocol configuration */\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n /** Session concurrency limit per instance */\n sessionConcurrencyLimitPerInstance?: number;\n /** Session idle timeout in seconds */\n sessionIdleTimeoutSeconds?: number;\n /** Tags */\n tags?: string[];\n}\n\n/**\n * Agent Runtime update input\n */\nexport interface AgentRuntimeUpdateInput {\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Artifact type (Code or Container) */\n artifactType?: AgentRuntimeArtifact;\n /** Code configuration */\n codeConfiguration?: AgentRuntimeCode;\n /** Container configuration */\n containerConfiguration?: AgentRuntimeContainer;\n /** CPU cores */\n cpu?: number;\n /** Credential name */\n credentialName?: string;\n /** Description */\n description?: string;\n /** Environment variables */\n environmentVariables?: Record<string, string>;\n /** Execution role ARN */\n executionRoleArn?: string;\n /** Health check configuration */\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n /** Log configuration */\n logConfiguration?: AgentRuntimeLogConfig;\n /** Memory in MB */\n memory?: number;\n /** Network configuration */\n networkConfiguration?: NetworkConfig;\n /** Port number */\n port?: number;\n /** Protocol configuration */\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n /** Session concurrency limit per instance */\n sessionConcurrencyLimitPerInstance?: number;\n /** Session idle timeout in seconds */\n sessionIdleTimeoutSeconds?: number;\n /** Tags */\n tags?: string[];\n}\n\n/**\n * Agent Runtime list input\n */\nexport interface AgentRuntimeListInput extends PageableInput {\n /** Filter by name */\n agentRuntimeName?: string;\n /** Filter by tags (comma separated) */\n tags?: string;\n /** Search mode */\n searchMode?: string;\n}\n\n/**\n * Agent Runtime endpoint create input\n */\nexport interface AgentRuntimeEndpointCreateInput {\n /** Endpoint name */\n agentRuntimeEndpointName?: string;\n /** Description */\n description?: string;\n /** Routing configuration */\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n /** Tags */\n tags?: string[];\n /** Target version */\n targetVersion?: string;\n}\n\n/**\n * Agent Runtime endpoint update input\n */\nexport interface AgentRuntimeEndpointUpdateInput {\n /** Endpoint name */\n agentRuntimeEndpointName?: string;\n /** Description */\n description?: string;\n /** Routing configuration */\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n /** Tags */\n tags?: string[];\n /** Target version */\n targetVersion?: string;\n}\n\n/**\n * Agent Runtime endpoint list input\n */\nexport interface AgentRuntimeEndpointListInput extends PageableInput {\n /** Filter by endpoint name */\n endpointName?: string;\n /** Search mode */\n searchMode?: string;\n}\n\n/**\n * Agent Runtime version\n */\nexport interface AgentRuntimeVersion {\n /** Agent Runtime ARN */\n agentRuntimeArn?: string;\n /** Agent Runtime ID */\n agentRuntimeId?: string;\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Version number */\n agentRuntimeVersion?: string;\n /** Version description */\n description?: string;\n /** Last update timestamp */\n lastUpdatedAt?: string;\n}\n\n/**\n * Agent Runtime version list input\n */\nexport interface AgentRuntimeVersionListInput extends PageableInput {}\n\n/**\n * Agent Runtime data (internal representation from API)\n */\nexport interface AgentRuntimeData {\n agentRuntimeArn?: string;\n agentRuntimeId?: string;\n agentRuntimeName?: string;\n agentRuntimeVersion?: string;\n artifactType?: string;\n codeConfiguration?: AgentRuntimeCode;\n containerConfiguration?: AgentRuntimeContainer;\n cpu?: number;\n createdAt?: string;\n credentialName?: string;\n description?: string;\n environmentVariables?: Record<string, string>;\n executionRoleArn?: string;\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n lastUpdatedAt?: string;\n logConfiguration?: AgentRuntimeLogConfig;\n memory?: number;\n networkConfiguration?: NetworkConfig;\n port?: number;\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n resourceName?: string;\n sessionConcurrencyLimitPerInstance?: number;\n sessionIdleTimeoutSeconds?: number;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n}\n\n/**\n * Agent Runtime endpoint data (internal representation from API)\n */\nexport interface AgentRuntimeEndpointData {\n agentRuntimeEndpointArn?: string;\n agentRuntimeEndpointId?: string;\n agentRuntimeEndpointName?: string;\n agentRuntimeId?: string;\n description?: string;\n endpointPublicUrl?: string;\n resourceName?: string;\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n targetVersion?: string;\n}\n\nexport { Status, NetworkConfig };\n","/**\n * Credential module exports\n */\n\nexport { CredentialClient } from './client';\nexport { Credential } from './credential';\nexport { CredentialControlAPI } from './api/control';\n\nexport { CredentialConfig } from './model';\nexport type {\n CredentialBasicAuth,\n RelatedResource,\n CredentialCreateInput,\n CredentialUpdateInput,\n CredentialListInput,\n CredentialListOutput,\n} from './model';\n","/**\n * Browser Sandbox\n *\n * High-level API for browser sandboxes with CDP/VNC connectivity\n * and recording management.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\n\nimport { BrowserDataAPI } from \"./api/browser-data\";\nimport { TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * Browser Sandbox\n *\n * High-level API for interacting with browser sandboxes.\n */\nexport class BrowserSandbox extends Sandbox {\n static templateType = TemplateType.BROWSER;\n\n /**\n * Create a Browser Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<BrowserSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const browserSandbox = new BrowserSandbox(sandbox, config);\n return browserSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: BrowserDataAPI;\n\n /**\n * Get data API client\n */\n get dataApi(): BrowserDataAPI {\n if (!this._dataApi) {\n if (!this.sandboxId) {\n throw new Error(\"Sandbox ID is not set\");\n }\n\n this._dataApi = new BrowserDataAPI({\n sandboxId: this.sandboxId,\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ sandboxId: this.sandboxId!, config: params?.config });\n };\n\n /**\n * Wait for browser sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for browser to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`✓ Browser is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"Browser did not become ready in time.\",\n );\n };\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n /**\n * Get Playwright sync wrapper\n *\n * Note: Implementation pending - requires playwright integration\n */\n syncPlaywright(params?: {\n browserType?: string;\n record?: boolean;\n config?: Config;\n }): any {\n return this.dataApi.syncPlaywright(params);\n }\n\n /**\n * Get Playwright async wrapper\n *\n * Note: Implementation pending - requires playwright integration\n */\n asyncPlaywright(params?: {\n browserType?: string;\n record?: boolean;\n config?: Config;\n }): any {\n return this.dataApi.asyncPlaywright(params);\n }\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n}\n","/**\n * Browser Sandbox Data API\n *\n * This module provides data API methods for Browser sandboxes.\n * 此模块提供浏览器沙箱的数据 API 方法。\n */\n\nimport * as fs from \"fs\";\n\nimport { Config } from \"../../utils/config\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\nimport { SandboxDataAPI } from \"./sandbox-data\";\n\n/**\n * Browser Data API\n *\n * Provides methods for interacting with Browser sandbox data endpoints.\n */\nexport class BrowserDataAPI extends SandboxDataAPI {\n protected sandboxId: string;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n this.sandboxId = params.sandboxId;\n }\n\n /**\n * Generate the WebSocket URL for Chrome DevTools Protocol (CDP) connection\n */\n getCdpUrl(record?: boolean): string {\n const cdpUrl = this.withPath(\"/ws/automation\").replace(\"http\", \"ws\");\n const url = new URL(cdpUrl);\n\n url.searchParams.set(\"tenantId\", this.config.accountId);\n if (record) {\n url.searchParams.set(\"recording\", \"true\");\n }\n\n return url.toString();\n }\n\n /**\n * Generate the WebSocket URL for VNC (Virtual Network Computing) live view connection\n */\n getVncUrl(record?: boolean): string {\n const vncUrl = this.withPath(\"/ws/liveview\").replace(\"http\", \"ws\");\n const url = new URL(vncUrl);\n\n url.searchParams.set(\"tenantId\", this.config.accountId);\n if (record) {\n url.searchParams.set(\"recording\", \"true\");\n }\n\n return url.toString();\n }\n\n /**\n * Get Playwright sync wrapper\n * \n * Note: Implementation pending - requires playwright integration\n */\n syncPlaywright(params?: {\n browserType?: string;\n record?: boolean;\n config?: Config;\n }): any {\n const { browserType = \"chrome\", record = false, config } = params || {};\n\n // TODO: Implement BrowserPlaywrightSync\n void browserType;\n void record;\n void config;\n\n throw new Error(\n \"Not implemented yet - requires Playwright integration. \" +\n \"Use getCdpUrl() to get the WebSocket endpoint and connect via playwright directly.\",\n );\n }\n\n /**\n * Get Playwright async wrapper\n * \n * Note: Implementation pending - requires playwright integration\n */\n asyncPlaywright(params?: {\n browserType?: string;\n record?: boolean;\n config?: Config;\n }): any {\n const { browserType = \"chrome\", record = false, config } = params || {};\n\n // TODO: Implement BrowserPlaywrightAsync\n void browserType;\n void record;\n void config;\n\n throw new Error(\n \"Not implemented yet - requires Playwright integration. \" +\n \"Use getCdpUrl() to get the WebSocket endpoint and connect via playwright directly.\",\n );\n }\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.get({ path: \"/recordings\", config: params?.config });\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.delete({ path: `/recordings/${params.filename}`, config: params.config });\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.getVideo({\n path: `/recordings/${params.filename}`,\n savePath: params.savePath,\n });\n };\n\n /**\n * Helper method to download video file\n */\n protected async getVideo(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n\n // Prepare headers with auth\n const cfg = Config.withConfigs(this.config, params.config);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: cfg });\n\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download video error: ${error}`);\n throw new ClientError(0, `Download video error: ${error}`);\n }\n }\n}\n","/**\n * Sandbox Data API Base Class\n *\n * This module provides an HTTP client for interacting with the AgentRun Sandbox Data API.\n * 此模块提供用于与 AgentRun Sandbox Data API 交互的 HTTP 客户端。\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Resource type enum\n */\nexport enum ResourceType {\n Runtime = \"runtime\",\n LiteLLM = \"litellm\",\n Tool = \"tool\",\n Template = \"template\",\n Sandbox = \"sandbox\",\n}\n\n/**\n * Sandbox Data API Client\n *\n * Provides methods for making HTTP requests to sandbox data API endpoints.\n */\nexport class SandboxDataAPI {\n protected resourceName: string;\n protected resourceType: ResourceType;\n protected namespace: string;\n protected config: Config;\n protected accessToken?: string;\n protected accessTokenMap: Map<string, string> = new Map();\n\n constructor(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n namespace?: string;\n }) {\n const { config, namespace = \"sandboxes\" } = params;\n\n this.resourceName = \"\";\n this.resourceType = ResourceType.Template;\n this.namespace = namespace;\n this.config = config || new Config();\n\n // Note: Cannot call async refreshAccessToken in constructor\n // Token will be refreshed on first API call\n }\n\n /**\n * Refresh access token for the resource\n */\n protected async refreshAccessToken(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n }): Promise<void> {\n const { sandboxId, templateName, config } = params;\n const cfg = Config.withConfigs(config, this.config);\n\n const cacheKey = (sandboxId || templateName)!;\n const cachedToken = this.accessTokenMap.get(cacheKey);\n\n if (sandboxId) {\n this.resourceName = sandboxId;\n this.resourceType = ResourceType.Sandbox;\n this.namespace = `sandboxes/${sandboxId}`;\n } else if (templateName) {\n this.resourceName = templateName;\n this.resourceType = ResourceType.Template;\n this.namespace = \"sandboxes\";\n }\n\n if (cachedToken) {\n this.accessToken = cachedToken;\n return;\n }\n\n // Fetch new token if not cached\n this.accessToken = undefined;\n await this.auth({ config: cfg });\n if (this.accessToken) {\n this.accessTokenMap.set(cacheKey, this.accessToken);\n }\n }\n\n /**\n * Get base URL for data API\n */\n protected getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with path and query parameters\n */\n protected withPath(\n path: string,\n query?: Record<string, any>,\n ): string {\n // Remove leading slash\n path = path.replace(/^\\//, \"\");\n\n // Build base URL\n const parts = [this.getBaseUrl(), this.namespace, path].filter(\n (p) => p && p.length > 0,\n );\n let url = parts.join(\"/\").replace(/\\/+/g, \"/\").replace(/:\\//g, \"://\");\n\n // Add query parameters\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((v) => urlObj.searchParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, String(value));\n }\n });\n url = urlObj.toString();\n }\n\n return url;\n }\n\n /**\n * Authentication hook - gets access token for the resource\n */\n protected async auth(params: { config?: Config }): Promise<void> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n // If token is provided in config, use it directly\n if (cfg.token) {\n logger.debug(\n `Using provided access token from config: ${this.maskToken(cfg.token)}`,\n );\n this.accessToken = cfg.token;\n return;\n }\n\n // Fetch access token from control API if needed\n if (\n !this.accessToken &&\n this.resourceName &&\n this.resourceType &&\n !cfg.token\n ) {\n try {\n const controlApi = new ControlAPI(cfg);\n const client = (controlApi as any).getClient(cfg);\n\n const request =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const runtime = new $Util.RuntimeOptions({});\n const response = await client.getAccessTokenWithOptions(request, {}, runtime);\n\n this.accessToken = response.body?.data?.accessToken;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}: ${this.maskToken(this.accessToken || \"\")}`,\n );\n } catch (error) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${error}`,\n );\n }\n }\n }\n\n /**\n * Mask token for logging\n */\n protected maskToken(token: string): string {\n if (!token || token.length <= 8) {\n return \"***\";\n }\n return `${token.substring(0, 4)}...${token.substring(token.length - 4)}`;\n }\n\n /**\n * Prepare request headers\n */\n protected prepareHeaders(params: {\n headers?: Record<string, string>;\n config?: Config;\n }): Record<string, string> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n const reqHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"AgentRunDataClient-Node/1.0\",\n \"Agentrun-Access-Token\": cfg.token || this.accessToken || \"\",\n ...cfg.headers,\n ...(params.headers || {}),\n };\n\n return reqHeaders;\n }\n\n /**\n * Make an HTTP request\n */\n protected async makeRequest<T = any>(params: {\n method: string;\n url: string;\n data?: any;\n headers?: Record<string, string>;\n query?: Record<string, any>;\n config?: Config;\n }): Promise<T> {\n const { method, url, data, headers, query, config } = params;\n\n // Prepare headers\n const reqHeaders = this.prepareHeaders({ headers, config });\n\n // Add query parameters to URL\n let finalUrl = url;\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach((v) => urlObj.searchParams.append(key, String(v)));\n } else {\n urlObj.searchParams.append(key, String(value));\n }\n }\n });\n finalUrl = urlObj.toString();\n }\n\n logger.debug(\n `${method} ${finalUrl} headers=${JSON.stringify(reqHeaders)} data=${JSON.stringify(data)}`,\n );\n\n try {\n const cfg = Config.withConfigs(this.config, config);\n const response = await fetch(finalUrl, {\n method,\n headers: reqHeaders,\n body: data ? JSON.stringify(data) : undefined,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n const responseText = await response.text();\n logger.debug(`Response: ${responseText}`);\n\n // Parse JSON response\n if (responseText) {\n try {\n return JSON.parse(responseText) as T;\n } catch (error) {\n const errorMsg = `Failed to parse JSON response: ${error}`;\n logger.error(errorMsg);\n\n if (response.status === 502 && responseText.includes(\"502 Bad Gateway\")) {\n throw new ClientError(response.status, \"502 Bad Gateway\");\n }\n\n throw new ClientError(response.status, errorMsg);\n }\n }\n\n return {} as T;\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n\n const errorMsg = `Request error: ${error}`;\n throw new ClientError(0, errorMsg);\n }\n }\n\n /**\n * GET request\n */\n async get<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"GET\",\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * POST request\n */\n async post<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"POST\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PUT request\n */\n async put<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"PUT\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PATCH request\n */\n async patch<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"PATCH\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * DELETE request\n */\n async delete<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"DELETE\",\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params: { \n sandboxId: string;\n config?: Config \n }): Promise<{ status: string; [key: string]: any }> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n \n return this.get({ path: \"/health\", config: params.config });\n };\n\n /**\n * Create sandbox from template\n */\n createSandbox = async (params: {\n templateName: string;\n sandboxIdleTimeoutSeconds?: number;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n templateName: params.templateName,\n config: params.config,\n });\n\n return this.post({\n path: \"/\",\n data: {\n templateName: params.templateName,\n sandboxIdleTimeoutSeconds: params.sandboxIdleTimeoutSeconds || 600,\n },\n });\n };\n\n /**\n * Delete sandbox\n */\n deleteSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.delete({ path: \"/\" });\n };\n\n /**\n * Stop sandbox\n */\n stopSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.post({ path: \"/stop\" });\n };\n\n /**\n * Get sandbox info\n */\n getSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.get({ path: \"/\" });\n };\n}\n","/**\n * Sandbox Data Models\n *\n * 此模块定义 Sandbox 相关的所有数据模型。\n * This module defines all data models related to Sandbox.\n */\n\nimport { Status, PageableInput } from \"../utils/model\";\n\n/**\n * Template type enum\n */\nexport enum TemplateType {\n CODE_INTERPRETER = \"CodeInterpreter\",\n BROWSER = \"Browser\",\n AIO = \"AllInOne\",\n}\n\n/**\n * Sandbox state enum\n */\nexport enum SandboxState {\n CREATING = \"Creating\",\n RUNNING = \"Running\",\n READY = \"READY\", // API返回的就绪状态,等同于Running\n STOPPED = \"Stopped\",\n FAILED = \"Failed\",\n DELETING = \"Deleting\",\n}\n\n/**\n * Template network mode enum\n */\nexport enum TemplateNetworkMode {\n PUBLIC = \"PUBLIC\",\n PRIVATE = \"PRIVATE\",\n PUBLIC_AND_PRIVATE = \"PUBLIC_AND_PRIVATE\",\n}\n\n/**\n * OSS permission enum\n */\nexport enum TemplateOSSPermission {\n READ_WRITE = \"READ_WRITE\",\n READ_ONLY = \"READ_ONLY\",\n}\n\n/**\n * Code language enum\n */\nexport enum CodeLanguage {\n PYTHON = \"python\",\n}\n\n/**\n * Template network configuration\n */\nexport interface TemplateNetworkConfiguration {\n networkMode?: TemplateNetworkMode;\n securityGroupId?: string;\n vpcId?: string;\n vswitchIds?: string[];\n}\n\n/**\n * Template OSS configuration\n */\nexport interface TemplateOssConfiguration {\n bucketName: string;\n mountPoint: string;\n permission?: TemplateOSSPermission;\n prefix: string;\n region: string;\n}\n\n/**\n * Template log configuration\n */\nexport interface TemplateLogConfiguration {\n project?: string;\n logstore?: string;\n}\n\n/**\n * Template credential configuration\n */\nexport interface TemplateCredentialConfiguration {\n credentialName?: string;\n}\n\n/**\n * Template ARMS configuration\n */\nexport interface TemplateArmsConfiguration {\n armsLicenseKey?: string;\n enableArms: boolean;\n}\n\n/**\n * Template container configuration\n */\nexport interface TemplateContainerConfiguration {\n image?: string;\n command?: string[];\n}\n\n/**\n * Template MCP options\n */\nexport interface TemplateMcpOptions {\n enabledTools?: string[];\n transport?: string;\n}\n\n/**\n * Template MCP state\n */\nexport interface TemplateMcpState {\n accessEndpoint?: string;\n status?: string;\n statusReason?: string;\n}\n\n/**\n * Template create input\n */\nexport interface TemplateCreateInput {\n templateName?: string;\n templateType: TemplateType;\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n templateConfiguration?: Record<string, unknown>;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n}\n\n/**\n * Template update input\n */\nexport interface TemplateUpdateInput {\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n}\n\n/**\n * Template list input\n */\nexport interface TemplateListInput extends PageableInput {\n templateType?: TemplateType;\n}\n\n/**\n * Sandbox create input\n */\nexport interface SandboxCreateInput {\n templateName: string;\n sandboxIdleTimeoutSeconds?: number;\n}\n\n/**\n * Sandbox list input\n */\nexport interface SandboxListInput {\n maxResults?: number;\n nextToken?: string;\n status?: string;\n templateName?: string;\n templateType?: TemplateType;\n}\n\n/**\n * Template data\n */\nexport interface TemplateData {\n templateArn?: string;\n templateId?: string;\n templateName?: string;\n templateType?: TemplateType;\n cpu?: number;\n memory?: number;\n createdAt?: string;\n description?: string;\n executionRoleArn?: string;\n lastUpdatedAt?: string;\n resourceName?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n status?: Status;\n statusReason?: string;\n diskSize?: number;\n}\n\n/**\n * Sandbox data\n */\nexport interface SandboxData {\n sandboxId?: string;\n sandboxName?: string;\n templateId?: string;\n templateName?: string;\n state?: SandboxState;\n stateReason?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n sandboxIdleTimeoutSeconds?: number;\n}\n\n/**\n * Code execution result\n */\nexport interface ExecuteCodeResult {\n stdout?: string;\n stderr?: string;\n exitCode?: number;\n error?: string;\n}\n\n/**\n * File info\n */\nexport interface FileInfo {\n name: string;\n path: string;\n size?: number;\n isDirectory?: boolean;\n modifiedAt?: string;\n}\n\nexport { Status };\n","/**\n * Base Sandbox Resource\n *\n * 此模块定义基础 Sandbox 资源类。\n * This module defines the base Sandbox resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\nimport { ControlAPI } from \"../utils/control-api\";\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport { SandboxDataAPI } from \"./api/sandbox-data\";\nimport {\n SandboxCreateInput,\n SandboxData,\n SandboxListInput,\n SandboxState,\n} from \"./model\";\n\n/**\n * Base Sandbox resource class\n */\nexport class Sandbox implements SandboxData {\n sandboxId?: string;\n sandboxName?: string;\n templateId?: string;\n templateName?: string;\n state?: SandboxState;\n stateReason?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n sandboxIdleTimeoutSeconds?: number;\n\n protected _config?: Config;\n\n constructor(data?: Partial<SandboxData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create sandbox from SDK response object\n */\n static fromInnerObject(obj: any, config?: Config): Sandbox {\n return new Sandbox(\n {\n sandboxId: obj.sandboxId,\n sandboxName: obj.sandboxName,\n templateId: obj.templateId,\n templateName: obj.templateName,\n // API returns \"status\" field, map it to \"state\"\n state: (obj.status || obj.state) as SandboxState,\n stateReason: obj.stateReason,\n createdAt: obj.createdAt,\n lastUpdatedAt: obj.lastUpdatedAt,\n sandboxIdleTimeoutSeconds: obj.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n }\n\n protected static getClient(config?: Config): $AgentRun.default {\n const controlApi = new ControlAPI(config);\n return (controlApi as any).getClient(config);\n }\n\n /**\n * Create a new Sandbox\n */\n static async create(\n input: SandboxCreateInput,\n config?: Config,\n ): Promise<Sandbox> {\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to create sandbox (async creation)\n const dataApi = new SandboxDataAPI({\n sandboxId: \"\", // Not needed for creation\n config: cfg,\n });\n\n const result = await dataApi.createSandbox({\n templateName: input.templateName,\n sandboxIdleTimeoutSeconds: input.sandboxIdleTimeoutSeconds,\n config: cfg,\n });\n\n // Check if creation was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to create sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", input.templateName);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Delete a Sandbox by ID\n */\n static async delete(params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to delete sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.deleteSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if deletion was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to delete sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Stop a Sandbox by ID\n */\n static async stop(params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to stop sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.stopSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if stop was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to stop sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Get a Sandbox by ID\n */\n static async get(params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to get sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.getSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if get was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to get sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * List Sandboxes\n */\n static async list(\n input?: SandboxListInput,\n config?: Config,\n ): Promise<Sandbox[]> {\n try {\n const client = Sandbox.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n const request = new $AgentRun.ListSandboxesRequest({\n maxResults: input?.maxResults,\n nextToken: input?.nextToken,\n status: input?.status,\n templateName: input?.templateName,\n templateType: input?.templateType,\n });\n\n const response = await client.listSandboxesWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listSandboxes called, Request ID: ${response.body?.requestId}`,\n );\n\n return (response.body?.data?.sandboxes || []).map(\n (item: $AgentRun.Sandbox) => Sandbox.fromInnerObject(item, config),\n );\n } catch (error) {\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Handle API errors\n */\n protected static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this sandbox\n */\n delete = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to delete a Sandbox\");\n }\n\n const result = await Sandbox.delete({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Stop this sandbox\n */\n stop = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to stop a Sandbox\");\n }\n\n const result = await Sandbox.stop({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this sandbox's data\n */\n refresh = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to refresh a Sandbox\");\n }\n\n const result = await Sandbox.get({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the sandbox is running\n */\n waitUntilRunning = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (sandbox: Sandbox) => void;\n },\n config?: Config,\n ): Promise<Sandbox> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n // API返回READY状态表示沙箱就绪可以运行\n // API returns READY status to indicate the sandbox is ready to run\n if (this.state === SandboxState.RUNNING || this.state === SandboxState.READY) {\n return this;\n }\n\n if (this.state === SandboxState.FAILED) {\n throw new Error(`Sandbox failed: ${this.stateReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Sandbox to be running after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n}\n","/**\n * Code Interpreter Sandbox\n *\n * High-level API for code interpreter sandboxes with file, filesystem,\n * context, and process management operations.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport { ServerError } from \"../utils/exception\";\n\nimport { CodeInterpreterDataAPI } from \"./api/code-interpreter-data\";\nimport { CodeLanguage, TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * File upload/download operations\n */\nexport class FileOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the code interpreter\n */\n read = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.readFile(params);\n };\n\n /**\n * Write a file to the code interpreter\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class FileSystemOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: {\n path: string;\n parents?: boolean;\n mode?: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the code interpreter\n */\n upload = async (params: {\n localFilePath: string;\n targetFilePath: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the code interpreter\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class ProcessOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the code interpreter\n */\n cmd = async (params: {\n command: string;\n cwd: string;\n timeout?: number;\n }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class ContextOperations {\n private sandbox: CodeInterpreterSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<ContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to create context\");\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<ContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error(\"context id is not set\");\n throw new Error(\"context id is not set\");\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to get context\");\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug(\"context id is not set, use default language: python\");\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n \"context_id is required. Either pass it as parameter or create a context first.\",\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * Code Interpreter Sandbox\n *\n * High-level API for interacting with code interpreter sandboxes.\n */\nexport class CodeInterpreterSandbox extends Sandbox {\n static templateType = TemplateType.CODE_INTERPRETER;\n\n /**\n * Create a Code Interpreter Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<CodeInterpreterSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const ciSandbox = new CodeInterpreterSandbox(sandbox, config);\n return ciSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: CodeInterpreterDataAPI;\n private _file?: FileOperations;\n private _fileSystem?: FileSystemOperations;\n private _context?: ContextOperations;\n private _process?: ProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): CodeInterpreterDataAPI {\n if (!this._dataApi) {\n this._dataApi = new CodeInterpreterDataAPI({\n sandboxId: this.sandboxId || \"\",\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): FileOperations {\n if (!this._file) {\n this._file = new FileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): FileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new FileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): ContextOperations {\n if (!this._context) {\n this._context = new ContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): ProcessOperations {\n if (!this._process) {\n this._process = new ProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ sandboxId: this.sandboxId!, config: params?.config });\n };\n\n /**\n * Wait for sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for code interpreter to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`Code Interpreter is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(`[${retryCount}/${maxRetries}] Health status: not ready`);\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"Code interpreter did not become ready in time.\",\n );\n };\n\n /**\n * Execute code (convenience method delegating to context.execute)\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n return this.context.execute(params);\n };\n}\n","/**\n * Code Interpreter Sandbox Data API\n *\n * This module provides data API methods for Code Interpreter sandboxes.\n * 此模块提供代码解释器沙箱的数据 API 方法。\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport { Config } from \"../../utils/config\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\nimport { CodeLanguage } from \"../model\";\n\nimport { SandboxDataAPI } from \"./sandbox-data\";\n\n/**\n * Code Interpreter Data API\n *\n * Provides methods for interacting with Code Interpreter sandbox data endpoints.\n */\nexport class CodeInterpreterDataAPI extends SandboxDataAPI {\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n }\n\n /**\n * List directory contents\n */\n async listDirectory(params?: {\n path?: string;\n depth?: number;\n config?: Config;\n }): Promise<any> {\n const query: Record<string, any> = {};\n if (params?.path !== undefined) {\n query.path = params.path;\n }\n if (params?.depth !== undefined) {\n query.depth = params.depth;\n }\n\n return this.get({ path: \"/filesystem\", query, config: params?.config });\n }\n\n /**\n * Get file/directory stats\n */\n async stat(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: \"/filesystem/stat\", query, config: params.config });\n }\n\n /**\n * Create directory\n */\n async mkdir(params: {\n path: string;\n parents?: boolean;\n mode?: string;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n parents: params.parents !== undefined ? params.parents : true,\n mode: params.mode || \"0755\",\n };\n return this.post({ path: \"/filesystem/mkdir\", data, config: params.config });\n }\n\n /**\n * Move file or directory\n */\n async moveFile(params: {\n source: string;\n destination: string;\n config?: Config;\n }): Promise<any> {\n const data = {\n source: params.source,\n destination: params.destination,\n };\n return this.post({ path: \"/filesystem/move\", data, config: params.config });\n }\n\n /**\n * Remove file or directory\n */\n async removeFile(params: { path: string; config?: Config }): Promise<any> {\n const data = {\n path: params.path,\n };\n return this.post({ path: \"/filesystem/remove\", data, config: params.config });\n }\n\n /**\n * List code execution contexts\n */\n async listContexts(params?: { config?: Config }): Promise<any> {\n return this.get({ path: \"/contexts\", config: params?.config });\n }\n\n /**\n * Create a new code execution context\n */\n async createContext(params?: {\n language?: CodeLanguage;\n cwd?: string;\n config?: Config;\n }): Promise<any> {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n // Validate language parameter\n if (language !== \"python\" && language !== \"javascript\") {\n throw new Error(\n `language must be 'python' or 'javascript', got: ${language}`,\n );\n }\n\n const data: Record<string, any> = {\n cwd,\n language,\n };\n return this.post({ path: \"/contexts\", data, config: params?.config });\n }\n\n /**\n * Get context details\n */\n async getContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.get({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Execute code in a context\n */\n async executeCode(params: {\n code: string;\n contextId?: string;\n language?: CodeLanguage;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const { code, contextId, language, timeout = 30, config } = params;\n\n if (language && language !== \"python\" && language !== \"javascript\") {\n throw new Error(\n `language must be 'python' or 'javascript', got: ${language}`,\n );\n }\n\n const data: Record<string, any> = {\n code,\n };\n\n if (timeout !== undefined) {\n data.timeout = timeout;\n }\n if (language !== undefined) {\n data.language = language;\n }\n if (contextId !== undefined) {\n data.contextId = contextId;\n }\n\n return this.post({ path: \"/contexts/execute\", data, config });\n }\n\n /**\n * Delete a context\n */\n async deleteContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Read file contents\n */\n async readFile(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: \"/files\", query, config: params.config });\n }\n\n /**\n * Write file contents\n */\n async writeFile(params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n content: params.content,\n mode: params.mode || \"644\",\n encoding: params.encoding || \"utf-8\",\n createDir: params.createDir !== undefined ? params.createDir : true,\n };\n return this.post({ path: \"/files\", data, config: params.config });\n }\n\n /**\n * Upload file to sandbox\n */\n async uploadFile(params: {\n localFilePath: string;\n targetFilePath: string;\n config?: Config;\n }): Promise<any> {\n return this.postFile({\n path: \"/filesystem/upload\",\n localFilePath: params.localFilePath,\n targetFilePath: params.targetFilePath,\n config: params.config,\n });\n }\n\n /**\n * Download file from sandbox\n */\n async downloadFile(params: {\n path: string;\n savePath: string;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const query = { path: params.path };\n return this.getFile({\n path: \"/filesystem/download\",\n savePath: params.savePath,\n query,\n config: params.config,\n });\n }\n\n /**\n * Execute shell command\n */\n async cmd(params: {\n command: string;\n cwd: string;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const data: Record<string, any> = {\n command: params.command,\n cwd: params.cwd,\n };\n\n if (params.timeout !== undefined) {\n data.timeout = params.timeout;\n }\n\n return this.post({ path: \"/processes/cmd\", data, config: params.config });\n }\n\n /**\n * List running processes\n */\n async listProcesses(params?: { config?: Config }): Promise<any> {\n return this.get({ path: \"/processes\", config: params?.config });\n }\n\n /**\n * Get process details\n */\n async getProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.get({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Kill a process\n */\n async killProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Helper method to upload file using multipart/form-data\n */\n protected async postFile(params: {\n path: string;\n localFilePath: string;\n targetFilePath: string;\n formData?: Record<string, any>;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<any> {\n const filename = path.basename(params.localFilePath);\n const url = this.withPath(params.path, params.query);\n\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n delete reqHeaders[\"Content-Type\"]; // Let fetch set it with boundary\n\n try {\n const fileContent = await fs.promises.readFile(params.localFilePath);\n\n const formData = new FormData();\n formData.append(\n \"file\",\n new Blob([fileContent]),\n filename,\n );\n\n const data = params.formData || {};\n data.path = params.targetFilePath;\n\n Object.entries(data).forEach(([key, value]) => {\n formData.append(key, String(value));\n });\n\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: \"POST\",\n headers: reqHeaders,\n body: formData,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n return response.json();\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Upload file error: ${error}`);\n throw new ClientError(0, `Upload file error: ${error}`);\n }\n }\n\n /**\n * Helper method to download file\n */\n protected async getFile(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n\n try {\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: \"GET\",\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download file error: ${error}`);\n throw new ClientError(0, `Download file error: ${error}`);\n }\n }\n}\n","/**\n * Template Resource\n *\n * 此模块定义 Template 资源类。\n * This module defines the Template resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\nimport { ControlAPI } from \"../utils/control-api\";\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { Status } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport {\n TemplateCreateInput,\n TemplateData,\n TemplateListInput,\n TemplateNetworkMode,\n TemplateType,\n TemplateUpdateInput,\n} from \"./model\";\n\n/**\n * Template resource class\n */\nexport class Template implements TemplateData {\n templateArn?: string;\n templateId?: string;\n templateName?: string;\n templateType?: TemplateType;\n cpu?: number;\n memory?: number;\n createdAt?: string;\n description?: string;\n executionRoleArn?: string;\n lastUpdatedAt?: string;\n resourceName?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n status?: Status;\n statusReason?: string;\n diskSize?: number;\n\n private _config?: Config;\n\n constructor(data?: Partial<TemplateData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create template from SDK response object\n */\n static fromInnerObject(obj: $AgentRun.Template, config?: Config): Template {\n return new Template(\n {\n templateArn: obj.templateArn,\n templateId: obj.templateId,\n templateName: obj.templateName,\n templateType: obj.templateType as TemplateType,\n cpu: obj.cpu,\n memory: obj.memory,\n createdAt: obj.createdAt,\n description: obj.description,\n executionRoleArn: obj.executionRoleArn,\n lastUpdatedAt: obj.lastUpdatedAt,\n resourceName: obj.resourceName,\n sandboxIdleTimeoutInSeconds: obj.sandboxIdleTimeoutInSeconds\n ? parseInt(obj.sandboxIdleTimeoutInSeconds, 10)\n : undefined,\n sandboxTtlInSeconds: obj.sandboxTTLInSeconds\n ? parseInt(obj.sandboxTTLInSeconds, 10)\n : undefined,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n diskSize: obj.diskSize,\n },\n config,\n );\n }\n\n private static getClient(config?: Config): $AgentRun.default {\n const controlApi = new ControlAPI(config);\n return controlApi.getClient();\n }\n\n /**\n * Create a new Template\n */\n static async create(params: {\n input: TemplateCreateInput;\n config?: Config;\n }): Promise<Template> {\n const { input, config } = params;\n // Set default values based on template type\n const defaults = Template.getDefaults(input.templateType);\n const finalInput = { ...defaults, ...input };\n\n // Set default network configuration\n if (!finalInput.networkConfiguration) {\n finalInput.networkConfiguration = {\n networkMode: TemplateNetworkMode.PUBLIC,\n };\n }\n\n // Validation\n Template.validate(finalInput);\n\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const request = new $AgentRun.CreateTemplateRequest({\n body: new $AgentRun.CreateTemplateInput({\n templateName: finalInput.templateName,\n templateType: finalInput.templateType,\n cpu: finalInput.cpu,\n memory: finalInput.memory,\n executionRoleArn: finalInput.executionRoleArn,\n sandboxIdleTimeoutInSeconds: finalInput.sandboxIdleTimeoutInSeconds,\n description: finalInput.description,\n environmentVariables: finalInput.environmentVariables,\n diskSize: finalInput.diskSize,\n networkConfiguration: finalInput.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: finalInput.networkConfiguration.networkMode,\n })\n : undefined,\n }),\n });\n\n const response = await client.createTemplateWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API createTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", input.templateName);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Get defaults based on template type\n */\n private static getDefaults(\n templateType: TemplateType,\n ): Partial<TemplateCreateInput> {\n const base = {\n cpu: 2,\n memory: 4096,\n sandboxIdleTimeoutInSeconds: 1800,\n sandboxTtlInSeconds: 21600,\n shareConcurrencyLimitPerSandbox: 200,\n };\n\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER:\n return { ...base, diskSize: 512 };\n case TemplateType.BROWSER:\n case TemplateType.AIO:\n return { ...base, cpu: 4, memory: 8192, diskSize: 10240 };\n default:\n return { ...base, diskSize: 512 };\n }\n }\n\n /**\n * Validate template configuration\n */\n private static validate(input: TemplateCreateInput): void {\n // Browser and AIO require specific disk size\n if (\n (input.templateType === TemplateType.BROWSER ||\n input.templateType === TemplateType.AIO) &&\n input.diskSize !== 10240\n ) {\n throw new Error(\n `When templateType is BROWSER or AIO, diskSize must be 10240, got ${input.diskSize}`,\n );\n }\n\n // CODE_INTERPRETER and AIO cannot use PRIVATE network mode\n if (\n (input.templateType === TemplateType.CODE_INTERPRETER ||\n input.templateType === TemplateType.AIO) &&\n input.networkConfiguration?.networkMode === TemplateNetworkMode.PRIVATE\n ) {\n throw new Error(\n `When templateType is CODE_INTERPRETER or AIO, networkMode cannot be PRIVATE`,\n );\n }\n }\n\n /**\n * Delete a Template by name\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<Template> {\n const { name, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteTemplateWithOptions(\n name,\n {},\n runtime,\n );\n\n logger.debug(\n `API deleteTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Update a Template by name\n */\n static async update(params: {\n name: string;\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> {\n const { name, input, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const request = new $AgentRun.UpdateTemplateRequest({\n templateName: name,\n body: new $AgentRun.UpdateTemplateInput({\n cpu: input.cpu,\n memory: input.memory,\n executionRoleArn: input.executionRoleArn,\n sandboxIdleTimeoutInSeconds: input.sandboxIdleTimeoutInSeconds,\n description: input.description,\n environmentVariables: input.environmentVariables,\n diskSize: input.diskSize,\n networkConfiguration: input.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: input.networkConfiguration.networkMode,\n })\n : undefined,\n }),\n });\n\n const response = await client.updateTemplateWithOptions(\n name,\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API updateTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Get a Template by name\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<Template> {\n const { name, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getTemplateWithOptions(name, {}, runtime);\n\n logger.debug(\n `API getTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * List Templates\n */\n static async list(\n input?: TemplateListInput,\n config?: Config,\n ): Promise<Template[]> {\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n const request = new $AgentRun.ListTemplatesRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n templateType: input?.templateType,\n });\n\n const response = await client.listTemplatesWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listTemplates called, Request ID: ${response.body?.requestId}`,\n );\n\n return (response.body?.data?.items || []).map((item) =>\n Template.fromInnerObject(item, config),\n );\n } catch (error) {\n Template.handleError(error);\n }\n }\n\n /**\n * List all Templates (with pagination)\n */\n static async listAll(\n options?: { templateType?: TemplateType },\n config?: Config,\n ): Promise<Template[]> {\n const templates: Template[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const result = await Template.list(\n {\n pageNumber: page,\n pageSize,\n templateType: options?.templateType,\n },\n config,\n );\n\n templates.push(...result);\n page++;\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return templates.filter((t) => {\n if (!t.templateId || seen.has(t.templateId)) {\n return false;\n }\n seen.add(t.templateId);\n return true;\n });\n }\n\n /**\n * Handle API errors\n */\n private static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this template\n */\n delete = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error(\"templateName is required to delete a Template\");\n }\n\n const result = await Template.delete({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this template\n */\n update = async (params: {\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> => {\n const { input, config } = params;\n if (!this.templateName) {\n throw new Error(\"templateName is required to update a Template\");\n }\n\n const result = await Template.update({\n name: this.templateName,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this template's data\n */\n refresh = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error(\"templateName is required to refresh a Template\");\n }\n\n const result = await Template.get({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the template is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (template: Template) => void;\n },\n config?: Config,\n ): Promise<Template> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (this.status === Status.CREATE_FAILED) {\n throw new Error(`Template failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Template to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n}\n","/**\n * Sandbox Client\n *\n * 此模块提供 Sandbox 的客户端 API。\n * This module provides the client API for Sandbox.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport { BrowserSandbox } from \"./browser-sandbox\";\nimport { CodeInterpreterSandbox } from \"./code-interpreter-sandbox\";\nimport {\n SandboxCreateInput,\n SandboxListInput,\n TemplateCreateInput,\n TemplateListInput,\n TemplateType,\n TemplateUpdateInput,\n} from \"./model\";\nimport { Sandbox } from \"./sandbox\";\nimport { Template } from \"./template\";\n\n/**\n * Sandbox Client\n *\n * 提供 Sandbox 和 Template 的管理功能。\n */\nexport class SandboxClient {\n private config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n // ============ Template Operations ============\n\n /**\n * Create a Template\n */\n createTemplate = async (params: {\n input: TemplateCreateInput;\n config?: Config;\n }): Promise<Template> => {\n const { input, config } = params;\n return Template.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete a Template\n */\n deleteTemplate = async (params: {\n name: string;\n config?: Config;\n }): Promise<Template> => {\n const { name, config } = params;\n return Template.delete({ name, config: config ?? this.config });\n };\n\n /**\n * Update a Template\n */\n updateTemplate = async (params: {\n name: string;\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> => {\n const { name, input, config } = params;\n return Template.update({ name, input, config: config ?? this.config });\n };\n\n /**\n * Get a Template\n */\n getTemplate = async (params: {\n name: string;\n config?: Config;\n }): Promise<Template> => {\n const { name, config } = params;\n return Template.get({ name, config: config ?? this.config });\n };\n\n /**\n * List Templates\n */\n listTemplates = async (params?: {\n input?: TemplateListInput;\n config?: Config;\n }): Promise<Template[]> => {\n const { input, config } = params ?? {};\n return Template.list(input, config ?? this.config);\n };\n\n /**\n * List all Templates\n */\n listAllTemplates = async (params?: {\n options?: { templateType?: TemplateType };\n config?: Config;\n }): Promise<Template[]> => {\n const { options, config } = params ?? {};\n return Template.listAll(options, config ?? this.config);\n };\n\n // ============ Sandbox Operations ============\n\n /**\n * Create a Sandbox\n */\n createSandbox = async (params: {\n input: SandboxCreateInput;\n config?: Config;\n }): Promise<Sandbox> => {\n const { input, config } = params;\n return Sandbox.create(input, config ?? this.config);\n };\n\n /**\n * Create a Code Interpreter Sandbox\n */\n createCodeInterpreterSandbox = async (params: {\n templateName: string;\n options?: { sandboxIdleTimeoutSeconds?: number };\n config?: Config;\n }): Promise<CodeInterpreterSandbox> => {\n const { templateName, options, config } = params;\n return CodeInterpreterSandbox.createFromTemplate(\n templateName,\n options,\n config ?? this.config,\n );\n };\n\n /**\n * Create a Browser Sandbox\n */\n createBrowserSandbox = async (params: {\n templateName: string;\n options?: { sandboxIdleTimeoutSeconds?: number };\n config?: Config;\n }): Promise<BrowserSandbox> => {\n const { templateName, options, config } = params;\n return BrowserSandbox.createFromTemplate(\n templateName,\n options,\n config ?? this.config,\n );\n };\n\n /**\n * Delete a Sandbox\n */\n deleteSandbox = async (params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> => {\n const { id, config } = params;\n return Sandbox.delete({ id, config: config ?? this.config });\n };\n\n /**\n * Stop a Sandbox\n */\n stopSandbox = async (params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> => {\n const { id, config } = params;\n return Sandbox.stop({ id, config: config ?? this.config });\n };\n\n /**\n * Get a Sandbox\n */\n getSandbox = async (params: { id: string; config?: Config }): Promise<Sandbox> => {\n const { id, config } = params;\n return Sandbox.get({ id, config: config ?? this.config });\n };\n\n /**\n * List Sandboxes\n */\n listSandboxes = async (params?: {\n input?: SandboxListInput;\n config?: Config;\n }): Promise<Sandbox[]> => {\n const { input, config } = params ?? {};\n return Sandbox.list(input, config ?? this.config);\n };\n}\n","/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities\n * into a single unified interface.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport { ServerError } from \"../utils/exception\";\n\nimport { AioDataAPI } from \"./api/aio-data\";\nimport { CodeLanguage, TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * File upload/download operations\n */\nexport class AioFileOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the sandbox\n */\n read = async (path: string): Promise<any> => {\n return this.sandbox.dataApi.readFile({ path });\n };\n\n /**\n * Write a file to the sandbox\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class AioFileSystemOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: {\n path: string;\n parents?: boolean;\n mode?: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the sandbox\n */\n upload = async (params: {\n localFilePath: string;\n targetFilePath: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the sandbox\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class AioProcessOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the sandbox\n */\n cmd = async (params: {\n command: string;\n cwd: string;\n timeout?: number;\n }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class AioContextOperations {\n private sandbox: AioSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<AioContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to create context\");\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<AioContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error(\"context id is not set\");\n throw new Error(\"context id is not set\");\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to get context\");\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug(\"context id is not set, use default language: python\");\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n \"context_id is required. Either pass it as parameter or create a context first.\",\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities.\n */\nexport class AioSandbox extends Sandbox {\n static templateType = TemplateType.AIO;\n\n /**\n * Create an AIO Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<AioSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const aioSandbox = new AioSandbox(sandbox, config);\n return aioSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: AioDataAPI;\n private _file?: AioFileOperations;\n private _fileSystem?: AioFileSystemOperations;\n private _context?: AioContextOperations;\n private _process?: AioProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): AioDataAPI {\n if (!this._dataApi) {\n this._dataApi = new AioDataAPI({\n sandboxId: this.sandboxId || \"\",\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): AioFileOperations {\n if (!this._file) {\n this._file = new AioFileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): AioFileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new AioFileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): AioContextOperations {\n if (!this._context) {\n this._context = new AioContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): AioProcessOperations {\n if (!this._process) {\n this._process = new AioProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ \n sandboxId: this.sandboxId!, \n config: params?.config \n });\n };\n\n /**\n * Wait for sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for AIO sandbox to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`✓ AIO Sandbox is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(`[${retryCount}/${maxRetries}] Health status: not ready`);\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"AIO sandbox did not become ready in time.\",\n );\n };\n\n // ========================================\n // Browser API Methods\n // ========================================\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n /**\n * List all browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n}\n","/**\n * AIO (All-In-One) Sandbox Data API\n *\n * This module provides a combined data API that includes both Code Interpreter\n * and Browser sandbox functionalities.\n * 此模块提供包含代码解释器和浏览器沙箱功能的组合数据 API。\n */\n\nimport { Config } from \"../../utils/config\";\nimport { BrowserDataAPI } from \"./browser-data\";\nimport { CodeInterpreterDataAPI } from \"./code-interpreter-data\";\n\n/**\n * AIO Data API\n *\n * Combines both Code Interpreter and Browser data API methods.\n */\nexport class AioDataAPI extends CodeInterpreterDataAPI {\n private browserAPI: BrowserDataAPI;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n this.browserAPI = new BrowserDataAPI({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n }\n\n // Browser API methods - delegate to browserAPI\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.browserAPI.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.browserAPI.getVncUrl(record);\n }\n\n /**\n * List browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.browserAPI.listRecordings(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.browserAPI.deleteRecording(params);\n };\n\n /**\n * Download a recording\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.browserAPI.downloadRecording(params);\n };\n}\n","/**\n * Model module exports\n */\n\nexport { ModelClient } from \"./client\";\nexport { ModelService } from \"./model-service\";\nexport { ModelProxy } from \"./model-proxy\";\n\n// Re-export ControlAPI for advanced usage\nexport { ControlAPI as ModelControlAPI } from \"../utils/control-api\";\n\nexport { BackendType, ModelType, Provider } from \"./model\";\n\nexport type {\n ProviderSettings,\n ModelFeatures,\n ModelProperties,\n ModelParameterRule,\n ModelInfoConfig,\n ModelServiceCreateInput,\n ModelServiceUpdateInput,\n ModelServiceListInput,\n ModelServiceData,\n ProxyConfigEndpoint,\n ProxyConfigFallback,\n ProxyConfigPolicies,\n ProxyConfig,\n ModelProxyCreateInput,\n ModelProxyUpdateInput,\n ModelProxyListInput,\n ModelProxyData,\n} from \"./model\";\n","/**\n * ToolSet Resource Class\n *\n * ToolSet 资源类,用于管理 ToolSet 资源。\n * Resource class for managing ToolSet resources.\n */\n\nimport * as $Devs from \"@alicloud/devs20230714\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { Status } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport {\n ToolSetCreateInput,\n ToolSetData,\n ToolSetListInput,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetUpdateInput,\n} from \"./model\";\n\n/**\n * ToolSet resource class\n */\nexport class ToolSet implements ToolSetData {\n name?: string;\n uid?: string;\n kind?: string;\n description?: string;\n createdTime?: string;\n generation?: number;\n labels?: Record<string, string>;\n spec?: ToolSetSpec;\n status?: ToolSetStatus;\n\n private _config?: Config;\n\n constructor(data?: Partial<ToolSetData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Get ToolSet name (alias for name)\n */\n get toolSetName(): string | undefined {\n return this.name;\n }\n\n /**\n * Get ToolSet ID (alias for uid)\n */\n get toolSetId(): string | undefined {\n return this.uid;\n }\n\n /**\n * Check if the toolset is ready\n */\n get isReady(): boolean {\n return this.status?.status === Status.READY;\n }\n\n /**\n * Create toolset from SDK response object\n */\n static fromInnerObject(obj: $Devs.Toolset, config?: Config): ToolSet {\n if (!obj) {\n throw new Error('Invalid toolset object: object is null or undefined');\n }\n \n return new ToolSet(\n {\n name: obj.name,\n uid: obj.uid,\n kind: obj.kind,\n description: obj.description,\n createdTime: obj.createdTime,\n generation: obj.generation,\n labels: obj.labels as Record<string, string>,\n spec: {\n schema: {\n type: obj.spec?.schema?.type as any,\n detail: obj.spec?.schema?.detail,\n },\n authConfig: {\n type: obj.spec?.authConfig?.type,\n apiKeyHeaderName:\n obj.spec?.authConfig?.parameters?.apiKeyParameter?.key,\n apiKeyValue:\n obj.spec?.authConfig?.parameters?.apiKeyParameter?.value,\n },\n },\n status: {\n status: obj.status?.status as Status,\n statusReason: obj.status?.statusReason,\n outputs: {\n mcpServerConfig: {\n url: obj.status?.outputs?.mcpServerConfig?.url,\n transport: obj.status?.outputs?.mcpServerConfig?.transport,\n },\n tools: obj.status?.outputs?.tools?.map((tool) => ({\n name: tool.name,\n description: tool.description,\n })),\n urls: {\n cdpUrl: obj.status?.outputs?.urls?.cdpUrl,\n liveViewUrl: obj.status?.outputs?.urls?.liveViewUrl,\n streamUrl: obj.status?.outputs?.urls?.streamUrl,\n },\n },\n },\n },\n config,\n );\n }\n\n /**\n * Get DevS client\n */\n private static getClient(config?: Config): $Devs.default {\n const cfg = Config.withConfigs(config);\n\n // Use devs endpoint\n let endpoint = cfg.devsEndpoint;\n\n // Remove protocol prefix for SDK\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new $Devs.default(openApiConfig);\n }\n\n /**\n * Create a new ToolSet\n */\n static async create(params: {\n input: ToolSetCreateInput;\n config?: Config;\n }): Promise<ToolSet> {\n const { input, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Build authorization parameters if provided\n let authConfig: $Devs.Authorization | undefined;\n if (input.spec?.authConfig) {\n authConfig = new $Devs.Authorization({\n type: input.spec.authConfig.type,\n parameters: new $Devs.AuthorizationParameters({\n apiKeyParameter: new $Devs.APIKeyAuthParameter({\n key: input.spec.authConfig.apiKeyHeaderName,\n value: input.spec.authConfig.apiKeyValue,\n in: \"header\",\n }),\n }),\n });\n }\n\n const request = new $Devs.CreateToolsetRequest({\n body: new $Devs.Toolset({\n name: input.name,\n description: input.description,\n labels: input.labels,\n spec: input.spec\n ? new $Devs.ToolsetSpec({\n schema: input.spec.schema\n ? new $Devs.ToolsetSchema({\n type: input.spec.schema.type,\n detail: input.spec.schema.detail,\n })\n : undefined,\n authConfig: authConfig,\n })\n : undefined,\n }),\n });\n\n const response = await client.createToolsetWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API createToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", input.name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Delete a ToolSet by Name\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteToolsetWithOptions(name, {}, runtime);\n\n logger.debug(\n `API deleteToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Get a ToolSet by Name\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n logger.debug(`Calling getToolset API for: ${name}`);\n \n const response = await client.getToolsetWithOptions(name, {}, runtime);\n\n logger.debug(\n `API getToolset response, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body) {\n throw new Error(`API returned empty response body for toolset: ${name}`);\n }\n\n // The SDK returns the toolset data directly in body, not in body.data\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * List ToolSets\n */\n static async list(\n input?: ToolSetListInput,\n config?: Config,\n ): Promise<ToolSet[]> {\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Convert labels to labelSelector format if needed\n let labelSelector: string[] | undefined;\n if (input?.labels) {\n labelSelector = Object.entries(input.labels).map(\n ([k, v]) => `${k}=${v}`,\n );\n }\n\n const request = new $Devs.ListToolsetsRequest({\n keyword: input?.prefix,\n pageNumber: input?.pageSize ? 1 : undefined,\n pageSize: input?.pageSize,\n labelSelector: labelSelector,\n });\n\n const response = await client.listToolsetsWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listToolsets called, Request ID: ${response.body?.requestId}`,\n );\n\n // Response body has data as Toolset[]\n // SDK returns array of toolsets directly in items field\n const items = (response.body as any)?.items || [];\n return items.map((item: $Devs.Toolset) =>\n ToolSet.fromInnerObject(item, config),\n );\n } catch (error) {\n ToolSet.handleError(error);\n }\n }\n\n /**\n * List all ToolSets with pagination\n */\n static async listAll(\n options?: { prefix?: string; labels?: Record<string, string> },\n config?: Config,\n ): Promise<ToolSet[]> {\n const toolsets: ToolSet[] = [];\n const pageSize = 50;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = await ToolSet.list(\n {\n prefix: options?.prefix,\n labels: options?.labels,\n pageSize,\n },\n config,\n );\n\n toolsets.push(...result);\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return toolsets.filter((t) => {\n if (!t.uid || seen.has(t.uid)) {\n return false;\n }\n seen.add(t.uid);\n return true;\n });\n }\n\n /**\n * Update a ToolSet by Name\n */\n static async update(params: {\n name: string;\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, input, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Build authorization parameters if provided\n let authConfig: $Devs.Authorization | undefined;\n if (input.spec?.authConfig) {\n authConfig = new $Devs.Authorization({\n type: input.spec.authConfig.type,\n parameters: new $Devs.AuthorizationParameters({\n apiKeyParameter: new $Devs.APIKeyAuthParameter({\n key: input.spec.authConfig.apiKeyHeaderName,\n value: input.spec.authConfig.apiKeyValue,\n in: \"header\",\n }),\n }),\n });\n }\n\n const request = new $Devs.UpdateToolsetRequest({\n body: new $Devs.Toolset({\n description: input.description,\n labels: input.labels,\n spec: input.spec\n ? new $Devs.ToolsetSpec({\n schema: input.spec.schema\n ? new $Devs.ToolsetSchema({\n type: input.spec.schema.type,\n detail: input.spec.schema.detail,\n })\n : undefined,\n authConfig: authConfig,\n })\n : undefined,\n }),\n });\n\n const response = await client.updateToolsetWithOptions(\n name,\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API updateToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Handle API errors\n */\n private static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this toolset\n */\n delete = async (params?: { config?: Config }): Promise<ToolSet> => {\n const config = params?.config;\n if (!this.name) {\n throw new Error(\"name is required to delete a ToolSet\");\n }\n\n const result = await ToolSet.delete({\n name: this.name,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this toolset\n */\n update = async (params: {\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { input, config } = params;\n if (!this.name) {\n throw new Error(\"name is required to update a ToolSet\");\n }\n\n const result = await ToolSet.update({\n name: this.name,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this toolset's data\n */\n refresh = async (params?: { config?: Config }): Promise<ToolSet> => {\n const config = params?.config;\n if (!this.name) {\n throw new Error(\"name is required to refresh a ToolSet\");\n }\n\n const result = await ToolSet.get({\n name: this.name,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the toolset is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (toolset: ToolSet) => void;\n },\n config?: Config,\n ): Promise<ToolSet> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status?.status === Status.READY) {\n return this;\n }\n\n if (this.status?.status === Status.CREATE_FAILED) {\n throw new Error(`ToolSet failed: ${this.status?.statusReason}`);\n }\n\n if (Date.now() - startTime > timeout) {\n throw new Error(\n `Timeout waiting for ToolSet to be ready after ${timeout / 1000}s`,\n );\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n };\n\n /**\n * Get toolset type\n * 获取工具集类型\n */\n type(): string | undefined {\n return this.spec?.schema?.type;\n }\n\n /**\n * List tools (async)\n * 异步获取工具列表,返回统一的 ToolInfo 列表\n */\n listToolsAsync = async (params?: { config?: Config }): Promise<any[]> => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n\n if (this.type() === ToolSetSchemaType.MCP) {\n // MCP tools\n const mcpTools = this.status?.outputs?.tools || [];\n return mcpTools.map((tool: any) => ToolInfo.fromMCPTool(tool));\n } else if (this.type() === ToolSetSchemaType.OPENAPI) {\n // OpenAPI tools - use toApiSet\n const apiset = await this.toApiSet(params);\n return apiset.tools;\n }\n return [];\n };\n\n /**\n * List tools (sync wrapper)\n * 同步获取工具列表,返回统一的 ToolInfo 列表\n */\n listTools = (config?: Config): Promise<any[]> => {\n return this.listToolsAsync({ config });\n };\n\n /**\n * Call tool (async)\n * 异步调用工具,统一使用 ApiSet 实现\n */\n callToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n const apiset = await this.toApiSet({ config });\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n\n // For OpenAPI, may need to resolve operation name\n // 对于 OpenAPI,可能需要解析 operation name\n if (this.type() === ToolSetSchemaType.OPENAPI) {\n const tool = apiset.getTool(name);\n if (!tool) {\n // Try to find via tool_id mapping\n // 尝试通过 tool_id 映射查找\n const openApiTools = (this.status?.outputs as any)?.openApiTools || [];\n for (const toolMeta of openApiTools) {\n if (!toolMeta) continue;\n if (toolMeta.toolId === name || toolMeta.tool_id === name) {\n name = toolMeta.toolName || toolMeta.tool_name || name;\n break;\n }\n }\n }\n }\n\n logger.debug(`Invoke tool ${name} with arguments`, args);\n const result = await apiset.invoke(name, args, config);\n logger.debug(`Invoke tool ${name} got result`, result);\n return result;\n };\n\n /**\n * Call tool (sync wrapper)\n * 同步调用工具,统一使用 ApiSet 实现\n */\n callTool = (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n return this.callToolAsync(name, args, config);\n };\n\n /**\n * Convert ToolSet to unified ApiSet object\n * 将 ToolSet 转换为统一的 ApiSet 对象\n */\n toApiSet = async (params?: { config?: Config }): Promise<any> => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ApiSet } = require(\"./openapi\");\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n\n if (this.type() === ToolSetSchemaType.MCP) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { MCPToolSet } = require(\"./api/mcp\");\n\n const mcpServerConfig = (this.status?.outputs as any)?.mcpServerConfig;\n if (!mcpServerConfig?.url) {\n throw new Error(\"MCP server URL is missing.\");\n }\n\n const cfg = Config.withConfigs(\n params?.config,\n new Config({ headers: mcpServerConfig.headers })\n );\n\n const mcpClient = new MCPToolSet(mcpServerConfig.url, cfg);\n\n // Get MCP tools\n const mcpTools = this.status?.outputs?.tools || [];\n\n return ApiSet.fromMCPTools({\n tools: mcpTools,\n mcpClient,\n config: cfg,\n });\n } else if (this.type() === ToolSetSchemaType.OPENAPI) {\n const headers = this._getOpenAPIAuthDefaults().headers;\n const query = this._getOpenAPIAuthDefaults().query;\n\n // Use OpenAPI.fromSchema if available, otherwise create basic ApiSet\n // 如果可用,使用 OpenAPI.fromSchema,否则创建基本 ApiSet\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { OpenAPI } = require(\"./openapi\");\n \n const openapi = new OpenAPI({\n schema: this.spec?.schema?.detail || \"{}\",\n baseUrl: this._getOpenAPIBaseUrl(),\n headers,\n queryParams: query,\n config: params?.config,\n });\n\n // Convert OpenAPI tools to ToolInfo format\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n const tools = openapi.tools.map((t: any) => \n new ToolInfo({\n name: t.name,\n description: t.description,\n parameters: t.parameters as any,\n })\n );\n\n return new ApiSet(tools, openapi, undefined, headers, query, params?.config);\n }\n\n throw new Error(`Unsupported ToolSet type: ${this.type()}`);\n };\n\n /**\n * Get OpenAPI authentication defaults\n * 获取 OpenAPI 认证默认值\n */\n private _getOpenAPIAuthDefaults(): {\n headers: Record<string, string>;\n query: Record<string, string>;\n } {\n const headers: Record<string, string> = {};\n const query: Record<string, string> = {};\n\n const authConfig = this.spec?.authConfig;\n const authType = authConfig?.type;\n\n if (authType === \"APIKey\") {\n const key = authConfig?.apiKeyHeaderName;\n const value = authConfig?.apiKeyValue;\n const location = \"header\"; // Default location\n\n if (key && value) {\n if (location === \"header\") {\n headers[key] = value;\n } else if (location === \"query\") {\n query[key] = value;\n }\n }\n }\n\n return { headers, query };\n }\n\n /**\n * Get OpenAPI base URL\n * 获取 OpenAPI 基础 URL\n */\n private _getOpenAPIBaseUrl(): string | undefined {\n const outputs = this.status?.outputs as any;\n return outputs?.urls?.intranetUrl || outputs?.urls?.internetUrl;\n }\n}\n","/**\n * ToolSet Client\n *\n * ToolSet 客户端,提供 ToolSet 的管理功能。\n * Client for managing ToolSet resources.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport {\n ToolSetCreateInput,\n ToolSetListInput,\n ToolSetUpdateInput,\n} from \"./model\";\nimport { ToolSet } from \"./toolset\";\n\n/**\n * ToolSet Client\n *\n * 提供 ToolSet 的管理功能。\n */\nexport class ToolSetClient {\n private config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Create a ToolSet\n */\n createToolSet = async (params: {\n input: ToolSetCreateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { input, config } = params;\n return ToolSet.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete a ToolSet by name\n */\n deleteToolSet = async (params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, config } = params;\n return ToolSet.delete({ name, config: config ?? this.config });\n };\n\n /**\n * Get a ToolSet by name\n */\n getToolSet = async (params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, config } = params;\n return ToolSet.get({ name, config: config ?? this.config });\n };\n\n /**\n * Update a ToolSet by name\n */\n updateToolSet = async (params: {\n name: string;\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, input, config } = params;\n return ToolSet.update({ name, input, config: config ?? this.config });\n };\n\n /**\n * List ToolSets\n */\n listToolSets = async (params?: {\n input?: ToolSetListInput;\n config?: Config;\n }): Promise<ToolSet[]> => {\n const { input, config } = params ?? {};\n return ToolSet.list(input, config ?? this.config);\n };\n\n /**\n * List all ToolSets with pagination\n */\n listAllToolSets = async (params?: {\n options?: { prefix?: string; labels?: Record<string, string> };\n config?: Config;\n }): Promise<ToolSet[]> => {\n const { options, config } = params ?? {};\n return ToolSet.listAll(options, config ?? this.config);\n };\n}\n","/**\n * ToolSet Module\n *\n * ToolSet 模块,提供 ToolSet 资源的管理功能。\n * Module for managing ToolSet resources.\n */\n\nexport { ToolSetClient } from \"./client\";\nexport { ToolSet } from \"./toolset\";\nexport { OpenAPI, ApiSet } from \"./openapi\";\nexport { ToolSetSchemaType, ToolSchema, ToolInfo } from \"./model\";\nexport { ToolControlAPI } from \"./api/control\";\nexport { MCPSession, MCPToolSet } from \"./api/mcp\";\nexport type {\n ToolSetCreateInput,\n ToolSetUpdateInput,\n ToolSetListInput,\n ToolSetData,\n ToolSetAuthorization,\n ToolSetSchema,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetStatusOutputs,\n MCPToolMeta,\n} from \"./model\";\nexport type {\n ToolParameterSchema,\n InvokeResult,\n OpenAPIOptions,\n} from \"./openapi\";\n","/**\n * Tool Control API\n * \n * Tool 管控链路 API\n * \n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `make codegen` command to regenerate.\n * \n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `make codegen` 命令重新生成。\n */\n\nimport * as $Devs from \"@alicloud/devs20230714\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ClientError, HTTPError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Tool Control API\n * \n * Tool 管控链路 API\n */\nexport class ToolControlAPI {\n private config?: Config;\n\n /**\n * Initialize API client\n * 初始化 API 客户端\n * \n * @param config - Global configuration object / 全局配置对象\n */\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Get DevS client\n * 获取 DevS 客户端\n */\n private getDevsClient(config?: Config): $Devs.default {\n const cfg = Config.withConfigs(this.config, config);\n\n // Use devs endpoint\n let endpoint = cfg.devsEndpoint;\n\n // Remove protocol prefix for SDK\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new $Devs.default(openApiConfig);\n }\n\n /**\n * Get toolset\n * 获取工具\n * \n * @param name - Tool name / Tool 名称\n * @param headers - Request headers / 请求头\n * @param config - Configuration / 配置\n * @returns Toolset object / ToolSet 对象\n * @throws AgentRuntimeError - Throws on call failure / 调用失败时抛出\n * @throws ClientError - Client error / 客户端错误\n * @throws ServerError - Server error / 服务器错误\n */\n getToolset = async (params: {\n name: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$Devs.Toolset> => {\n const { name, headers, config } = params;\n\n try {\n const client = this.getDevsClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getToolsetWithOptions(\n name,\n headers || {},\n runtime\n );\n\n logger.debug(\n `API getToolset called, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body?.data) {\n throw new Error(\"Empty response body\");\n }\n\n return response.body.data;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n this.handleError(error, name);\n }\n };\n\n /**\n * List toolsets\n * 枚举 ToolSets\n * \n * @param input - List configuration / 枚举的配置\n * @param headers - Request headers / 请求头\n * @param config - Configuration / 配置\n * @returns ToolSet list / ToolSet 列表\n * @throws AgentRuntimeError - Throws on call failure / 调用失败时抛出\n * @throws ClientError - Client error / 客户端错误\n * @throws ServerError - Server error / 服务器错误\n */\n listToolsets = async (params: {\n input: $Devs.ListToolsetsRequest;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$Devs.ListToolsetsResponseBody> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getDevsClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listToolsetsWithOptions(\n input,\n headers || {},\n runtime\n );\n\n logger.debug(\n `API listToolsets called, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body) {\n throw new Error(\"Empty response body\");\n }\n\n return response.body;\n } catch (error) {\n this.handleError(error);\n }\n };\n\n /**\n * Handle API errors\n * 处理 API 错误\n */\n private handleError(error: unknown, _resourceName?: string): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n}\n","/**\n * AgentRun HTTP Server\n *\n * 基于 Node.js 的 HTTP 服务器实现。\n * HTTP server implementation based on Node.js.\n */\n\nimport * as http from \"http\";\n\nimport { logger } from \"../utils/log\";\n\nimport { AGUIProtocolHandler } from \"./agui-protocol\";\nimport {\n AgentEvent,\n AgentRequest,\n AgentResult,\n EventType,\n Message,\n MessageRole,\n ServerConfig,\n ToolCall,\n} from \"./model\";\n\n/**\n * Agent invoke handler type\n */\nexport type InvokeAgentHandler = (\n request: AgentRequest,\n) =>\n | Promise<string | AgentResult | AsyncIterable<string | AgentResult>>\n | string\n | AgentResult\n | AsyncIterable<string | AgentResult>;\n\n/**\n * AgentRun HTTP Server\n *\n * 提供 HTTP 服务器功能,支持 OpenAI 和 AG-UI 协议。\n */\nexport class AgentRunServer {\n private invokeAgent: InvokeAgentHandler;\n private config: ServerConfig;\n private server?: http.Server;\n private aguiHandler: AGUIProtocolHandler;\n\n constructor(options: {\n invokeAgent: InvokeAgentHandler;\n config?: ServerConfig;\n }) {\n this.invokeAgent = options.invokeAgent;\n this.config = options.config ?? {};\n this.aguiHandler = new AGUIProtocolHandler(this.config);\n }\n\n /**\n * Start the HTTP server\n */\n start(options?: { host?: string; port?: number }): void {\n const host = options?.host ?? this.config.host ?? \"0.0.0.0\";\n const port = options?.port ?? this.config.port ?? 9000;\n\n this.server = http.createServer(async (req, res) => {\n // Handle CORS\n this.handleCors(req, res);\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(200);\n res.end();\n return;\n }\n\n try {\n await this.handleRequest(req, res);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger.error(\"Request error:\", error as any);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Internal server error\" }));\n }\n });\n\n this.server.listen(port, host, () => {\n logger.info(`AgentRun Server started: http://${host}:${port}`);\n logger.info(\n ` POST /openai/v1/chat/completions - OpenAI compatible endpoint`,\n );\n logger.info(\n ` POST ${this.aguiHandler.getPrefix()} - AG-UI compatible endpoint`,\n );\n });\n }\n\n /**\n * Stop the HTTP server\n */\n stop(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!this.server) {\n resolve();\n return;\n }\n\n this.server.close((err) => {\n if (err) {\n reject(err);\n } else {\n logger.info(\"AgentRun Server stopped\");\n resolve();\n }\n });\n });\n }\n\n /**\n * Handle CORS headers\n */\n private handleCors(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): void {\n const origins = this.config.corsOrigins ?? [\"*\"];\n const origin = req.headers.origin;\n\n if (origins.includes(\"*\") || (origin && origins.includes(origin))) {\n res.setHeader(\"Access-Control-Allow-Origin\", origin || \"*\");\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET, POST, OPTIONS\");\n res.setHeader(\n \"Access-Control-Allow-Headers\",\n \"Content-Type, Authorization\",\n );\n res.setHeader(\"Access-Control-Allow-Credentials\", \"true\");\n }\n }\n\n /**\n * Handle HTTP request\n */\n private async handleRequest(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n const url = req.url || \"/\";\n const aguiPrefix = this.aguiHandler.getPrefix();\n\n // OpenAI compatible endpoint\n if (url.endsWith(\"/v1/chat/completions\") && req.method === \"POST\") {\n await this.handleChatCompletions(req, res);\n return;\n }\n\n // AG-UI endpoint\n if (\n (url === aguiPrefix || url.startsWith(aguiPrefix + \"/\")) &&\n req.method === \"POST\"\n ) {\n await this.handleAGUI(req, res);\n return;\n }\n\n // AG-UI health check\n if (url === aguiPrefix + \"/health\" && req.method === \"GET\") {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({ status: \"ok\", protocol: \"ag-ui\", version: \"1.0\" }),\n );\n return;\n }\n\n // General health check\n if (url === \"/health\" && req.method === \"GET\") {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\" }));\n return;\n }\n\n // 404\n res.writeHead(404, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Not found\" }));\n }\n\n /**\n * Handle AG-UI endpoint\n */\n private async handleAGUI(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n const encoder = this.aguiHandler.getEncoder();\n const sseHeaders = {\n \"Content-Type\": encoder.getContentType(),\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n };\n\n try {\n const body = await this.parseBody(req);\n const { agentRequest, context } = this.aguiHandler.parseRequest(body);\n agentRequest.rawRequest = req;\n\n // Invoke agent and get stream\n let result: string | AgentResult | AsyncIterable<string | AgentResult>;\n try {\n result = await Promise.resolve(this.invokeAgent(agentRequest));\n } catch (error) {\n // Handle error in invoke_agent\n res.writeHead(200, sseHeaders);\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n for await (const chunk of this.aguiHandler.errorStream(\n `Internal error: ${errorMessage}`,\n )) {\n res.write(chunk);\n }\n res.end();\n return;\n }\n\n res.writeHead(200, sseHeaders);\n\n // Format the result as AG-UI stream\n const eventStream = this.toAsyncIterable(result);\n for await (const chunk of this.aguiHandler.formatStream(\n eventStream,\n context,\n )) {\n res.write(chunk);\n }\n res.end();\n } catch (error) {\n // Handle error in parse_request\n res.writeHead(200, sseHeaders);\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n for await (const chunk of this.aguiHandler.errorStream(\n `Internal error: ${errorMessage}`,\n )) {\n res.write(chunk);\n }\n res.end();\n }\n }\n\n /**\n * Handle OpenAI chat completions endpoint\n */\n private async handleChatCompletions(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n // Parse request body\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const body = await this.parseBody(req);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const messages: Message[] = (body.messages || []).map((m: any) => ({\n role: m.role as MessageRole,\n content: m.content,\n name: m.name,\n toolCallId: m.tool_call_id,\n toolCalls: m.tool_calls?.map((tc: any) => ({\n id: tc.id,\n type: tc.type || \"function\",\n function: tc.function,\n })) as ToolCall[] | undefined,\n }));\n\n const agentRequest: AgentRequest = {\n protocol: \"openai\",\n messages,\n stream: body.stream ?? false,\n model: body.model,\n metadata: body.metadata,\n rawRequest: req,\n };\n\n // Invoke agent\n let result: string | AgentResult | AsyncIterable<string | AgentResult>;\n try {\n result = await Promise.resolve(this.invokeAgent(agentRequest));\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n error: { message: errorMessage, type: \"server_error\" },\n }),\n );\n return;\n }\n\n if (agentRequest.stream && this.isAsyncIterable(result)) {\n // Streaming response\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n\n const id = `chatcmpl-${Date.now()}`;\n const created = Math.floor(Date.now() / 1000);\n\n for await (const chunk of result) {\n let content = \"\";\n let toolCalls: ToolCall[] | undefined;\n\n if (typeof chunk === \"string\") {\n content = chunk;\n } else {\n const event = chunk as AgentEvent;\n if (event.event === EventType.TEXT) {\n content = (event.data?.delta as string) || \"\";\n } else if (event.event === EventType.TOOL_CALL) {\n toolCalls = [\n {\n id: (event.data?.id as string) || \"\",\n type: \"function\",\n function: {\n name: (event.data?.name as string) || \"\",\n arguments: (event.data?.args as string) || \"\",\n },\n },\n ];\n } else if (event.event === EventType.ERROR) {\n const errorData = {\n id,\n object: \"chat.completion.chunk\",\n created,\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n delta: {},\n finish_reason: \"error\",\n },\n ],\n error: {\n message: (event.data?.message as string) || \"Unknown error\",\n code: event.data?.code,\n },\n };\n res.write(`data: ${JSON.stringify(errorData)}\\n\\n`);\n continue;\n } else {\n content = (event.data?.content as string) || \"\";\n }\n }\n\n const data: Record<string, unknown> = {\n id,\n object: \"chat.completion.chunk\",\n created,\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n delta: content\n ? { content }\n : toolCalls\n ? {\n tool_calls: toolCalls.map((tc, idx) => ({\n index: idx,\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n }\n : {},\n finish_reason: null,\n },\n ],\n };\n\n res.write(`data: ${JSON.stringify(data)}\\n\\n`);\n }\n\n // Send done message\n res.write(\"data: [DONE]\\n\\n\");\n res.end();\n } else {\n // Non-streaming response\n let content = \"\";\n let toolCalls: ToolCall[] | undefined;\n\n if (typeof result === \"string\") {\n content = result;\n } else if (this.isAsyncIterable(result)) {\n // Collect all results\n for await (const chunk of result) {\n if (typeof chunk === \"string\") {\n content += chunk;\n } else {\n const event = chunk as AgentEvent;\n if (event.event === EventType.TEXT) {\n content += (event.data?.delta as string) || \"\";\n } else if (event.event === EventType.TOOL_CALL) {\n if (!toolCalls) toolCalls = [];\n toolCalls.push({\n id: (event.data?.id as string) || \"\",\n type: \"function\",\n function: {\n name: (event.data?.name as string) || \"\",\n arguments: (event.data?.args as string) || \"\",\n },\n });\n }\n }\n }\n } else {\n // Handle AgentEvent or simple {content: string} objects\n const event = result as AgentEvent;\n if (event.event === EventType.TEXT) {\n // Try both delta (for streaming) and content (for non-streaming)\n content = (event.data?.delta as string) || (event.data?.content as string) || \"\";\n } else if (event.event) {\n // It's a proper AgentEvent with event type\n content = (event.data?.content as string) || \"\";\n } else {\n // Backward compatibility: simple {content: string} object\n content = (result as { content?: string }).content || \"\";\n }\n }\n\n const response: Record<string, unknown> = {\n id: `chatcmpl-${Date.now()}`,\n object: \"chat.completion\",\n created: Math.floor(Date.now() / 1000),\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n message: {\n role: \"assistant\",\n content,\n tool_calls: toolCalls?.map((tc, idx) => ({\n index: idx,\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n },\n finish_reason: \"stop\",\n },\n ],\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n total_tokens: 0,\n },\n };\n\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(response));\n }\n }\n\n /**\n * Parse request body\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private parseBody(req: http.IncomingMessage): Promise<any> {\n return new Promise((resolve, reject) => {\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", () => {\n try {\n resolve(JSON.parse(body || \"{}\"));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n reject(new Error(\"Invalid JSON\"));\n }\n });\n req.on(\"error\", reject);\n });\n }\n\n /**\n * Check if value is async iterable\n */\n private isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return (\n value !== null &&\n typeof value === \"object\" &&\n Symbol.asyncIterator in value\n );\n }\n\n /**\n * Convert result to async iterable\n */\n private async *toAsyncIterable(\n result: string | AgentResult | AsyncIterable<string | AgentResult>,\n ): AsyncIterable<AgentEvent | string> {\n if (typeof result === \"string\") {\n yield result;\n } else if (this.isAsyncIterable(result)) {\n for await (const chunk of result) {\n yield chunk as AgentEvent | string;\n }\n } else {\n yield result as AgentEvent;\n }\n }\n}\n","/**\n * Server Data Models\n *\n * 此模块定义 Server 相关的所有数据模型。\n * This module defines all data models related to Server.\n */\n\n/**\n * Message role enum\n */\nexport enum MessageRole {\n SYSTEM = \"system\",\n USER = \"user\",\n ASSISTANT = \"assistant\",\n TOOL = \"tool\",\n}\n\n/**\n * Event type enum for AgentEvent (Protocol agnostic)\n *\n * 定义核心事件类型,框架会自动转换为对应协议格式(OpenAI、AG-UI 等)。\n */\nexport enum EventType {\n // 核心事件\n TEXT = \"TEXT\", // 文本内容块\n TOOL_CALL = \"TOOL_CALL\", // 完整工具调用(含 id, name, args)\n TOOL_CALL_CHUNK = \"TOOL_CALL_CHUNK\", // 工具调用参数片段(流式场景)\n TOOL_RESULT = \"TOOL_RESULT\", // 工具执行结果\n TOOL_RESULT_CHUNK = \"TOOL_RESULT_CHUNK\", // 工具执行结果片段(流式输出场景)\n ERROR = \"ERROR\", // 错误事件\n STATE = \"STATE\", // 状态更新(快照或增量)\n\n // 人机交互事件\n HITL = \"HITL\", // Human-in-the-Loop,请求人类介入\n\n // 扩展事件\n CUSTOM = \"CUSTOM\", // 自定义事件\n RAW = \"RAW\", // 原始协议数据(直接透传到响应流)\n}\n\n/**\n * Tool call definition\n */\nexport interface ToolCall {\n id: string;\n type?: string;\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * Tool definition\n */\nexport interface Tool {\n type: string;\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n };\n}\n\n/**\n * Message in a conversation\n */\nexport interface Message {\n id?: string;\n role: MessageRole;\n content?: string | Array<Record<string, unknown>>;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * Agent request\n */\nexport interface AgentRequest {\n /** Protocol name */\n protocol?: string;\n /** Messages in the conversation */\n messages: Message[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Model to use */\n model?: string;\n /** Available tools */\n tools?: Tool[];\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Raw HTTP request (for accessing headers, etc.) */\n rawRequest?: unknown;\n}\n\n/**\n * Merge options for addition field\n */\nexport interface MergeOptions {\n noNewField?: boolean;\n concatList?: boolean;\n ignoreEmptyList?: boolean;\n}\n\n/**\n * Agent event (for streaming)\n *\n * 标准化的事件结构,协议无关设计。\n * 框架层会自动将 AgentEvent 转换为对应协议的格式(OpenAI、AG-UI 等)。\n */\nexport interface AgentEvent {\n /** Event type */\n event: EventType;\n /** Event data */\n data?: Record<string, unknown>;\n /** Additional fields for protocol extension */\n addition?: Record<string, unknown>;\n /** Merge options for addition */\n additionMergeOptions?: MergeOptions;\n}\n\n/**\n * Agent result (alias for AgentEvent)\n */\nexport type AgentResult = AgentEvent;\n\n/**\n * Agent event item (can be string or AgentEvent)\n */\nexport type AgentEventItem = string | AgentEvent;\n\n/**\n * Protocol configuration base\n */\nexport interface ProtocolConfig {\n prefix?: string;\n enable?: boolean;\n}\n\n/**\n * OpenAI protocol configuration\n */\nexport interface OpenAIProtocolConfig extends ProtocolConfig {\n modelName?: string;\n}\n\n/**\n * AG-UI protocol configuration\n */\nexport interface AGUIProtocolConfig extends ProtocolConfig {\n // No additional config for now\n}\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** OpenAI protocol config */\n openai?: OpenAIProtocolConfig;\n /** AG-UI protocol config */\n agui?: AGUIProtocolConfig;\n /** CORS origins */\n corsOrigins?: string[];\n /** Port to listen on */\n port?: number;\n /** Host to listen on */\n host?: string;\n}\n","/**\n * AG-UI (Agent-User Interaction Protocol) 协议实现\n *\n * AG-UI 是一种开源、轻量级、基于事件的协议,用于标准化 AI Agent 与前端应用之间的交互。\n * 参考: https://docs.ag-ui.com/\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport {\n AgentEvent,\n AgentRequest,\n EventType,\n Message,\n MessageRole,\n MergeOptions,\n ServerConfig,\n Tool,\n ToolCall,\n} from \"./model\";\n\n// ============================================================================\n// AG-UI 事件类型常量\n// ============================================================================\n\nexport const AGUI_EVENT_TYPES = {\n RUN_STARTED: \"RUN_STARTED\",\n RUN_FINISHED: \"RUN_FINISHED\",\n RUN_ERROR: \"RUN_ERROR\",\n TEXT_MESSAGE_START: \"TEXT_MESSAGE_START\",\n TEXT_MESSAGE_CONTENT: \"TEXT_MESSAGE_CONTENT\",\n TEXT_MESSAGE_END: \"TEXT_MESSAGE_END\",\n TOOL_CALL_START: \"TOOL_CALL_START\",\n TOOL_CALL_ARGS: \"TOOL_CALL_ARGS\",\n TOOL_CALL_END: \"TOOL_CALL_END\",\n TOOL_CALL_RESULT: \"TOOL_CALL_RESULT\",\n STATE_SNAPSHOT: \"STATE_SNAPSHOT\",\n STATE_DELTA: \"STATE_DELTA\",\n MESSAGES_SNAPSHOT: \"MESSAGES_SNAPSHOT\",\n STEP_STARTED: \"STEP_STARTED\",\n STEP_FINISHED: \"STEP_FINISHED\",\n CUSTOM: \"CUSTOM\",\n RAW: \"RAW\",\n} as const;\n\n// ============================================================================\n// SSE 编码器\n// ============================================================================\n\n/**\n * SSE Event Encoder for AG-UI protocol\n */\nexport class EventEncoder {\n getContentType(): string {\n return \"text/event-stream\";\n }\n\n encode(event: Record<string, unknown>): string {\n return `data: ${JSON.stringify(event)}\\n\\n`;\n }\n}\n\n// ============================================================================\n// 流状态管理\n// ============================================================================\n\ninterface TextState {\n started: boolean;\n ended: boolean;\n messageId: string;\n}\n\ninterface ToolCallState {\n name: string;\n started: boolean;\n ended: boolean;\n hasResult: boolean;\n isHitl: boolean;\n}\n\n/**\n * Stream state machine for tracking message and tool call boundaries\n */\nexport class StreamStateMachine {\n text: TextState = {\n started: false,\n ended: false,\n messageId: uuidv4(),\n };\n toolCallStates: Map<string, ToolCallState> = new Map();\n toolResultChunks: Map<string, string[]> = new Map();\n runErrored: boolean = false;\n\n /**\n * End all open tool calls\n */\n *endAllTools(encoder: EventEncoder, exclude?: string): Generator<string> {\n for (const [toolId, state] of this.toolCallStates) {\n if (exclude && toolId === exclude) {\n continue;\n }\n if (state.started && !state.ended) {\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: toolId,\n });\n state.ended = true;\n }\n }\n }\n\n /**\n * Ensure text message has started\n */\n *ensureTextStarted(encoder: EventEncoder): Generator<string> {\n if (!this.text.started || this.text.ended) {\n if (this.text.ended) {\n this.text = {\n started: false,\n ended: false,\n messageId: uuidv4(),\n };\n }\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_START,\n messageId: this.text.messageId,\n role: \"assistant\",\n });\n this.text.started = true;\n this.text.ended = false;\n }\n }\n\n /**\n * End text message if open\n */\n *endTextIfOpen(encoder: EventEncoder): Generator<string> {\n if (this.text.started && !this.text.ended) {\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_END,\n messageId: this.text.messageId,\n });\n this.text.ended = true;\n }\n }\n\n /**\n * Cache tool result chunk\n */\n cacheToolResultChunk(toolId: string, delta: string): void {\n if (!toolId || delta === null || delta === undefined) {\n return;\n }\n if (delta) {\n const chunks = this.toolResultChunks.get(toolId) || [];\n chunks.push(delta);\n this.toolResultChunks.set(toolId, chunks);\n }\n }\n\n /**\n * Pop and concatenate cached tool result chunks\n */\n popToolResultChunks(toolId: string): string {\n const chunks = this.toolResultChunks.get(toolId) || [];\n this.toolResultChunks.delete(toolId);\n return chunks.join(\"\");\n }\n}\n\n// ============================================================================\n// AG-UI 协议处理器\n// ============================================================================\n\nconst DEFAULT_PREFIX = \"/ag-ui/agent\";\n\n/**\n * AG-UI Protocol Handler\n *\n * 实现 AG-UI (Agent-User Interaction Protocol) 兼容接口。\n * 参考: https://docs.ag-ui.com/\n */\nexport class AGUIProtocolHandler {\n name = \"ag-ui\";\n private config: ServerConfig[\"agui\"];\n private encoder = new EventEncoder();\n\n constructor(config?: ServerConfig) {\n this.config = config?.agui;\n }\n\n /**\n * Get the route prefix\n */\n getPrefix(): string {\n return this.config?.prefix ?? DEFAULT_PREFIX;\n }\n\n /**\n * Get the encoder\n */\n getEncoder(): EventEncoder {\n return this.encoder;\n }\n\n /**\n * Parse AG-UI request\n */\n parseRequest(requestData: Record<string, unknown>): {\n agentRequest: AgentRequest;\n context: Record<string, string>;\n } {\n // Create context\n const context = {\n threadId: (requestData.threadId as string) || uuidv4(),\n runId: (requestData.runId as string) || uuidv4(),\n };\n\n // Parse messages\n const messages = this.parseMessages(\n (requestData.messages as Array<Record<string, unknown>>) || [],\n );\n\n // Parse tools\n const tools = this.parseTools(\n requestData.tools as Array<Record<string, unknown>> | undefined,\n );\n\n // Build AgentRequest\n const agentRequest: AgentRequest = {\n protocol: \"agui\",\n messages,\n stream: true, // AG-UI always streams\n tools: tools || undefined,\n model: requestData.model as string | undefined,\n metadata: requestData.metadata as Record<string, unknown> | undefined,\n };\n\n return { agentRequest, context };\n }\n\n /**\n * Parse messages list\n */\n private parseMessages(\n rawMessages: Array<Record<string, unknown>>,\n ): Message[] {\n const messages: Message[] = [];\n\n for (const msgData of rawMessages) {\n if (typeof msgData !== \"object\" || msgData === null) {\n continue;\n }\n\n const roleStr = (msgData.role as string) || \"user\";\n let role: MessageRole;\n try {\n role = roleStr as MessageRole;\n if (!Object.values(MessageRole).includes(role)) {\n role = MessageRole.USER;\n }\n } catch {\n role = MessageRole.USER;\n }\n\n // Parse toolCalls\n let toolCalls: ToolCall[] | undefined;\n const rawToolCalls = msgData.toolCalls as\n | Array<Record<string, unknown>>\n | undefined;\n if (rawToolCalls && Array.isArray(rawToolCalls)) {\n toolCalls = rawToolCalls.map((tc) => ({\n id: (tc.id as string) || \"\",\n type: (tc.type as string) || \"function\",\n function: (tc.function as { name: string; arguments: string }) || {},\n }));\n }\n\n messages.push({\n id: msgData.id as string | undefined,\n role,\n content: msgData.content as string | undefined,\n name: msgData.name as string | undefined,\n toolCalls,\n toolCallId: msgData.toolCallId as string | undefined,\n });\n }\n\n return messages;\n }\n\n /**\n * Parse tools list\n */\n private parseTools(rawTools?: Array<Record<string, unknown>>): Tool[] | null {\n if (!rawTools || !Array.isArray(rawTools)) {\n return null;\n }\n\n const tools: Tool[] = [];\n for (const toolData of rawTools) {\n if (typeof toolData !== \"object\" || toolData === null) {\n continue;\n }\n\n tools.push({\n type: (toolData.type as string) || \"function\",\n function: (toolData.function as Tool[\"function\"]) || { name: \"\" },\n });\n }\n\n return tools.length > 0 ? tools : null;\n }\n\n /**\n * Format event stream as AG-UI SSE format\n */\n async *formatStream(\n eventStream: AsyncIterable<AgentEvent | string>,\n context: Record<string, string>,\n ): AsyncGenerator<string> {\n const state = new StreamStateMachine();\n\n // Send RUN_STARTED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_STARTED,\n threadId: context.threadId,\n runId: context.runId,\n });\n\n for await (const rawEvent of eventStream) {\n // Skip processing if RUN_ERROR occurred\n if (state.runErrored) {\n continue;\n }\n\n // Convert string to TEXT event\n const event: AgentEvent =\n typeof rawEvent === \"string\"\n ? { event: EventType.TEXT, data: { delta: rawEvent } }\n : rawEvent;\n\n // Check if it's an error event\n if (event.event === EventType.ERROR) {\n state.runErrored = true;\n }\n\n // Process event with boundary injection\n for (const sseData of this.processEventWithBoundaries(\n event,\n context,\n state,\n )) {\n if (sseData) {\n yield sseData;\n }\n }\n }\n\n // Don't send cleanup events after RUN_ERROR\n if (state.runErrored) {\n return;\n }\n\n // End all open tool calls\n for (const sseData of state.endAllTools(this.encoder)) {\n yield sseData;\n }\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n // Send RUN_FINISHED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_FINISHED,\n threadId: context.threadId,\n runId: context.runId,\n });\n }\n\n /**\n * Process event and inject boundary events\n */\n private *processEventWithBoundaries(\n event: AgentEvent,\n context: Record<string, string>,\n state: StreamStateMachine,\n ): Generator<string> {\n // RAW event: pass through directly\n if (event.event === EventType.RAW) {\n let rawData = (event.data?.raw as string) || \"\";\n if (rawData) {\n if (!rawData.endsWith(\"\\n\\n\")) {\n rawData = rawData.replace(/\\n+$/, \"\") + \"\\n\\n\";\n }\n yield rawData;\n }\n return;\n }\n\n // TEXT event: inject TEXT_MESSAGE_START before first TEXT\n if (event.event === EventType.TEXT) {\n // End all open tool calls first\n for (const sseData of state.endAllTools(this.encoder)) {\n yield sseData;\n }\n\n // Ensure text started\n for (const sseData of state.ensureTextStarted(this.encoder)) {\n yield sseData;\n }\n\n const aguiEvent: Record<string, unknown> = {\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_CONTENT,\n messageId: state.text.messageId,\n delta: (event.data?.delta as string) || \"\",\n };\n\n if (event.addition) {\n const merged = this.applyAddition(\n aguiEvent,\n event.addition,\n event.additionMergeOptions,\n );\n yield `data: ${JSON.stringify(merged)}\\n\\n`;\n } else {\n yield this.encoder.encode(aguiEvent);\n }\n return;\n }\n\n // TOOL_CALL_CHUNK event\n if (event.event === EventType.TOOL_CALL_CHUNK) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let needStart = false;\n const currentState = state.toolCallStates.get(toolId);\n if (toolId) {\n if (!currentState || currentState.ended) {\n needStart = true;\n }\n }\n\n if (needStart) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n state.toolCallStates.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta:\n (event.data?.args_delta as string) ||\n (event.data?.argsDelta as string) ||\n \"\",\n });\n return;\n }\n\n // TOOL_CALL event: complete tool call\n if (event.event === EventType.TOOL_CALL) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n const toolArgs = (event.data?.args as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let needStart = false;\n const currentState = state.toolCallStates.get(toolId);\n if (toolId) {\n if (!currentState || currentState.ended) {\n needStart = true;\n }\n }\n\n if (needStart) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n state.toolCallStates.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n // Send tool args if exists\n if (toolArgs) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta: toolArgs,\n });\n }\n return;\n }\n\n // TOOL_RESULT_CHUNK event: cache for later\n if (event.event === EventType.TOOL_RESULT_CHUNK) {\n const toolId = (event.data?.id as string) || \"\";\n const delta = (event.data?.delta as string) || \"\";\n state.cacheToolResultChunk(toolId, delta);\n return;\n }\n\n // HITL event: Human-in-the-Loop\n if (event.event === EventType.HITL) {\n const hitlId = (event.data?.id as string) || \"\";\n const toolCallId =\n (event.data?.tool_call_id as string) ||\n (event.data?.toolCallId as string) ||\n \"\";\n const hitlType = (event.data?.type as string) || \"confirmation\";\n const prompt = (event.data?.prompt as string) || \"\";\n const options = event.data?.options;\n const defaultValue = event.data?.default;\n const timeout = event.data?.timeout;\n const schema = event.data?.schema;\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n // If tool_call_id exists and tool is tracked\n if (toolCallId && state.toolCallStates.has(toolCallId)) {\n const toolState = state.toolCallStates.get(toolCallId)!;\n if (toolState.started && !toolState.ended) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId,\n });\n toolState.ended = true;\n }\n toolState.isHitl = true;\n toolState.hasResult = false;\n return;\n }\n\n // Create independent HITL tool call\n const argsDict: Record<string, unknown> = {\n type: hitlType,\n prompt,\n };\n if (options) argsDict.options = options;\n if (defaultValue !== undefined) argsDict.default = defaultValue;\n if (timeout !== undefined) argsDict.timeout = timeout;\n if (schema) argsDict.schema = schema;\n\n const argsJson = JSON.stringify(argsDict);\n const actualId = toolCallId || hitlId;\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: actualId,\n toolCallName: `hitl_${hitlType}`,\n });\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: actualId,\n delta: argsJson,\n });\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: actualId,\n });\n\n state.toolCallStates.set(actualId, {\n name: `hitl_${hitlType}`,\n started: true,\n ended: true,\n hasResult: false,\n isHitl: true,\n });\n return;\n }\n\n // TOOL_RESULT event\n if (event.event === EventType.TOOL_RESULT) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let toolState = state.toolCallStates.get(toolId);\n if (toolId && !toolState) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n toolState = {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n };\n state.toolCallStates.set(toolId, toolState);\n }\n\n if (toolState && toolState.started && !toolState.ended) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: toolId,\n });\n toolState.ended = true;\n }\n\n let finalResult =\n ((event.data?.content as string) || (event.data?.result as string)) ??\n \"\";\n if (toolId) {\n const cachedChunks = state.popToolResultChunks(toolId);\n if (cachedChunks) {\n finalResult = cachedChunks + finalResult;\n }\n }\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_RESULT,\n messageId:\n (event.data?.message_id as string) ||\n (event.data?.messageId as string) ||\n `tool-result-${toolId}`,\n toolCallId: toolId,\n content: finalResult,\n role: \"tool\",\n });\n return;\n }\n\n // ERROR event\n if (event.event === EventType.ERROR) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message: (event.data?.message as string) || \"\",\n code: event.data?.code,\n });\n return;\n }\n\n // STATE event\n if (event.event === EventType.STATE) {\n if (\"snapshot\" in (event.data || {})) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data?.snapshot || {},\n });\n } else if (\"delta\" in (event.data || {})) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_DELTA,\n delta: event.data?.delta || [],\n });\n } else {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data || {},\n });\n }\n return;\n }\n\n // CUSTOM event\n if (event.event === EventType.CUSTOM) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: (event.data?.name as string) || \"custom\",\n value: event.data?.value,\n });\n return;\n }\n\n // Unknown event type - convert to CUSTOM\n const eventName = event.event || \"unknown\";\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: eventName,\n value: event.data,\n });\n }\n\n /**\n * Apply addition fields\n */\n private applyAddition(\n eventData: Record<string, unknown>,\n addition: Record<string, unknown>,\n mergeOptions?: MergeOptions,\n ): Record<string, unknown> {\n if (!addition) {\n return eventData;\n }\n\n const result = { ...eventData };\n for (const [key, value] of Object.entries(addition)) {\n if (mergeOptions?.noNewField && !(key in eventData)) {\n continue;\n }\n result[key] = value;\n }\n return result;\n }\n\n /**\n * Generate error stream\n */\n async *errorStream(message: string): AsyncGenerator<string> {\n const threadId = uuidv4();\n const runId = uuidv4();\n\n // Send RUN_STARTED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_STARTED,\n threadId,\n runId,\n });\n\n // Send RUN_ERROR\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message,\n code: \"REQUEST_ERROR\",\n });\n }\n}\n","/**\n * Adapter Interface Definition\n *\n * 定义统一的适配器接口,所有框架适配器都实现这些接口。\n * Defines unified adapter interfaces that all framework adapters implement.\n */\n\n/**\n * 标准消息格式 (OpenAI 兼容)\n * Canonical message format (OpenAI compatible)\n */\nexport interface CanonicalMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\";\n content: string | null;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * 工具调用\n * Tool call\n */\nexport interface ToolCall {\n id: string;\n type: \"function\";\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * 标准工具定义\n * Canonical tool definition\n */\nexport interface CanonicalTool {\n name: string;\n description: string;\n parameters?: Record<string, unknown>;\n func?: (...args: unknown[]) => unknown | Promise<unknown>;\n}\n\n/**\n * 通用模型配置\n * Common model configuration\n */\nexport interface CommonModelConfig {\n /** 模型端点 URL */\n endpoint?: string;\n /** API Key */\n apiKey?: string;\n /** 模型名称 */\n modelName?: string;\n /** 温度参数 */\n temperature?: number;\n /** 最大 tokens */\n maxTokens?: number;\n /** 超时时间 (毫秒) */\n timeout?: number;\n}\n\n/**\n * 消息适配器接口\n * Message adapter interface\n *\n * 用于在不同框架消息格式之间进行转换。\n * Used to convert between different framework message formats.\n */\nexport interface MessageAdapter<TFrameworkMessage = unknown> {\n /**\n * 将框架消息转换为标准格式\n * Convert framework messages to canonical format\n */\n toCanonical(messages: TFrameworkMessage[]): CanonicalMessage[];\n\n /**\n * 将标准消息转换为框架格式\n * Convert canonical messages to framework format\n */\n fromCanonical(messages: CanonicalMessage[]): TFrameworkMessage[];\n}\n\n/**\n * 工具适配器接口\n * Tool adapter interface\n *\n * 用于将标准工具定义转换为框架特定格式。\n * Used to convert canonical tool definitions to framework-specific format.\n */\nexport interface ToolAdapter<TFrameworkTool = unknown> {\n /**\n * 将标准工具转换为框架格式\n * Convert canonical tools to framework format\n */\n fromCanonical(tools: CanonicalTool[]): TFrameworkTool[];\n\n /**\n * 将框架工具转换为标准格式 (可选)\n * Convert framework tools to canonical format (optional)\n */\n toCanonical?(tools: TFrameworkTool[]): CanonicalTool[];\n}\n\n/**\n * 模型适配器接口\n * Model adapter interface\n *\n * 用于包装框架模型,使其能够与 AgentRun 协同工作。\n * Used to wrap framework models to work with AgentRun.\n */\nexport interface ModelAdapter<TFrameworkModel = unknown> {\n /**\n * 使用 AgentRun 模型配置创建框架模型\n * Create framework model with AgentRun model configuration\n */\n createModel(config: CommonModelConfig): TFrameworkModel;\n}\n\n/**\n * 框架集成适配器\n * Framework integration adapter\n *\n * 组合消息、工具和模型适配器的完整框架集成。\n * Complete framework integration combining message, tool, and model adapters.\n */\nexport interface FrameworkAdapter<\n TMessage = unknown,\n TTool = unknown,\n TModel = unknown,\n> {\n name: string;\n message: MessageAdapter<TMessage>;\n tool: ToolAdapter<TTool>;\n model: ModelAdapter<TModel>;\n}\n\n/**\n * 将 JSON Schema 类型转换为 TypeScript 类型\n * Convert JSON Schema type to TypeScript type\n */\nexport function schemaToType(schema: Record<string, unknown>): string {\n if (!schema || typeof schema !== \"object\") {\n return \"unknown\";\n }\n\n const schemaType = schema[\"type\"] as string;\n\n switch (schemaType) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"array\": {\n const items = schema[\"items\"] as Record<string, unknown> | undefined;\n if (items) {\n return `${schemaToType(items)}[]`;\n }\n return \"unknown[]\";\n }\n case \"object\":\n return \"Record<string, unknown>\";\n case \"null\":\n return \"null\";\n default:\n return \"unknown\";\n }\n}\n","/**\n * Mastra Adapter\n *\n * Mastra 框架的集成适配器。\n * Integration adapter for Mastra framework.\n */\n\nimport {\n CanonicalMessage,\n CanonicalTool,\n CommonModelConfig,\n FrameworkAdapter,\n MessageAdapter,\n ModelAdapter,\n ToolAdapter,\n} from \"../adapter\";\n\nimport {\n MastraAgentConfig,\n MastraMessage,\n MastraModelConfig,\n MastraTool,\n MastraToolCall,\n} from \"./types\";\n\n/**\n * Mastra 消息适配器\n * Mastra message adapter\n */\nexport class MastraMessageAdapter implements MessageAdapter<MastraMessage> {\n /**\n * 将 Mastra 消息转换为标准格式\n */\n toCanonical(messages: MastraMessage[]): CanonicalMessage[] {\n return messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n name: msg.name,\n toolCallId: msg.tool_call_id,\n toolCalls: msg.tool_calls?.map((tc) => ({\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n }));\n }\n\n /**\n * 将标准消息转换为 Mastra 格式\n */\n fromCanonical(messages: CanonicalMessage[]): MastraMessage[] {\n return messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n name: msg.name,\n tool_call_id: msg.toolCallId,\n tool_calls: msg.toolCalls?.map(\n (tc): MastraToolCall => ({\n id: tc.id,\n type: tc.type,\n function: tc.function,\n }),\n ),\n }));\n }\n}\n\n/**\n * Mastra 工具适配器\n * Mastra tool adapter\n */\nexport class MastraToolAdapter implements ToolAdapter<MastraTool> {\n /**\n * 将标准工具转换为 Mastra 格式\n */\n fromCanonical(tools: CanonicalTool[]): MastraTool[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.parameters,\n execute: tool.func as MastraTool[\"execute\"],\n }));\n }\n\n /**\n * 将 Mastra 工具转换为标准格式\n */\n toCanonical(tools: MastraTool[]): CanonicalTool[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n func: tool.execute as CanonicalTool[\"func\"],\n }));\n }\n}\n\n/**\n * Mastra 模型适配器\n * Mastra model adapter\n */\nexport class MastraModelAdapter implements ModelAdapter<MastraModelConfig> {\n /**\n * 使用 AgentRun 配置创建 Mastra 模型配置\n */\n createModel(config: CommonModelConfig): MastraModelConfig {\n // 从端点 URL 解析提供商\n const provider = this.detectProvider(config.endpoint);\n\n return {\n provider,\n modelId: config.modelName || \"gpt-4\",\n apiKey: config.apiKey,\n baseUrl: config.endpoint,\n temperature: config.temperature,\n maxTokens: config.maxTokens,\n };\n }\n\n /**\n * 检测模型提供商\n */\n private detectProvider(endpoint?: string): string {\n if (!endpoint) {\n return \"openai\";\n }\n\n const lowerEndpoint = endpoint.toLowerCase();\n\n if (lowerEndpoint.includes(\"openai\")) {\n return \"openai\";\n }\n if (lowerEndpoint.includes(\"anthropic\")) {\n return \"anthropic\";\n }\n if (lowerEndpoint.includes(\"dashscope\")) {\n return \"dashscope\";\n }\n if (lowerEndpoint.includes(\"google\") || lowerEndpoint.includes(\"gemini\")) {\n return \"google\";\n }\n\n // 默认使用 openai-compatible\n return \"openai-compatible\";\n }\n}\n\n/**\n * Mastra 完整框架适配器\n * Mastra complete framework adapter\n */\nexport class MastraAdapter\n implements FrameworkAdapter<MastraMessage, MastraTool, MastraModelConfig>\n{\n readonly name = \"mastra\";\n readonly message = new MastraMessageAdapter();\n readonly tool = new MastraToolAdapter();\n readonly model = new MastraModelAdapter();\n}\n\n/**\n * 创建 Mastra 适配器实例\n * Create Mastra adapter instance\n */\nexport function createMastraAdapter(): MastraAdapter {\n return new MastraAdapter();\n}\n\n/**\n * 将 AgentRun 工具包装为 Mastra 工具\n * Wrap AgentRun tools as Mastra tools\n */\nexport function wrapTools(tools: CanonicalTool[]): MastraTool[] {\n const adapter = new MastraToolAdapter();\n return adapter.fromCanonical(tools);\n}\n\n/**\n * 将 AgentRun 模型配置转换为 Mastra 模型配置\n * Convert AgentRun model config to Mastra model config\n */\nexport function wrapModel(config: CommonModelConfig): MastraModelConfig {\n const adapter = new MastraModelAdapter();\n return adapter.createModel(config);\n}\n\n/**\n * Agent 包装器配置参数\n * Agent wrapper configuration parameters\n */\nexport interface WrapAgentParams {\n /** Agent 名称 */\n name: string;\n /** Agent 指令/系统提示词 */\n instructions?: string;\n /** 模型配置 */\n modelConfig: CommonModelConfig;\n /** 工具列表 */\n tools?: CanonicalTool[];\n}\n\n/**\n * 将 AgentRun 组件包装为完整的 Mastra Agent 配置\n * Wrap AgentRun components as complete Mastra agent configuration\n *\n * @param params - Agent 包装器配置参数\n * @returns Mastra Agent 配置对象\n *\n * @example\n * ```typescript\n * const agentConfig = wrapAgent({\n * name: \"MyAssistant\",\n * instructions: \"You are a helpful assistant\",\n * modelConfig: {\n * endpoint: \"https://api.openai.com/v1\",\n * apiKey: \"sk-...\",\n * modelName: \"gpt-4\"\n * },\n * tools: [calculatorTool, weatherTool]\n * });\n * ```\n */\nexport function wrapAgent(params: WrapAgentParams): MastraAgentConfig {\n const { name, instructions, modelConfig, tools } = params;\n\n // 转换模型配置\n const modelAdapter = new MastraModelAdapter();\n const mastraModel = modelAdapter.createModel(modelConfig);\n\n // 转换工具(如果有)\n let mastraTools: MastraTool[] | undefined;\n if (tools && tools.length > 0) {\n const toolAdapter = new MastraToolAdapter();\n mastraTools = toolAdapter.fromCanonical(tools);\n }\n\n return {\n name,\n instructions,\n model: mastraModel,\n tools: mastraTools,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/config.ts","../src/utils/exception.ts","../src/utils/log.ts","../src/utils/model.ts","../src/utils/control-api.ts","../src/utils/data-api.ts","../src/utils/resource.ts","../src/utils/index.ts","../src/credential/api/control.ts","../src/credential/credential.ts","../src/credential/model.ts","../src/credential/client.ts","../src/sandbox/api/sandbox-data.ts","../src/sandbox/api/browser-data.ts","../src/sandbox/model.ts","../src/sandbox/api/code-interpreter-data.ts","../src/sandbox/code-interpreter-sandbox.ts","../src/sandbox/api/aio-data.ts","../src/sandbox/aio-sandbox.ts","../src/sandbox/sandbox.ts","../src/sandbox/browser-sandbox.ts","../src/model/api/control.ts","../src/model/model.ts","../src/model/model-proxy.ts","../src/model/model-service.ts","../src/model/client.ts","../src/toolset/model.ts","../src/toolset/openapi.ts","../src/toolset/api/mcp.ts","../src/index.ts","../src/agent-runtime/client.ts","../src/agent-runtime/api/control.ts","../src/agent-runtime/api/data.ts","../src/agent-runtime/endpoint.ts","../src/agent-runtime/runtime.ts","../src/agent-runtime/model.ts","../src/credential/index.ts","../src/sandbox/client.ts","../src/sandbox/template.ts","../src/sandbox/index.ts","../src/model/index.ts","../src/toolset/toolset.ts","../src/toolset/client.ts","../src/toolset/index.ts","../src/toolset/api/control.ts","../src/server/server.ts","../src/server/model.ts","../src/server/agui-protocol.ts","../src/integration/adapter.ts","../src/integration/mastra/adapter.ts"],"names":["config","fp","$AgentRun","path","URL","ControlAPI","$Util2","$AgentRun5","init_model","CredentialClient","agentrun","$AgentRun6","$Util3","fs2","TemplateType","SandboxState","TemplateNetworkMode","TemplateOSSPermission","CodeLanguage","fs3","CodeInterpreterSandbox","BrowserSandbox","AioSandbox","$Util4","$AgentRun7","init_control","$Util6","$AgentRun9","ModelClient","Credential","_","client_exports","init_client","$AgentRun10","ToolSetSchemaType","ToolInfo","mcpClient","$AgentRun2","$AgentRun3","$Util5","$AgentRun8","$OpenApi2","$Util7","ApiSet","MCPToolSet","OpenAPI","$DevsClient","$Devs2","$Devs","MessageRole","EventType","uuidv4","http2"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Configuration Management Module\n *\n * 此模块提供 AgentRun SDK 的全局配置管理功能。\n * This module provides global configuration management for AgentRun SDK.\n */\n\nimport * as dotenv from \"dotenv\";\n\n// Load environment variables\ndotenv.config();\n\n/**\n * Get environment variable with fallback keys\n */\nfunction getEnvWithDefault(defaultValue: string, ...keys: string[]): string {\n for (const key of keys) {\n const value = process.env[key];\n if (value !== undefined && value !== \"\") {\n return value;\n }\n }\n return defaultValue;\n}\n\n/**\n * Configuration options for AgentRun SDK\n */\nexport interface ConfigOptions {\n /**\n * Access Key ID for authentication.\n * Read from AGENTRUN_ACCESS_KEY_ID or ALIBABA_CLOUD_ACCESS_KEY_ID if not provided.\n */\n accessKeyId?: string;\n\n /**\n * Access Key Secret for authentication.\n * Read from AGENTRUN_ACCESS_KEY_SECRET or ALIBABA_CLOUD_ACCESS_KEY_SECRET if not provided.\n */\n accessKeySecret?: string;\n\n /**\n * Security token for STS authentication.\n * Read from AGENTRUN_SECURITY_TOKEN or ALIBABA_CLOUD_SECURITY_TOKEN if not provided.\n */\n securityToken?: string;\n\n /**\n * Account ID.\n * Read from AGENTRUN_ACCOUNT_ID or FC_ACCOUNT_ID if not provided.\n */\n accountId?: string;\n\n /**\n * Custom token for data API calls.\n */\n token?: string;\n\n /**\n * Region ID. Defaults to cn-hangzhou.\n * Read from AGENTRUN_REGION or FC_REGION if not provided.\n */\n regionId?: string;\n\n /**\n * Request timeout in milliseconds. Defaults to 600000 (10 minutes).\n */\n timeout?: number;\n\n /**\n * Read timeout in milliseconds. Defaults to 100000000.\n */\n readTimeout?: number;\n\n /**\n * Custom control API endpoint.\n * Read from AGENTRUN_CONTROL_ENDPOINT if not provided.\n */\n controlEndpoint?: string;\n\n /**\n * Custom data API endpoint.\n * Read from AGENTRUN_DATA_ENDPOINT if not provided.\n */\n dataEndpoint?: string;\n\n /**\n * Custom DevS API endpoint.\n * Read from DEVS_ENDPOINT if not provided.\n */\n devsEndpoint?: string;\n\n /**\n * Custom request headers.\n */\n headers?: Record<string, string>;\n}\n\n/**\n * AgentRun SDK Global Configuration Class\n *\n * 用于管理账号凭证和客户端配置。\n * Used for managing account credentials and client configuration.\n *\n * @example\n * ```typescript\n * // Create config from parameters\n * const config = new Config({\n * accountId: 'your-account-id',\n * accessKeyId: 'your-key-id',\n * accessKeySecret: 'your-secret',\n * });\n *\n * // Or read from environment variables\n * const config = new Config();\n * ```\n */\nexport class Config {\n private _accessKeyId: string;\n private _accessKeySecret: string;\n private _securityToken: string;\n private _accountId: string;\n private _token?: string;\n private _regionId: string;\n private _timeout: number;\n private _readTimeout: number;\n private _controlEndpoint: string;\n private _dataEndpoint: string;\n private _devsEndpoint: string;\n private _headers: Record<string, string>;\n\n constructor(options: ConfigOptions = {}) {\n this._accessKeyId =\n options.accessKeyId ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_ACCESS_KEY_ID\",\n \"ALIBABA_CLOUD_ACCESS_KEY_ID\",\n );\n\n this._accessKeySecret =\n options.accessKeySecret ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_ACCESS_KEY_SECRET\",\n \"ALIBABA_CLOUD_ACCESS_KEY_SECRET\",\n );\n\n this._securityToken =\n options.securityToken ??\n getEnvWithDefault(\n \"\",\n \"AGENTRUN_SECURITY_TOKEN\",\n \"ALIBABA_CLOUD_SECURITY_TOKEN\",\n );\n\n this._accountId =\n options.accountId ??\n getEnvWithDefault(\"\", \"AGENTRUN_ACCOUNT_ID\", \"FC_ACCOUNT_ID\");\n\n this._token = options.token;\n\n this._regionId =\n options.regionId ??\n getEnvWithDefault(\"cn-hangzhou\", \"AGENTRUN_REGION\", \"FC_REGION\");\n\n this._timeout = options.timeout ?? 600000;\n this._readTimeout = options.readTimeout ?? 100000000;\n\n this._controlEndpoint =\n options.controlEndpoint ??\n getEnvWithDefault(\"\", \"AGENTRUN_CONTROL_ENDPOINT\");\n\n this._dataEndpoint =\n options.dataEndpoint ?? getEnvWithDefault(\"\", \"AGENTRUN_DATA_ENDPOINT\");\n\n this._devsEndpoint =\n options.devsEndpoint ?? getEnvWithDefault(\"\", \"DEVS_ENDPOINT\");\n\n this._headers = options.headers ?? {};\n }\n\n /**\n * Create a new Config by merging multiple configs.\n * Later configs take precedence.\n */\n static withConfigs(...configs: (Config | undefined)[]): Config {\n return new Config().update(...configs);\n }\n\n /**\n * Update this config with values from other configs.\n * Non-undefined values from later configs take precedence.\n */\n update(...configs: (Config | undefined)[]): Config {\n for (const config of configs) {\n if (!config) continue;\n\n if (config._accessKeyId) this._accessKeyId = config._accessKeyId;\n if (config._accessKeySecret)\n this._accessKeySecret = config._accessKeySecret;\n if (config._securityToken) this._securityToken = config._securityToken;\n if (config._accountId) this._accountId = config._accountId;\n if (config._token) this._token = config._token;\n if (config._regionId) this._regionId = config._regionId;\n if (config._timeout) this._timeout = config._timeout;\n if (config._readTimeout) this._readTimeout = config._readTimeout;\n if (config._controlEndpoint)\n this._controlEndpoint = config._controlEndpoint;\n if (config._dataEndpoint) this._dataEndpoint = config._dataEndpoint;\n if (config._devsEndpoint) this._devsEndpoint = config._devsEndpoint;\n if (config._headers && Object.keys(config._headers).length > 0) {\n this._headers = { ...this._headers, ...config._headers };\n }\n }\n return this;\n }\n\n get accessKeyId(): string {\n return this._accessKeyId;\n }\n\n get accessKeySecret(): string {\n return this._accessKeySecret;\n }\n\n get securityToken(): string {\n return this._securityToken;\n }\n\n get accountId(): string {\n if (!this._accountId) {\n throw new Error(\n \"Account ID is not set. Please add AGENTRUN_ACCOUNT_ID environment variable or set it in code.\",\n );\n }\n return this._accountId;\n }\n\n get token(): string | undefined {\n return this._token;\n }\n\n get regionId(): string {\n return this._regionId || \"cn-hangzhou\";\n }\n\n get timeout(): number {\n return this._timeout || 600000;\n }\n\n get readTimeout(): number {\n return this._readTimeout || 100000000;\n }\n\n get controlEndpoint(): string {\n if (this._controlEndpoint) {\n return this._controlEndpoint;\n }\n return `https://agentrun.${this.regionId}.aliyuncs.com`;\n }\n\n get dataEndpoint(): string {\n if (this._dataEndpoint) {\n return this._dataEndpoint;\n }\n return `https://${this.accountId}.agentrun-data.${this.regionId}.aliyuncs.com`;\n }\n\n get devsEndpoint(): string {\n if (this._devsEndpoint) {\n return this._devsEndpoint;\n }\n return `https://devs.${this.regionId}.aliyuncs.com`;\n }\n\n get headers(): Record<string, string> {\n return this._headers;\n }\n}\n","/**\n * Exception classes for AgentRun SDK\n *\n * 此模块定义 AgentRun SDK 的异常类。\n * This module defines exception classes for AgentRun SDK.\n */\n\n/**\n * Base error class for AgentRun SDK\n */\nexport class AgentRunError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentRunError';\n Object.setPrototypeOf(this, AgentRunError.prototype);\n }\n}\n\n/**\n * HTTP error with status code and request ID\n */\nexport class HTTPError extends AgentRunError {\n readonly statusCode: number;\n readonly requestId?: string;\n readonly errorCode?: string;\n\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(message);\n this.name = 'HTTPError';\n this.statusCode = statusCode;\n this.requestId = options?.requestId;\n this.errorCode = options?.errorCode;\n Object.setPrototypeOf(this, HTTPError.prototype);\n }\n\n /**\n * Convert HTTP error to resource-specific error based on status code\n */\n toResourceError(resourceType: string, resourceId?: string): HTTPError {\n if (this.statusCode == 404)\n return new ResourceNotExistError(resourceType, resourceId);\n else if (this.statusCode == 409)\n return new ResourceAlreadyExistError(resourceType, resourceId);\n else if (\n (this.statusCode == 400 || this.statusCode == 500) &&\n this.message.includes('already exists')\n )\n return new ResourceAlreadyExistError(resourceType, resourceId);\n else return this;\n }\n}\n\n/**\n * Client-side error (4xx status codes)\n */\nexport class ClientError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ClientError';\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\n\n/**\n * Server-side error (5xx status codes)\n */\nexport class ServerError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ServerError';\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n\n/**\n * Resource not found error\n */\nexport class ResourceNotExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' does not exist`\n : `${resourceType} does not exist`;\n super(404, message, options);\n this.name = 'ResourceNotExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceNotExistError.prototype);\n }\n}\n\n/**\n * Resource already exists error\n */\nexport class ResourceAlreadyExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' already exists`\n : `${resourceType} already exists`;\n super(409, message, options);\n this.name = 'ResourceAlreadyExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceAlreadyExistError.prototype);\n }\n}\n","/**\n * Logging utilities for AgentRun SDK\n *\n * 此模块提供日志功能。\n * This module provides logging utilities.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n// concise ANSI color codes we need\nconst COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nclass Logger {\n private level: LogLevel = 'info';\n // match Python logger name\n private prefix = 'agentrun-logger';\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private getColor(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return COLORS.cyan;\n case 'info':\n return COLORS.blue;\n case 'warn':\n return COLORS.yellow;\n case 'error':\n return COLORS.red;\n default:\n return COLORS.reset;\n }\n }\n\n // format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS\n private formatTimestamp(d = new Date()): string {\n const pad = (n: number, sz = 2) => n.toString().padStart(sz, '0');\n const year = d.getFullYear();\n const month = pad(d.getMonth() + 1);\n const day = pad(d.getDate());\n const hour = pad(d.getHours());\n const minute = pad(d.getMinutes());\n const second = pad(d.getSeconds());\n const ms = pad(d.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;\n }\n\n // attempt to infer caller file and line by parsing Error.stack\n // helper: parse a single stack frame into {filepath, line, functionName}\n private parseFrame(frame: string) {\n const m = frame.match(/^(?:at\\s+)?(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (!m) return null;\n return {\n functionName: m[1] ? m[1].trim() : undefined,\n filepath: m[2],\n line: parseInt(m[3], 10),\n };\n }\n\n // get caller by fixed stack offset (used in public log methods)\n private getCallerByOffset(): { filepath?: string; line?: number } {\n const err = new Error();\n const stack = err.stack;\n if (!stack) return {};\n const lines = stack.split('\\n').map((l) => l.trim());\n // try the requested offset, if absent try next few frames\n\n for (let i = 3; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n // fallback: try extract /path:line:col substring\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n // skip logger internal frames\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // fallback: scan all frames and return first project frame\n const cwd = process.cwd();\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n if (fp.startsWith(cwd))\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // final fallback: first non-node_modules parsed frame\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n return { filepath: parsed.filepath, line: parsed.line };\n }\n return {};\n }\n\n private formatMessage(\n level: LogLevel,\n message: string,\n filepath?: string,\n line?: number\n ): string {\n const timestamp = this.formatTimestamp();\n const color = this.getColor(level);\n const reset = COLORS.reset;\n\n // filepath/line should be provided by caller via getCallerByOffset;\n // if missing, leave blank\n\n const levelName = level === 'warn' ? 'WARNING' : level.toUpperCase();\n const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;\n const nameStr = `${color}[${this.prefix}]${reset}`;\n const tsStr = `${color} ${timestamp}${reset}`;\n const pathInfo =\n filepath && line !== undefined\n ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}`\n : '';\n const msg = level === 'debug' ? `${COLORS.dim}${message}${reset}` : message;\n\n return `\\n${levelStr} ${nameStr}${tsStr}${pathInfo}\\n${msg}\\n`;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n const caller = this.getCallerByOffset();\n console.debug(\n this.formatMessage('debug', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n const caller = this.getCallerByOffset();\n console.info(\n this.formatMessage('info', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n const caller = this.getCallerByOffset();\n console.warn(\n this.formatMessage('warn', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n const caller = this.getCallerByOffset();\n console.error(\n this.formatMessage('error', message, caller.filepath, caller.line),\n ...args\n );\n }\n }\n}\n\nexport const logger = new Logger();\n\nif (\n ![undefined, null, '', 'False', 'FALSE', 'false', '0'].includes(\n process.env['AGENTRUN_SDK_DEBUG']\n )\n) {\n logger.setLevel('debug');\n logger.warn(\n '启用 AgentRun SDK 调试日志, 移除 AGENTRUN_SDK_DEBUG 环境变量以关闭'\n );\n} else {\n logger.setLevel('info');\n}\n","/**\n * Common data models for AgentRun SDK\n *\n * 此模块定义通用的数据模型。\n * This module defines common data models.\n */\n\nimport { logger } from './log';\n\n/**\n * Resource status enum\n */\nexport type Status =\n | 'CREATING'\n | 'CREATE_FAILED'\n | 'READY'\n | 'UPDATING'\n | 'UPDATE_FAILED'\n | 'DELETING'\n | 'DELETE_FAILED';\n\nexport const Status = {\n CREATING: 'CREATING' as Status,\n CREATE_FAILED: 'CREATE_FAILED' as Status,\n READY: 'READY' as Status,\n UPDATING: 'UPDATING' as Status,\n UPDATE_FAILED: 'UPDATE_FAILED' as Status,\n DELETING: 'DELETING' as Status,\n DELETE_FAILED: 'DELETE_FAILED' as Status,\n};\n\nexport function isFinalStatus(status?: Status) {\n return [\n undefined,\n null,\n '',\n ...([\n 'READY',\n 'CREATE_FAILED',\n 'UPDATE_FAILED',\n 'DELETE_FAILED',\n ] as Status[]),\n ].includes(status);\n}\n\n/**\n * 从 SDK 内部对象创建资源对象 / Create resource object from SDK inner object\n * \n * 此函数记录对象转换过程,类似于 Python 版本的 from_inner_object\n * This function logs object conversion process, similar to Python's from_inner_object\n * \n * @param obj - SDK 返回的对象 / Object returned from SDK\n * @param extra - 额外的属性 (可选) / Extra properties (optional)\n * @returns 转换后的对象 / Converted object\n */\nexport function fromInnerObject<T>(obj: any, extra?: Record<string, any>): T {\n logger.debug(\n 'before parse object obj=%s, extra=%s', \n JSON.stringify(obj), \n extra ? JSON.stringify(extra) : 'null'\n );\n \n if (extra) {\n return { ...obj, ...extra } as T;\n }\n \n return obj as T;\n}\n\n/**\n * Network mode enum\n */\nexport type NetworkMode = 'PUBLIC' | 'PRIVATE' | 'PUBLIC_AND_PRIVATE';\n\nexport const NetworkMode = {\n PUBLIC: 'PUBLIC' as NetworkMode,\n PRIVATE: 'PRIVATE' as NetworkMode,\n PUBLIC_AND_PRIVATE: 'PUBLIC_AND_PRIVATE' as NetworkMode,\n};\n\n/**\n * Pageable input for list operations\n */\nexport interface PageableInput {\n pageNumber?: number;\n pageSize?: number;\n}\n\n/**\n * Network configuration\n */\nexport interface NetworkConfig {\n networkMode?: NetworkMode;\n vpcId?: string;\n vSwitchIds?: string[];\n securityGroupId?: string;\n}\n\n/**\n * Helper to convert camelCase to snake_case\n */\nexport function toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Helper to convert snake_case to camelCase\n */\nexport function toCamelCase(str: string): string {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Convert object keys from camelCase to snake_case\n */\nexport function toSnakeCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const snakeKey = toSnakeCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[snakeKey] = toSnakeCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[snakeKey] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? toSnakeCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[snakeKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Convert object keys from snake_case to camelCase\n */\nexport function toCamelCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const camelKey = toCamelCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[camelKey] = toCamelCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[camelKey] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? toCamelCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[camelKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Remove undefined values from object\n */\nexport function removeUndefined<T extends Record<string, unknown>>(\n obj: T\n): Partial<T> {\n const result: Partial<T> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n (result as Record<string, unknown>)[key] = value;\n }\n }\n return result;\n}\n","/**\n * Control API Base Module\n *\n * 此模块定义控制链路 API 的基类。\n * This module defines the base class for control API.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\n\nimport { Config } from \"./config\";\n\n// Handle ESM/CJS interop for Client class\nconst $AgentRunClient =\n // @ts-expect-error - ESM interop: default.default exists when imported as ESM namespace\n $AgentRun.default?.default ?? $AgentRun.default ?? $AgentRun;\n\ntype Client = InstanceType<typeof $AgentRunClient>;\n\n/**\n * Base class for Control API clients\n *\n * 提供控制链路和 DevS API 客户端的获取功能。\n * Provides functionality to get control API and DevS API clients.\n */\nexport class ControlAPI {\n protected config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Get the underlying AgentRun client instance\n */\n getClient(config?: Config): Client {\n const cfg = Config.withConfigs(this.config, config);\n let endpoint = cfg.controlEndpoint;\n\n // Remove protocol prefix\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new $AgentRunClient(openApiConfig);\n }\n}\n\n// Re-export the AgentRun models for use in generated code\nexport { $AgentRun };\n","/**\n * AgentRun Data API Client\n *\n * 用于与 AgentRun Data API 交互的 HTTP 客户端。\n * HTTP client for interacting with the AgentRun Data API.\n */\n\nimport * as http from \"http\";\nimport * as https from \"https\";\nimport * as fs from \"fs\";\nimport * as nodePath from \"path\";\nimport { URL } from \"url\";\n\nimport { Config } from \"./config\";\nimport { ClientError } from \"./exception\";\nimport { logger } from \"./log\";\n\n/**\n * Resource type enumeration\n */\nexport enum ResourceType {\n Runtime = \"runtime\",\n LiteLLM = \"litellm\",\n Tool = \"tool\",\n Template = \"template\",\n Sandbox = \"sandbox\",\n}\n\n/**\n * Data API response interface\n */\nexport interface DataAPIResponse {\n [key: string]: unknown;\n}\n\n/**\n * File download result\n */\nexport interface FileDownloadResult {\n savedPath: string;\n size: number;\n}\n\n/**\n * AgentRun Data API Client\n *\n * This client provides methods for making HTTP requests to the AgentRun Data API\n * with automatic URL construction, JSON handling, and error management.\n */\nexport class DataAPI {\n private resourceName: string;\n private resourceType: ResourceType;\n private accessToken: string | null = null;\n private config: Config;\n private namespace: string;\n\n /**\n * Initialize the Data API Client.\n *\n * @param resourceName - Resource name for access token\n * @param resourceType - Resource type for access token\n * @param config - Configuration options\n * @param namespace - API namespace (default: \"agents\")\n */\n constructor(\n resourceName: string,\n resourceType: ResourceType,\n config?: Config,\n namespace: string = \"agents\",\n ) {\n this.resourceName = resourceName;\n this.resourceType = resourceType;\n this.config = Config.withConfigs(config);\n this.namespace = namespace;\n\n // Check for provided access token\n const token = this.config.token;\n if (token) {\n logger.debug(`Using provided access token from config`);\n this.accessToken = token;\n }\n }\n\n /**\n * Get the base URL for API requests.\n */\n private getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with the given path and query parameters.\n *\n * @param path - API path (may include query string)\n * @param query - Query parameters to add/merge\n * @returns Complete URL string with query parameters\n */\n withPath(path: string, query?: Record<string, unknown>): string {\n // Remove leading slash if present\n path = path.replace(/^\\//, \"\");\n\n const parts = [this.getBaseUrl(), this.namespace, path]\n .filter(Boolean)\n .map((part) => part.replace(/^\\/|\\/$/g, \"\"));\n\n const baseUrl = parts.join(\"/\");\n\n if (!query || Object.keys(query).length === 0) {\n return baseUrl;\n }\n\n const urlObj = new URL(baseUrl);\n const existingParams = urlObj.searchParams;\n\n for (const key in query) {\n if (Object.prototype.hasOwnProperty.call(query, key)) {\n const value = query[key];\n if (Array.isArray(value)) {\n value.forEach((v) => existingParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n existingParams.set(key, String(value));\n }\n }\n }\n\n urlObj.search = existingParams.toString();\n return urlObj.toString();\n }\n\n /**\n * Authenticate and prepare headers for the request.\n *\n * @param url - Request URL\n * @param headers - Request headers\n * @param query - Query parameters\n * @param config - Optional config override\n * @returns Tuple of [url, headers, query]\n */\n private async auth(\n url: string,\n headers: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config,\n ): Promise<\n [string, Record<string, string>, Record<string, unknown> | undefined]\n > {\n const cfg = Config.withConfigs(this.config, config);\n\n // Fetch access token if not already available\n if (\n this.accessToken === null &&\n this.resourceName &&\n this.resourceType &&\n !cfg.token\n ) {\n try {\n // Dynamically import to avoid circular dependencies\n const { ControlAPI } = await import(\"./control-api\");\n const $AgentRun = await import(\"@alicloud/agentrun20250910\");\n\n const cli = new ControlAPI(this.config).getClient();\n\n const input =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const resp = await cli.getAccessToken(input);\n this.accessToken = resp.body?.data?.accessToken || null;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}`,\n );\n } catch (e) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${e}`,\n );\n }\n }\n\n // Merge headers with authentication\n const authHeaders = {\n \"Agentrun-Access-Token\": cfg.token || this.accessToken || \"\",\n ...cfg.headers,\n ...headers,\n };\n\n return [url, authHeaders, query];\n }\n\n /**\n * Prepare the HTTP request.\n */\n private async prepareRequest(\n method: string,\n url: string,\n data?: Record<string, unknown> | string | Buffer,\n headers?: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config,\n ): Promise<{\n method: string;\n url: string;\n headers: Record<string, string>;\n body?: string | Buffer;\n }> {\n const reqHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"AgentRunDataClient/1.0\",\n };\n\n const cfg = Config.withConfigs(this.config, config);\n Object.assign(reqHeaders, cfg.headers);\n if (headers) {\n Object.assign(reqHeaders, headers);\n }\n\n // Apply authentication\n const [authUrl, authHeaders, authQuery] = await this.auth(\n url,\n reqHeaders,\n query,\n cfg,\n );\n\n // Add query parameters to URL\n let finalUrl = authUrl;\n if (authQuery && Object.keys(authQuery).length > 0) {\n const urlObj = new URL(authUrl);\n for (const key in authQuery) {\n if (Object.prototype.hasOwnProperty.call(authQuery, key)) {\n const value = authQuery[key];\n if (value !== undefined && value !== null) {\n urlObj.searchParams.set(key, String(value));\n }\n }\n }\n finalUrl = urlObj.toString();\n }\n\n // Prepare request body\n let body: string | Buffer | undefined;\n if (data !== undefined) {\n if (Buffer.isBuffer(data)) {\n body = data;\n } else if (typeof data === \"object\") {\n body = JSON.stringify(data);\n } else {\n body = data;\n }\n }\n\n logger.debug(\n `${method} ${finalUrl} headers=${JSON.stringify(authHeaders)}`,\n );\n\n return { method, url: finalUrl, headers: authHeaders, body };\n }\n\n /**\n * Make an HTTP request.\n */\n private async makeRequest(\n method: string,\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const {\n method: reqMethod,\n url: reqUrl,\n headers: reqHeaders,\n body: reqBody,\n } = await this.prepareRequest(\n method,\n fullUrl,\n data,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: reqMethod,\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n return new Promise((resolve, reject) => {\n const req = client.request(options, (res) => {\n let responseData = \"\";\n res.on(\"data\", (chunk) => (responseData += chunk));\n res.on(\"end\", () => {\n logger.debug(`Response: ${responseData}`);\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n const errorMsg = `Failed to parse JSON response: ${e}`;\n logger.error(errorMsg);\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n } else {\n const errorMsg =\n responseData || res.statusMessage || \"Unknown error\";\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n });\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.on(\"timeout\", () => {\n req.destroy();\n reject(new ClientError(0, \"Request timeout\"));\n });\n\n if (reqBody) {\n req.write(reqBody);\n }\n req.end();\n });\n }\n\n /**\n * Make a GET request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async get(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"GET\", path, undefined, query, headers, config);\n }\n\n /**\n * Make a POST request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async post(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"POST\", path, data, query, headers, config);\n }\n\n /**\n * Make a PUT request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async put(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"PUT\", path, data, query, headers, config);\n }\n\n /**\n * Make a PATCH request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async patch(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"PATCH\", path, data, query, headers, config);\n }\n\n /**\n * Make a DELETE request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async delete(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n return this.makeRequest(\"DELETE\", path, undefined, query, headers, config);\n }\n\n /**\n * Upload a file using multipart/form-data.\n *\n * @param path - API path\n * @param localFilePath - Local file path to upload\n * @param targetFilePath - Target file path on the server\n * @param formData - Additional form data fields\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async postFile(\n path: string,\n localFilePath: string,\n targetFilePath: string,\n formData?: Record<string, string>,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n \"POST\",\n fullUrl,\n undefined,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const boundary = `----WebKitFormBoundary${Math.random().toString(36).substring(2)}`;\n const contentHeaders = {\n ...reqHeaders,\n \"Content-Type\": `multipart/form-data; boundary=${boundary}`,\n };\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: \"POST\",\n headers: contentHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, (res) => {\n let responseData = \"\";\n res.on(\"data\", (chunk) => (responseData += chunk));\n res.on(\"end\", () => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n logger.error(`Failed to parse JSON response: ${e}`);\n reject(\n new ClientError(\n res.statusCode || 0,\n `Failed to parse JSON: ${e}`,\n ),\n );\n }\n } else {\n reject(\n new ClientError(\n res.statusCode || 0,\n responseData || \"Unknown error\",\n ),\n );\n }\n });\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n // Helper to write form fields\n const appendField = (name: string, value: string) => {\n req.write(`--${boundary}\\r\\n`);\n req.write(`Content-Disposition: form-data; name=\"${name}\"\\r\\n`);\n req.write(\"\\r\\n\");\n req.write(`${value}\\r\\n`);\n };\n\n // Write form data fields\n if (formData) {\n for (const key in formData) {\n if (Object.prototype.hasOwnProperty.call(formData, key)) {\n appendField(key, formData[key]);\n }\n }\n }\n\n // Add target path field\n appendField(\"path\", targetFilePath);\n\n // Write file\n const filename = nodePath.basename(localFilePath);\n req.write(`--${boundary}\\r\\n`);\n req.write(\n `Content-Disposition: form-data; name=\"file\"; filename=\"${filename}\"\\r\\n`,\n );\n req.write(\"Content-Type: application/octet-stream\\r\\n\");\n req.write(\"\\r\\n\");\n\n const fileStream = fs.createReadStream(localFilePath);\n fileStream.pipe(req, { end: false });\n\n fileStream.on(\"end\", () => {\n req.write(`\\r\\n--${boundary}--\\r\\n`);\n req.end();\n });\n\n fileStream.on(\"error\", (e) => {\n reject(new ClientError(0, `File stream error: ${e.message}`));\n });\n });\n }\n\n /**\n * Download a file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded file\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getFile(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<FileDownloadResult> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n \"GET\",\n fullUrl,\n undefined,\n headers,\n undefined,\n config,\n );\n\n const client = reqUrl.startsWith(\"https\") ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith(\"https\") ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: \"GET\",\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, (res) => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n const fileStream = fs.createWriteStream(savePath);\n let downloadedSize = 0;\n\n res.on(\"data\", (chunk) => {\n fileStream.write(chunk);\n downloadedSize += chunk.length;\n });\n\n res.on(\"end\", () => {\n fileStream.end();\n resolve({ savedPath: savePath, size: downloadedSize });\n });\n\n res.on(\"error\", (e) => {\n fileStream.end();\n reject(new ClientError(0, `Response error: ${e.message}`));\n });\n } else {\n let errorData = \"\";\n res.on(\"data\", (chunk) => (errorData += chunk));\n res.on(\"end\", () => {\n reject(\n new ClientError(\n res.statusCode || 0,\n errorData || \"Download failed\",\n ),\n );\n });\n }\n });\n\n req.on(\"error\", (e) => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.end();\n });\n }\n\n /**\n * Download a video file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded video\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getVideo(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config,\n ): Promise<FileDownloadResult> {\n // Video download is the same as file download\n return this.getFile(path, savePath, query, headers, config);\n }\n}\n","/**\n资源基类模板 / Resource Base Template\n\n此模板用于生成资源对象的基类代码。\nThis template is used to generate base class code for resource objects.\n*/\n\nimport { Config } from './config';\nimport { ResourceNotExistError } from './exception';\nimport { logger } from './log';\nimport { isFinalStatus, PageableInput, Status } from './model';\n\n/**\n * 更新对象属性的辅助函数 / Helper function to update object properties\n * \n * 只复制数据属性,跳过方法和私有属性\n * Only copies data properties, skips methods and private properties\n * \n * @param target - 目标对象 / Target object\n * @param source - 源对象 / Source object\n */\nexport function updateObjectProperties(target: any, source: any): void {\n for (const key in source) {\n if (\n Object.prototype.hasOwnProperty.call(source, key) &&\n typeof source[key] !== 'function' &&\n !key.startsWith('_') // 跳过私有属性\n ) {\n target[key] = source[key];\n }\n }\n}\n\nexport abstract class ResourceBase {\n status?: Status;\n protected _config?: Config;\n\n abstract get(params?: { config?: Config }): Promise<any>;\n abstract delete(params?: { config?: Config }): Promise<any>;\n\n static async list(_params: { input?: PageableInput; config?: Config }) {\n return [] as ThisType<ResourceBase>[];\n }\n\n static async listAll(params: {\n uniqIdCallback: (item: any) => string;\n input?: Record<string, any>;\n config?: Config;\n }) {\n const { uniqIdCallback, input, config } = params;\n\n const allResults: any[] = [];\n let page = 1;\n const pageSize = 50;\n while (true) {\n const pageResults = await this.list({\n input: { ...input, pageNumber: page, pageSize: pageSize },\n config,\n });\n\n page += 1;\n allResults.push(...pageResults);\n if (pageResults.length < pageSize) break;\n }\n\n const resultSet = new Set<string>();\n const results: any[] = [];\n for (const item of allResults) {\n const uniqId = uniqIdCallback(item);\n if (!resultSet.has(uniqId)) {\n resultSet.add(uniqId);\n results.push(item);\n }\n }\n\n return results;\n }\n\n waitUntil = async (params: {\n checkFinishedCallback: (resource: ResourceBase) => Promise<boolean>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }): Promise<ResourceBase> => {\n const {\n checkFinishedCallback,\n intervalSeconds = 5,\n timeoutSeconds = 300,\n } = params;\n\n const startTime = Date.now();\n while (true) {\n if (await checkFinishedCallback(this)) return this;\n\n if (Date.now() - startTime >= timeoutSeconds * 1000) {\n throw new Error('Timeout waiting for resource to reach desired state');\n }\n\n await new Promise((resolve) => setTimeout(resolve, intervalSeconds * 1000));\n }\n };\n\n waitUntilReadyOrFailed = async (params: {\n callback: (resource: ResourceBase) => Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params;\n\n async function checkFinishedCallback(resource: ResourceBase) {\n await resource.refresh();\n if (callback) await callback(resource);\n logger.debug(`Resource status: ${(resource as any).status}`);\n\n return isFinalStatus(resource.status);\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n delete_and_wait_until_finished = async (params: {\n callback: (resource: ResourceBase) => Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params;\n\n try {\n await this.delete();\n } catch (error) {\n if (error instanceof ResourceNotExistError) return;\n }\n\n async function checkFinishedCallback(resource: ResourceBase) {\n try {\n await resource.refresh();\n if (callback) await callback(resource);\n } catch (error) {\n // Assuming that an error during refresh indicates the resource no longer exists\n if (error instanceof ResourceNotExistError) return true;\n if (resource.status === Status.DELETING) return false;\n\n throw Error(`Resource status is ${resource.status}`);\n }\n\n return false;\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n refresh = async (params?: { config?: Config }) => await this.get(params);\n\n /**\n * 更新实例自身的属性 / Update instance properties\n * \n * @param source - 源对象 / Source object\n */\n updateSelf(source: any): void {\n updateObjectProperties(this, source);\n }\n\n /**\n * 列出所有资源(带去重)/ List all resources (with deduplication)\n * \n * @param uniqIdCallback - 唯一ID回调函数 / Unique ID callback function\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 资源列表 / Resource list\n */\n protected static async listAllResources(\n uniqIdCallback: (item: any) => string,\n config?: Config,\n kwargs?: Record<string, any>\n ): Promise<any[]> {\n return await this.listAll({\n uniqIdCallback,\n input: kwargs,\n config,\n });\n }\n\n setConfig = (config: Config) => {\n this._config = config;\n return this;\n };\n}\n","/**\n * Utility exports\n */\n\nexport { Config, type ConfigOptions } from \"./config\";\nexport {\n AgentRunError,\n ClientError,\n ServerError,\n HTTPError,\n ResourceNotExistError,\n ResourceAlreadyExistError,\n} from \"./exception\";\nexport {\n Status,\n NetworkMode,\n type PageableInput,\n type NetworkConfig,\n toSnakeCase,\n toCamelCase,\n toSnakeCaseKeys,\n toCamelCaseKeys,\n removeUndefined,\n} from \"./model\";\nexport { logger, type LogLevel } from \"./log\";\nexport { DataAPI, ResourceType } from \"./data-api\";\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: credential_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Credential Control API\n */\nexport class CredentialControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create credential\n *\n * @param params - Method parameters\n * @param params.input - Credential configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created credential object\n */\n createCredential = async (params: { input: $AgentRun.CreateCredentialInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createCredentialWithOptions(\n new $AgentRun.CreateCredentialRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted credential object\n */\n deleteCredential = async (params: { credentialName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteCredentialWithOptions(\n credentialName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.input - Credential configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated credential object\n */\n updateCredential = async (params: { credentialName: string; input: $AgentRun.UpdateCredentialInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateCredentialWithOptions(\n credentialName,\n new $AgentRun.UpdateCredentialRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get credential\n *\n * @param params - Method parameters\n * @param params.credentialName - Credential name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Credential object\n */\n getCredential = async (params: { credentialName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.Credential> => {\n const { credentialName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getCredentialWithOptions(\n credentialName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getCredential, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([credentialName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.Credential;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List credentials\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of credential objects\n */\n listCredentials = async (params: { input: $AgentRun.ListCredentialsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListCredentialsOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listCredentialsWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listCredentials, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListCredentialsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Credential Resource\n *\n * 此模块定义 Credential 资源类。\n * This module defines the Credential resource class.\n */\n\nimport { Config } from '../utils/config';\nimport { HTTPError } from '../utils/exception';\nimport { updateObjectProperties } from '../utils/resource';\n\nimport { ResourceBase } from '../utils/resource';\nimport { CredentialClient } from './client';\nimport {\n CredentialAuthType,\n CredentialCreateInput,\n CredentialInterface,\n CredentialListInput,\n CredentialListOutput,\n CredentialSourceType,\n CredentialUpdateInput,\n RelatedResource,\n} from './model';\n\nexport class Credential extends ResourceBase implements CredentialInterface {\n credentialName?: string;\n /** 描述 */\n description?: string;\n /** 是否启用 */\n enabled?: boolean;\n credentialId?: string;\n createdAt?: string;\n updatedAt?: string;\n relatedResources?: RelatedResource[];\n /** 凭证认证类型 */\n credentialAuthType?: CredentialAuthType;\n /** 凭证来源类型 */\n credentialSourceType?: CredentialSourceType;\n /** 凭证公共配置 */\n credentialPublicConfig?: Record<string, any>;\n /** 凭证密钥 */\n credentialSecret?: string;\n\n protected _config?: Config;\n\n constructor(data?: CredentialInterface, config?: Config) {\n super();\n\n if (data) updateObjectProperties(this, data);\n this._config = config;\n }\n\n private static getClient = () => {\n return new CredentialClient();\n };\n\n /**\n * Create a new Credential\n */\n static create = async (paramsOrInput: any) => {\n // Backwards compatibility: allow calling Credential.create(input)\n const hasInputProp = paramsOrInput && paramsOrInput.input !== undefined;\n const input: CredentialCreateInput = hasInputProp\n ? paramsOrInput.input\n : paramsOrInput;\n const config: Config | undefined = hasInputProp\n ? paramsOrInput.config\n : undefined;\n const client = Credential.getClient();\n try {\n return await client.create({ input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', input.credentialName || '');\n }\n throw error;\n }\n };\n\n /**\n * Delete a Credential by name\n */\n static delete = async (paramsOrName: any) => {\n // Accept either (name: string) or ({ name, config })\n const isString = typeof paramsOrName === 'string';\n const name: string = isString ? paramsOrName : paramsOrName.name;\n const config: Config | undefined = isString\n ? undefined\n : paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.delete({ name, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * Update a Credential by name\n */\n static update = async (paramsOrName: any) => {\n // Accept either (name, input) wrapped as object or ({ name, input, config })\n const name: string = paramsOrName.name;\n const input: CredentialUpdateInput = paramsOrName.input;\n const config: Config | undefined = paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.update({ name, input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * Get a Credential by name\n */\n static get = async (paramsOrName: any) => {\n // Accept either name string or { name, config }\n const isString = typeof paramsOrName === 'string';\n const name: string = isString ? paramsOrName : paramsOrName.name;\n const config: Config | undefined = isString\n ? undefined\n : paramsOrName.config;\n const client = Credential.getClient();\n try {\n return await client.get({ name, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', name);\n }\n throw error;\n }\n };\n\n /**\n * List all Credentials (with pagination)\n */\n static list = async (paramsOrUndefined?: any) => {\n const input = paramsOrUndefined?.input ?? paramsOrUndefined;\n const config: Config | undefined = paramsOrUndefined?.config;\n const client = Credential.getClient();\n try {\n return await client.list({ input, config });\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', 'list');\n }\n throw error;\n }\n };\n\n static listAll = async (params?: {\n input?: CredentialListInput;\n config?: Config;\n }) => {\n const result = await super.listAll({\n uniqIdCallback: (item) => item.credentialName || '',\n input: params?.input,\n config: params?.config,\n });\n return result as CredentialListOutput[];\n };\n\n /**\n * Delete this credential\n */\n delete = async (params?: any) => {\n const config: Config | undefined = params?.config;\n if (!this.credentialName) {\n throw new Error('credentialName is required to delete a Credential');\n }\n\n const result = await Credential.delete({\n name: this.credentialName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this credential\n */\n update = async (params: any) => {\n // Allow calling update(updateInput) for backward compatibility\n const hasInputProp = params && params.input !== undefined;\n const input: CredentialUpdateInput = hasInputProp ? params.input : params;\n const config: Config | undefined = hasInputProp ? params.config : undefined;\n\n if (!this.credentialName) {\n throw new Error('credentialName is required to update a Credential');\n }\n\n const result = await Credential.update({\n name: this.credentialName,\n input,\n config: config ?? this._config,\n });\n \n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this credential's data\n */\n get = async (params?: any): Promise<Credential> => {\n const config: Config | undefined = params?.config;\n if (!this.credentialName) {\n throw new Error('credentialName is required to refresh a Credential');\n }\n\n const result = await Credential.get({\n name: this.credentialName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n}\n","/**\n * Credential Data Models\n *\n * 此模块定义 Credential 相关的所有数据模型。\n * This module defines all data models related to Credential.\n */\n\nimport { PageableInput } from '../utils/model';\nimport { updateObjectProperties } from '../utils/resource';\nimport { Config } from '../utils/config';\n\n/** 凭证认证类型 / Credential Authentication Types */\nexport type CredentialAuthType =\n | 'jwt'\n | 'api_key'\n | 'basic'\n | 'aksk'\n | 'custom_header';\n\n/** 凭证来源类型 / Credential Source Types */\nexport type CredentialSourceType = 'external_llm' | 'external_tool' | 'internal';\n\n/**\n * Credential basic authentication configuration\n */\nexport interface CredentialBasicAuth {\n /** Username */\n username?: string;\n /** Password */\n password?: string;\n}\n\n/**\n * Related resource for credential\n */\nexport interface RelatedResource {\n /** 资源 IDj*/\n resourceId?: string;\n /** 资源名称j*/\n resourceName?: string;\n /** 资源类型j*/\n resourceType?: string;\n}\n\nexport interface CredentialConfigInterface {\n /** 凭证认证类型 */\n credentialAuthType?: CredentialAuthType;\n /** 凭证来源类型 */\n credentialSourceType?: CredentialSourceType;\n /** 凭证公共配置 */\n credentialPublicConfig?: Record<string, any>;\n /** 凭证密钥 */\n credentialSecret?: string;\n}\n\n/**\n * 凭证配置 / Credential configuration\n */\nexport class CredentialConfig implements CredentialConfigInterface {\n constructor(data?: CredentialConfigInterface) {\n if (data) updateObjectProperties(this, data);\n }\n\n /** 配置访问 AgentRun 的 api key 凭证 */\n static inboundApiKey(params: { apiKey: string; headerKey?: string }) {\n const { apiKey, headerKey = 'Authorization' } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'api_key',\n credentialPublicConfig: { headerKey },\n credentialSecret: apiKey,\n });\n }\n\n /** 配置访问 AgentRun 的静态 JWKS 凭证 */\n static inboundStaticJwt(params: { jwks: string }) {\n const { jwks } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'jwt',\n credentialPublicConfig: { authType: 'static_jwks', jwks },\n credentialSecret: '',\n });\n }\n\n /** 配置访问 AgentRun 的远程 JWT 凭证 */\n static inboundRemoteJwt(\n uri: string,\n timeout: number = 3000,\n ttl: number = 30000,\n publicConfig?: Record<string, any>\n ) {\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'jwt',\n credentialPublicConfig: { uri, timeout, ttl, ...publicConfig },\n credentialSecret: '',\n });\n }\n\n /** 配置访问 AgentRun 的 Basic 凭证 */\n static inboundBasic(params: { users: CredentialBasicAuth[] }) {\n const { users } = params;\n return new CredentialConfig({\n credentialSourceType: 'internal',\n credentialAuthType: 'basic',\n credentialPublicConfig: { users },\n credentialSecret: '',\n });\n }\n\n /** 配置访问第三方工具的 api key 凭证 */\n static outboundLLMApiKey(params: { apiKey: string; provider: string }) {\n const { apiKey, provider } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_llm',\n credentialAuthType: 'api_key',\n credentialPublicConfig: { provider },\n credentialSecret: apiKey,\n });\n }\n\n /** 配置访问第三方工具的 ak/sk 凭证 */\n static outboundLLMAKSK(\n provider: string,\n accessKeyId: string,\n accessKeySecret: string,\n accountId: string\n ) {\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'aksk',\n credentialPublicConfig: {\n provider,\n authConfig: { accessKey: accessKeyId, accountId: accountId },\n },\n credentialSecret: accessKeySecret,\n });\n }\n\n /** 配置访问第三方工具的自定义凭证 */\n static outboundToolAKSKCustom(params: { authConfig: Record<string, string> }) {\n const { authConfig } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'aksk',\n credentialPublicConfig: { provider: 'custom', authConfig },\n credentialSecret: '',\n });\n }\n\n /** 配置访问第三方工具的自定义 Header 凭证 */\n static outboundToolCustomHeader(params: { headers: Record<string, string> }) {\n const { headers } = params;\n return new CredentialConfig({\n credentialSourceType: 'external_tool',\n credentialAuthType: 'custom_header',\n credentialPublicConfig: { authConfig: headers },\n credentialSecret: '',\n });\n }\n}\n\n/** 凭证公共配置 */\nexport interface CredentialMutableProps {\n /** 描述 */\n description?: string;\n /** 是否启用 */\n enabled?: boolean;\n}\n\nexport interface CredentialImmutableProps {\n credentialName?: string;\n}\n\nexport interface CredentialSystemProps {\n credentialId?: string;\n createdAt?: string;\n updatedAt?: string;\n relatedResources?: RelatedResource[];\n}\n\nexport interface CredentialCreateInput\n extends CredentialMutableProps,\n CredentialImmutableProps {\n credentialConfig?: CredentialConfig;\n}\n\n/**\n * Credential update input\n */\nexport interface CredentialUpdateInput extends CredentialMutableProps {\n credentialConfig?: CredentialConfig;\n}\n\n/**\n * Credential list input\n */\nexport interface CredentialListInput extends PageableInput {\n credentialAuthType?: CredentialAuthType;\n credentialName?: string;\n credentialSourceType?: CredentialSourceType;\n provider?: string;\n}\n\nexport class CredentialListOutput {\n createdAt?: string;\n credentialAuthType?: CredentialAuthType;\n credentialId?: string;\n credentialName?: string;\n credentialSourceType?: CredentialSourceType;\n enabled?: boolean;\n relatedResourceCount?: number;\n updatedAt?: string;\n\n constructor(data?: any) {\n if (data) updateObjectProperties(this, data);\n }\n\n toCredential = async (params?: { config?: Config }) => {\n const { CredentialClient } = await import('./client');\n return await new CredentialClient(params?.config).get({\n name: this.credentialName || '',\n config: params?.config,\n });\n };\n}\n\n/**\n * Credential resource class\n */\n\nexport interface CredentialInterface\n extends CredentialMutableProps,\n CredentialImmutableProps,\n CredentialSystemProps,\n CredentialConfigInterface {}\n","/**\n * Credential Client\n *\n * 此模块提供 Credential 的客户端 API。\n * This module provides the client API for Credential.\n */\n\nimport { HTTPError } from '../utils';\nimport { Config } from '../utils/config';\nimport { fromInnerObject } from '../utils/model';\n\nimport * as agentrun from '@alicloud/agentrun20250910';\nimport { CredentialControlAPI } from './api/control';\nimport { Credential } from './credential';\nimport {\n CredentialCreateInput,\n CredentialListInput,\n CredentialListOutput,\n CredentialUpdateInput,\n} from './model';\n\n/**\n * Credential Client\n *\n * 提供 Credential 的创建、删除、更新、查询功能。\n * Provides create, delete, update, query functions for Credential.\n */\nexport class CredentialClient {\n private config?: Config;\n private controlApi: CredentialControlAPI;\n\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new CredentialControlAPI(config);\n }\n\n /**\n * Create a Credential\n */\n create = async (params: {\n input: CredentialCreateInput;\n config?: Config;\n }): Promise<Credential> => {\n try {\n const { input, config } = params;\n\n // Normalize credentialConfig to SDK expected field names.\n const cfg = input.credentialConfig as any | undefined;\n const normalized = {\n ...input,\n credentialAuthType: cfg?.credentialAuthType ?? cfg?.authType,\n credentialSourceType: cfg?.credentialSourceType ?? cfg?.sourceType,\n credentialPublicConfig:\n cfg?.credentialPublicConfig ?? cfg?.publicConfig,\n credentialSecret: cfg?.credentialSecret ?? cfg?.secret,\n };\n\n // Ensure users field is always present in credentialPublicConfig\n if (normalized.credentialPublicConfig) {\n const publicConfig = normalized.credentialPublicConfig as any;\n if (!('users' in publicConfig)) {\n publicConfig.users = [];\n }\n }\n\n // Special-case: tests may provide a simplified Basic auth shape\n if (normalized.credentialAuthType === 'basic') {\n const pub = normalized.credentialPublicConfig ?? {};\n // If tests provided `username` and `secret`, convert to users array\n if (pub.username) {\n normalized.credentialPublicConfig = {\n users: [\n {\n username: pub.username,\n password: normalized.credentialSecret ?? '',\n },\n ],\n };\n // server validation expects no credentialSecret for basic\n normalized.credentialSecret = '';\n }\n }\n\n const result = await this.controlApi.createCredential({\n input: new agentrun.CreateCredentialInput(normalized),\n config: config ?? this.config,\n });\n\n const credential = fromInnerObject<any>(result);\n return new Credential(credential);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n 'Credential',\n params?.input?.credentialName\n );\n }\n\n throw error;\n }\n };\n\n /**\n * Delete a Credential\n */\n delete = async (params: { name: string; config?: Config }): Promise<Credential> => {\n try {\n const { name, config } = params;\n const result = await this.controlApi.deleteCredential({\n credentialName: name,\n config: config ?? this.config,\n });\n\n const credential = fromInnerObject<any>(result);\n return new Credential(credential);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * Update a Credential\n */\n update = async (params: {\n name: string;\n input: CredentialUpdateInput;\n config?: Config;\n }): Promise<Credential> => {\n try {\n const { name, input, config } = params;\n const cfg = input.credentialConfig as any | undefined;\n const normalized: any = { ...input };\n if (cfg) {\n normalized.credentialAuthType =\n cfg?.credentialAuthType ?? cfg?.authType;\n normalized.credentialSourceType =\n cfg?.credentialSourceType ?? cfg?.sourceType;\n normalized.credentialPublicConfig =\n cfg?.credentialPublicConfig ?? cfg?.publicConfig;\n normalized.credentialSecret = cfg?.credentialSecret ?? cfg?.secret;\n\n // Ensure users field is always present in credentialPublicConfig\n if (normalized.credentialPublicConfig) {\n const publicConfig = normalized.credentialPublicConfig as any;\n if (!('users' in publicConfig)) {\n publicConfig.users = [];\n }\n }\n\n if (normalized.credentialAuthType === 'basic') {\n const pub = normalized.credentialPublicConfig ?? {};\n if (pub.username) {\n normalized.credentialPublicConfig = {\n users: [\n {\n username: pub.username,\n password: normalized.credentialSecret ?? '',\n },\n ],\n };\n normalized.credentialSecret = '';\n }\n }\n }\n\n const result = await this.controlApi.updateCredential({\n credentialName: name,\n input: new agentrun.UpdateCredentialInput(normalized),\n config: config ?? this.config,\n });\n\n return new Credential(result as any);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * Get a Credential\n */\n get = async (params: { name: string; config?: Config }): Promise<Credential> => {\n try {\n const { name, config } = params;\n\n const result = await this.controlApi.getCredential({\n credentialName: name,\n config: config ?? this.config,\n });\n return new Credential(result as any);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential', params?.name);\n }\n\n throw error;\n }\n };\n\n /**\n * List Credentials\n */\n list = async (params: {\n input?: CredentialListInput;\n config?: Config;\n }): Promise<CredentialListOutput[]> => {\n try {\n const { input, config } = params;\n const results = await this.controlApi.listCredentials({\n input: new agentrun.ListCredentialsRequest(input),\n config: config ?? this.config,\n });\n\n return results.items?.map((item) => new CredentialListOutput(item as any)) ?? [];\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Credential');\n }\n\n throw error;\n }\n };\n}\n","/**\n * Sandbox Data API Base Class\n *\n * This module provides an HTTP client for interacting with the AgentRun Sandbox Data API.\n * 此模块提供用于与 AgentRun Sandbox Data API 交互的 HTTP 客户端。\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Resource type enum\n */\nexport enum ResourceType {\n Runtime = \"runtime\",\n LiteLLM = \"litellm\",\n Tool = \"tool\",\n Template = \"template\",\n Sandbox = \"sandbox\",\n}\n\n/**\n * Sandbox Data API Client\n *\n * Provides methods for making HTTP requests to sandbox data API endpoints.\n */\nexport class SandboxDataAPI {\n protected resourceName: string;\n protected resourceType: ResourceType;\n protected namespace: string;\n protected config: Config;\n protected accessToken?: string;\n protected accessTokenMap: Map<string, string> = new Map();\n\n constructor(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n namespace?: string;\n }) {\n const { config, namespace = \"sandboxes\" } = params;\n\n this.resourceName = \"\";\n this.resourceType = ResourceType.Template;\n this.namespace = namespace;\n this.config = config || new Config();\n\n // Note: Cannot call async refreshAccessToken in constructor\n // Token will be refreshed on first API call\n }\n\n /**\n * Refresh access token for the resource\n */\n protected async refreshAccessToken(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n }): Promise<void> {\n const { sandboxId, templateName, config } = params;\n const cfg = Config.withConfigs(config, this.config);\n\n const cacheKey = (sandboxId || templateName)!;\n const cachedToken = this.accessTokenMap.get(cacheKey);\n\n if (sandboxId) {\n this.resourceName = sandboxId;\n this.resourceType = ResourceType.Sandbox;\n this.namespace = `sandboxes/${sandboxId}`;\n } else if (templateName) {\n this.resourceName = templateName;\n this.resourceType = ResourceType.Template;\n this.namespace = \"sandboxes\";\n }\n\n if (cachedToken) {\n this.accessToken = cachedToken;\n return;\n }\n\n // Fetch new token if not cached\n this.accessToken = undefined;\n await this.auth({ config: cfg });\n if (this.accessToken) {\n this.accessTokenMap.set(cacheKey, this.accessToken);\n }\n }\n\n /**\n * Get base URL for data API\n */\n protected getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with path and query parameters\n */\n protected withPath(\n path: string,\n query?: Record<string, any>,\n ): string {\n // Remove leading slash\n path = path.replace(/^\\//, \"\");\n\n // Build base URL\n const parts = [this.getBaseUrl(), this.namespace, path].filter(\n (p) => p && p.length > 0,\n );\n let url = parts.join(\"/\").replace(/\\/+/g, \"/\").replace(/:\\//g, \"://\");\n\n // Add query parameters\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((v) => urlObj.searchParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, String(value));\n }\n });\n url = urlObj.toString();\n }\n\n return url;\n }\n\n /**\n * Authentication hook - gets access token for the resource\n */\n protected async auth(params: { config?: Config }): Promise<void> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n // If token is provided in config, use it directly\n if (cfg.token) {\n logger.debug(\n `Using provided access token from config: ${this.maskToken(cfg.token)}`,\n );\n this.accessToken = cfg.token;\n return;\n }\n\n // Fetch access token from control API if needed\n if (\n !this.accessToken &&\n this.resourceName &&\n this.resourceType &&\n !cfg.token\n ) {\n try {\n const controlApi = new ControlAPI(cfg);\n const client = (controlApi as any).getClient(cfg);\n\n const request =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const runtime = new $Util.RuntimeOptions({});\n const response = await client.getAccessTokenWithOptions(request, {}, runtime);\n\n this.accessToken = response.body?.data?.accessToken;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}: ${this.maskToken(this.accessToken || \"\")}`,\n );\n } catch (error) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${error}`,\n );\n }\n }\n }\n\n /**\n * Mask token for logging\n */\n protected maskToken(token: string): string {\n if (!token || token.length <= 8) {\n return \"***\";\n }\n return `${token.substring(0, 4)}...${token.substring(token.length - 4)}`;\n }\n\n /**\n * Prepare request headers\n */\n protected prepareHeaders(params: {\n headers?: Record<string, string>;\n config?: Config;\n }): Record<string, string> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n const reqHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"AgentRunDataClient-Node/1.0\",\n \"Agentrun-Access-Token\": cfg.token || this.accessToken || \"\",\n ...cfg.headers,\n ...(params.headers || {}),\n };\n\n return reqHeaders;\n }\n\n /**\n * Make an HTTP request\n */\n protected async makeRequest<T = any>(params: {\n method: string;\n url: string;\n data?: any;\n headers?: Record<string, string>;\n query?: Record<string, any>;\n config?: Config;\n }): Promise<T> {\n const { method, url, data, headers, query, config } = params;\n\n // Prepare headers\n const reqHeaders = this.prepareHeaders({ headers, config });\n\n // Add query parameters to URL\n let finalUrl = url;\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach((v) => urlObj.searchParams.append(key, String(v)));\n } else {\n urlObj.searchParams.append(key, String(value));\n }\n }\n });\n finalUrl = urlObj.toString();\n }\n\n logger.debug(\n `${method} ${finalUrl} headers=${JSON.stringify(reqHeaders)} data=${JSON.stringify(data)}`,\n );\n\n try {\n const cfg = Config.withConfigs(this.config, config);\n const response = await fetch(finalUrl, {\n method,\n headers: reqHeaders,\n body: data ? JSON.stringify(data) : undefined,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n const responseText = await response.text();\n logger.debug(`Response: ${responseText}`);\n\n // Parse JSON response\n if (responseText) {\n try {\n return JSON.parse(responseText) as T;\n } catch (error) {\n const errorMsg = `Failed to parse JSON response: ${error}`;\n logger.error(errorMsg);\n\n if (response.status === 502 && responseText.includes(\"502 Bad Gateway\")) {\n throw new ClientError(response.status, \"502 Bad Gateway\");\n }\n\n throw new ClientError(response.status, errorMsg);\n }\n }\n\n return {} as T;\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n\n const errorMsg = `Request error: ${error}`;\n throw new ClientError(0, errorMsg);\n }\n }\n\n /**\n * GET request\n */\n async get<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"GET\",\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * POST request\n */\n async post<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"POST\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PUT request\n */\n async put<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"PUT\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PATCH request\n */\n async patch<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"PATCH\",\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * DELETE request\n */\n async delete<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: \"DELETE\",\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params: { \n sandboxId: string;\n config?: Config \n }): Promise<{ status: string; [key: string]: any }> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n \n return this.get({ path: \"/health\", config: params.config });\n };\n\n /**\n * Create sandbox from template\n */\n createSandbox = async (params: {\n templateName: string;\n sandboxIdleTimeoutSeconds?: number;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n templateName: params.templateName,\n config: params.config,\n });\n\n return this.post({\n path: \"/\",\n data: {\n templateName: params.templateName,\n sandboxIdleTimeoutSeconds: params.sandboxIdleTimeoutSeconds || 600,\n },\n });\n };\n\n /**\n * Delete sandbox\n */\n deleteSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.delete({ path: \"/\" });\n };\n\n /**\n * Stop sandbox\n */\n stopSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.post({ path: \"/stop\" });\n };\n\n /**\n * Get sandbox info\n */\n getSandbox = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.get({ path: \"/\" });\n };\n}\n","/**\n * Browser Sandbox Data API\n *\n * This module provides data API methods for Browser sandboxes.\n * 此模块提供浏览器沙箱的数据 API 方法。\n */\n\nimport * as fs from \"fs\";\n\nimport { Config } from \"../../utils/config\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\nimport { SandboxDataAPI } from \"./sandbox-data\";\n\n/**\n * Browser Data API\n *\n * Provides methods for interacting with Browser sandbox data endpoints.\n */\nexport class BrowserDataAPI extends SandboxDataAPI {\n protected sandboxId: string;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n // Set namespace to include sandboxId for CDP/VNC URL generation\n namespace: `sandboxes/${params.sandboxId}`,\n });\n this.sandboxId = params.sandboxId;\n }\n\n /**\n * Generate the WebSocket URL for Chrome DevTools Protocol (CDP) connection\n */\n getCdpUrl(record?: boolean): string {\n const cdpUrl = this.withPath(\"/ws/automation\").replace(\"http\", \"ws\");\n const url = new URL(cdpUrl);\n\n url.searchParams.set(\"tenantId\", this.config.accountId);\n if (record) {\n url.searchParams.set(\"recording\", \"true\");\n }\n\n return url.toString();\n }\n\n /**\n * Generate the WebSocket URL for VNC (Virtual Network Computing) live view connection\n */\n getVncUrl(record?: boolean): string {\n const vncUrl = this.withPath(\"/ws/liveview\").replace(\"http\", \"ws\");\n const url = new URL(vncUrl);\n\n url.searchParams.set(\"tenantId\", this.config.accountId);\n if (record) {\n url.searchParams.set(\"recording\", \"true\");\n }\n\n return url.toString();\n }\n\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.get({ path: \"/recordings\", config: params?.config });\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.delete({ path: `/recordings/${params.filename}`, config: params.config });\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.getVideo({\n path: `/recordings/${params.filename}`,\n savePath: params.savePath,\n });\n };\n\n /**\n * Helper method to download video file\n */\n protected async getVideo(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n\n // Prepare headers with auth\n const cfg = Config.withConfigs(this.config, params.config);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: cfg });\n\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download video error: ${error}`);\n throw new ClientError(0, `Download video error: ${error}`);\n }\n }\n}\n","/**\n * Sandbox Data Models\n *\n * 此模块定义 Sandbox 相关的所有数据模型。\n * This module defines all data models related to Sandbox.\n */\n\nimport { Status, PageableInput } from \"../utils/model\";\n\n/**\n * Template type enum\n */\nexport enum TemplateType {\n CODE_INTERPRETER = \"CodeInterpreter\",\n BROWSER = \"Browser\",\n AIO = \"AllInOne\",\n}\n\n/**\n * Sandbox state enum\n */\nexport enum SandboxState {\n CREATING = \"Creating\",\n RUNNING = \"Running\",\n READY = \"READY\", // API返回的就绪状态,等同于Running\n STOPPED = \"Stopped\",\n FAILED = \"Failed\",\n DELETING = \"Deleting\",\n}\n\n/**\n * Template network mode enum\n */\nexport enum TemplateNetworkMode {\n PUBLIC = \"PUBLIC\",\n PRIVATE = \"PRIVATE\",\n PUBLIC_AND_PRIVATE = \"PUBLIC_AND_PRIVATE\",\n}\n\n/**\n * OSS permission enum\n */\nexport enum TemplateOSSPermission {\n READ_WRITE = \"READ_WRITE\",\n READ_ONLY = \"READ_ONLY\",\n}\n\n/**\n * Code language enum\n */\nexport enum CodeLanguage {\n PYTHON = \"python\",\n}\n\n/**\n * Template network configuration\n */\nexport interface TemplateNetworkConfiguration {\n networkMode?: TemplateNetworkMode;\n securityGroupId?: string;\n vpcId?: string;\n vswitchIds?: string[];\n}\n\n/**\n * Template OSS configuration\n */\nexport interface TemplateOssConfiguration {\n bucketName: string;\n mountPoint: string;\n permission?: TemplateOSSPermission;\n prefix: string;\n region: string;\n}\n\n/**\n * Template log configuration\n */\nexport interface TemplateLogConfiguration {\n project?: string;\n logstore?: string;\n}\n\n/**\n * Template credential configuration\n */\nexport interface TemplateCredentialConfiguration {\n credentialName?: string;\n}\n\n/**\n * Template ARMS configuration\n */\nexport interface TemplateArmsConfiguration {\n armsLicenseKey?: string;\n enableArms: boolean;\n}\n\n/**\n * Template container configuration\n */\nexport interface TemplateContainerConfiguration {\n image?: string;\n command?: string[];\n}\n\n/**\n * Template MCP options\n */\nexport interface TemplateMcpOptions {\n enabledTools?: string[];\n transport?: string;\n}\n\n/**\n * Template MCP state\n */\nexport interface TemplateMcpState {\n accessEndpoint?: string;\n status?: string;\n statusReason?: string;\n}\n\n/**\n * Template create input\n */\nexport interface TemplateCreateInput {\n templateName?: string;\n templateType: TemplateType;\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n templateConfiguration?: Record<string, unknown>;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n}\n\n/**\n * Template update input\n */\nexport interface TemplateUpdateInput {\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n}\n\n/**\n * Template list input\n */\nexport interface TemplateListInput extends PageableInput {\n templateType?: TemplateType;\n}\n\n/**\n * Sandbox create input\n */\nexport interface SandboxCreateInput {\n templateName: string;\n sandboxIdleTimeoutSeconds?: number;\n}\n\n/**\n * Sandbox list input\n */\nexport interface SandboxListInput {\n maxResults?: number;\n nextToken?: string;\n status?: string;\n templateName?: string;\n templateType?: TemplateType;\n}\n\n/**\n * Template data\n */\nexport interface TemplateData {\n templateArn?: string;\n templateId?: string;\n templateName?: string;\n templateType?: TemplateType;\n cpu?: number;\n memory?: number;\n createdAt?: string;\n description?: string;\n executionRoleArn?: string;\n lastUpdatedAt?: string;\n resourceName?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n status?: Status;\n statusReason?: string;\n diskSize?: number;\n}\n\n/**\n * Sandbox data\n */\nexport interface SandboxData {\n sandboxId?: string;\n sandboxName?: string;\n templateId?: string;\n templateName?: string;\n state?: SandboxState;\n stateReason?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n sandboxIdleTimeoutSeconds?: number;\n}\n\n/**\n * Code execution result\n */\nexport interface ExecuteCodeResult {\n stdout?: string;\n stderr?: string;\n exitCode?: number;\n error?: string;\n}\n\n/**\n * File info\n */\nexport interface FileInfo {\n name: string;\n path: string;\n size?: number;\n isDirectory?: boolean;\n modifiedAt?: string;\n}\n\nexport { Status };\n","/**\n * Code Interpreter Sandbox Data API\n *\n * This module provides data API methods for Code Interpreter sandboxes.\n * 此模块提供代码解释器沙箱的数据 API 方法。\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport { Config } from \"../../utils/config\";\nimport { ClientError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\nimport { CodeLanguage } from \"../model\";\n\nimport { SandboxDataAPI } from \"./sandbox-data\";\n\n/**\n * Code Interpreter Data API\n *\n * Provides methods for interacting with Code Interpreter sandbox data endpoints.\n */\nexport class CodeInterpreterDataAPI extends SandboxDataAPI {\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n // Set namespace to include sandboxId for correct API path generation\n namespace: `sandboxes/${params.sandboxId}`,\n });\n }\n\n /**\n * List directory contents\n */\n async listDirectory(params?: {\n path?: string;\n depth?: number;\n config?: Config;\n }): Promise<any> {\n const query: Record<string, any> = {};\n if (params?.path !== undefined) {\n query.path = params.path;\n }\n if (params?.depth !== undefined) {\n query.depth = params.depth;\n }\n\n return this.get({ path: \"/filesystem\", query, config: params?.config });\n }\n\n /**\n * Get file/directory stats\n */\n async stat(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: \"/filesystem/stat\", query, config: params.config });\n }\n\n /**\n * Create directory\n */\n async mkdir(params: {\n path: string;\n parents?: boolean;\n mode?: string;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n parents: params.parents !== undefined ? params.parents : true,\n mode: params.mode || \"0755\",\n };\n return this.post({ path: \"/filesystem/mkdir\", data, config: params.config });\n }\n\n /**\n * Move file or directory\n */\n async moveFile(params: {\n source: string;\n destination: string;\n config?: Config;\n }): Promise<any> {\n const data = {\n source: params.source,\n destination: params.destination,\n };\n return this.post({ path: \"/filesystem/move\", data, config: params.config });\n }\n\n /**\n * Remove file or directory\n */\n async removeFile(params: { path: string; config?: Config }): Promise<any> {\n const data = {\n path: params.path,\n };\n return this.post({ path: \"/filesystem/remove\", data, config: params.config });\n }\n\n /**\n * List code execution contexts\n */\n async listContexts(params?: { config?: Config }): Promise<any> {\n return this.get({ path: \"/contexts\", config: params?.config });\n }\n\n /**\n * Create a new code execution context\n */\n async createContext(params?: {\n language?: CodeLanguage;\n cwd?: string;\n config?: Config;\n }): Promise<any> {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n // Validate language parameter\n if (language !== \"python\" && language !== \"javascript\") {\n throw new Error(\n `language must be 'python' or 'javascript', got: ${language}`,\n );\n }\n\n const data: Record<string, any> = {\n cwd,\n language,\n };\n return this.post({ path: \"/contexts\", data, config: params?.config });\n }\n\n /**\n * Get context details\n */\n async getContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.get({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Execute code in a context\n */\n async executeCode(params: {\n code: string;\n contextId?: string;\n language?: CodeLanguage;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const { code, contextId, language, timeout = 30, config } = params;\n\n if (language && language !== \"python\" && language !== \"javascript\") {\n throw new Error(\n `language must be 'python' or 'javascript', got: ${language}`,\n );\n }\n\n const data: Record<string, any> = {\n code,\n };\n\n if (timeout !== undefined) {\n data.timeout = timeout;\n }\n if (language !== undefined) {\n data.language = language;\n }\n if (contextId !== undefined) {\n data.contextId = contextId;\n }\n\n return this.post({ path: \"/contexts/execute\", data, config });\n }\n\n /**\n * Delete a context\n */\n async deleteContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Read file contents\n */\n async readFile(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: \"/files\", query, config: params.config });\n }\n\n /**\n * Write file contents\n */\n async writeFile(params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n content: params.content,\n mode: params.mode || \"644\",\n encoding: params.encoding || \"utf-8\",\n createDir: params.createDir !== undefined ? params.createDir : true,\n };\n return this.post({ path: \"/files\", data, config: params.config });\n }\n\n /**\n * Upload file to sandbox\n */\n async uploadFile(params: {\n localFilePath: string;\n targetFilePath: string;\n config?: Config;\n }): Promise<any> {\n return this.postFile({\n path: \"/filesystem/upload\",\n localFilePath: params.localFilePath,\n targetFilePath: params.targetFilePath,\n config: params.config,\n });\n }\n\n /**\n * Download file from sandbox\n */\n async downloadFile(params: {\n path: string;\n savePath: string;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const query = { path: params.path };\n return this.getFile({\n path: \"/filesystem/download\",\n savePath: params.savePath,\n query,\n config: params.config,\n });\n }\n\n /**\n * Execute shell command\n */\n async cmd(params: {\n command: string;\n cwd: string;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const data: Record<string, any> = {\n command: params.command,\n cwd: params.cwd,\n };\n\n if (params.timeout !== undefined) {\n data.timeout = params.timeout;\n }\n\n return this.post({ path: \"/processes/cmd\", data, config: params.config });\n }\n\n /**\n * List running processes\n */\n async listProcesses(params?: { config?: Config }): Promise<any> {\n return this.get({ path: \"/processes\", config: params?.config });\n }\n\n /**\n * Get process details\n */\n async getProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.get({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Kill a process\n */\n async killProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Helper method to upload file using multipart/form-data\n */\n protected async postFile(params: {\n path: string;\n localFilePath: string;\n targetFilePath: string;\n formData?: Record<string, any>;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<any> {\n const filename = path.basename(params.localFilePath);\n const url = this.withPath(params.path, params.query);\n\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n delete reqHeaders[\"Content-Type\"]; // Let fetch set it with boundary\n\n try {\n const fileContent = await fs.promises.readFile(params.localFilePath);\n\n const formData = new FormData();\n formData.append(\n \"file\",\n new Blob([fileContent]),\n filename,\n );\n\n const data = params.formData || {};\n data.path = params.targetFilePath;\n\n Object.entries(data).forEach(([key, value]) => {\n formData.append(key, String(value));\n });\n\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: \"POST\",\n headers: reqHeaders,\n body: formData,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n return response.json();\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Upload file error: ${error}`);\n throw new ClientError(0, `Upload file error: ${error}`);\n }\n }\n\n /**\n * Helper method to download file\n */\n protected async getFile(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n\n try {\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: \"GET\",\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download file error: ${error}`);\n throw new ClientError(0, `Download file error: ${error}`);\n }\n }\n}\n","/**\n * Code Interpreter Sandbox\n *\n * High-level API for code interpreter sandboxes with file, filesystem,\n * context, and process management operations.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport { ServerError } from \"../utils/exception\";\n\nimport { CodeInterpreterDataAPI } from \"./api/code-interpreter-data\";\nimport { CodeLanguage, TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * File upload/download operations\n */\nexport class FileOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the code interpreter\n */\n read = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.readFile(params);\n };\n\n /**\n * Write a file to the code interpreter\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class FileSystemOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: {\n path: string;\n parents?: boolean;\n mode?: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the code interpreter\n */\n upload = async (params: {\n localFilePath: string;\n targetFilePath: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the code interpreter\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class ProcessOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the code interpreter\n */\n cmd = async (params: {\n command: string;\n cwd: string;\n timeout?: number;\n }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class ContextOperations {\n private sandbox: CodeInterpreterSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<ContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to create context\");\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<ContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error(\"context id is not set\");\n throw new Error(\"context id is not set\");\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to get context\");\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug(\"context id is not set, use default language: python\");\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n \"context_id is required. Either pass it as parameter or create a context first.\",\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * Code Interpreter Sandbox\n *\n * High-level API for interacting with code interpreter sandboxes.\n */\nexport class CodeInterpreterSandbox extends Sandbox {\n static templateType = TemplateType.CODE_INTERPRETER;\n\n /**\n * Create a Code Interpreter Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<CodeInterpreterSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const ciSandbox = new CodeInterpreterSandbox(sandbox, config);\n return ciSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: CodeInterpreterDataAPI;\n private _file?: FileOperations;\n private _fileSystem?: FileSystemOperations;\n private _context?: ContextOperations;\n private _process?: ProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): CodeInterpreterDataAPI {\n if (!this._dataApi) {\n this._dataApi = new CodeInterpreterDataAPI({\n sandboxId: this.sandboxId || \"\",\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): FileOperations {\n if (!this._file) {\n this._file = new FileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): FileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new FileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): ContextOperations {\n if (!this._context) {\n this._context = new ContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): ProcessOperations {\n if (!this._process) {\n this._process = new ProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ sandboxId: this.sandboxId!, config: params?.config });\n };\n\n /**\n * Wait for sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for code interpreter to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`Code Interpreter is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(`[${retryCount}/${maxRetries}] Health status: not ready`);\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"Code interpreter did not become ready in time.\",\n );\n };\n\n /**\n * Execute code (convenience method delegating to context.execute)\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n return this.context.execute(params);\n };\n}\n","/**\n * AIO (All-In-One) Sandbox Data API\n *\n * This module provides a combined data API that includes both Code Interpreter\n * and Browser sandbox functionalities.\n * 此模块提供包含代码解释器和浏览器沙箱功能的组合数据 API。\n */\n\nimport { Config } from \"../../utils/config\";\nimport { BrowserDataAPI } from \"./browser-data\";\nimport { CodeInterpreterDataAPI } from \"./code-interpreter-data\";\n\n/**\n * AIO Data API\n *\n * Combines both Code Interpreter and Browser data API methods.\n */\nexport class AioDataAPI extends CodeInterpreterDataAPI {\n private browserAPI: BrowserDataAPI;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n this.browserAPI = new BrowserDataAPI({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n }\n\n // Browser API methods - delegate to browserAPI\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.browserAPI.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.browserAPI.getVncUrl(record);\n }\n\n /**\n * List browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.browserAPI.listRecordings(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.browserAPI.deleteRecording(params);\n };\n\n /**\n * Download a recording\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.browserAPI.downloadRecording(params);\n };\n}\n","/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities\n * into a single unified interface.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport { ServerError } from \"../utils/exception\";\n\nimport { AioDataAPI } from \"./api/aio-data\";\nimport { CodeLanguage, TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * File upload/download operations\n */\nexport class AioFileOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the sandbox\n */\n read = async (path: string): Promise<any> => {\n return this.sandbox.dataApi.readFile({ path });\n };\n\n /**\n * Write a file to the sandbox\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class AioFileSystemOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: {\n path: string;\n parents?: boolean;\n mode?: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the sandbox\n */\n upload = async (params: {\n localFilePath: string;\n targetFilePath: string;\n }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the sandbox\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class AioProcessOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the sandbox\n */\n cmd = async (params: {\n command: string;\n cwd: string;\n timeout?: number;\n }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class AioContextOperations {\n private sandbox: AioSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<AioContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || \"/home/user\";\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to create context\");\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<AioContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error(\"context id is not set\");\n throw new Error(\"context id is not set\");\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, \"Failed to get context\");\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug(\"context id is not set, use default language: python\");\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n \"context_id is required. Either pass it as parameter or create a context first.\",\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities.\n */\nexport class AioSandbox extends Sandbox {\n static templateType = TemplateType.AIO;\n\n /**\n * Create an AIO Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<AioSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const aioSandbox = new AioSandbox(sandbox, config);\n return aioSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: AioDataAPI;\n private _file?: AioFileOperations;\n private _fileSystem?: AioFileSystemOperations;\n private _context?: AioContextOperations;\n private _process?: AioProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): AioDataAPI {\n if (!this._dataApi) {\n this._dataApi = new AioDataAPI({\n sandboxId: this.sandboxId || \"\",\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): AioFileOperations {\n if (!this._file) {\n this._file = new AioFileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): AioFileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new AioFileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): AioContextOperations {\n if (!this._context) {\n this._context = new AioContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): AioProcessOperations {\n if (!this._process) {\n this._process = new AioProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ \n sandboxId: this.sandboxId!, \n config: params?.config \n });\n };\n\n /**\n * Wait for sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for AIO sandbox to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`✓ AIO Sandbox is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(`[${retryCount}/${maxRetries}] Health status: not ready`);\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"AIO sandbox did not become ready in time.\",\n );\n };\n\n // ========================================\n // Browser API Methods\n // ========================================\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n /**\n * List all browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n\n // ========================================\n // Code Interpreter API Methods\n // ========================================\n\n /**\n * Execute code (convenience method delegating to context.execute)\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n return this.context.execute(params);\n };\n}\n","/**\n * Base Sandbox Resource\n *\n * 此模块定义基础 Sandbox 资源类。\n * This module defines the base Sandbox resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\nimport { ControlAPI } from \"../utils/control-api\";\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport { SandboxDataAPI } from \"./api/sandbox-data\";\nimport {\n SandboxCreateInput,\n SandboxData,\n SandboxListInput,\n SandboxState,\n TemplateType,\n} from \"./model\";\n\n/**\n * Base Sandbox resource class\n */\nexport class Sandbox implements SandboxData {\n sandboxId?: string;\n sandboxName?: string;\n templateId?: string;\n templateName?: string;\n state?: SandboxState;\n stateReason?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n sandboxIdleTimeoutSeconds?: number;\n\n protected _config?: Config;\n\n constructor(data?: Partial<SandboxData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create sandbox from SDK response object\n */\n static fromInnerObject(obj: any, config?: Config): Sandbox {\n return new Sandbox(\n {\n sandboxId: obj.sandboxId,\n sandboxName: obj.sandboxName,\n templateId: obj.templateId,\n templateName: obj.templateName,\n // API returns \"status\" field, map it to \"state\"\n state: (obj.status || obj.state) as SandboxState,\n stateReason: obj.stateReason,\n createdAt: obj.createdAt,\n lastUpdatedAt: obj.lastUpdatedAt,\n sandboxIdleTimeoutSeconds: obj.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n }\n\n protected static getClient(config?: Config): $AgentRun.default {\n const controlApi = new ControlAPI(config);\n return (controlApi as any).getClient(config);\n }\n\n /**\n * Create a new Sandbox\n */\n static async create(\n input: SandboxCreateInput,\n config?: Config,\n ): Promise<Sandbox> {\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to create sandbox (async creation)\n const dataApi = new SandboxDataAPI({\n sandboxId: \"\", // Not needed for creation\n config: cfg,\n });\n\n const result = await dataApi.createSandbox({\n templateName: input.templateName,\n sandboxIdleTimeoutSeconds: input.sandboxIdleTimeoutSeconds,\n config: cfg,\n });\n\n // Check if creation was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to create sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", input.templateName);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Delete a Sandbox by ID\n */\n static async delete(params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to delete sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.deleteSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if deletion was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to delete sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Stop a Sandbox by ID\n */\n static async stop(params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to stop sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.stopSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if stop was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to stop sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n return Sandbox.fromInnerObject(data as any, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Get a Sandbox by ID\n */\n static async get(params: {\n id: string;\n templateType?: TemplateType;\n config?: Config;\n }): Promise<Sandbox> {\n const { id, templateType, config } = params;\n try {\n const cfg = Config.withConfigs(config);\n \n // Use Data API to get sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.getSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if get was successful\n if (result.code !== \"SUCCESS\") {\n throw new ClientError(\n 0,\n `Failed to get sandbox: ${result.message || \"Unknown error\"}`,\n );\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n const baseSandbox = Sandbox.fromInnerObject(data as any, config);\n \n // If templateType is specified, return the appropriate subclass\n if (templateType) {\n // Dynamically import to avoid circular dependencies\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER: {\n const { CodeInterpreterSandbox } = await import('./code-interpreter-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new CodeInterpreterSandbox(baseSandbox, config);\n return sandbox;\n }\n case TemplateType.BROWSER: {\n const { BrowserSandbox } = await import('./browser-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new BrowserSandbox(baseSandbox, config);\n return sandbox;\n }\n case TemplateType.AIO: {\n const { AioSandbox } = await import('./aio-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new AioSandbox(baseSandbox, config);\n return sandbox;\n }\n }\n }\n \n return baseSandbox;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Sandbox\", id);\n }\n Sandbox.handleError(error);\n }\n }\n\n /**\n * List Sandboxes\n */\n static async list(\n input?: SandboxListInput,\n config?: Config,\n ): Promise<Sandbox[]> {\n try {\n const client = Sandbox.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n const request = new $AgentRun.ListSandboxesRequest({\n maxResults: input?.maxResults,\n nextToken: input?.nextToken,\n status: input?.status,\n templateName: input?.templateName,\n templateType: input?.templateType,\n });\n\n const response = await client.listSandboxesWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listSandboxes called, Request ID: ${response.body?.requestId}`,\n );\n\n return (response.body?.data?.sandboxes || []).map(\n (item: $AgentRun.Sandbox) => Sandbox.fromInnerObject(item, config),\n );\n } catch (error) {\n Sandbox.handleError(error);\n }\n }\n\n /**\n * Handle API errors\n */\n protected static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this sandbox\n */\n delete = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to delete a Sandbox\");\n }\n\n const result = await Sandbox.delete({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Stop this sandbox\n */\n stop = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to stop a Sandbox\");\n }\n\n const result = await Sandbox.stop({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this sandbox's data\n */\n refresh = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error(\"sandboxId is required to refresh a Sandbox\");\n }\n\n const result = await Sandbox.get({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the sandbox is running\n */\n waitUntilRunning = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (sandbox: Sandbox) => void;\n },\n config?: Config,\n ): Promise<Sandbox> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n // API返回READY状态表示沙箱就绪可以运行\n // API returns READY status to indicate the sandbox is ready to run\n if (this.state === SandboxState.RUNNING || this.state === SandboxState.READY) {\n return this;\n }\n\n if (this.state === SandboxState.FAILED) {\n throw new Error(`Sandbox failed: ${this.stateReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Sandbox to be running after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n}\n","/**\n * Browser Sandbox\n *\n * High-level API for browser sandboxes with CDP/VNC connectivity\n * and recording management.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\n\nimport { BrowserDataAPI } from \"./api/browser-data\";\nimport { TemplateType } from \"./model\";\nimport { Sandbox } from \"./sandbox\";\n\n/**\n * Browser Sandbox\n *\n * High-level API for interacting with browser sandboxes.\n */\nexport class BrowserSandbox extends Sandbox {\n static templateType = TemplateType.BROWSER;\n\n /**\n * Create a Browser Sandbox from template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n },\n config?: Config,\n ): Promise<BrowserSandbox> {\n const sandbox = await Sandbox.create(\n {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n },\n config,\n );\n\n const browserSandbox = new BrowserSandbox(sandbox, config);\n return browserSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: BrowserDataAPI;\n\n /**\n * Get data API client\n */\n get dataApi(): BrowserDataAPI {\n if (!this._dataApi) {\n if (!this.sandboxId) {\n throw new Error(\"Sandbox ID is not set\");\n }\n\n this._dataApi = new BrowserDataAPI({\n sandboxId: this.sandboxId,\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: { config?: Config }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({ sandboxId: this.sandboxId!, config: params?.config });\n };\n\n /**\n * Wait for browser sandbox to be ready (polls health check)\n */\n waitUntilReady = async (params?: {\n maxRetries?: number;\n retryIntervalMs?: number;\n }): Promise<void> => {\n const maxRetries = params?.maxRetries || 60;\n const retryIntervalMs = params?.retryIntervalMs || 1000;\n let retryCount = 0;\n\n logger.debug(\"Waiting for browser to be ready...\");\n\n while (retryCount < maxRetries) {\n retryCount += 1;\n\n try {\n const health = await this.checkHealth();\n\n if (health.status === \"ok\") {\n logger.debug(`✓ Browser is ready! (took ${retryCount} seconds)`);\n return;\n }\n\n logger.debug(\n `[${retryCount}/${maxRetries}] Health status: ${health.code} ${health.message}`,\n );\n } catch (error) {\n logger.error(`[${retryCount}/${maxRetries}] Health check failed: ${error}`);\n }\n\n if (retryCount < maxRetries) {\n await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));\n }\n }\n\n throw new Error(\n `Health check timeout after ${maxRetries} seconds. ` +\n \"Browser did not become ready in time.\",\n );\n };\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n}\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: model_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Model Control API\n */\nexport class ModelControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create model service\n *\n * @param params - Method parameters\n * @param params.input - Model service configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created model service object\n */\n createModelService = async (params: { input: $AgentRun.CreateModelServiceInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createModelServiceWithOptions(\n new $AgentRun.CreateModelServiceRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted model service object\n */\n deleteModelService = async (params: { modelServiceName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteModelServiceWithOptions(\n modelServiceName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.input - Model service configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated model service object\n */\n updateModelService = async (params: { modelServiceName: string; input: $AgentRun.UpdateModelServiceInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateModelServiceWithOptions(\n modelServiceName,\n new $AgentRun.UpdateModelServiceRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get model service\n *\n * @param params - Method parameters\n * @param params.modelServiceName - Model service name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Model service object\n */\n getModelService = async (params: { modelServiceName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelService> => {\n const { modelServiceName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getModelServiceWithOptions(\n modelServiceName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getModelService, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelServiceName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelService;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List model services\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of model service objects\n */\n listModelServices = async (params: { input: $AgentRun.ListModelServicesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListModelServicesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listModelServicesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listModelServices, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListModelServicesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Create model proxy\n *\n * @param params - Method parameters\n * @param params.input - Model proxy configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created model proxy object\n */\n createModelProxy = async (params: { input: $AgentRun.CreateModelProxyInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createModelProxyWithOptions(\n new $AgentRun.CreateModelProxyRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted model proxy object\n */\n deleteModelProxy = async (params: { modelProxyName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteModelProxyWithOptions(\n modelProxyName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.input - Model proxy configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated model proxy object\n */\n updateModelProxy = async (params: { modelProxyName: string; input: $AgentRun.UpdateModelProxyInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateModelProxyWithOptions(\n modelProxyName,\n new $AgentRun.UpdateModelProxyRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get model proxy\n *\n * @param params - Method parameters\n * @param params.modelProxyName - Model proxy name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Model proxy object\n */\n getModelProxy = async (params: { modelProxyName: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ModelProxy> => {\n const { modelProxyName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getModelProxyWithOptions(\n modelProxyName,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getModelProxy, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([modelProxyName])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ModelProxy;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List model proxies\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of model proxy objects\n */\n listModelProxies = async (params: { input: $AgentRun.ListModelProxiesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListModelProxiesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listModelProxiesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listModelProxies, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListModelProxiesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Model Service Data Models\n *\n * 此模块定义 Model Service 相关的所有数据模型。\n * This module defines all data models related to Model Service.\n */\n\nimport { Status, PageableInput, NetworkConfig } from '../utils/model';\n\n/**\n * Backend type enum\n */\nexport type BackendType = 'proxy' | 'service';\n\nexport const BackendType = {\n PROXY: 'proxy' as BackendType,\n SERVICE: 'service' as BackendType,\n};\n\n/**\n * Model type enum\n */\nexport type ModelType =\n | 'llm'\n | 'text-embedding'\n | 'speech2text'\n | 'tts'\n | 'rerank'\n | 'moderation';\n\nexport const ModelType = {\n LLM: 'llm' as ModelType,\n TEXT_EMBEDDING: 'text-embedding' as ModelType,\n SPEECH2TEXT: 'speech2text' as ModelType,\n TTS: 'tts' as ModelType,\n RERANK: 'rerank' as ModelType,\n MODERATION: 'moderation' as ModelType,\n};\n\n/**\n * Provider enum\n */\nexport type Provider =\n | 'openai'\n | 'anthropic'\n | 'baichuan'\n | 'deepseek'\n | 'gemini'\n | 'hunyuan'\n | 'minimax'\n | 'moonshot'\n | 'spark'\n | 'stepfun'\n | 'tongyi'\n | 'vertex_ai'\n | 'wenxin'\n | 'yi'\n | 'zhipuai'\n | 'custom';\n\nexport const Provider = {\n OPENAI: 'openai' as Provider,\n ANTHROPIC: 'anthropic' as Provider,\n BAICHUAN: 'baichuan' as Provider,\n DEEPSEEK: 'deepseek' as Provider,\n GEMINI: 'gemini' as Provider,\n HUNYUAN: 'hunyuan' as Provider,\n MINIMAX: 'minimax' as Provider,\n MOONSHOT: 'moonshot' as Provider,\n SPARK: 'spark' as Provider,\n STEPFUN: 'stepfun' as Provider,\n TONGYI: 'tongyi' as Provider,\n VERTEX_AI: 'vertex_ai' as Provider,\n WENXIN: 'wenxin' as Provider,\n YI: 'yi' as Provider,\n ZHIPUAI: 'zhipuai' as Provider,\n CUSTOM: 'custom' as Provider,\n};\n\nexport type ProxyMode = 'single' | 'multi';\n\nexport const ProxyMode = {\n SINGLE: 'single' as ProxyMode,\n MULTI: 'multi' as ProxyMode,\n};\n\n/**\n * Provider settings\n */\nexport interface ProviderSettings {\n apiKey?: string;\n baseUrl?: string;\n modelNames?: string[];\n}\n\n/**\n * Model features\n */\nexport interface ModelFeatures {\n agentThought?: boolean;\n multiToolCall?: boolean;\n streamToolCall?: boolean;\n toolCall?: boolean;\n vision?: boolean;\n}\n\n/**\n * Model properties\n */\nexport interface ModelProperties {\n contextSize?: number;\n}\n\n/**\n * Model parameter rule\n */\nexport interface ModelParameterRule {\n default?: unknown;\n max?: number;\n min?: number;\n name?: string;\n required?: boolean;\n type?: string;\n}\n\n/**\n * Model info config\n */\nexport interface ModelInfoConfig {\n modelName?: string;\n modelFeatures?: ModelFeatures;\n modelProperties?: ModelProperties;\n modelParameterRules?: ModelParameterRule[];\n}\n\n/**\n * Proxy config endpoint\n */\nexport interface ProxyConfigEndpoint {\n baseUrl?: string;\n modelNames?: string[];\n modelServiceName?: string;\n weight?: number;\n}\n\n/**\n * Proxy config fallback\n */\nexport interface ProxyConfigFallback {\n modelName?: string;\n modelServiceName?: string;\n}\n\nexport interface ProxyConfigTokenRateLimiter {\n tps?: number;\n tpm?: number;\n tph?: number;\n tpd?: number;\n}\n\nexport interface ProxyConfigAIGuardrailConfig {\n checkRequest?: boolean;\n checkResponse?: boolean;\n}\n\n/**\n * Proxy config policies\n */\nexport interface ProxyConfigPolicies {\n cache?: boolean;\n concurrencyLimit?: number;\n fallbacks?: ProxyConfigFallback[];\n numRetries?: number;\n requestTimeout?: number;\n aiGuardrailConfig?: ProxyConfigAIGuardrailConfig;\n tokenRateLimiter?: ProxyConfigTokenRateLimiter;\n}\n\n/**\n * Proxy config\n */\nexport interface ProxyConfig {\n endpoints?: ProxyConfigEndpoint[];\n policies?: ProxyConfigPolicies;\n}\n\nexport interface CommonModelMutableProps {\n credentialName?: string;\n description?: string;\n networkConfiguration?: NetworkConfig;\n tags?: string[];\n}\n\nexport interface CommonModelImmutableProps {\n modelType?: ModelType;\n}\n\nexport interface CommonModelSystemProps {\n createdAt?: string;\n lastUpdatedAt?: string;\n status?: Status;\n}\n\nexport interface ModelServiceMutableProps extends CommonModelMutableProps {\n providerSettings?: ProviderSettings;\n}\n\nexport interface ModelServiceImmutableProps extends CommonModelImmutableProps {\n modelInfoConfigs?: ModelInfoConfig[];\n modelServiceName?: string;\n provider?: string;\n}\n\nexport interface ModelServiceSystemProps extends CommonModelSystemProps {\n modelServiceId?: string;\n}\n\nexport interface ModelProxyMutableProps extends CommonModelMutableProps {\n cpu?: number;\n litellmVersion?: string;\n memory?: number;\n modelProxyName?: string;\n proxyModel?: ProxyMode;\n serviceRegionId?: string;\n proxyConfig?: ProxyConfig;\n executionRoleArn?: string;\n}\n\nexport interface ModelProxyImmutableProps extends CommonModelImmutableProps {}\n\nexport interface ModelProxySystemProps extends CommonModelSystemProps {\n endpoint?: string;\n functionName?: string;\n modelProxyId?: string;\n}\n\nexport interface ModelServiceCreateInput\n extends ModelServiceImmutableProps,\n ModelServiceMutableProps {}\n\nexport interface ModelServiceUpdateInput extends ModelServiceMutableProps {}\n\nexport interface ModelServiceListInput extends PageableInput {\n modelServiceName?: string;\n modelType?: ModelType;\n provider?: string;\n}\n\n/**\n * Model proxy create input\n */\nexport interface ModelProxyCreateInput\n extends ModelServiceImmutableProps,\n ModelProxyMutableProps {}\n\n/**\n * Model proxy update input\n */\nexport interface ModelProxyUpdateInput extends ModelServiceMutableProps {\n proxyModel?: string;\n executionRoleArn?: string;\n}\n\n/**\n * Model proxy list input\n */\nexport interface ModelProxyListInput extends PageableInput {\n modelProxyName?: string;\n proxyMode?: string;\n status?: Status;\n}\n\nexport interface ModelProxyInterface\n extends ModelProxyMutableProps,\n ModelProxyImmutableProps,\n ModelProxySystemProps {}\nexport interface ModelServiceInterface\n extends ModelServiceMutableProps,\n ModelServiceImmutableProps,\n ModelServiceSystemProps {}\n\n/**\n * Model service data type (complete data structure)\n */\nexport type ModelServiceData = ModelServiceInterface;\n\n/**\n * Model proxy data type (complete data structure)\n */\nexport type ModelProxyData = ModelProxyInterface;\n\n","/**\n * Model Proxy 高层 API / Model Proxy High-Level API\n *\n * 此模块定义模型代理资源的高级API。\n * This module defines the high-level API for model proxy resources.\n */\n\nimport * as _ from 'lodash';\n\nimport { Config } from '../utils/config';\nimport { Status } from '../utils/model';\nimport { PageableInput } from '../utils/model';\nimport { ResourceBase } from '../utils/resource';\n\nimport {\n BackendType,\n ModelProxyCreateInput,\n ModelProxyImmutableProps,\n ModelProxyListInput,\n ModelProxyMutableProps,\n ModelProxySystemProps,\n ModelProxyUpdateInput,\n ProxyMode,\n} from './model';\n\n/**\n * 模型代理 / Model Proxy\n */\nexport class ModelProxy\n extends ResourceBase\n implements\n ModelProxyImmutableProps,\n ModelProxyMutableProps,\n ModelProxySystemProps\n{\n // ImmutableProps\n modelType?: ModelProxyImmutableProps['modelType'];\n\n // MutableProps\n credentialName?: string;\n description?: string;\n networkConfiguration?: ModelProxyMutableProps['networkConfiguration'];\n tags?: string[];\n cpu?: number;\n litellmVersion?: string;\n memory?: number;\n modelProxyName?: string;\n proxyModel?: ProxyMode;\n serviceRegionId?: string;\n proxyConfig?: ModelProxyMutableProps['proxyConfig'];\n executionRoleArn?: string;\n\n // SystemProps\n endpoint?: string;\n functionName?: string;\n modelProxyId?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n declare status?: ModelProxySystemProps['status'];\n\n /**\n * 获取客户端 / Get client\n * \n * @returns ModelClient 实例\n */\n private static getClient() {\n // 延迟导入以避免循环依赖\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ModelClient } = require('./client');\n return new ModelClient();\n }\n\n /**\n * 创建模型代理 / Create model proxy\n * \n * @param params - 参数 / Parameters\n * @returns 创建的模型代理对象 / Created model proxy object\n */\n static async create(params: {\n input: ModelProxyCreateInput;\n config?: Config;\n }): Promise<ModelProxy> {\n const { input, config } = params;\n return await this.getClient().create(input, config);\n }\n\n /**\n * 根据名称删除模型代理 / Delete model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型代理对象 / Deleted model proxy object\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, config } = params;\n return await this.getClient().delete(\n name,\n BackendType.PROXY,\n config\n );\n }\n\n /**\n * 根据名称更新模型代理 / Update model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型代理对象 / Updated model proxy object\n */\n static async update(params: {\n name: string;\n input: ModelProxyUpdateInput;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, input, config } = params;\n return await this.getClient().update(name, input, config);\n }\n\n /**\n * 根据名称获取模型代理 / Get model proxy by name\n * \n * @param params - 参数 / Parameters\n * @returns 模型代理对象 / Model proxy object\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ModelProxy> {\n const { name, config } = params;\n return await this.getClient().get(\n name,\n BackendType.PROXY,\n config\n );\n }\n\n /**\n * 列出模型代理(分页)/ List model proxies (paginated)\n * \n * @param pageInput - 分页参数 / Pagination parameters\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 模型代理列表 / Model proxy list\n */\n protected static async listPage(\n pageInput: PageableInput,\n config?: Config,\n kwargs?: Partial<ModelProxyListInput>\n ): Promise<ModelProxy[]> {\n return await this.getClient().list(\n {\n ...kwargs,\n ...pageInput,\n } as ModelProxyListInput,\n config\n );\n }\n\n /**\n * 列出所有模型代理 / List all model proxies\n * \n * @param options - 查询选项 / Query options\n * @param config - 配置 / Configuration\n * @returns 模型代理列表 / Model proxy list\n */\n static async listAll(options?: {\n proxyMode?: string;\n status?: Status;\n config?: Config;\n }): Promise<ModelProxy[]> {\n return await this.listAllResources(\n (m: ModelProxy) => m.modelProxyId || '',\n options?.config,\n {\n proxyMode: options?.proxyMode,\n status: options?.status,\n }\n );\n }\n\n /**\n * 更新模型代理 / Update model proxy\n * \n * @param input - 模型代理更新输入参数 / Model proxy update input parameters\n * @param config - 配置 / Configuration\n * @returns 更新后的模型代理对象 / Updated model proxy object\n */\n update = async (params: {\n input: ModelProxyUpdateInput;\n config?: Config;\n }): Promise<ModelProxy> => {\n const { input, config } = params;\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to update a ModelProxy'\n );\n }\n\n const result = await ModelProxy.update({\n name: this.modelProxyName,\n input,\n config,\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 删除模型代理 / Delete model proxy\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型代理对象 / Deleted model proxy object\n */\n delete = async (params?: { config?: Config }): Promise<ModelProxy> => {\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to delete a ModelProxy'\n );\n }\n\n return await ModelProxy.delete({ name: this.modelProxyName, config: params?.config });\n };\n\n /**\n * 刷新模型代理信息 / Refresh model proxy information\n * \n * @param params - 参数 / Parameters\n * @returns 刷新后的模型代理对象 / Refreshed model proxy object\n */\n get = async (params?: { config?: Config }): Promise<ModelProxy> => {\n if (!this.modelProxyName) {\n throw new Error(\n 'modelProxyName is required to refresh a ModelProxy'\n );\n }\n\n const result = await ModelProxy.get({\n name: this.modelProxyName,\n config: params?.config,\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 获取模型信息 / Get model information\n * \n * @param params - 参数 / Parameters\n * @param params.config - 配置 / Configuration\n * @returns 模型基本信息 / Model base information\n */\n modelInfo = async (params?: { config?: Config }): Promise<{\n apiKey: string;\n baseUrl: string;\n model?: string;\n headers?: Record<string, string>;\n }> => {\n const cfg = Config.withConfigs(this._config, params?.config);\n\n if (!this.modelProxyName) {\n throw new Error('modelProxyName is required');\n }\n if (!this.endpoint) {\n throw new Error('endpoint is required');\n }\n\n let apiKey = '';\n \n // 如果有 credentialName,从 Credential 获取\n if (this.credentialName) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { Credential } = require('../credential/credential');\n const credential = await Credential.get({\n name: this.credentialName,\n config: cfg,\n });\n apiKey = credential.credentialSecret || '';\n }\n\n // 根据 proxyMode 确定默认模型\n const defaultModel =\n this.proxyModel === 'single'\n ? _.get(this.proxyConfig, 'endpoints[0].modelNames[0]')\n : this.modelProxyName;\n\n return {\n apiKey: apiKey,\n baseUrl: this.endpoint,\n model: defaultModel,\n headers: cfg.headers,\n };\n };\n\n /**\n * 调用模型完成 / Call model completion\n * \n * @param params - 参数 / Parameters\n * @returns 完成结果 / Completion result\n */\n completions = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<\n | import('ai').StreamTextResult<Record<string, import('ai').CoreTool>, never>\n | import('ai').GenerateTextResult<Record<string, import('ai').CoreTool>, never>\n > => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelProxyName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 获取响应 / Get responses\n * \n * @param params - 参数 / Parameters\n * @returns 响应结果 / Response result\n */\n responses = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelProxyName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 等待模型代理就绪 / Wait until model proxy is ready\n * \n * @param options - 选项 / Options\n * @param config - 配置 / Configuration\n * @returns 模型代理对象 / Model proxy object\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (proxy: ModelProxy) => void;\n },\n config?: Config\n ): Promise<ModelProxy> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Model proxy failed with status: ${this.status}`);\n }\n\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for model proxy to be ready after ${options?.timeoutSeconds ?? 300} seconds`\n );\n };\n}\n","/**\n * Model Service 高层 API / Model Service High-Level API\n *\n * 此模块定义模型服务资源的高级API。\n * This module defines the high-level API for model service resources.\n */\n\nimport { Config } from '../utils/config';\nimport { Status, PageableInput } from '../utils/model';\nimport { ResourceBase } from '../utils/resource';\n\nimport {\n BackendType,\n ModelServiceCreateInput,\n ModelServiceImmutableProps,\n ModelServiceListInput,\n ModelServiceMutableProps,\n ModelServiceSystemProps,\n ModelServiceUpdateInput,\n ModelType,\n} from './model';\n\n/**\n * 模型服务 / Model Service\n */\nexport class ModelService\n extends ResourceBase\n implements\n ModelServiceImmutableProps,\n ModelServiceMutableProps,\n ModelServiceSystemProps\n{\n // ImmutableProps\n modelInfoConfigs?: ModelServiceImmutableProps['modelInfoConfigs'];\n modelServiceName?: string;\n provider?: string;\n \n // MutableProps\n credentialName?: string;\n description?: string;\n networkConfiguration?: ModelServiceMutableProps['networkConfiguration'];\n tags?: string[];\n providerSettings?: ModelServiceMutableProps['providerSettings'];\n \n // SystemProps\n modelServiceId?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n declare status?: ModelServiceSystemProps['status'];\n \n // CommonProps\n modelType?: ModelServiceImmutableProps['modelType'];\n\n /**\n * 获取客户端 / Get client\n * \n * @returns ModelClient 实例\n */\n private static getClient() {\n // 延迟导入以避免循环依赖\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ModelClient } = require('./client');\n return new ModelClient();\n }\n\n /**\n * 创建模型服务 / Create model service\n * \n * @param params - 参数 / Parameters\n * @returns 创建的模型服务对象 / Created model service object\n */\n static async create(params: {\n input: ModelServiceCreateInput;\n config?: Config;\n }): Promise<ModelService> {\n const { input, config } = params;\n return await this.getClient().create(input, config);\n }\n\n /**\n * 根据名称删除模型服务 / Delete model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 删除的模型服务对象 / Deleted model service object\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ModelService> {\n const { name, config } = params;\n return await this.getClient().delete(\n name,\n BackendType.SERVICE,\n config\n );\n }\n\n /**\n * 根据名称更新模型服务 / Update model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n */\n static async update(params: {\n name: string;\n input: ModelServiceUpdateInput;\n config?: Config;\n }): Promise<ModelService> {\n const { name, input, config } = params;\n return await this.getClient().update(name, input, config);\n }\n\n /**\n * 根据名称获取模型服务 / Get model service by name\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务对象 / Model service object\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ModelService> {\n const { name, config } = params;\n return await this.getClient().get(\n name,\n BackendType.SERVICE,\n config\n );\n }\n\n /**\n * 列出模型服务(分页)/ List model services (paginated)\n * \n * @param pageInput - 分页参数 / Pagination parameters\n * @param config - 配置 / Configuration\n * @param kwargs - 其他查询参数 / Other query parameters\n * @returns 模型服务列表 / Model service list\n */\n protected static async listPage(\n pageInput: PageableInput,\n config?: Config,\n kwargs?: Partial<ModelServiceListInput>\n ): Promise<ModelService[]> {\n return await this.getClient().list(\n {\n ...kwargs,\n ...pageInput,\n } as ModelServiceListInput,\n config\n );\n }\n\n /**\n * 列出所有模型服务 / List all model services\n * \n * @param options - 查询选项 / Query options\n * @param config - 配置 / Configuration\n * @returns 模型服务列表 / Model service list\n */\n static async listAll(options?: {\n modelType?: ModelType;\n provider?: string;\n config?: Config;\n }): Promise<ModelService[]> {\n return await this.listAllResources(\n (m: ModelService) => m.modelServiceId || '',\n options?.config,\n {\n modelType: options?.modelType,\n provider: options?.provider,\n }\n );\n }\n\n /**\n * 更新模型服务 / Update model service\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n */\n update = async (params: {\n input: ModelServiceUpdateInput;\n config?: Config;\n }): Promise<ModelService> => {\n const { input, config } = params;\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to update a ModelService'\n );\n }\n\n const result = await ModelService.update({\n name: this.modelServiceName,\n input,\n config\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 删除模型服务 / Delete model service\n * \n * @param config - 配置 / Configuration\n * @returns 删除的模型服务对象 / Deleted model service object\n */\n delete = async (params?: { config?: Config }): Promise<ModelService> => {\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to delete a ModelService'\n );\n }\n\n return await ModelService.delete({ name: this.modelServiceName, config: params?.config });\n };\n\n /**\n * 刷新模型服务信息 / Refresh model service information\n * \n * @param config - 配置 / Configuration\n * @returns 刷新后的模型服务对象 / Refreshed model service object\n */\n get = async (params?: { config?: Config }): Promise<ModelService> => {\n if (!this.modelServiceName) {\n throw new Error(\n 'modelServiceName is required to refresh a ModelService'\n );\n }\n\n const result = await ModelService.get({\n name: this.modelServiceName,\n config: params?.config\n });\n this.updateSelf(result);\n\n return this;\n };\n\n /**\n * 获取模型信息 / Get model information\n * \n * @param params - 参数 / Parameters\n * @param params.config - 配置 / Configuration\n * @returns 模型基本信息 / Model base information\n */\n modelInfo = async (params?: { config?: Config }): Promise<{\n apiKey: string;\n baseUrl: string;\n model?: string;\n headers?: Record<string, string>;\n provider?: string;\n }> => {\n const cfg = Config.withConfigs(this._config, params?.config);\n\n if (!this.providerSettings) {\n throw new Error('providerSettings is required');\n }\n if (!this.providerSettings.baseUrl) {\n throw new Error('providerSettings.baseUrl is required');\n }\n\n let apiKey = this.providerSettings.apiKey || '';\n \n // 如果没有 apiKey 但有 credentialName,从 Credential 获取\n if (!apiKey && this.credentialName) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { Credential } = require('../credential/credential');\n const credential = await Credential.get({\n name: this.credentialName,\n config: cfg,\n });\n apiKey = credential.credentialSecret || '';\n }\n\n const defaultModel =\n this.providerSettings.modelNames &&\n this.providerSettings.modelNames.length > 0\n ? this.providerSettings.modelNames[0]\n : undefined;\n\n return {\n apiKey: apiKey,\n baseUrl: this.providerSettings.baseUrl,\n model: defaultModel,\n headers: cfg.headers,\n provider: this.provider,\n };\n };\n\n /**\n * 调用模型完成 / Call model completion\n * \n * @param messages - 消息列表 / Message list\n * @param model - 模型名称(可选)/ Model name (optional)\n * @param stream - 是否流式输出 / Whether to stream output\n * @param kwargs - 其他参数 / Other parameters\n * @returns 完成结果 / Completion result\n */\n completions = async (params: {\n messages: any[];\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<\n | import('ai').StreamTextResult<Record<string, import('ai').CoreTool>, never>\n | import('ai').GenerateTextResult<Record<string, import('ai').CoreTool>, never>\n > => {\n const { messages, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelServiceName || '';\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 获取响应 / Get responses\n * \n * @param input - 输入 / Input\n * @param model - 模型名称(可选)/ Model name (optional)\n * @param stream - 是否流式输出 / Whether to stream output\n * @param kwargs - 其他参数 / Other parameters\n * @returns 响应结果 / Response result\n */\n responses = async (params: {\n input: string | any;\n model?: string;\n stream?: boolean;\n config?: Config;\n [key: string]: any;\n }): Promise<any> => {\n const { input, model, stream = false, config, ...kwargs } = params;\n const info = await this.modelInfo({ config });\n\n // 使用 AI SDK 实现\n const { generateText, streamText } = await import('ai');\n const { createOpenAI } = await import('@ai-sdk/openai');\n\n const provider = createOpenAI({\n apiKey: info.apiKey,\n baseURL: info.baseUrl,\n headers: info.headers,\n });\n\n const selectedModel = model || info.model || this.modelServiceName || '';\n\n // 将 input 转换为 messages 格式\n const messages = typeof input === 'string' \n ? [{ role: 'user' as const, content: input }]\n : input;\n\n if (stream) {\n return await streamText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n } else {\n return await generateText({\n model: provider(selectedModel),\n messages,\n ...kwargs,\n });\n }\n };\n\n /**\n * 等待模型服务就绪 / Wait until model service is ready\n * \n * @param options - 选项 / Options\n * @param config - 配置 / Configuration\n * @returns 模型服务对象 / Model service object\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (service: ModelService) => void;\n },\n config?: Config\n ): Promise<ModelService> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Model service failed with status: ${this.status}`);\n }\n\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for model service to be ready after ${options?.timeoutSeconds ?? 300} seconds`\n );\n };\n}\n","/**\n * Model Service 客户端 / Model Service Client\n *\n * 此模块提供模型服务和模型代理的客户端API。\n * This module provides the client API for model services and model proxies.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as _ from 'lodash';\n\nimport { Config } from '../utils/config';\nimport { HTTPError } from '../utils/exception';\n\nimport { ModelControlAPI } from './api/control';\nimport { BackendType, ModelProxyCreateInput, ModelProxyListInput, ModelProxyUpdateInput, ModelServiceCreateInput, ModelServiceListInput, ModelServiceUpdateInput } from './model';\nimport { ModelProxy } from './model-proxy';\nimport { ModelService } from './model-service';\n\n/**\n * Model Service 客户端 / Model Service Client\n *\n * 提供模型服务和模型代理的创建、删除、更新和查询功能。\n * Provides create, delete, update and query functions for model services and model proxies.\n */\nexport class ModelClient {\n private controlApi: ModelControlAPI;\n private config?: Config;\n\n /**\n * 初始化客户端 / Initialize client\n *\n * @param config - 配置对象,可选 / Configuration object, optional\n */\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new ModelControlAPI(config);\n }\n\n /**\n * 创建模型服务\n * Create model service\n * \n * @param params - 参数 / Parameters\n * @returns 创建的对象 / Created object\n */\n create = async (params: { input: ModelServiceCreateInput | ModelProxyCreateInput; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { input, config } = params;\n const cfg = config ?? this.config;\n \n try {\n if ('modelProxyName' in input) {\n // 处理 ModelProxyCreateInput\n const modelProxyInput = input as ModelProxyCreateInput;\n \n // 如果没有设置 proxyModel,根据 endpoints 数量自动判断\n if (!modelProxyInput.proxyModel) {\n const endpoints = _.get(modelProxyInput, 'proxyConfig.endpoints', []);\n modelProxyInput.proxyModel = endpoints.length > 1 ? 'multi' : 'single';\n }\n\n const createInput = new $AgentRun.CreateModelProxyInput({\n modelProxyName: modelProxyInput.modelProxyName,\n description: modelProxyInput.description,\n executionRoleArn: modelProxyInput.executionRoleArn,\n tags: modelProxyInput.tags,\n cpu: modelProxyInput.cpu ?? 2, // 默认值 2\n litellmVersion: modelProxyInput.litellmVersion,\n memory: modelProxyInput.memory ?? 4096, // 默认值 4096\n proxyMode: modelProxyInput.proxyModel,\n serviceRegionId: modelProxyInput.serviceRegionId,\n proxyConfig: modelProxyInput.proxyConfig,\n modelType: modelProxyInput.modelType,\n });\n\n const result = await this.controlApi.createModelProxy({\n input: createInput,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } else {\n // 处理 ModelServiceCreateInput\n const modelServiceInput = input as ModelServiceCreateInput;\n \n const createInput = new $AgentRun.CreateModelServiceInput({\n modelServiceName: modelServiceInput.modelServiceName,\n description: modelServiceInput.description,\n tags: modelServiceInput.tags,\n provider: modelServiceInput.provider,\n modelInfoConfigs: modelServiceInput.modelInfoConfigs,\n providerSettings: modelServiceInput.providerSettings,\n modelType: modelServiceInput.modelType,\n });\n\n const result = await this.controlApi.createModelService({\n input: createInput,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n }\n } catch (e) {\n if (e instanceof HTTPError) {\n const name = 'modelProxyName' in input \n ? (input as ModelProxyCreateInput).modelProxyName \n : (input as ModelServiceCreateInput).modelServiceName;\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 删除模型服务\n * Delete model service\n * \n * @param params - 参数 / Parameters\n * @returns 删除的对象 / Deleted object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n delete = async (params: { name: string; backendType?: BackendType; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, backendType, config } = params;\n const cfg = config ?? this.config;\n let error: HTTPError | null = null;\n \n // 如果是 proxy 或未指定类型,先尝试删除 proxy\n if (backendType === 'proxy' || backendType === undefined) {\n try {\n const result = await this.controlApi.deleteModelProxy({\n modelProxyName: name,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n error = e;\n } else {\n throw e;\n }\n }\n }\n\n // 如果明确指定为 proxy 且出错,抛出错误\n if (backendType === 'proxy' && error !== null) {\n throw error.toResourceError('Model', name);\n }\n\n // 尝试删除 service\n try {\n const result = await this.controlApi.deleteModelService({\n modelServiceName: name,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 更新模型服务\n * Update model service\n * \n * @param params - 参数 / Parameters\n * @returns 更新后的模型服务对象 / Updated model service object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n update = async (params: { name: string; input: ModelServiceUpdateInput | ModelProxyUpdateInput; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, input, config } = params;\n const cfg = config ?? this.config;\n \n if ('proxyModel' in input || 'executionRoleArn' in input) {\n // 处理 ModelProxyUpdateInput\n const modelProxyInput = input as ModelProxyUpdateInput;\n \n try {\n // 如果没有设置 proxyModel,根据 endpoints 数量自动判断\n if (!modelProxyInput.proxyModel && modelProxyInput.proxyModel !== undefined) {\n const endpoints = _.get(modelProxyInput, 'proxyConfig.endpoints', []);\n modelProxyInput.proxyModel = endpoints.length > 1 ? 'multi' : 'single';\n }\n \n const updateInput = new $AgentRun.UpdateModelProxyInput({\n description: modelProxyInput.description,\n executionRoleArn: modelProxyInput.executionRoleArn,\n });\n \n const result = await this.controlApi.updateModelProxy({\n modelProxyName: name,\n input: updateInput,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n } else {\n // 处理 ModelServiceUpdateInput\n const modelServiceInput = input as ModelServiceUpdateInput;\n \n try {\n const updateInput = new $AgentRun.UpdateModelServiceInput({\n description: modelServiceInput.description,\n providerSettings: modelServiceInput.providerSettings,\n });\n \n const result = await this.controlApi.updateModelService({\n modelServiceName: name,\n input: updateInput,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n }\n };\n\n /**\n * 获取模型服务\n * Get model service\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务对象 / Model service object\n * \n * @throws ResourceNotExistError - 模型服务不存在 / Model service does not exist\n */\n get = async (params: { name: string; backendType?: BackendType; config?: Config }): Promise<ModelService | ModelProxy> => {\n const { name, backendType, config } = params;\n const cfg = config ?? this.config;\n let error: HTTPError | null = null;\n \n // 如果是 proxy 或未指定类型,先尝试获取 proxy\n if (backendType === 'proxy' || backendType === undefined) {\n try {\n const result = await this.controlApi.getModelProxy({\n modelProxyName: name,\n config: cfg,\n });\n const proxy = new ModelProxy();\n Object.assign(proxy, result);\n return proxy;\n } catch (e) {\n if (e instanceof HTTPError) {\n error = e;\n } else {\n throw e;\n }\n }\n }\n\n // 如果明确指定为 proxy 且出错,抛出错误\n if (backendType === 'proxy' && error !== null) {\n throw error.toResourceError('Model', name);\n }\n\n // 尝试获取 service\n try {\n const result = await this.controlApi.getModelService({\n modelServiceName: name,\n config: cfg,\n });\n const service = new ModelService();\n Object.assign(service, result);\n return service;\n } catch (e) {\n if (e instanceof HTTPError) {\n throw e.toResourceError('Model', name);\n }\n throw e;\n }\n };\n\n /**\n * 列出模型服务\n * List model services\n * \n * @param params - 参数 / Parameters\n * @returns 模型服务列表 / Model service list\n */\n list = async (params: { input: ModelServiceListInput | ModelProxyListInput; config?: Config }): Promise<ModelService[] | ModelProxy[]> => {\n const { input, config } = params;\n const cfg = config ?? this.config;\n \n if ('modelProxyName' in input) {\n // 处理 ModelProxyListInput\n const modelProxyInput = input as ModelProxyListInput;\n \n const request = new $AgentRun.ListModelProxiesRequest({\n pageNumber: modelProxyInput.pageNumber,\n pageSize: modelProxyInput.pageSize,\n modelProxyName: modelProxyInput.modelProxyName,\n });\n \n const result = await this.controlApi.listModelProxies({\n input: request,\n config: cfg,\n });\n return (result.items || []).map(item => {\n const proxy = new ModelProxy();\n Object.assign(proxy, item);\n return proxy;\n });\n } else {\n // 处理 ModelServiceListInput\n const modelServiceInput = input as ModelServiceListInput;\n \n const request = new $AgentRun.ListModelServicesRequest({\n pageNumber: modelServiceInput.pageNumber,\n pageSize: modelServiceInput.pageSize,\n modelServiceName: modelServiceInput.modelServiceName,\n modelType: modelServiceInput.modelType,\n provider: modelServiceInput.provider,\n });\n \n const result = await this.controlApi.listModelServices({\n input: request,\n config: cfg,\n });\n return (result.items || []).map(item => {\n const service = new ModelService();\n Object.assign(service, item);\n return service;\n });\n }\n };\n}\n","/**\n * ToolSet Models\n *\n * ToolSet 相关的数据模型。\n * Data models for ToolSet.\n */\n\nimport { Status } from \"../utils/model\";\n\n/**\n * ToolSet schema type\n */\nexport enum ToolSetSchemaType {\n OPENAPI = \"OpenAPI\",\n MCP = \"MCP\",\n}\n\n/**\n * ToolSet schema\n */\nexport interface ToolSetSchema {\n /**\n * Schema type (OpenAPI, MCP)\n */\n type?: ToolSetSchemaType;\n /**\n * Schema detail (URL or inline definition)\n */\n detail?: string;\n}\n\n/**\n * ToolSet authorization configuration\n */\nexport interface ToolSetAuthorization {\n /**\n * Authorization type\n */\n type?: string;\n /**\n * API Key header name\n */\n apiKeyHeaderName?: string;\n /**\n * API Key value\n */\n apiKeyValue?: string;\n}\n\n/**\n * ToolSet specification\n */\nexport interface ToolSetSpec {\n /**\n * Schema configuration\n */\n schema?: ToolSetSchema;\n /**\n * Authorization configuration\n */\n authConfig?: ToolSetAuthorization;\n}\n\n/**\n * MCP Tool meta\n */\nexport interface MCPToolMeta {\n /**\n * Tool name\n */\n name?: string;\n /**\n * Tool description\n */\n description?: string;\n}\n\n/**\n * ToolSet status outputs\n */\nexport interface ToolSetStatusOutputs {\n /**\n * MCP server configuration\n */\n mcpServerConfig?: {\n url?: string;\n transport?: string;\n };\n /**\n * Tools list\n */\n tools?: MCPToolMeta[];\n /**\n * URLs\n */\n urls?: {\n cdpUrl?: string;\n liveViewUrl?: string;\n streamUrl?: string;\n };\n}\n\n/**\n * ToolSet status\n */\nexport interface ToolSetStatus {\n /**\n * Current status\n */\n status?: Status;\n /**\n * Status reason\n */\n statusReason?: string;\n /**\n * Outputs\n */\n outputs?: ToolSetStatusOutputs;\n}\n\n/**\n * ToolSet data interface\n */\nexport interface ToolSetData {\n name?: string;\n uid?: string;\n kind?: string;\n description?: string;\n createdTime?: string;\n generation?: number;\n labels?: Record<string, string>;\n spec?: ToolSetSpec;\n status?: ToolSetStatus;\n}\n\n/**\n * ToolSet create input\n */\nexport interface ToolSetCreateInput {\n /**\n * ToolSet name (required)\n */\n name: string;\n /**\n * Description\n */\n description?: string;\n /**\n * Labels\n */\n labels?: Record<string, string>;\n /**\n * Spec configuration\n */\n spec?: ToolSetSpec;\n}\n\n/**\n * ToolSet update input\n */\nexport interface ToolSetUpdateInput {\n /**\n * Description\n */\n description?: string;\n /**\n * Labels\n */\n labels?: Record<string, string>;\n /**\n * Spec configuration\n */\n spec?: ToolSetSpec;\n}\n\n/**\n * ToolSet list input\n */\nexport interface ToolSetListInput {\n /**\n * Prefix filter\n */\n prefix?: string;\n /**\n * Page size\n */\n pageSize?: number;\n /**\n * Next token for pagination\n */\n nextToken?: string;\n /**\n * Labels filter\n */\n labels?: Record<string, string>;\n}\n\n/**\n * JSON Schema compatible tool parameter description\n * \n * Supports complete JSON Schema fields for describing complex nested data structures.\n * JSON Schema 兼容的工具参数描述\n * \n * 支持完整的 JSON Schema 字段,能够描述复杂的嵌套数据结构。\n */\nexport class ToolSchema {\n // Basic fields / 基本字段\n type?: string;\n description?: string;\n title?: string;\n\n // Object type fields / 对象类型字段\n properties?: Record<string, ToolSchema>;\n required?: string[];\n additionalProperties?: boolean;\n\n // Array type fields / 数组类型字段\n items?: ToolSchema;\n minItems?: number;\n maxItems?: number;\n\n // String type fields / 字符串类型字段\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n format?: string; // date, date-time, email, uri, etc.\n enum?: unknown[];\n\n // Number type fields / 数值类型字段\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: number;\n exclusiveMaximum?: number;\n\n // Union types / 联合类型\n anyOf?: ToolSchema[];\n oneOf?: ToolSchema[];\n allOf?: ToolSchema[];\n\n // Default value / 默认值\n default?: unknown;\n\n constructor(data?: Partial<ToolSchema>) {\n if (data) {\n Object.assign(this, data);\n }\n }\n\n /**\n * Create ToolSchema from any OpenAPI/JSON Schema\n * 从任意 OpenAPI/JSON Schema 创建 ToolSchema\n * \n * Recursively parses all nested structures, preserving complete schema information.\n * 递归解析所有嵌套结构,保留完整的 schema 信息。\n */\n static fromAnyOpenAPISchema(schema: unknown): ToolSchema {\n if (!schema || typeof schema !== 'object') {\n return new ToolSchema({ type: 'string' });\n }\n\n const s = schema as Record<string, unknown>;\n\n // Parse properties / 解析 properties\n const propertiesRaw = s.properties as Record<string, unknown> | undefined;\n const properties = propertiesRaw\n ? Object.fromEntries(\n Object.entries(propertiesRaw).map(([key, value]) => [\n key,\n ToolSchema.fromAnyOpenAPISchema(value),\n ])\n )\n : undefined;\n\n // Parse items / 解析 items\n const itemsRaw = s.items;\n const items = itemsRaw ? ToolSchema.fromAnyOpenAPISchema(itemsRaw) : undefined;\n\n // Parse union types / 解析联合类型\n const anyOfRaw = s.anyOf as unknown[] | undefined;\n const anyOf = anyOfRaw\n ? anyOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n const oneOfRaw = s.oneOf as unknown[] | undefined;\n const oneOf = oneOfRaw\n ? oneOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n const allOfRaw = s.allOf as unknown[] | undefined;\n const allOf = allOfRaw\n ? allOfRaw.map(ToolSchema.fromAnyOpenAPISchema)\n : undefined;\n\n return new ToolSchema({\n // Basic fields\n type: s.type as string | undefined,\n description: s.description as string | undefined,\n title: s.title as string | undefined,\n // Object type\n properties,\n required: s.required as string[] | undefined,\n additionalProperties: s.additionalProperties as boolean | undefined,\n // Array type\n items,\n minItems: s.minItems as number | undefined,\n maxItems: s.maxItems as number | undefined,\n // String type\n pattern: s.pattern as string | undefined,\n minLength: s.minLength as number | undefined,\n maxLength: s.maxLength as number | undefined,\n format: s.format as string | undefined,\n enum: s.enum as unknown[] | undefined,\n // Number type\n minimum: s.minimum as number | undefined,\n maximum: s.maximum as number | undefined,\n exclusiveMinimum: s.exclusiveMinimum as number | undefined,\n exclusiveMaximum: s.exclusiveMaximum as number | undefined,\n // Union types\n anyOf,\n oneOf,\n allOf,\n // Default value\n default: s.default,\n });\n }\n\n /**\n * Convert to standard JSON Schema format\n * 转换为标准 JSON Schema 格式\n */\n toJSONSchema(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n // Basic fields / 基本字段\n if (this.type !== undefined) result.type = this.type;\n if (this.description !== undefined) result.description = this.description;\n if (this.title !== undefined) result.title = this.title;\n\n // Object type / 对象类型\n if (this.properties) {\n result.properties = Object.fromEntries(\n Object.entries(this.properties).map(([k, v]) => [k, v.toJSONSchema()])\n );\n }\n if (this.required) result.required = this.required;\n if (this.additionalProperties !== undefined) {\n result.additionalProperties = this.additionalProperties;\n }\n\n // Array type / 数组类型\n if (this.items) result.items = this.items.toJSONSchema();\n if (this.minItems !== undefined) result.minItems = this.minItems;\n if (this.maxItems !== undefined) result.maxItems = this.maxItems;\n\n // String type / 字符串类型\n if (this.pattern) result.pattern = this.pattern;\n if (this.minLength !== undefined) result.minLength = this.minLength;\n if (this.maxLength !== undefined) result.maxLength = this.maxLength;\n if (this.format) result.format = this.format;\n if (this.enum) result.enum = this.enum;\n\n // Number type / 数值类型\n if (this.minimum !== undefined) result.minimum = this.minimum;\n if (this.maximum !== undefined) result.maximum = this.maximum;\n if (this.exclusiveMinimum !== undefined) {\n result.exclusiveMinimum = this.exclusiveMinimum;\n }\n if (this.exclusiveMaximum !== undefined) {\n result.exclusiveMaximum = this.exclusiveMaximum;\n }\n\n // Union types / 联合类型\n if (this.anyOf) result.anyOf = this.anyOf.map((s) => s.toJSONSchema());\n if (this.oneOf) result.oneOf = this.oneOf.map((s) => s.toJSONSchema());\n if (this.allOf) result.allOf = this.allOf.map((s) => s.toJSONSchema());\n\n // Default value / 默认值\n if (this.default !== undefined) result.default = this.default;\n\n return result;\n }\n}\n\n/**\n * Tool information\n * 工具信息\n */\nexport class ToolInfo {\n name?: string;\n description?: string;\n parameters?: ToolSchema;\n\n constructor(data?: Partial<ToolInfo>) {\n if (data) {\n this.name = data.name;\n this.description = data.description;\n this.parameters = data.parameters;\n }\n }\n\n /**\n * Create ToolInfo from MCP tool\n * 从 MCP tool 创建 ToolInfo\n */\n static fromMCPTool(tool: unknown): ToolInfo {\n if (!tool) {\n throw new Error('MCP tool is required');\n }\n\n let toolName: string | undefined;\n let toolDescription: string | undefined;\n let inputSchema: unknown;\n\n // Handle MCP Tool object / 处理 MCP Tool 对象\n if (typeof tool === 'object' && tool !== null) {\n const t = tool as Record<string, unknown>;\n \n if ('name' in t) {\n toolName = t.name as string;\n toolDescription = t.description as string | undefined;\n inputSchema = t.inputSchema || t.input_schema;\n } else {\n throw new Error(`Unsupported MCP tool format: ${typeof tool}`);\n }\n } else {\n throw new Error(`Unsupported MCP tool format: ${typeof tool}`);\n }\n\n if (!toolName) {\n throw new Error('MCP tool must have a name');\n }\n\n // Build parameters schema / 构建参数 schema\n let parameters: ToolSchema | undefined;\n if (inputSchema) {\n parameters = ToolSchema.fromAnyOpenAPISchema(inputSchema);\n }\n\n return new ToolInfo({\n name: toolName,\n description: toolDescription,\n parameters: parameters || new ToolSchema({ type: 'object', properties: {} }),\n });\n }\n}\n","/**\n * OpenAPI Protocol Handler\n *\n * 处理 OpenAPI 规范的工具解析和调用。\n * Handles tool parsing and invocation for OpenAPI specification.\n */\n\nimport { Config } from \"../utils/config\";\nimport { logger } from \"../utils/log\";\nimport YAML from \"js-yaml\";\n\n/**\n * Tool parameter schema\n */\nexport interface ToolParameterSchema {\n type?: string;\n description?: string;\n properties?: Record<string, ToolParameterSchema>;\n required?: string[];\n items?: ToolParameterSchema;\n enum?: unknown[];\n default?: unknown;\n format?: string;\n minimum?: number;\n maximum?: number;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n}\n\n/**\n * Tool information\n */\nexport interface ToolInfo {\n name: string;\n description?: string;\n parameters?: ToolParameterSchema;\n operationId?: string;\n method?: string;\n path?: string;\n}\n\n/**\n * Invoke result\n */\nexport interface InvokeResult {\n status_code: number;\n headers?: Record<string, string>;\n body?: unknown;\n error?: string;\n}\n\n/**\n * OpenAPI handler options\n */\nexport interface OpenAPIOptions {\n /** OpenAPI schema (JSON string or object) */\n schema: string | Record<string, unknown>;\n /** Base URL for API calls */\n baseUrl?: string;\n /** Default headers for all requests */\n headers?: Record<string, string>;\n /** Default query parameters */\n queryParams?: Record<string, string>;\n /** Configuration */\n config?: Config;\n}\n\n/**\n * OpenAPI Handler class\n *\n * Parses OpenAPI schema and provides tool invocation capabilities.\n */\nexport class OpenAPI {\n private _schema: Record<string, unknown>;\n private _baseUrl: string;\n private _defaultHeaders: Record<string, string>;\n private _defaultQueryParams: Record<string, string>;\n private _config?: Config;\n private _tools: Map<string, ToolInfo> = new Map();\n\n constructor(options: OpenAPIOptions) {\n // Parse schema if it's a string\n if (typeof options.schema === \"string\") {\n // Try to parse as YAML first (since OpenAPI specs are often in YAML)\n try {\n this._schema = YAML.load(options.schema) as Record<string, unknown>;\n } catch {\n // If YAML parsing fails, try JSON\n this._schema = JSON.parse(options.schema);\n }\n } else {\n this._schema = JSON.parse(JSON.stringify(options.schema)); // Deep copy\n }\n\n // Resolve all $ref references\n this._resolveAllRefs();\n\n // Extract base URL\n this._baseUrl = options.baseUrl || this._extractBaseUrl();\n\n this._defaultHeaders = options.headers ? { ...options.headers } : {};\n this._defaultQueryParams = options.queryParams\n ? { ...options.queryParams }\n : {};\n this._config = options.config;\n\n // Parse tools from schema\n this._parseTools();\n }\n\n /**\n * Get the parsed schema\n */\n get schema(): Record<string, unknown> {\n return this._schema;\n }\n\n /**\n * Get all parsed tools\n */\n get tools(): ToolInfo[] {\n return Array.from(this._tools.values());\n }\n\n /**\n * Get a specific tool by name\n */\n getTool(name: string): ToolInfo | undefined {\n return this._tools.get(name);\n }\n\n /**\n * Invoke a tool\n */\n invokeToolAsync = async (\n name: string,\n args: Record<string, unknown> = {},\n _config?: Config,\n ): Promise<InvokeResult> => {\n const tool = this._tools.get(name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found.`);\n }\n\n const method = (tool.method || \"get\").toUpperCase();\n let path = tool.path || \"/\";\n\n // Build URL with path parameters\n const queryParams: Record<string, unknown> = {\n ...this._defaultQueryParams,\n };\n const headerParams: Record<string, string> = { ...this._defaultHeaders };\n let bodyContent: unknown = undefined;\n\n // Parse arguments into path, query, header, and body\n for (const [key, value] of Object.entries(args)) {\n if (key === \"body\") {\n bodyContent = value;\n } else if (path.includes(`{${key}}`)) {\n path = path.replace(`{${key}}`, String(value));\n } else if (typeof value === \"string\" && key.startsWith(\"X-\")) {\n // Assume header parameter\n headerParams[key] = value;\n } else {\n // Default to query parameter\n queryParams[key] = value;\n }\n }\n\n // Build full URL\n const url = new URL(path, this._baseUrl);\n for (const [key, value] of Object.entries(queryParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n\n // Make request\n try {\n const fetchOptions: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headerParams,\n },\n };\n\n if (bodyContent && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n fetchOptions.body = JSON.stringify(bodyContent);\n }\n\n const response = await fetch(url.toString(), fetchOptions);\n \n // Clone response to avoid \"Body already used\" error\n const responseClone = response.clone();\n let responseBody: unknown;\n \n try {\n responseBody = await response.json();\n } catch {\n // If JSON parsing fails, try text\n responseBody = await responseClone.text();\n }\n\n return {\n status_code: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: responseBody,\n };\n } catch (error) {\n return {\n status_code: 0,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n };\n\n /**\n * Synchronous invoke (wrapper for async)\n */\n invokeToolSync(\n _name: string,\n _args: Record<string, unknown> = {},\n ): InvokeResult {\n // Note: This is a simplified sync version that doesn't actually work in Node.js\n // It's mainly for testing purposes\n throw new Error(\n \"Synchronous invocation is not supported in Node.js. Use invokeToolAsync instead.\",\n );\n }\n\n // Alias for Python compatibility\n invoke_tool = (\n name: string,\n args: Record<string, unknown> = {},\n _config?: Config,\n ): Promise<InvokeResult> => {\n return this.invokeToolAsync(name, args);\n };\n\n /**\n * Extract base URL from schema\n */\n private _extractBaseUrl(): string {\n const servers = this._schema.servers as Array<{ url: string }> | undefined;\n if (servers && servers.length > 0) {\n return servers[0].url;\n }\n return \"\";\n }\n\n /**\n * Resolve all $ref references in the schema\n */\n private _resolveAllRefs(): void {\n this._schema = this._resolveRefs(this._schema, this._schema) as Record<\n string,\n unknown\n >;\n }\n\n /**\n * Recursively resolve $ref references\n */\n private _resolveRefs(obj: unknown, root: Record<string, unknown>): unknown {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => this._resolveRefs(item, root));\n }\n\n if (typeof obj === \"object\") {\n const result: Record<string, unknown> = {};\n const objRecord = obj as Record<string, unknown>;\n\n // Check for $ref\n if (\"$ref\" in objRecord && typeof objRecord.$ref === \"string\") {\n const refPath = objRecord.$ref;\n const resolved = this._resolveRef(refPath, root);\n\n // Recursively resolve the referenced object itself\n const resolvedDeep = this._resolveRefs(resolved, root);\n\n // Merge resolved reference with sibling properties\n if (typeof resolvedDeep === \"object\" && resolvedDeep !== null) {\n Object.assign(result, resolvedDeep);\n }\n\n // Add other properties (sibling to $ref)\n for (const [key, value] of Object.entries(objRecord)) {\n if (key !== \"$ref\") {\n result[key] = this._resolveRefs(value, root);\n }\n }\n\n return result;\n }\n\n // Recursively resolve all properties\n for (const [key, value] of Object.entries(objRecord)) {\n result[key] = this._resolveRefs(value, root);\n }\n\n return result;\n }\n\n return obj;\n }\n\n /**\n * Resolve a single $ref path\n */\n private _resolveRef(refPath: string, root: Record<string, unknown>): unknown {\n if (!refPath.startsWith(\"#/\")) {\n // External reference - not supported yet\n logger.warn(`External $ref not supported: ${refPath}`);\n return {};\n }\n\n const path = refPath.substring(2).split(\"/\");\n let current: unknown = root;\n\n for (const part of path) {\n if (current === null || current === undefined) {\n return {};\n }\n if (typeof current === \"object\" && !Array.isArray(current)) {\n current = (current as Record<string, unknown>)[part];\n } else {\n return {};\n }\n }\n\n return current;\n }\n\n /**\n * Parse tools from OpenAPI paths\n */\n private _parseTools(): void {\n const paths = this._schema.paths as\n | Record<string, Record<string, unknown>>\n | undefined;\n if (!paths) {\n return;\n }\n\n for (const [path, pathItem] of Object.entries(paths)) {\n if (typeof pathItem !== \"object\" || pathItem === null) {\n continue;\n }\n\n for (const [method, operation] of Object.entries(pathItem)) {\n if (\n ![\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"options\",\n \"head\",\n ].includes(method)\n ) {\n continue;\n }\n\n if (typeof operation !== \"object\" || operation === null) {\n continue;\n }\n\n const op = operation as Record<string, unknown>;\n const operationId = op.operationId as string | undefined;\n if (!operationId) {\n continue;\n }\n\n // Parse parameters\n const parameters = this._parseParameters(op, path);\n\n const tool: ToolInfo = {\n name: operationId,\n description: (op.summary as string) || (op.description as string),\n parameters,\n operationId,\n method,\n path,\n };\n\n this._tools.set(operationId, tool);\n }\n }\n }\n\n /**\n * Parse operation parameters into a schema\n */\n private _parseParameters(\n operation: Record<string, unknown>,\n _path: string,\n ): ToolParameterSchema {\n const result: ToolParameterSchema = {\n type: \"object\",\n properties: {},\n required: [],\n };\n\n // Parse path/query/header parameters\n const params = operation.parameters as\n | Array<Record<string, unknown>>\n | undefined;\n if (params && Array.isArray(params)) {\n for (const param of params) {\n const name = param.name as string;\n const schema = param.schema as ToolParameterSchema | undefined;\n const required = param.required as boolean;\n\n if (!name) continue;\n\n result.properties![name] = {\n type: schema?.type || \"string\",\n description: (param.description as string) || undefined,\n ...schema,\n };\n\n if (required) {\n result.required!.push(name);\n }\n }\n }\n\n // Parse request body\n const requestBody = operation.requestBody as\n | Record<string, unknown>\n | undefined;\n if (requestBody) {\n const content = requestBody.content as\n | Record<string, Record<string, unknown>>\n | undefined;\n if (content) {\n const jsonContent = content[\"application/json\"];\n if (jsonContent && jsonContent.schema) {\n result.properties![\"body\"] =\n jsonContent.schema as ToolParameterSchema;\n if (requestBody.required) {\n result.required!.push(\"body\");\n }\n }\n }\n }\n\n return result;\n }\n}\n\n/**\n * ApiSet class for unified tool invocation\n * 统一的工具集接口,支持 OpenAPI 和 MCP 工具\n */\nexport class ApiSet {\n private _tools: Map<string, ToolInfo>;\n private _invoker: any; // Can be OpenAPI or MCP invoker\n private _baseUrl?: string;\n private _defaultHeaders: Record<string, string>;\n private _defaultQueryParams: Record<string, unknown>;\n private _baseConfig?: Config;\n\n constructor(\n tools: ToolInfo[],\n invoker: any,\n baseUrl?: string,\n headers?: Record<string, string>,\n queryParams?: Record<string, unknown>,\n config?: Config,\n ) {\n this._tools = new Map(tools.filter((t) => t.name).map((t) => [t.name, t]));\n this._invoker = invoker;\n this._baseUrl = baseUrl;\n this._defaultHeaders = headers ? { ...headers } : {};\n this._defaultQueryParams = queryParams ? { ...queryParams } : {};\n this._baseConfig = config;\n }\n\n /**\n * Invoke a tool by name\n * 调用指定的工具\n */\n invoke = async (\n name: string,\n args: Record<string, unknown> = {},\n config?: Config,\n ): Promise<Record<string, unknown>> => {\n if (!this._tools.has(name)) {\n throw new Error(`Tool '${name}' not found.`);\n }\n\n // Convert arguments from non-serializable types\n const convertedArgs = this._convertArguments(args);\n\n // Merge configurations: prioritize passed config, otherwise use base_config\n const effectiveConfig = Config.withConfigs(this._baseConfig, config);\n\n // Call the actual invoker\n if (typeof this._invoker.invokeToolAsync === \"function\") {\n return await this._invoker.invokeToolAsync(\n name,\n convertedArgs,\n effectiveConfig\n );\n } else if (typeof this._invoker.invoke_tool === \"function\") {\n return await this._invoker.invoke_tool(name, convertedArgs, effectiveConfig);\n } else if (typeof this._invoker === \"function\") {\n return await this._invoker(name, convertedArgs);\n } else {\n throw new Error(\"Invalid invoker provided.\");\n }\n };\n\n /**\n * Get all tools\n * 返回所有工具列表\n */\n get tools(): ToolInfo[] {\n return Array.from(this._tools.values());\n }\n\n /**\n * Get a specific tool\n * 获取指定名称的工具\n */\n getTool(name: string): ToolInfo | undefined {\n return this._tools.get(name);\n }\n\n /**\n * Convert arguments from framework-specific types to native JavaScript types\n * 将常见框架类型转换为 JavaScript 原生类型\n * \n * Purpose: Ensure we send JSON-serializable data to OpenAPI\n * 目的:确保我们发送到 OpenAPI 的 JSON body 是可以被序列化的\n */\n private _convertToNative(value: unknown): unknown {\n // Basic types\n if (\n value === null ||\n value === undefined ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n\n // Arrays\n if (Array.isArray(value)) {\n return value.map((item) => this._convertToNative(item));\n }\n\n // Plain objects\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n\n // Handle objects with toJSON method\n if (typeof obj.toJSON === \"function\") {\n try {\n return this._convertToNative(obj.toJSON());\n } catch {\n // Ignore and continue\n }\n }\n\n // Handle plain objects\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n result[k] = this._convertToNative(v);\n }\n return result;\n }\n\n // Cannot convert, return original value\n return value;\n }\n\n /**\n * Convert arguments dictionary\n * 转换参数字典\n */\n private _convertArguments(\n args?: Record<string, unknown>\n ): Record<string, unknown> | undefined {\n if (!args || typeof args !== \"object\") {\n return args;\n }\n\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(args)) {\n result[k] = this._convertToNative(v);\n }\n return result;\n }\n\n /**\n * Create ApiSet from MCP tools\n * 从 MCP tools 创建 ApiSet\n * \n * @param tools - MCP tools list or single tool / MCP tools 列表或单个工具\n * @param mcpClient - MCP client (MCPToolSet instance) / MCP 客户端(MCPToolSet 实例)\n * @param config - Configuration object / 配置对象\n */\n static fromMCPTools(params: {\n tools: unknown;\n mcpClient: any;\n config?: Config;\n }): ApiSet {\n const { tools, mcpClient, config } = params;\n\n // Get tools list / 获取工具列表\n const toolInfos: ToolInfo[] = [];\n let toolArray: unknown[];\n\n // If tools is a single tool, convert to array\n // 如果 tools 是单个工具,转换为列表\n if (Array.isArray(tools)) {\n toolArray = tools;\n } else if (tools) {\n toolArray = [tools];\n } else {\n toolArray = [];\n }\n\n for (const tool of toolArray) {\n if (!tool) {\n continue;\n }\n\n try {\n // Use ToolInfo.fromMCPTool to parse the tool\n // 使用 ToolInfo.fromMCPTool 解析工具\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n const toolInfo = ToolInfo.fromMCPTool(tool);\n toolInfos.push(toolInfo);\n } catch (error) {\n logger.warn(`Failed to parse MCP tool:`, error);\n continue;\n }\n }\n\n // Create invoker wrapper / 创建调用器包装\n class MCPInvoker {\n constructor(private mcpClient: any, private config?: Config) {}\n\n invokeToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<Record<string, unknown>> => {\n const cfg = Config.withConfigs(this.config, config);\n return await this.mcpClient.callToolAsync(name, args, cfg);\n };\n }\n\n const invoker = new MCPInvoker(mcpClient, config);\n\n return new ApiSet(toolInfos, invoker, undefined, undefined, undefined, config);\n }\n}\n","/**\n * MCP Protocol Handler\n * MCP 协议处理\n * \n * Handles tool invocations for MCP (Model Context Protocol).\n * 处理 MCP(Model Context Protocol)协议的工具调用。\n */\n\nimport { Config } from \"../../utils/config\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * MCP Session\n * \n * Manages an MCP session connection.\n * 管理 MCP 会话连接。\n */\nexport class MCPSession {\n private url: string;\n private config: Config;\n private client: any; // Will be typed when @modelcontextprotocol/sdk is installed\n private clientSession: any;\n\n constructor(url: string, config?: Config) {\n this.url = url;\n this.config = Config.withConfigs(config);\n }\n\n /**\n * Create and initialize the session\n * 创建并初始化会话\n */\n connect = async (_params?: { config?: Config }): Promise<any> => {\n try {\n // Dynamically import MCP SDK\n const { Client } = await import(\"@modelcontextprotocol/sdk/client/index.js\");\n const { SSEClientTransport } = await import(\"@modelcontextprotocol/sdk/client/sse.js\");\n\n // Create SSE transport\n // Note: SSEClientTransport does not support timeout or headers in constructor\n const transport = new SSEClientTransport(new URL(this.url));\n\n // Create client\n this.client = new Client(\n {\n name: \"agentrun-nodejs-client\",\n version: \"1.0.0\",\n },\n {\n capabilities: {},\n }\n );\n\n // Connect\n await this.client.connect(transport);\n\n return this.client;\n } catch (error) {\n logger.error(\"Failed to create MCP session:\", error);\n throw error;\n }\n };\n\n /**\n * Close the session\n * 关闭会话\n */\n close = async (_params?: { config?: Config }): Promise<void> => {\n if (this.client) {\n try {\n await this.client.close();\n } catch (error) {\n logger.error(\"Failed to close MCP session:\", error);\n }\n }\n };\n\n /**\n * Get toolsets\n * 获取工具集\n */\n toolsets(config?: Config): MCPToolSet {\n const cfg = Config.withConfigs(this.config, config);\n return new MCPToolSet(this.url + \"/toolsets\", cfg);\n }\n}\n\n/**\n * MCP Tool Set\n * \n * Manages MCP tools and provides invocation capabilities.\n * 管理 MCP 工具并提供调用功能。\n */\nexport class MCPToolSet {\n private url: string;\n private config: Config;\n\n constructor(url: string, config?: Config) {\n this.url = url;\n this.config = Config.withConfigs(config);\n }\n\n /**\n * Create a new session\n * 创建新会话\n */\n newSession(config?: Config): MCPSession {\n const cfg = Config.withConfigs(this.config, config);\n return new MCPSession(this.url, cfg);\n }\n\n /**\n * List available tools (async)\n * 列出可用工具(异步)\n */\n toolsAsync = async (params?: { config?: Config }): Promise<any[]> => {\n const session = this.newSession(params?.config);\n try {\n const client = await session.connect();\n const result = await client.listTools();\n return result.tools || [];\n } finally {\n await session.close();\n }\n };\n\n /**\n * List available tools (sync wrapper)\n * 列出可用工具(同步包装)\n * \n * Note: This is a convenience method that wraps the async version.\n * In Node.js, prefer using toolsAsync() directly.\n */\n tools(config?: Config): Promise<any[]> {\n return this.toolsAsync({ config });\n }\n\n /**\n * Call a tool (async)\n * 调用工具(异步)\n */\n callToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n const session = this.newSession(config);\n try {\n const client = await session.connect();\n const result = await client.callTool({\n name,\n arguments: args || {},\n });\n\n // Convert content to plain objects\n if (result.content && Array.isArray(result.content)) {\n return result.content.map((item: any) => {\n if (typeof item === 'object' && item !== null) {\n // If item has a toJSON method, use it\n if (typeof item.toJSON === 'function') {\n return item.toJSON();\n }\n // Otherwise, create a plain object copy\n return { ...item };\n }\n return item;\n });\n }\n\n return result.content || [];\n } finally {\n await session.close();\n }\n };\n\n /**\n * Call a tool (sync wrapper)\n * 调用工具(同步包装)\n * \n * Note: This is a convenience method that wraps the async version.\n * In Node.js, prefer using callToolAsync() directly.\n */\n callTool(\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> {\n return this.callToolAsync(name, args, config);\n }\n}\n","/**\n * AgentRun SDK for Node.js\n *\n * AgentRun SDK 是阿里云 AgentRun 服务的 Node.js 客户端库。\n * Provides simple and easy-to-use APIs for managing AI Agent runtime environments,\n * model services, sandbox environments, etc.\n *\n * @packageDocumentation\n */\n\nexport const VERSION = '0.0.1';\n\n// Config\nexport { Config, type ConfigOptions } from './utils/config';\n\n// Exceptions\nexport {\n AgentRunError,\n ClientError,\n ServerError,\n HTTPError,\n ResourceNotExistError,\n ResourceAlreadyExistError,\n} from './utils/exception';\n\n// Status\nexport { Status } from './utils/model';\n\n// Agent Runtime\nexport {\n AgentRuntimeClient,\n AgentRuntime,\n AgentRuntimeEndpoint,\n AgentRuntimeControlAPI,\n} from './agent-runtime';\nexport type {\n AgentRuntimeCreateInput,\n AgentRuntimeUpdateInput,\n AgentRuntimeListInput,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeCode,\n AgentRuntimeContainer,\n AgentRuntimeHealthCheckConfig,\n AgentRuntimeLogConfig,\n AgentRuntimeProtocolConfig,\n AgentRuntimeEndpointRoutingConfig,\n AgentRuntimeEndpointRoutingWeight,\n AgentRuntimeVersion,\n} from './agent-runtime';\nexport {\n AgentRuntimeArtifact,\n AgentRuntimeLanguage,\n AgentRuntimeProtocolType,\n} from './agent-runtime';\n\n// Credential\nexport {\n CredentialClient,\n Credential,\n CredentialControlAPI,\n CredentialConfig,\n} from './credential';\nexport type {\n CredentialCreateInput,\n CredentialUpdateInput,\n CredentialListInput,\n CredentialBasicAuth,\n RelatedResource,\n} from './credential';\n\n// Sandbox\nexport {\n SandboxClient,\n Sandbox,\n Template,\n BrowserSandbox,\n CodeInterpreterSandbox,\n AioSandbox,\n SandboxDataAPI,\n CodeInterpreterDataAPI,\n BrowserDataAPI,\n AioDataAPI,\n} from \"./sandbox\";\nexport { TemplateType, SandboxState, CodeLanguage, TemplateNetworkMode, TemplateOSSPermission } from \"./sandbox\";\nexport type {\n TemplateNetworkConfiguration,\n TemplateOssConfiguration,\n TemplateLogConfiguration,\n TemplateCredentialConfiguration,\n TemplateArmsConfiguration,\n TemplateContainerConfiguration,\n TemplateMcpOptions,\n TemplateMcpState,\n TemplateCreateInput,\n TemplateUpdateInput,\n TemplateListInput,\n SandboxCreateInput,\n SandboxListInput,\n TemplateData,\n SandboxData,\n ExecuteCodeResult,\n FileInfo,\n} from \"./sandbox\";\n\n// Model\nexport {\n ModelClient,\n ModelService,\n ModelProxy,\n ModelControlAPI,\n} from './model';\nexport type {\n ModelServiceCreateInput,\n ModelServiceUpdateInput,\n ModelServiceListInput,\n ModelProxyCreateInput,\n ModelProxyUpdateInput,\n ModelProxyListInput,\n ProviderSettings,\n ModelFeatures,\n ModelProperties,\n ModelParameterRule,\n ModelInfoConfig,\n ProxyConfigEndpoint,\n ProxyConfigFallback,\n ProxyConfigPolicies,\n ProxyConfig,\n} from './model';\nexport { BackendType, ModelType, Provider } from './model';\n\n// ToolSet\nexport { ToolSetClient, ToolSet } from './toolset';\nexport type {\n ToolSetData,\n ToolSetCreateInput,\n ToolSetUpdateInput,\n ToolSetListInput,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetStatusOutputs,\n ToolSetSchema,\n ToolSetAuthorization,\n MCPToolMeta,\n} from './toolset';\nexport { ToolSetSchemaType } from './toolset';\n\n// Server\nexport { AgentRunServer } from './server';\nexport type {\n AgentRequest,\n AgentResult,\n Message,\n ServerConfig,\n} from './server';\nexport { MessageRole, EventType } from './server';\n\n// Integration\nexport * from './integration';\n","/**\n * Agent Runtime Client\n *\n * 此模块提供 Agent Runtime 的客户端 API。\n * This module provides the client API for Agent Runtime.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport { AgentRuntimeEndpoint } from \"./endpoint\";\nimport {\n AgentRuntimeCreateInput,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeListInput,\n AgentRuntimeUpdateInput,\n AgentRuntimeVersion,\n AgentRuntimeVersionListInput,\n} from \"./model\";\nimport { AgentRuntime } from \"./runtime\";\n\n/**\n * Agent Runtime Client\n *\n * 提供 Agent Runtime 的创建、删除、更新、查询和端点管理功能。\n * Provides create, delete, update, query and endpoint management functions for Agent Runtime.\n */\nexport class AgentRuntimeClient {\n private config?: Config;\n private controlApi: AgentRuntimeControlAPI;\n\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new AgentRuntimeControlAPI(config);\n }\n\n /**\n * Create an Agent Runtime\n */\n create = async (params: {\n input: AgentRuntimeCreateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { input, config } = params;\n return AgentRuntime.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete an Agent Runtime\n */\n delete = async (params: { id: string; config?: Config }): Promise<AgentRuntime> => {\n const { id, config } = params;\n return AgentRuntime.delete({ id, config: config ?? this.config });\n };\n\n /**\n * Update an Agent Runtime\n */\n update = async (params: {\n id: string;\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { id, input, config } = params;\n return AgentRuntime.update({ id, input, config: config ?? this.config });\n };\n\n /**\n * Get an Agent Runtime\n */\n get = async (params: { id: string; config?: Config }): Promise<AgentRuntime> => {\n const { id, config } = params;\n return AgentRuntime.get({ id, config: config ?? this.config });\n };\n\n /**\n * List Agent Runtimes\n */\n list = async (params?: {\n input?: AgentRuntimeListInput;\n config?: Config;\n }): Promise<AgentRuntime[]> => {\n const { input, config } = params ?? {};\n return AgentRuntime.list(input, config ?? this.config);\n };\n\n /**\n * List all Agent Runtimes (with pagination)\n */\n listAll = async (params?: {\n options?: {\n agentRuntimeName?: string;\n tags?: string;\n searchMode?: string;\n };\n config?: Config;\n }): Promise<AgentRuntime[]> => {\n const { options, config } = params ?? {};\n return AgentRuntime.listAll(options, config ?? this.config);\n };\n\n /**\n * Create an endpoint for an Agent Runtime\n */\n createEndpoint = async (params: {\n agentRuntimeId: string;\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntimeEndpoint.create({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Delete an endpoint\n */\n deleteEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, config } = params;\n return AgentRuntimeEndpoint.delete({\n agentRuntimeId,\n endpointId,\n config: config ?? this.config,\n });\n };\n\n /**\n * Update an endpoint\n */\n updateEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, input, config } = params;\n return AgentRuntimeEndpoint.update({\n agentRuntimeId,\n endpointId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Get an endpoint\n */\n getEndpoint = async (params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { agentRuntimeId, endpointId, config } = params;\n return AgentRuntimeEndpoint.get({\n agentRuntimeId,\n endpointId,\n config: config ?? this.config,\n });\n };\n\n /**\n * List endpoints for an Agent Runtime\n */\n listEndpoints = async (params: {\n agentRuntimeId: string;\n input?: AgentRuntimeEndpointListInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint[]> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntimeEndpoint.listById({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * List versions for an Agent Runtime\n */\n listVersions = async (params: {\n agentRuntimeId: string;\n input?: AgentRuntimeVersionListInput;\n config?: Config;\n }): Promise<AgentRuntimeVersion[]> => {\n const { agentRuntimeId, input, config } = params;\n return AgentRuntime.listVersionsById({\n agentRuntimeId,\n input,\n config: config ?? this.config,\n });\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime.\n *\n * @param params - Parameters including agent runtime name, endpoint name, and invocation args\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const client = new AgentRuntimeClient();\n * const response = await client.invokeOpenai({\n * agentRuntimeName: \"my-runtime\",\n * agentRuntimeEndpointName: \"Default\",\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (\n params: {\n agentRuntimeName: string;\n agentRuntimeEndpointName?: string;\n } & InvokeArgs,\n ) => {\n const {\n agentRuntimeName,\n agentRuntimeEndpointName = \"Default\",\n messages,\n stream,\n config,\n } = params;\n\n // Merge configs\n const cfg = Config.withConfigs(this.config, config);\n\n // Create Data API client\n const dataApi = new AgentRuntimeDataAPI(\n agentRuntimeName,\n agentRuntimeEndpointName,\n cfg,\n );\n\n return dataApi.invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: agent_runtime_control_api.yaml\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\nimport { ControlAPI } from \"../../utils/control-api\";\nimport { ClientError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Agent Runtime Control API\n */\nexport class AgentRuntimeControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create Agent Runtime\n *\n * @param params - Method parameters\n * @param params.input - Agent Runtime configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Runtime object\n */\n createAgentRuntime = async (params: { input: $AgentRun.CreateAgentRuntimeInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createAgentRuntimeWithOptions(\n new $AgentRun.CreateAgentRuntimeRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Runtime object\n */\n deleteAgentRuntime = async (params: { agentId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteAgentRuntimeWithOptions(\n agentId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - Agent Runtime configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated Runtime object\n */\n updateAgentRuntime = async (params: { agentId: string; input: $AgentRun.UpdateAgentRuntimeInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateAgentRuntimeWithOptions(\n agentId,\n new $AgentRun.UpdateAgentRuntimeRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Agent Runtime\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.request - Get request options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Runtime object\n */\n getAgentRuntime = async (params: { agentId: string; request?: $AgentRun.GetAgentRuntimeRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntime> => {\n const { agentId, request, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getAgentRuntimeWithOptions(\n agentId,\n request ?? new $AgentRun.GetAgentRuntimeRequest({}),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getAgentRuntime, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, request])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntime;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtimes\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Runtime objects\n */\n listAgentRuntimes = async (params: { input: $AgentRun.ListAgentRuntimesRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimesWithOptions(\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimes, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimesOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Create Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - Endpoint configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Endpoint object\n */\n createAgentRuntimeEndpoint = async (params: { agentId: string; input: $AgentRun.CreateAgentRuntimeEndpointInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createAgentRuntimeEndpointWithOptions(\n agentId,\n new $AgentRun.CreateAgentRuntimeEndpointRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Endpoint object\n */\n deleteAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api deleteAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.input - Endpoint configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated Endpoint object\n */\n updateAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; input: $AgentRun.UpdateAgentRuntimeEndpointInput; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n new $AgentRun.UpdateAgentRuntimeEndpointRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Agent Runtime Endpoint\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.endpointId - Endpoint ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Endpoint object\n */\n getAgentRuntimeEndpoint = async (params: { agentId: string; endpointId: string; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.AgentRuntimeEndpoint> => {\n const { agentId, endpointId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getAgentRuntimeEndpointWithOptions(\n agentId,\n endpointId,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api getAgentRuntimeEndpoint, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, endpointId])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.AgentRuntimeEndpoint;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtime Endpoints\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Endpoint objects\n */\n listAgentRuntimeEndpoints = async (params: { agentId: string; input: $AgentRun.ListAgentRuntimeEndpointsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimeEndpointsOutput> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimeEndpointsWithOptions(\n agentId,\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimeEndpoints, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimeEndpointsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Agent Runtime Versions\n *\n * @param params - Method parameters\n * @param params.agentId - Agent Runtime ID\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Version objects\n */\n listAgentRuntimeVersions = async (params: { agentId: string; input: $AgentRun.ListAgentRuntimeVersionsRequest; headers?: Record<string, string>; config?: Config }): Promise<$AgentRun.ListAgentRuntimeVersionsOutput> => {\n const { agentId, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listAgentRuntimeVersionsWithOptions(\n agentId,\n input,\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api listAgentRuntimeVersions, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([agentId, input])}\\n response: ${JSON.stringify(response.body?.data)}`,\n );\n\n return response.body?.data as $AgentRun.ListAgentRuntimeVersionsOutput;\n } catch (error: unknown) {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n}\n","/**\n * Agent Runtime Data API\n *\n * 此模块定义 Agent Runtime 的数据 API,用于调用 Agent Runtime 实例。\n * This module defines the Data API for Agent Runtime, used to invoke Agent Runtime instances.\n */\n\nimport type { ChatCompletionMessageParam } from \"openai/resources\";\nimport { Config } from \"../../utils/config\";\nimport { DataAPI, ResourceType } from \"../../utils/data-api\";\n\n/**\n * Invoke arguments for OpenAI-compatible API\n */\nexport interface InvokeArgs {\n /** Chat messages */\n messages: ChatCompletionMessageParam[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Optional config override */\n config?: Config;\n}\n\n/**\n * Agent Runtime Data API for invoking agent runtime through OpenAI-compatible API\n */\nexport class AgentRuntimeDataAPI extends DataAPI {\n constructor(\n agentRuntimeName: string,\n agentRuntimeEndpointName: string = \"Default\",\n config?: Config,\n ) {\n super(\n agentRuntimeName,\n ResourceType.Runtime,\n config,\n `agent-runtimes/${agentRuntimeName}/endpoints/${agentRuntimeEndpointName}/invocations`,\n );\n }\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n */\n async invokeOpenai(args: InvokeArgs) {\n const { messages, stream = false, config } = args;\n\n // Merge configs\n const cfg = Config.withConfigs(this.getConfig(), config);\n const apiBase = this.withPath(\"openai/v1\");\n\n // Get authenticated headers\n const [, headers] = await this.getAuthHeaders(apiBase, {}, cfg);\n\n // Use dynamic import to avoid bundling OpenAI SDK if not used\n const { default: OpenAI } = await import(\"openai\");\n\n // Create OpenAI client with custom base URL and auth headers\n const client = new OpenAI({\n apiKey: \"\", // Empty API key, we use custom headers for auth\n baseURL: apiBase,\n defaultHeaders: headers,\n timeout: cfg.timeout,\n });\n\n return client.chat.completions.create({\n model: this.getResourceName(),\n messages,\n stream,\n });\n }\n\n // Expose protected methods for use in this subclass\n private getConfig(): Config {\n return (this as any).config;\n }\n\n private getResourceName(): string {\n return (this as any).resourceName;\n }\n\n private async getAuthHeaders(\n url: string,\n headers: Record<string, string>,\n config?: Config,\n ): Promise<[string, Record<string, string>]> {\n const [authUrl, authHeaders] = await (this as any).auth(\n url,\n headers,\n undefined,\n config,\n );\n return [authUrl, authHeaders];\n }\n}\n","/**\n * Agent Runtime Endpoint Resource\n *\n * 此模块定义 Agent Runtime Endpoint 资源类。\n * This module defines the Agent Runtime Endpoint resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\n\nimport { Config } from \"../utils/config\";\nimport { HTTPError } from \"../utils/exception\";\nimport { updateObjectProperties } from \"../utils/resource\";\nimport { Status } from \"../utils/model\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport {\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeEndpointListInput,\n AgentRuntimeEndpointData,\n AgentRuntimeEndpointRoutingConfig,\n} from \"./model\";\n\n/**\n * Agent Runtime Endpoint resource class\n */\nexport class AgentRuntimeEndpoint implements AgentRuntimeEndpointData {\n // System properties\n agentRuntimeEndpointArn?: string;\n agentRuntimeEndpointId?: string;\n agentRuntimeEndpointName?: string;\n agentRuntimeId?: string;\n description?: string;\n endpointPublicUrl?: string;\n resourceName?: string;\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n targetVersion?: string;\n\n private _config?: Config;\n private _dataApi?: AgentRuntimeDataAPI;\n private _agentRuntimeName?: string;\n\n constructor(data?: Partial<AgentRuntimeEndpointData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create endpoint from SDK response object\n */\n static fromInnerObject(\n obj: $AgentRun.AgentRuntimeEndpoint,\n config?: Config,\n ): AgentRuntimeEndpoint {\n return new AgentRuntimeEndpoint(\n {\n agentRuntimeEndpointArn: obj.agentRuntimeEndpointArn,\n agentRuntimeEndpointId: obj.agentRuntimeEndpointId,\n agentRuntimeEndpointName: obj.agentRuntimeEndpointName,\n agentRuntimeId: obj.agentRuntimeId,\n description: obj.description,\n endpointPublicUrl: obj.endpointPublicUrl,\n resourceName: obj.resourceName,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n tags: obj.tags,\n targetVersion: obj.targetVersion,\n },\n config,\n );\n }\n\n private static getClient(): AgentRuntimeControlAPI {\n return new AgentRuntimeControlAPI();\n }\n\n /**\n * Create an endpoint by Agent Runtime ID\n */\n static async create(params: {\n agentRuntimeId: string;\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n // Set default targetVersion to \"LATEST\" if not provided (same as Python SDK)\n const targetVersion = input.targetVersion || 'LATEST';\n \n const result = await client.createAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n input: new $AgentRun.CreateAgentRuntimeEndpointInput({\n agentRuntimeEndpointName: input.agentRuntimeEndpointName,\n description: input.description,\n tags: input.tags,\n targetVersion: targetVersion,\n }),\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${input.agentRuntimeEndpointName}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Delete an endpoint by ID\n */\n static async delete(params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.deleteAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Update an endpoint by ID\n */\n static async update(params: {\n agentRuntimeId: string;\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.updateAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n input: new $AgentRun.UpdateAgentRuntimeEndpointInput({\n agentRuntimeEndpointName: input.agentRuntimeEndpointName,\n description: input.description,\n tags: input.tags,\n targetVersion: input.targetVersion,\n }),\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * Get an endpoint by ID\n */\n static async get(params: {\n agentRuntimeId: string;\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> {\n const { agentRuntimeId, endpointId, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const result = await client.getAgentRuntimeEndpoint({\n agentId: agentRuntimeId,\n endpointId,\n config,\n });\n return AgentRuntimeEndpoint.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\n \"AgentRuntimeEndpoint\",\n `${agentRuntimeId}/${endpointId}`,\n );\n }\n throw error;\n }\n }\n\n /**\n * List endpoints by Agent Runtime ID\n */\n static async listById(params: {\n agentRuntimeId: string;\n input?: AgentRuntimeEndpointListInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint[]> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntimeEndpoint.getClient();\n try {\n const request = new $AgentRun.ListAgentRuntimeEndpointsRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n });\n const result = await client.listAgentRuntimeEndpoints({\n agentId: agentRuntimeId,\n input: request,\n config,\n });\n return (result.items || []).map((item) =>\n AgentRuntimeEndpoint.fromInnerObject(item, config),\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", agentRuntimeId);\n }\n throw error;\n }\n }\n\n /**\n * Delete this endpoint\n */\n delete = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint> => {\n const config = params?.config;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to delete an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.delete({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this endpoint\n */\n update = async (params: {\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { input, config } = params;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to update an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.update({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n input,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this endpoint's data\n */\n refresh = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint> => {\n const config = params?.config;\n if (!this.agentRuntimeId || !this.agentRuntimeEndpointId) {\n throw new Error(\n \"agentRuntimeId and agentRuntimeEndpointId are required to refresh an endpoint\",\n );\n }\n\n const result = await AgentRuntimeEndpoint.get({\n agentRuntimeId: this.agentRuntimeId,\n endpointId: this.agentRuntimeEndpointId,\n config: config ?? this._config,\n });\n\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the endpoint is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (endpoint: AgentRuntimeEndpoint) => void;\n },\n config?: Config,\n ): Promise<AgentRuntimeEndpoint> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Endpoint failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for endpoint to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API through this endpoint\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime\n * through this specific endpoint.\n *\n * @param args - Invocation arguments\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const endpoint = await AgentRuntimeEndpoint.get({\n * agentRuntimeId: \"runtime-id\",\n * endpointId: \"endpoint-id\"\n * });\n * const response = await endpoint.invokeOpenai({\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (args: InvokeArgs) => {\n const { messages, stream, config } = args;\n\n // Merge configs\n const cfg = Config.withConfigs(this._config, config);\n\n // Create Data API client if not already created\n if (!this._dataApi) {\n // Get agent runtime name if not available\n if (!this._agentRuntimeName && this.agentRuntimeId) {\n const client = AgentRuntimeEndpoint.getClient();\n const runtime = await client.getAgentRuntime({\n agentId: this.agentRuntimeId,\n config: cfg,\n });\n this._agentRuntimeName = runtime.agentRuntimeName;\n }\n\n if (!this._agentRuntimeName) {\n throw new Error(\n \"Unable to determine agent runtime name for this endpoint\",\n );\n }\n\n this._dataApi = new AgentRuntimeDataAPI(\n this._agentRuntimeName,\n this.agentRuntimeEndpointName || \"\",\n cfg,\n );\n }\n\n return this._dataApi.invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * Agent Runtime Resource\n *\n * 此模块定义 Agent Runtime 资源类。\n * This module defines the Agent Runtime resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\n\nimport { Config } from \"../utils/config\";\nimport { HTTPError } from \"../utils/exception\";\nimport { Status, NetworkMode } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\nimport type { NetworkConfig } from \"../utils/model\";\n\nimport { AgentRuntimeControlAPI } from \"./api/control\";\nimport { AgentRuntimeDataAPI, InvokeArgs } from \"./api/data\";\nimport { AgentRuntimeEndpoint } from \"./endpoint\";\nimport {\n AgentRuntimeArtifact,\n AgentRuntimeCode,\n AgentRuntimeContainer,\n AgentRuntimeCreateInput,\n AgentRuntimeData,\n AgentRuntimeEndpointCreateInput,\n AgentRuntimeEndpointUpdateInput,\n AgentRuntimeHealthCheckConfig,\n AgentRuntimeListInput,\n AgentRuntimeLogConfig,\n AgentRuntimeProtocolConfig,\n AgentRuntimeUpdateInput,\n AgentRuntimeVersion,\n AgentRuntimeVersionListInput,\n} from \"./model\";\n\n/**\n * Agent Runtime resource class\n */\nexport class AgentRuntime implements AgentRuntimeData {\n // System properties\n agentRuntimeArn?: string;\n agentRuntimeId?: string;\n agentRuntimeName?: string;\n agentRuntimeVersion?: string;\n artifactType?: string;\n codeConfiguration?: AgentRuntimeCode;\n containerConfiguration?: AgentRuntimeContainer;\n cpu?: number;\n createdAt?: string;\n credentialName?: string;\n description?: string;\n environmentVariables?: Record<string, string>;\n executionRoleArn?: string;\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n lastUpdatedAt?: string;\n logConfiguration?: AgentRuntimeLogConfig;\n memory?: number;\n networkConfiguration?: NetworkConfig;\n port?: number;\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n resourceName?: string;\n sessionConcurrencyLimitPerInstance?: number;\n sessionIdleTimeoutSeconds?: number;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n\n private _config?: Config;\n private _dataApiCache: Record<string, AgentRuntimeDataAPI> = {};\n\n constructor(data?: Partial<AgentRuntimeData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create runtime from SDK response object\n */\n static fromInnerObject(\n obj: $AgentRun.AgentRuntime,\n config?: Config,\n ): AgentRuntime {\n return new AgentRuntime(\n {\n agentRuntimeArn: obj.agentRuntimeArn,\n agentRuntimeId: obj.agentRuntimeId,\n agentRuntimeName: obj.agentRuntimeName,\n agentRuntimeVersion: obj.agentRuntimeVersion,\n artifactType: obj.artifactType,\n codeConfiguration: obj.codeConfiguration as AgentRuntimeCode | undefined,\n containerConfiguration: obj.containerConfiguration,\n cpu: obj.cpu,\n createdAt: obj.createdAt,\n credentialName: obj.credentialName,\n description: obj.description,\n environmentVariables: obj.environmentVariables,\n executionRoleArn: obj.executionRoleArn,\n healthCheckConfiguration: obj.healthCheckConfiguration,\n lastUpdatedAt: obj.lastUpdatedAt,\n logConfiguration: obj.logConfiguration as AgentRuntimeLogConfig | undefined,\n memory: obj.memory,\n networkConfiguration: obj.networkConfiguration as NetworkConfig | undefined,\n port: obj.port,\n protocolConfiguration: obj.protocolConfiguration as AgentRuntimeProtocolConfig | undefined,\n resourceName: obj.resourceName,\n sessionConcurrencyLimitPerInstance:\n obj.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: obj.sessionIdleTimeoutSeconds,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n tags: obj.tags,\n },\n config,\n );\n }\n\n private static getClient(): AgentRuntimeControlAPI {\n return new AgentRuntimeControlAPI();\n }\n\n /**\n * Create a new Agent Runtime\n */\n static async create(params: {\n input: AgentRuntimeCreateInput;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { input, config } = params;\n const client = AgentRuntime.getClient();\n\n // Set default network configuration\n if (!input.networkConfiguration) {\n input.networkConfiguration = {};\n }\n\n // Auto-detect artifact type\n if (!input.artifactType) {\n if (input.codeConfiguration) {\n input.artifactType = AgentRuntimeArtifact.CODE;\n } else if (input.containerConfiguration) {\n input.artifactType = AgentRuntimeArtifact.CONTAINER;\n } else {\n throw new Error(\n \"Either codeConfiguration or containerConfiguration must be provided\",\n );\n }\n }\n\n try {\n const result = await client.createAgentRuntime({\n input: new $AgentRun.CreateAgentRuntimeInput({\n agentRuntimeName: input.agentRuntimeName,\n artifactType: input.artifactType,\n codeConfiguration: input.codeConfiguration\n ? new $AgentRun.CodeConfiguration({\n checksum: input.codeConfiguration.checksum,\n command: input.codeConfiguration.command,\n language: input.codeConfiguration.language,\n ossBucketName: input.codeConfiguration.ossBucketName,\n ossObjectName: input.codeConfiguration.ossObjectName,\n zipFile: input.codeConfiguration.zipFile,\n })\n : undefined,\n containerConfiguration: input.containerConfiguration\n ? new $AgentRun.ContainerConfiguration({\n command: input.containerConfiguration.command,\n image: input.containerConfiguration.image,\n })\n : undefined,\n cpu: input.cpu,\n credentialName: input.credentialName,\n description: input.description,\n environmentVariables: input.environmentVariables,\n executionRoleArn: input.executionRoleArn,\n memory: input.memory,\n networkConfiguration: input.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: input.networkConfiguration.networkMode || NetworkMode.PUBLIC, // 默认使用公网模式\n securityGroupId: input.networkConfiguration.securityGroupId,\n vpcId: input.networkConfiguration.vpcId,\n vswitchIds: input.networkConfiguration.vSwitchIds,\n })\n : undefined,\n port: input.port,\n sessionConcurrencyLimitPerInstance:\n input.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: input.sessionIdleTimeoutSeconds,\n tags: input.tags,\n }),\n config,\n });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", input.agentRuntimeName);\n }\n throw error;\n }\n }\n\n /**\n * Delete an Agent Runtime by ID\n */\n static async delete(params: {\n id: string;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, config } = params;\n const client = AgentRuntime.getClient();\n\n // First delete all endpoints\n const endpoints = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n for (const endpoint of endpoints) {\n await endpoint.delete({ config });\n }\n\n // Wait for all endpoints to be deleted\n let remaining = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n while (remaining.length > 0) {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n remaining = await AgentRuntimeEndpoint.listById({\n agentRuntimeId: id,\n config,\n });\n }\n\n try {\n const result = await client.deleteAgentRuntime({ agentId: id, config });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * Update an Agent Runtime by ID\n */\n static async update(params: {\n id: string;\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, input, config } = params;\n const client = AgentRuntime.getClient();\n try {\n const result = await client.updateAgentRuntime({\n agentId: id,\n input: new $AgentRun.UpdateAgentRuntimeInput({\n agentRuntimeName: input.agentRuntimeName,\n artifactType: input.artifactType,\n codeConfiguration: input.codeConfiguration\n ? new $AgentRun.CodeConfiguration({\n checksum: input.codeConfiguration.checksum,\n command: input.codeConfiguration.command,\n language: input.codeConfiguration.language,\n ossBucketName: input.codeConfiguration.ossBucketName,\n ossObjectName: input.codeConfiguration.ossObjectName,\n zipFile: input.codeConfiguration.zipFile,\n })\n : undefined,\n containerConfiguration: input.containerConfiguration\n ? new $AgentRun.ContainerConfiguration({\n command: input.containerConfiguration.command,\n image: input.containerConfiguration.image,\n })\n : undefined,\n cpu: input.cpu,\n credentialName: input.credentialName,\n description: input.description,\n environmentVariables: input.environmentVariables,\n executionRoleArn: input.executionRoleArn,\n memory: input.memory,\n port: input.port,\n sessionConcurrencyLimitPerInstance:\n input.sessionConcurrencyLimitPerInstance,\n sessionIdleTimeoutSeconds: input.sessionIdleTimeoutSeconds,\n tags: input.tags,\n }),\n config,\n });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * Get an Agent Runtime by ID\n */\n static async get(params: {\n id: string;\n config?: Config;\n }): Promise<AgentRuntime> {\n const { id, config } = params;\n const client = AgentRuntime.getClient();\n try {\n const result = await client.getAgentRuntime({ agentId: id, config });\n return AgentRuntime.fromInnerObject(result, config);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"AgentRuntime\", id);\n }\n throw error;\n }\n }\n\n /**\n * List Agent Runtimes\n */\n static async list(\n input?: AgentRuntimeListInput,\n config?: Config,\n ): Promise<AgentRuntime[]> {\n const client = AgentRuntime.getClient();\n const request = new $AgentRun.ListAgentRuntimesRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n agentRuntimeName: input?.agentRuntimeName,\n tags: input?.tags,\n });\n const result = await client.listAgentRuntimes({ input: request, config });\n return (result.items || []).map((item) =>\n AgentRuntime.fromInnerObject(item, config),\n );\n }\n\n /**\n * List all Agent Runtimes (with pagination)\n */\n static async listAll(\n options?: {\n agentRuntimeName?: string;\n tags?: string;\n searchMode?: string;\n },\n config?: Config,\n ): Promise<AgentRuntime[]> {\n const runtimes: AgentRuntime[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const result = await AgentRuntime.list(\n {\n pageNumber: page,\n pageSize,\n agentRuntimeName: options?.agentRuntimeName,\n tags: options?.tags,\n searchMode: options?.searchMode,\n },\n config,\n );\n\n runtimes.push(...result);\n page++;\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return runtimes.filter((r) => {\n if (!r.agentRuntimeId || seen.has(r.agentRuntimeId)) {\n return false;\n }\n seen.add(r.agentRuntimeId);\n return true;\n });\n }\n\n /**\n * List Agent Runtime versions by ID\n */\n static async listVersionsById(params: {\n agentRuntimeId: string;\n input?: AgentRuntimeVersionListInput;\n config?: Config;\n }): Promise<AgentRuntimeVersion[]> {\n const { agentRuntimeId, input, config } = params;\n const client = AgentRuntime.getClient();\n const versions: AgentRuntimeVersion[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const request = new $AgentRun.ListAgentRuntimeVersionsRequest({\n pageNumber: input?.pageNumber ?? page,\n pageSize: input?.pageSize ?? pageSize,\n });\n const result = await client.listAgentRuntimeVersions({\n agentId: agentRuntimeId,\n input: request,\n config,\n });\n\n if (result.items) {\n for (const item of result.items) {\n versions.push({\n agentRuntimeArn: item.agentRuntimeArn,\n agentRuntimeId: item.agentRuntimeId,\n agentRuntimeName: item.agentRuntimeName,\n agentRuntimeVersion: item.agentRuntimeVersion,\n description: item.description,\n lastUpdatedAt: item.lastUpdatedAt,\n });\n }\n }\n\n if (!result.items || result.items.length < pageSize) {\n break;\n }\n\n page++;\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return versions.filter((v) => {\n if (!v.agentRuntimeVersion || seen.has(v.agentRuntimeVersion)) {\n return false;\n }\n seen.add(v.agentRuntimeVersion);\n return true;\n });\n }\n\n /**\n * Delete this runtime\n */\n delete = async (params?: { config?: Config }): Promise<AgentRuntime> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to delete an Agent Runtime\");\n }\n\n const result = await AgentRuntime.delete({\n id: this.agentRuntimeId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this runtime\n */\n update = async (params: {\n input: AgentRuntimeUpdateInput;\n config?: Config;\n }): Promise<AgentRuntime> => {\n const { input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to update an Agent Runtime\");\n }\n\n const result = await AgentRuntime.update({\n id: this.agentRuntimeId,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this runtime's data\n */\n refresh = async (params?: { config?: Config }): Promise<AgentRuntime> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to refresh an Agent Runtime\");\n }\n\n const result = await AgentRuntime.get({\n id: this.agentRuntimeId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Create an endpoint for this runtime\n */\n createEndpoint = async (params: {\n input: AgentRuntimeEndpointCreateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to create an endpoint\");\n }\n\n return AgentRuntimeEndpoint.create({\n agentRuntimeId: this.agentRuntimeId,\n input,\n config: config ?? this._config,\n });\n };\n\n /**\n * Delete an endpoint from this runtime\n */\n deleteEndpoint = async (params: {\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to delete an endpoint\");\n }\n\n return AgentRuntimeEndpoint.delete({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n config: config ?? this._config,\n });\n };\n\n /**\n * Update an endpoint of this runtime\n */\n updateEndpoint = async (params: {\n endpointId: string;\n input: AgentRuntimeEndpointUpdateInput;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, input, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to update an endpoint\");\n }\n\n return AgentRuntimeEndpoint.update({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n input,\n config: config ?? this._config,\n });\n };\n\n /**\n * Get an endpoint of this runtime\n */\n getEndpoint = async (params: {\n endpointId: string;\n config?: Config;\n }): Promise<AgentRuntimeEndpoint> => {\n const { endpointId, config } = params;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to get an endpoint\");\n }\n\n return AgentRuntimeEndpoint.get({\n agentRuntimeId: this.agentRuntimeId,\n endpointId,\n config: config ?? this._config,\n });\n };\n\n /**\n * List endpoints of this runtime\n */\n listEndpoints = async (params?: { config?: Config }): Promise<AgentRuntimeEndpoint[]> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to list endpoints\");\n }\n\n return AgentRuntimeEndpoint.listById({\n agentRuntimeId: this.agentRuntimeId,\n config: config ?? this._config,\n });\n };\n\n /**\n * List versions of this runtime\n */\n listVersions = async (params?: { config?: Config }): Promise<AgentRuntimeVersion[]> => {\n const config = params?.config;\n if (!this.agentRuntimeId) {\n throw new Error(\"agentRuntimeId is required to list versions\");\n }\n\n return AgentRuntime.listVersionsById({\n agentRuntimeId: this.agentRuntimeId,\n config: config ?? this._config,\n });\n };\n\n /**\n * Wait until the runtime is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (runtime: AgentRuntime) => void;\n },\n config?: Config,\n ): Promise<AgentRuntime> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n throw new Error(`Agent Runtime failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Agent Runtime to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Wait until agent runtime reaches READY or any FAILED state\n * Similar to waitUntilReady but does not throw on FAILED states\n * Compatible with Python SDK's wait_until_ready_or_failed method\n */\n waitUntilReadyOrFailed = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (runtime: AgentRuntime) => void;\n },\n config?: Config,\n ): Promise<AgentRuntime> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n // Check if reached any final state\n if (\n this.status === Status.READY ||\n this.status === Status.CREATE_FAILED ||\n this.status === Status.UPDATE_FAILED ||\n this.status === Status.DELETE_FAILED\n ) {\n return this;\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Agent Runtime to reach final state after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n\n /**\n * Invoke agent runtime using OpenAI-compatible API\n *\n * This method provides an OpenAI-compatible interface to invoke the agent runtime.\n * It creates a Data API client and forwards the invocation request.\n *\n * @param args - Invocation arguments\n * @returns OpenAI chat completion response\n *\n * @example\n * ```typescript\n * const runtime = await AgentRuntime.get({ id: \"runtime-id\" });\n * const response = await runtime.invokeOpenai({\n * agentRuntimeEndpointName: \"Default\",\n * messages: [{ role: \"user\", content: \"Hello\" }],\n * stream: false\n * });\n * ```\n */\n invokeOpenai = async (\n args: InvokeArgs & { agentRuntimeEndpointName?: string },\n ) => {\n const {\n agentRuntimeEndpointName = \"Default\",\n messages,\n stream,\n config,\n } = args;\n\n if (!this.agentRuntimeName) {\n throw new Error(\"agentRuntimeName is required to invoke OpenAI\");\n }\n\n // Merge configs\n const cfg = Config.withConfigs(this._config, config);\n\n // Create or reuse Data API client\n if (!this._dataApiCache[agentRuntimeEndpointName]) {\n this._dataApiCache[agentRuntimeEndpointName] = new AgentRuntimeDataAPI(\n this.agentRuntimeName,\n agentRuntimeEndpointName,\n cfg,\n );\n }\n\n return this._dataApiCache[agentRuntimeEndpointName].invokeOpenai({\n messages,\n stream,\n config: cfg,\n });\n };\n}\n","/**\n * Agent Runtime Data Models\n *\n * 此模块定义 Agent Runtime 相关的所有数据模型、枚举和输入输出对象。\n * This module defines all data models, enums, and input/output objects related to Agent Runtime.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as crc64Lib from \"crc64-ecma182.js\";\n\nimport { Status } from \"../utils/model\";\nimport type { NetworkConfig, PageableInput } from \"../utils/model\";\n\n/**\n * Agent Runtime artifact type\n */\nexport type AgentRuntimeArtifact = \"Code\" | \"Container\";\n\nexport const AgentRuntimeArtifact = {\n CODE: \"Code\" as AgentRuntimeArtifact,\n CONTAINER: \"Container\" as AgentRuntimeArtifact,\n};\n\n/**\n * Agent Runtime language\n */\nexport type AgentRuntimeLanguage =\n | \"python3.10\"\n | \"python3.12\"\n | \"nodejs18\"\n | \"nodejs20\"\n | \"java8\"\n | \"java11\";\n\nexport const AgentRuntimeLanguage = {\n PYTHON310: \"python3.10\" as AgentRuntimeLanguage,\n PYTHON312: \"python3.12\" as AgentRuntimeLanguage,\n NODEJS18: \"nodejs18\" as AgentRuntimeLanguage,\n NODEJS20: \"nodejs20\" as AgentRuntimeLanguage,\n JAVA8: \"java8\" as AgentRuntimeLanguage,\n JAVA11: \"java11\" as AgentRuntimeLanguage,\n};\n\n/**\n * Agent Runtime protocol type\n */\nexport type AgentRuntimeProtocolType = \"HTTP\" | \"MCP\";\n\nexport const AgentRuntimeProtocolType = {\n HTTP: \"HTTP\" as AgentRuntimeProtocolType,\n MCP: \"MCP\" as AgentRuntimeProtocolType,\n};\n\n/**\n * Agent Runtime code configuration\n */\nexport interface AgentRuntimeCode {\n /** CRC-64 checksum of the code package */\n checksum?: string;\n /** Command to run in the runtime (e.g., [\"python\"]) */\n command?: string[];\n /** Programming language runtime */\n language?: AgentRuntimeLanguage;\n /** OSS bucket name */\n ossBucketName?: string;\n /** OSS object name */\n ossObjectName?: string;\n /** Base64 encoded ZIP file */\n zipFile?: string;\n}\n\n/**\n * Create AgentRuntimeCode from a ZIP file\n */\nexport async function codeFromZipFile(\n language: AgentRuntimeLanguage,\n command: string[],\n zipFilePath: string,\n): Promise<AgentRuntimeCode> {\n const data = await fs.promises.readFile(zipFilePath);\n\n // Calculate CRC-64 checksum (same as Python's crcmod with CRC-64-ECMA182)\n const checksum = crc64Lib.crc64(data);\n\n return {\n language,\n command,\n zipFile: data.toString(\"base64\"),\n checksum: checksum,\n };\n}\n\n/**\n * Create AgentRuntimeCode from OSS\n */\nexport function codeFromOss(\n language: AgentRuntimeLanguage,\n command: string[],\n bucket: string,\n object: string,\n): AgentRuntimeCode {\n return {\n language,\n command,\n ossBucketName: bucket,\n ossObjectName: object,\n };\n}\n\n/**\n * Create AgentRuntimeCode from a file or directory\n */\nexport async function codeFromFile(\n language: AgentRuntimeLanguage,\n command: string[],\n filePath: string,\n): Promise<AgentRuntimeCode> {\n const archiver = await import(\"archiver\").catch(() => null);\n\n if (!archiver) {\n throw new Error(\n \"archiver package is required for codeFromFile. Install it with: npm install archiver\",\n );\n }\n\n const stats = await fs.promises.stat(filePath);\n const zipFilePath = path.join(path.dirname(filePath), `${Date.now()}.zip`);\n\n // Create ZIP archive\n const output = fs.createWriteStream(zipFilePath);\n const archive = archiver.default(\"zip\", { zlib: { level: 9 } });\n\n await new Promise<void>((resolve, reject) => {\n output.on(\"close\", resolve);\n archive.on(\"error\", reject);\n archive.pipe(output);\n\n if (stats.isDirectory()) {\n archive.directory(filePath, false);\n } else {\n archive.file(filePath, { name: path.basename(filePath) });\n }\n\n archive.finalize();\n });\n\n const code = await codeFromZipFile(language, command, zipFilePath);\n\n // Clean up temp file\n await fs.promises.unlink(zipFilePath);\n\n return code;\n}\n\n/**\n * Agent Runtime container configuration\n */\nexport interface AgentRuntimeContainer {\n /** Command to run in the runtime */\n command?: string[];\n /** Container image address */\n image?: string;\n}\n\n/**\n * Agent Runtime health check configuration\n */\nexport interface AgentRuntimeHealthCheckConfig {\n /** Failure threshold before marking unhealthy */\n failureThreshold?: number;\n /** HTTP GET URL for health check */\n httpGetUrl?: string;\n /** Initial delay before first health check (seconds) */\n initialDelaySeconds?: number;\n /** Health check interval (seconds) */\n periodSeconds?: number;\n /** Success threshold before marking healthy */\n successThreshold?: number;\n /** Health check timeout (seconds) */\n timeoutSeconds?: number;\n}\n\n/**\n * Agent Runtime log configuration\n */\nexport interface AgentRuntimeLogConfig {\n /** SLS project name */\n project: string;\n /** SLS logstore name */\n logstore: string;\n}\n\n/**\n * Agent Runtime protocol configuration\n */\nexport interface AgentRuntimeProtocolConfig {\n /** Protocol type */\n type?: AgentRuntimeProtocolType;\n}\n\n/**\n * Endpoint routing weight configuration\n */\nexport interface AgentRuntimeEndpointRoutingWeight {\n /** Version identifier */\n version?: string;\n /** Weight value */\n weight?: number;\n}\n\n/**\n * Endpoint routing configuration\n */\nexport interface AgentRuntimeEndpointRoutingConfig {\n /** Version weights list */\n versionWeights?: AgentRuntimeEndpointRoutingWeight[];\n}\n\n/**\n * Agent Runtime create input\n */\nexport interface AgentRuntimeCreateInput {\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Artifact type (Code or Container) */\n artifactType?: AgentRuntimeArtifact;\n /** Code configuration */\n codeConfiguration?: AgentRuntimeCode;\n /** Container configuration */\n containerConfiguration?: AgentRuntimeContainer;\n /** CPU cores */\n cpu?: number;\n /** Credential name */\n credentialName?: string;\n /** Description */\n description?: string;\n /** Environment variables */\n environmentVariables?: Record<string, string>;\n /** Execution role ARN */\n executionRoleArn?: string;\n /** Health check configuration */\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n /** Log configuration */\n logConfiguration?: AgentRuntimeLogConfig;\n /** Memory in MB */\n memory?: number;\n /** Network configuration */\n networkConfiguration?: NetworkConfig;\n /** Port number */\n port?: number;\n /** Protocol configuration */\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n /** Session concurrency limit per instance */\n sessionConcurrencyLimitPerInstance?: number;\n /** Session idle timeout in seconds */\n sessionIdleTimeoutSeconds?: number;\n /** Tags */\n tags?: string[];\n}\n\n/**\n * Agent Runtime update input\n */\nexport interface AgentRuntimeUpdateInput {\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Artifact type (Code or Container) */\n artifactType?: AgentRuntimeArtifact;\n /** Code configuration */\n codeConfiguration?: AgentRuntimeCode;\n /** Container configuration */\n containerConfiguration?: AgentRuntimeContainer;\n /** CPU cores */\n cpu?: number;\n /** Credential name */\n credentialName?: string;\n /** Description */\n description?: string;\n /** Environment variables */\n environmentVariables?: Record<string, string>;\n /** Execution role ARN */\n executionRoleArn?: string;\n /** Health check configuration */\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n /** Log configuration */\n logConfiguration?: AgentRuntimeLogConfig;\n /** Memory in MB */\n memory?: number;\n /** Network configuration */\n networkConfiguration?: NetworkConfig;\n /** Port number */\n port?: number;\n /** Protocol configuration */\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n /** Session concurrency limit per instance */\n sessionConcurrencyLimitPerInstance?: number;\n /** Session idle timeout in seconds */\n sessionIdleTimeoutSeconds?: number;\n /** Tags */\n tags?: string[];\n}\n\n/**\n * Agent Runtime list input\n */\nexport interface AgentRuntimeListInput extends PageableInput {\n /** Filter by name */\n agentRuntimeName?: string;\n /** Filter by tags (comma separated) */\n tags?: string;\n /** Search mode */\n searchMode?: string;\n}\n\n/**\n * Agent Runtime endpoint create input\n */\nexport interface AgentRuntimeEndpointCreateInput {\n /** Endpoint name */\n agentRuntimeEndpointName?: string;\n /** Description */\n description?: string;\n /** Routing configuration */\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n /** Tags */\n tags?: string[];\n /** Target version */\n targetVersion?: string;\n}\n\n/**\n * Agent Runtime endpoint update input\n */\nexport interface AgentRuntimeEndpointUpdateInput {\n /** Endpoint name */\n agentRuntimeEndpointName?: string;\n /** Description */\n description?: string;\n /** Routing configuration */\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n /** Tags */\n tags?: string[];\n /** Target version */\n targetVersion?: string;\n}\n\n/**\n * Agent Runtime endpoint list input\n */\nexport interface AgentRuntimeEndpointListInput extends PageableInput {\n /** Filter by endpoint name */\n endpointName?: string;\n /** Search mode */\n searchMode?: string;\n}\n\n/**\n * Agent Runtime version\n */\nexport interface AgentRuntimeVersion {\n /** Agent Runtime ARN */\n agentRuntimeArn?: string;\n /** Agent Runtime ID */\n agentRuntimeId?: string;\n /** Agent Runtime name */\n agentRuntimeName?: string;\n /** Version number */\n agentRuntimeVersion?: string;\n /** Version description */\n description?: string;\n /** Last update timestamp */\n lastUpdatedAt?: string;\n}\n\n/**\n * Agent Runtime version list input\n */\nexport interface AgentRuntimeVersionListInput extends PageableInput {}\n\n/**\n * Agent Runtime data (internal representation from API)\n */\nexport interface AgentRuntimeData {\n agentRuntimeArn?: string;\n agentRuntimeId?: string;\n agentRuntimeName?: string;\n agentRuntimeVersion?: string;\n artifactType?: string;\n codeConfiguration?: AgentRuntimeCode;\n containerConfiguration?: AgentRuntimeContainer;\n cpu?: number;\n createdAt?: string;\n credentialName?: string;\n description?: string;\n environmentVariables?: Record<string, string>;\n executionRoleArn?: string;\n healthCheckConfiguration?: AgentRuntimeHealthCheckConfig;\n lastUpdatedAt?: string;\n logConfiguration?: AgentRuntimeLogConfig;\n memory?: number;\n networkConfiguration?: NetworkConfig;\n port?: number;\n protocolConfiguration?: AgentRuntimeProtocolConfig;\n resourceName?: string;\n sessionConcurrencyLimitPerInstance?: number;\n sessionIdleTimeoutSeconds?: number;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n}\n\n/**\n * Agent Runtime endpoint data (internal representation from API)\n */\nexport interface AgentRuntimeEndpointData {\n agentRuntimeEndpointArn?: string;\n agentRuntimeEndpointId?: string;\n agentRuntimeEndpointName?: string;\n agentRuntimeId?: string;\n description?: string;\n endpointPublicUrl?: string;\n resourceName?: string;\n routingConfiguration?: AgentRuntimeEndpointRoutingConfig;\n status?: Status;\n statusReason?: string;\n tags?: string[];\n targetVersion?: string;\n}\n\nexport { Status, NetworkConfig };\n","/**\n * Credential module exports\n */\n\nexport { CredentialClient } from './client';\nexport { Credential } from './credential';\nexport { CredentialControlAPI } from './api/control';\n\nexport { CredentialConfig } from './model';\nexport type {\n CredentialBasicAuth,\n RelatedResource,\n CredentialCreateInput,\n CredentialUpdateInput,\n CredentialListInput,\n CredentialListOutput,\n} from './model';\n","/**\n * Sandbox Client\n *\n * 此模块提供 Sandbox 的客户端 API。\n * This module provides the client API for Sandbox.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport { BrowserSandbox } from \"./browser-sandbox\";\nimport { CodeInterpreterSandbox } from \"./code-interpreter-sandbox\";\nimport {\n SandboxCreateInput,\n SandboxListInput,\n TemplateCreateInput,\n TemplateListInput,\n TemplateType,\n TemplateUpdateInput,\n} from \"./model\";\nimport { Sandbox } from \"./sandbox\";\nimport { Template } from \"./template\";\n\n/**\n * Sandbox Client\n *\n * 提供 Sandbox 和 Template 的管理功能。\n */\nexport class SandboxClient {\n private config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n // ============ Template Operations ============\n\n /**\n * Create a Template\n */\n createTemplate = async (params: {\n input: TemplateCreateInput;\n config?: Config;\n }): Promise<Template> => {\n const { input, config } = params;\n return Template.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete a Template\n */\n deleteTemplate = async (params: {\n name: string;\n config?: Config;\n }): Promise<Template> => {\n const { name, config } = params;\n return Template.delete({ name, config: config ?? this.config });\n };\n\n /**\n * Update a Template\n */\n updateTemplate = async (params: {\n name: string;\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> => {\n const { name, input, config } = params;\n return Template.update({ name, input, config: config ?? this.config });\n };\n\n /**\n * Get a Template\n */\n getTemplate = async (params: {\n name: string;\n config?: Config;\n }): Promise<Template> => {\n const { name, config } = params;\n return Template.get({ name, config: config ?? this.config });\n };\n\n /**\n * List Templates\n */\n listTemplates = async (params?: {\n input?: TemplateListInput;\n config?: Config;\n }): Promise<Template[]> => {\n const { input, config } = params ?? {};\n return Template.list(input, config ?? this.config);\n };\n\n /**\n * List all Templates\n */\n listAllTemplates = async (params?: {\n options?: { templateType?: TemplateType };\n config?: Config;\n }): Promise<Template[]> => {\n const { options, config } = params ?? {};\n return Template.listAll(options, config ?? this.config);\n };\n\n // ============ Sandbox Operations ============\n\n /**\n * Create a Sandbox\n */\n createSandbox = async (params: {\n input: SandboxCreateInput;\n config?: Config;\n }): Promise<Sandbox> => {\n const { input, config } = params;\n return Sandbox.create(input, config ?? this.config);\n };\n\n /**\n * Create a Code Interpreter Sandbox\n */\n createCodeInterpreterSandbox = async (params: {\n templateName: string;\n options?: { sandboxIdleTimeoutSeconds?: number };\n config?: Config;\n }): Promise<CodeInterpreterSandbox> => {\n const { templateName, options, config } = params;\n return CodeInterpreterSandbox.createFromTemplate(\n templateName,\n options,\n config ?? this.config,\n );\n };\n\n /**\n * Create a Browser Sandbox\n */\n createBrowserSandbox = async (params: {\n templateName: string;\n options?: { sandboxIdleTimeoutSeconds?: number };\n config?: Config;\n }): Promise<BrowserSandbox> => {\n const { templateName, options, config } = params;\n return BrowserSandbox.createFromTemplate(\n templateName,\n options,\n config ?? this.config,\n );\n };\n\n /**\n * Delete a Sandbox\n */\n deleteSandbox = async (params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> => {\n const { id, config } = params;\n return Sandbox.delete({ id, config: config ?? this.config });\n };\n\n /**\n * Stop a Sandbox\n */\n stopSandbox = async (params: {\n id: string;\n config?: Config;\n }): Promise<Sandbox> => {\n const { id, config } = params;\n return Sandbox.stop({ id, config: config ?? this.config });\n };\n\n /**\n * Get a Sandbox\n * \n * @param params.id - Sandbox ID\n * @param params.templateType - Template type to cast the result to the appropriate subclass\n * @param params.config - Configuration\n */\n getSandbox = async (params: { \n id: string; \n templateType?: TemplateType;\n config?: Config;\n }): Promise<Sandbox> => {\n const { id, templateType, config } = params;\n return Sandbox.get({ id, templateType, config: config ?? this.config });\n };\n\n /**\n * List Sandboxes\n */\n listSandboxes = async (params?: {\n input?: SandboxListInput;\n config?: Config;\n }): Promise<Sandbox[]> => {\n const { input, config } = params ?? {};\n return Sandbox.list(input, config ?? this.config);\n };\n}\n","/**\n * Template Resource\n *\n * 此模块定义 Template 资源类。\n * This module defines the Template resource class.\n */\n\nimport * as $AgentRun from \"@alicloud/agentrun20250910\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\nimport { ControlAPI } from \"../utils/control-api\";\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { Status } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport {\n TemplateCreateInput,\n TemplateData,\n TemplateListInput,\n TemplateNetworkMode,\n TemplateType,\n TemplateUpdateInput,\n} from \"./model\";\n\n/**\n * Template resource class\n */\nexport class Template implements TemplateData {\n templateArn?: string;\n templateId?: string;\n templateName?: string;\n templateType?: TemplateType;\n cpu?: number;\n memory?: number;\n createdAt?: string;\n description?: string;\n executionRoleArn?: string;\n lastUpdatedAt?: string;\n resourceName?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n status?: Status;\n statusReason?: string;\n diskSize?: number;\n\n private _config?: Config;\n\n constructor(data?: Partial<TemplateData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create template from SDK response object\n */\n static fromInnerObject(obj: $AgentRun.Template, config?: Config): Template {\n return new Template(\n {\n templateArn: obj.templateArn,\n templateId: obj.templateId,\n templateName: obj.templateName,\n templateType: obj.templateType as TemplateType,\n cpu: obj.cpu,\n memory: obj.memory,\n createdAt: obj.createdAt,\n description: obj.description,\n executionRoleArn: obj.executionRoleArn,\n lastUpdatedAt: obj.lastUpdatedAt,\n resourceName: obj.resourceName,\n sandboxIdleTimeoutInSeconds: obj.sandboxIdleTimeoutInSeconds\n ? parseInt(obj.sandboxIdleTimeoutInSeconds, 10)\n : undefined,\n sandboxTtlInSeconds: obj.sandboxTTLInSeconds\n ? parseInt(obj.sandboxTTLInSeconds, 10)\n : undefined,\n status: obj.status as Status,\n statusReason: obj.statusReason,\n diskSize: obj.diskSize,\n },\n config,\n );\n }\n\n private static getClient(config?: Config): $AgentRun.default {\n const controlApi = new ControlAPI(config);\n return controlApi.getClient();\n }\n\n /**\n * Create a new Template\n */\n static async create(params: {\n input: TemplateCreateInput;\n config?: Config;\n }): Promise<Template> {\n const { input, config } = params;\n // Set default values based on template type\n const defaults = Template.getDefaults(input.templateType);\n const finalInput = { ...defaults, ...input };\n\n // Set default network configuration\n if (!finalInput.networkConfiguration) {\n finalInput.networkConfiguration = {\n networkMode: TemplateNetworkMode.PUBLIC,\n };\n }\n\n // Validation\n Template.validate(finalInput);\n\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const request = new $AgentRun.CreateTemplateRequest({\n body: new $AgentRun.CreateTemplateInput({\n templateName: finalInput.templateName,\n templateType: finalInput.templateType,\n cpu: finalInput.cpu,\n memory: finalInput.memory,\n executionRoleArn: finalInput.executionRoleArn,\n sandboxIdleTimeoutInSeconds: finalInput.sandboxIdleTimeoutInSeconds,\n description: finalInput.description,\n environmentVariables: finalInput.environmentVariables,\n diskSize: finalInput.diskSize,\n networkConfiguration: finalInput.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: finalInput.networkConfiguration.networkMode,\n })\n : undefined,\n }),\n });\n\n const response = await client.createTemplateWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API createTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", input.templateName);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Get defaults based on template type\n */\n private static getDefaults(\n templateType: TemplateType,\n ): Partial<TemplateCreateInput> {\n const base = {\n cpu: 2,\n memory: 4096,\n sandboxIdleTimeoutInSeconds: 1800,\n sandboxTtlInSeconds: 21600,\n shareConcurrencyLimitPerSandbox: 200,\n };\n\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER:\n return { ...base, diskSize: 512 };\n case TemplateType.BROWSER:\n case TemplateType.AIO:\n return { ...base, cpu: 4, memory: 8192, diskSize: 10240 };\n default:\n return { ...base, diskSize: 512 };\n }\n }\n\n /**\n * Validate template configuration\n */\n private static validate(input: TemplateCreateInput): void {\n // Browser and AIO require specific disk size\n if (\n (input.templateType === TemplateType.BROWSER ||\n input.templateType === TemplateType.AIO) &&\n input.diskSize !== 10240\n ) {\n throw new Error(\n `When templateType is BROWSER or AIO, diskSize must be 10240, got ${input.diskSize}`,\n );\n }\n\n // CODE_INTERPRETER and AIO cannot use PRIVATE network mode\n if (\n (input.templateType === TemplateType.CODE_INTERPRETER ||\n input.templateType === TemplateType.AIO) &&\n input.networkConfiguration?.networkMode === TemplateNetworkMode.PRIVATE\n ) {\n throw new Error(\n `When templateType is CODE_INTERPRETER or AIO, networkMode cannot be PRIVATE`,\n );\n }\n }\n\n /**\n * Delete a Template by name\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<Template> {\n const { name, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteTemplateWithOptions(\n name,\n {},\n runtime,\n );\n\n logger.debug(\n `API deleteTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Update a Template by name\n */\n static async update(params: {\n name: string;\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> {\n const { name, input, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const request = new $AgentRun.UpdateTemplateRequest({\n templateName: name,\n body: new $AgentRun.UpdateTemplateInput({\n cpu: input.cpu,\n memory: input.memory,\n executionRoleArn: input.executionRoleArn,\n sandboxIdleTimeoutInSeconds: input.sandboxIdleTimeoutInSeconds,\n description: input.description,\n environmentVariables: input.environmentVariables,\n diskSize: input.diskSize,\n networkConfiguration: input.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n networkMode: input.networkConfiguration.networkMode,\n })\n : undefined,\n }),\n });\n\n const response = await client.updateTemplateWithOptions(\n name,\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API updateTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * Get a Template by name\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<Template> {\n const { name, config } = params;\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getTemplateWithOptions(name, {}, runtime);\n\n logger.debug(\n `API getTemplate called, Request ID: ${response.body?.requestId}`,\n );\n\n return Template.fromInnerObject(\n response.body?.data as $AgentRun.Template,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"Template\", name);\n }\n Template.handleError(error);\n }\n }\n\n /**\n * List Templates\n */\n static async list(\n input?: TemplateListInput,\n config?: Config,\n ): Promise<Template[]> {\n try {\n const client = Template.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n const request = new $AgentRun.ListTemplatesRequest({\n pageNumber: input?.pageNumber,\n pageSize: input?.pageSize,\n templateType: input?.templateType,\n });\n\n const response = await client.listTemplatesWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listTemplates called, Request ID: ${response.body?.requestId}`,\n );\n\n return (response.body?.data?.items || []).map((item) =>\n Template.fromInnerObject(item, config),\n );\n } catch (error) {\n Template.handleError(error);\n }\n }\n\n /**\n * List all Templates (with pagination)\n */\n static async listAll(\n options?: { templateType?: TemplateType },\n config?: Config,\n ): Promise<Template[]> {\n const templates: Template[] = [];\n let page = 1;\n const pageSize = 50;\n\n while (true) {\n const result = await Template.list(\n {\n pageNumber: page,\n pageSize,\n templateType: options?.templateType,\n },\n config,\n );\n\n templates.push(...result);\n page++;\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return templates.filter((t) => {\n if (!t.templateId || seen.has(t.templateId)) {\n return false;\n }\n seen.add(t.templateId);\n return true;\n });\n }\n\n /**\n * Handle API errors\n */\n private static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this template\n */\n delete = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error(\"templateName is required to delete a Template\");\n }\n\n const result = await Template.delete({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this template\n */\n update = async (params: {\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> => {\n const { input, config } = params;\n if (!this.templateName) {\n throw new Error(\"templateName is required to update a Template\");\n }\n\n const result = await Template.update({\n name: this.templateName,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this template's data\n */\n refresh = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error(\"templateName is required to refresh a Template\");\n }\n\n const result = await Template.get({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the template is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (template: Template) => void;\n },\n config?: Config,\n ): Promise<Template> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status === Status.READY) {\n return this;\n }\n\n if (this.status === Status.CREATE_FAILED) {\n throw new Error(`Template failed: ${this.statusReason}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Template to be ready after ${options?.timeoutSeconds ?? 300} seconds`,\n );\n };\n}\n","/**\n * Sandbox module exports\n */\n\nexport { SandboxClient } from \"./client\";\nexport { Sandbox } from \"./sandbox\";\nexport { Template } from \"./template\";\nexport { CodeInterpreterSandbox } from \"./code-interpreter-sandbox\";\nexport { BrowserSandbox } from \"./browser-sandbox\";\nexport { AioSandbox } from \"./aio-sandbox\";\n\n// Data API exports\nexport { SandboxDataAPI } from \"./api/sandbox-data\";\nexport { CodeInterpreterDataAPI } from \"./api/code-interpreter-data\";\nexport { BrowserDataAPI } from \"./api/browser-data\";\nexport { AioDataAPI } from \"./api/aio-data\";\n\nexport {\n TemplateType,\n SandboxState,\n TemplateNetworkMode,\n TemplateOSSPermission,\n CodeLanguage,\n} from \"./model\";\n\nexport type {\n TemplateNetworkConfiguration,\n TemplateOssConfiguration,\n TemplateLogConfiguration,\n TemplateCredentialConfiguration,\n TemplateArmsConfiguration,\n TemplateContainerConfiguration,\n TemplateMcpOptions,\n TemplateMcpState,\n TemplateCreateInput,\n TemplateUpdateInput,\n TemplateListInput,\n SandboxCreateInput,\n SandboxListInput,\n TemplateData,\n SandboxData,\n ExecuteCodeResult,\n FileInfo,\n} from \"./model\";\n","/**\n * Model module exports\n */\n\nexport { ModelClient } from \"./client\";\nexport { ModelService } from \"./model-service\";\nexport { ModelProxy } from \"./model-proxy\";\n\n// Re-export ControlAPI for advanced usage\nexport { ControlAPI as ModelControlAPI } from \"../utils/control-api\";\n\nexport { BackendType, ModelType, Provider } from \"./model\";\n\nexport type {\n ProviderSettings,\n ModelFeatures,\n ModelProperties,\n ModelParameterRule,\n ModelInfoConfig,\n ModelServiceCreateInput,\n ModelServiceUpdateInput,\n ModelServiceListInput,\n ModelServiceData,\n ProxyConfigEndpoint,\n ProxyConfigFallback,\n ProxyConfigPolicies,\n ProxyConfig,\n ModelProxyCreateInput,\n ModelProxyUpdateInput,\n ModelProxyListInput,\n ModelProxyData,\n} from \"./model\";\n","/**\n * ToolSet Resource Class\n *\n * ToolSet 资源类,用于管理 ToolSet 资源。\n * Resource class for managing ToolSet resources.\n */\n\nimport * as $Devs from \"@alicloud/devs20230714\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../utils/config\";\n\n// Handle ESM/CJS interop for Client class\nconst $DevsClient =\n // @ts-expect-error - ESM interop: default.default exists when imported as ESM namespace\n $Devs.default?.default ?? $Devs.default ?? $Devs;\nimport { ClientError, HTTPError, ServerError } from \"../utils/exception\";\nimport { logger } from \"../utils/log\";\nimport { Status } from \"../utils/model\";\nimport { updateObjectProperties } from \"../utils/resource\";\n\nimport {\n ToolSetCreateInput,\n ToolSetData,\n ToolSetListInput,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetUpdateInput,\n} from \"./model\";\n\n/**\n * ToolSet resource class\n */\nexport class ToolSet implements ToolSetData {\n name?: string;\n uid?: string;\n kind?: string;\n description?: string;\n createdTime?: string;\n generation?: number;\n labels?: Record<string, string>;\n spec?: ToolSetSpec;\n status?: ToolSetStatus;\n\n private _config?: Config;\n\n constructor(data?: Partial<ToolSetData>, config?: Config) {\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Get ToolSet name (alias for name)\n */\n get toolSetName(): string | undefined {\n return this.name;\n }\n\n /**\n * Get ToolSet ID (alias for uid)\n */\n get toolSetId(): string | undefined {\n return this.uid;\n }\n\n /**\n * Check if the toolset is ready\n */\n get isReady(): boolean {\n return this.status?.status === Status.READY;\n }\n\n /**\n * Create toolset from SDK response object\n */\n static fromInnerObject(obj: $Devs.Toolset, config?: Config): ToolSet {\n if (!obj) {\n throw new Error('Invalid toolset object: object is null or undefined');\n }\n \n return new ToolSet(\n {\n name: obj.name,\n uid: obj.uid,\n kind: obj.kind,\n description: obj.description,\n createdTime: obj.createdTime,\n generation: obj.generation,\n labels: obj.labels as Record<string, string>,\n spec: {\n schema: {\n type: obj.spec?.schema?.type as any,\n detail: obj.spec?.schema?.detail,\n },\n authConfig: {\n type: obj.spec?.authConfig?.type,\n apiKeyHeaderName:\n obj.spec?.authConfig?.parameters?.apiKeyParameter?.key,\n apiKeyValue:\n obj.spec?.authConfig?.parameters?.apiKeyParameter?.value,\n },\n },\n status: {\n status: obj.status?.status as Status,\n statusReason: obj.status?.statusReason,\n outputs: {\n mcpServerConfig: {\n url: obj.status?.outputs?.mcpServerConfig?.url,\n transport: obj.status?.outputs?.mcpServerConfig?.transport,\n },\n tools: obj.status?.outputs?.tools?.map((tool) => ({\n name: tool.name,\n description: tool.description,\n })),\n urls: {\n cdpUrl: obj.status?.outputs?.urls?.cdpUrl,\n liveViewUrl: obj.status?.outputs?.urls?.liveViewUrl,\n streamUrl: obj.status?.outputs?.urls?.streamUrl,\n },\n },\n },\n },\n config,\n );\n }\n\n /**\n * Get DevS client\n */\n private static getClient(config?: Config): InstanceType<typeof $DevsClient> {\n const cfg = Config.withConfigs(config);\n\n // Use devs endpoint\n let endpoint = cfg.devsEndpoint;\n\n // Remove protocol prefix for SDK\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new $DevsClient(openApiConfig);\n }\n\n /**\n * Create a new ToolSet\n */\n static async create(params: {\n input: ToolSetCreateInput;\n config?: Config;\n }): Promise<ToolSet> {\n const { input, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Build authorization parameters if provided\n let authConfig: $Devs.Authorization | undefined;\n if (input.spec?.authConfig) {\n authConfig = new $Devs.Authorization({\n type: input.spec.authConfig.type,\n parameters: new $Devs.AuthorizationParameters({\n apiKeyParameter: new $Devs.APIKeyAuthParameter({\n key: input.spec.authConfig.apiKeyHeaderName,\n value: input.spec.authConfig.apiKeyValue,\n in: \"header\",\n }),\n }),\n });\n }\n\n const request = new $Devs.CreateToolsetRequest({\n body: new $Devs.Toolset({\n name: input.name,\n description: input.description,\n labels: input.labels,\n spec: input.spec\n ? new $Devs.ToolsetSpec({\n schema: input.spec.schema\n ? new $Devs.ToolsetSchema({\n type: input.spec.schema.type,\n detail: input.spec.schema.detail,\n })\n : undefined,\n authConfig: authConfig,\n })\n : undefined,\n }),\n });\n\n const response = await client.createToolsetWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API createToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", input.name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Delete a ToolSet by Name\n */\n static async delete(params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteToolsetWithOptions(name, {}, runtime);\n\n logger.debug(\n `API deleteToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Get a ToolSet by Name\n */\n static async get(params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n logger.debug(`Calling getToolset API for: ${name}`);\n \n const response = await client.getToolsetWithOptions(name, {}, runtime);\n\n logger.debug(\n `API getToolset response, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body) {\n throw new Error(`API returned empty response body for toolset: ${name}`);\n }\n\n // The SDK returns the toolset data directly in body, not in body.data\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * List ToolSets\n */\n static async list(\n input?: ToolSetListInput,\n config?: Config,\n ): Promise<ToolSet[]> {\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Convert labels to labelSelector format if needed\n let labelSelector: string[] | undefined;\n if (input?.labels) {\n labelSelector = Object.entries(input.labels).map(\n ([k, v]) => `${k}=${v}`,\n );\n }\n\n const request = new $Devs.ListToolsetsRequest({\n keyword: input?.prefix,\n pageNumber: input?.pageSize ? 1 : undefined,\n pageSize: input?.pageSize,\n labelSelector: labelSelector,\n });\n\n const response = await client.listToolsetsWithOptions(\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API listToolsets called, Request ID: ${response.body?.requestId}`,\n );\n\n // Response body has data as Toolset[]\n // SDK returns array of toolsets directly in items field\n const items = (response.body as any)?.items || [];\n return items.map((item: $Devs.Toolset) =>\n ToolSet.fromInnerObject(item, config),\n );\n } catch (error) {\n ToolSet.handleError(error);\n }\n }\n\n /**\n * List all ToolSets with pagination\n */\n static async listAll(\n options?: { prefix?: string; labels?: Record<string, string> },\n config?: Config,\n ): Promise<ToolSet[]> {\n const toolsets: ToolSet[] = [];\n const pageSize = 50;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = await ToolSet.list(\n {\n prefix: options?.prefix,\n labels: options?.labels,\n pageSize,\n },\n config,\n );\n\n toolsets.push(...result);\n\n if (result.length < pageSize) {\n break;\n }\n }\n\n // Deduplicate\n const seen = new Set<string>();\n return toolsets.filter((t) => {\n if (!t.uid || seen.has(t.uid)) {\n return false;\n }\n seen.add(t.uid);\n return true;\n });\n }\n\n /**\n * Update a ToolSet by Name\n */\n static async update(params: {\n name: string;\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> {\n const { name, input, config } = params;\n try {\n const client = ToolSet.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n // Build authorization parameters if provided\n let authConfig: $Devs.Authorization | undefined;\n if (input.spec?.authConfig) {\n authConfig = new $Devs.Authorization({\n type: input.spec.authConfig.type,\n parameters: new $Devs.AuthorizationParameters({\n apiKeyParameter: new $Devs.APIKeyAuthParameter({\n key: input.spec.authConfig.apiKeyHeaderName,\n value: input.spec.authConfig.apiKeyValue,\n in: \"header\",\n }),\n }),\n });\n }\n\n const request = new $Devs.UpdateToolsetRequest({\n body: new $Devs.Toolset({\n description: input.description,\n labels: input.labels,\n spec: input.spec\n ? new $Devs.ToolsetSpec({\n schema: input.spec.schema\n ? new $Devs.ToolsetSchema({\n type: input.spec.schema.type,\n detail: input.spec.schema.detail,\n })\n : undefined,\n authConfig: authConfig,\n })\n : undefined,\n }),\n });\n\n const response = await client.updateToolsetWithOptions(\n name,\n request,\n {},\n runtime,\n );\n\n logger.debug(\n `API updateToolset called, Request ID: ${response.body?.requestId}`,\n );\n\n return ToolSet.fromInnerObject(\n response.body as $Devs.Toolset,\n config,\n );\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n ToolSet.handleError(error);\n }\n }\n\n /**\n * Handle API errors\n */\n private static handleError(error: unknown): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n\n /**\n * Delete this toolset\n */\n delete = async (params?: { config?: Config }): Promise<ToolSet> => {\n const config = params?.config;\n if (!this.name) {\n throw new Error(\"name is required to delete a ToolSet\");\n }\n\n const result = await ToolSet.delete({\n name: this.name,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Update this toolset\n */\n update = async (params: {\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { input, config } = params;\n if (!this.name) {\n throw new Error(\"name is required to update a ToolSet\");\n }\n\n const result = await ToolSet.update({\n name: this.name,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this toolset's data\n */\n refresh = async (params?: { config?: Config }): Promise<ToolSet> => {\n const config = params?.config;\n if (!this.name) {\n throw new Error(\"name is required to refresh a ToolSet\");\n }\n\n const result = await ToolSet.get({\n name: this.name,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the toolset is ready\n */\n waitUntilReady = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (toolset: ToolSet) => void;\n },\n config?: Config,\n ): Promise<ToolSet> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n if (this.status?.status === Status.READY) {\n return this;\n }\n\n if (this.status?.status === Status.CREATE_FAILED) {\n throw new Error(`ToolSet failed: ${this.status?.statusReason}`);\n }\n\n if (Date.now() - startTime > timeout) {\n throw new Error(\n `Timeout waiting for ToolSet to be ready after ${timeout / 1000}s`,\n );\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n };\n\n /**\n * Get toolset type\n * 获取工具集类型\n */\n type(): string | undefined {\n return this.spec?.schema?.type;\n }\n\n /**\n * List tools (async)\n * 异步获取工具列表,返回统一的 ToolInfo 列表\n */\n listToolsAsync = async (params?: { config?: Config }): Promise<any[]> => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n\n if (this.type() === ToolSetSchemaType.MCP) {\n // MCP tools\n const mcpTools = this.status?.outputs?.tools || [];\n return mcpTools.map((tool: any) => ToolInfo.fromMCPTool(tool));\n } else if (this.type() === ToolSetSchemaType.OPENAPI) {\n // OpenAPI tools - use toApiSet\n const apiset = await this.toApiSet(params);\n return apiset.tools;\n }\n return [];\n };\n\n /**\n * List tools (sync wrapper)\n * 同步获取工具列表,返回统一的 ToolInfo 列表\n */\n listTools = (config?: Config): Promise<any[]> => {\n return this.listToolsAsync({ config });\n };\n\n /**\n * Call tool (async)\n * 异步调用工具,统一使用 ApiSet 实现\n */\n callToolAsync = async (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n const apiset = await this.toApiSet({ config });\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n\n // For OpenAPI, may need to resolve operation name\n // 对于 OpenAPI,可能需要解析 operation name\n if (this.type() === ToolSetSchemaType.OPENAPI) {\n const tool = apiset.getTool(name);\n if (!tool) {\n // Try to find via tool_id mapping\n // 尝试通过 tool_id 映射查找\n const openApiTools = (this.status?.outputs as any)?.openApiTools || [];\n for (const toolMeta of openApiTools) {\n if (!toolMeta) continue;\n if (toolMeta.toolId === name || toolMeta.tool_id === name) {\n name = toolMeta.toolName || toolMeta.tool_name || name;\n break;\n }\n }\n }\n }\n\n logger.debug(`Invoke tool ${name} with arguments`, args);\n const result = await apiset.invoke(name, args, config);\n logger.debug(`Invoke tool ${name} got result`, result);\n return result;\n };\n\n /**\n * Call tool (sync wrapper)\n * 同步调用工具,统一使用 ApiSet 实现\n */\n callTool = (\n name: string,\n args?: Record<string, unknown>,\n config?: Config\n ): Promise<any> => {\n return this.callToolAsync(name, args, config);\n };\n\n /**\n * Convert ToolSet to unified ApiSet object\n * 将 ToolSet 转换为统一的 ApiSet 对象\n */\n toApiSet = async (params?: { config?: Config }): Promise<any> => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ApiSet } = require(\"./openapi\");\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolSetSchemaType } = require(\"./model\");\n\n if (this.type() === ToolSetSchemaType.MCP) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { MCPToolSet } = require(\"./api/mcp\");\n\n const mcpServerConfig = (this.status?.outputs as any)?.mcpServerConfig;\n if (!mcpServerConfig?.url) {\n throw new Error(\"MCP server URL is missing.\");\n }\n\n const cfg = Config.withConfigs(\n params?.config,\n new Config({ headers: mcpServerConfig.headers })\n );\n\n const mcpClient = new MCPToolSet(mcpServerConfig.url, cfg);\n\n // Get MCP tools\n const mcpTools = this.status?.outputs?.tools || [];\n\n return ApiSet.fromMCPTools({\n tools: mcpTools,\n mcpClient,\n config: cfg,\n });\n } else if (this.type() === ToolSetSchemaType.OPENAPI) {\n const headers = this._getOpenAPIAuthDefaults().headers;\n const query = this._getOpenAPIAuthDefaults().query;\n\n // Use OpenAPI.fromSchema if available, otherwise create basic ApiSet\n // 如果可用,使用 OpenAPI.fromSchema,否则创建基本 ApiSet\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { OpenAPI } = require(\"./openapi\");\n \n const openapi = new OpenAPI({\n schema: this.spec?.schema?.detail || \"{}\",\n baseUrl: this._getOpenAPIBaseUrl(),\n headers,\n queryParams: query,\n config: params?.config,\n });\n\n // Convert OpenAPI tools to ToolInfo format\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ToolInfo } = require(\"./model\");\n const tools = openapi.tools.map((t: any) => \n new ToolInfo({\n name: t.name,\n description: t.description,\n parameters: t.parameters as any,\n })\n );\n\n return new ApiSet(tools, openapi, undefined, headers, query, params?.config);\n }\n\n throw new Error(`Unsupported ToolSet type: ${this.type()}`);\n };\n\n /**\n * Get OpenAPI authentication defaults\n * 获取 OpenAPI 认证默认值\n */\n private _getOpenAPIAuthDefaults(): {\n headers: Record<string, string>;\n query: Record<string, string>;\n } {\n const headers: Record<string, string> = {};\n const query: Record<string, string> = {};\n\n const authConfig = this.spec?.authConfig;\n const authType = authConfig?.type;\n\n if (authType === \"APIKey\") {\n const key = authConfig?.apiKeyHeaderName;\n const value = authConfig?.apiKeyValue;\n const location = \"header\"; // Default location\n\n if (key && value) {\n if (location === \"header\") {\n headers[key] = value;\n } else if (location === \"query\") {\n query[key] = value;\n }\n }\n }\n\n return { headers, query };\n }\n\n /**\n * Get OpenAPI base URL\n * 获取 OpenAPI 基础 URL\n */\n private _getOpenAPIBaseUrl(): string | undefined {\n const outputs = this.status?.outputs as any;\n return outputs?.urls?.intranetUrl || outputs?.urls?.internetUrl;\n }\n}\n","/**\n * ToolSet Client\n *\n * ToolSet 客户端,提供 ToolSet 的管理功能。\n * Client for managing ToolSet resources.\n */\n\nimport { Config } from \"../utils/config\";\n\nimport {\n ToolSetCreateInput,\n ToolSetListInput,\n ToolSetUpdateInput,\n} from \"./model\";\nimport { ToolSet } from \"./toolset\";\n\n/**\n * ToolSet Client\n *\n * 提供 ToolSet 的管理功能。\n */\nexport class ToolSetClient {\n private config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Create a ToolSet\n */\n createToolSet = async (params: {\n input: ToolSetCreateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { input, config } = params;\n return ToolSet.create({ input, config: config ?? this.config });\n };\n\n /**\n * Delete a ToolSet by name\n */\n deleteToolSet = async (params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, config } = params;\n return ToolSet.delete({ name, config: config ?? this.config });\n };\n\n /**\n * Get a ToolSet by name\n */\n getToolSet = async (params: {\n name: string;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, config } = params;\n return ToolSet.get({ name, config: config ?? this.config });\n };\n\n /**\n * Update a ToolSet by name\n */\n updateToolSet = async (params: {\n name: string;\n input: ToolSetUpdateInput;\n config?: Config;\n }): Promise<ToolSet> => {\n const { name, input, config } = params;\n return ToolSet.update({ name, input, config: config ?? this.config });\n };\n\n /**\n * List ToolSets\n */\n listToolSets = async (params?: {\n input?: ToolSetListInput;\n config?: Config;\n }): Promise<ToolSet[]> => {\n const { input, config } = params ?? {};\n return ToolSet.list(input, config ?? this.config);\n };\n\n /**\n * List all ToolSets with pagination\n */\n listAllToolSets = async (params?: {\n options?: { prefix?: string; labels?: Record<string, string> };\n config?: Config;\n }): Promise<ToolSet[]> => {\n const { options, config } = params ?? {};\n return ToolSet.listAll(options, config ?? this.config);\n };\n}\n","/**\n * ToolSet Module\n *\n * ToolSet 模块,提供 ToolSet 资源的管理功能。\n * Module for managing ToolSet resources.\n */\n\nexport { ToolSetClient } from \"./client\";\nexport { ToolSet } from \"./toolset\";\nexport { OpenAPI, ApiSet } from \"./openapi\";\nexport { ToolSetSchemaType, ToolSchema, ToolInfo } from \"./model\";\nexport { ToolControlAPI } from \"./api/control\";\nexport { MCPSession, MCPToolSet } from \"./api/mcp\";\nexport type {\n ToolSetCreateInput,\n ToolSetUpdateInput,\n ToolSetListInput,\n ToolSetData,\n ToolSetAuthorization,\n ToolSetSchema,\n ToolSetSpec,\n ToolSetStatus,\n ToolSetStatusOutputs,\n MCPToolMeta,\n} from \"./model\";\nexport type {\n ToolParameterSchema,\n InvokeResult,\n OpenAPIOptions,\n} from \"./openapi\";\n","/**\n * Tool Control API\n * \n * Tool 管控链路 API\n * \n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `make codegen` command to regenerate.\n * \n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `make codegen` 命令重新生成。\n */\n\nimport * as $Devs from \"@alicloud/devs20230714\";\nimport * as $OpenApi from \"@alicloud/openapi-client\";\nimport * as $Util from \"@alicloud/tea-util\";\n\nimport { Config } from \"../../utils/config\";\n\n// Handle ESM/CJS interop for Client class\nconst $DevsClient =\n // @ts-expect-error - ESM interop: default.default exists when imported as ESM namespace\n $Devs.default?.default ?? $Devs.default ?? $Devs;\nimport { ClientError, HTTPError, ServerError } from \"../../utils/exception\";\nimport { logger } from \"../../utils/log\";\n\n/**\n * Tool Control API\n * \n * Tool 管控链路 API\n */\nexport class ToolControlAPI {\n private config?: Config;\n\n /**\n * Initialize API client\n * 初始化 API 客户端\n * \n * @param config - Global configuration object / 全局配置对象\n */\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Get DevS client\n * 获取 DevS 客户端\n */\n private getDevsClient(config?: Config): InstanceType<typeof $DevsClient> {\n const cfg = Config.withConfigs(this.config, config);\n\n // Use devs endpoint\n let endpoint = cfg.devsEndpoint;\n\n // Remove protocol prefix for SDK\n if (endpoint.startsWith(\"http://\") || endpoint.startsWith(\"https://\")) {\n endpoint = endpoint.split(\"://\")[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n });\n\n return new $DevsClient(openApiConfig);\n }\n\n /**\n * Get toolset\n * 获取工具\n * \n * @param name - Tool name / Tool 名称\n * @param headers - Request headers / 请求头\n * @param config - Configuration / 配置\n * @returns Toolset object / ToolSet 对象\n * @throws AgentRuntimeError - Throws on call failure / 调用失败时抛出\n * @throws ClientError - Client error / 客户端错误\n * @throws ServerError - Server error / 服务器错误\n */\n getToolset = async (params: {\n name: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$Devs.Toolset> => {\n const { name, headers, config } = params;\n\n try {\n const client = this.getDevsClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getToolsetWithOptions(\n name,\n headers || {},\n runtime\n );\n\n logger.debug(\n `API getToolset called, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body?.data) {\n throw new Error(\"Empty response body\");\n }\n\n return response.body.data;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError(\"ToolSet\", name);\n }\n this.handleError(error, name);\n }\n };\n\n /**\n * List toolsets\n * 枚举 ToolSets\n * \n * @param input - List configuration / 枚举的配置\n * @param headers - Request headers / 请求头\n * @param config - Configuration / 配置\n * @returns ToolSet list / ToolSet 列表\n * @throws AgentRuntimeError - Throws on call failure / 调用失败时抛出\n * @throws ClientError - Client error / 客户端错误\n * @throws ServerError - Server error / 服务器错误\n */\n listToolsets = async (params: {\n input: $Devs.ListToolsetsRequest;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$Devs.ListToolsetsResponseBody> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getDevsClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listToolsetsWithOptions(\n input,\n headers || {},\n runtime\n );\n\n logger.debug(\n `API listToolsets called, Request ID: ${response.body?.requestId}`\n );\n\n if (!response.body) {\n throw new Error(\"Empty response body\");\n }\n\n return response.body;\n } catch (error) {\n this.handleError(error);\n }\n };\n\n /**\n * Handle API errors\n * 处理 API 错误\n */\n private handleError(error: unknown, _resourceName?: string): never {\n if (error && typeof error === \"object\" && \"statusCode\" in error) {\n const e = error as {\n statusCode: number;\n message: string;\n data?: { requestId?: string };\n };\n const statusCode = e.statusCode;\n const message = e.message || \"Unknown error\";\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n}\n","/**\n * AgentRun HTTP Server\n *\n * 基于 Node.js 的 HTTP 服务器实现。\n * HTTP server implementation based on Node.js.\n */\n\nimport * as http from \"http\";\n\nimport { logger } from \"../utils/log\";\n\nimport { AGUIProtocolHandler } from \"./agui-protocol\";\nimport {\n AgentEvent,\n AgentRequest,\n AgentResult,\n EventType,\n Message,\n MessageRole,\n ServerConfig,\n ToolCall,\n} from \"./model\";\n\n/**\n * Agent invoke handler type\n */\nexport type InvokeAgentHandler = (\n request: AgentRequest,\n) =>\n | Promise<string | AgentResult | AsyncIterable<string | AgentResult>>\n | string\n | AgentResult\n | AsyncIterable<string | AgentResult>;\n\n/**\n * AgentRun HTTP Server\n *\n * 提供 HTTP 服务器功能,支持 OpenAI 和 AG-UI 协议。\n */\nexport class AgentRunServer {\n private invokeAgent: InvokeAgentHandler;\n private config: ServerConfig;\n private server?: http.Server;\n private aguiHandler: AGUIProtocolHandler;\n\n constructor(options: {\n invokeAgent: InvokeAgentHandler;\n config?: ServerConfig;\n }) {\n this.invokeAgent = options.invokeAgent;\n this.config = options.config ?? {};\n this.aguiHandler = new AGUIProtocolHandler(this.config);\n }\n\n /**\n * Start the HTTP server\n */\n start(options?: { host?: string; port?: number }): void {\n const host = options?.host ?? this.config.host ?? \"0.0.0.0\";\n const port = options?.port ?? this.config.port ?? 9000;\n\n this.server = http.createServer(async (req, res) => {\n // Handle CORS\n this.handleCors(req, res);\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(200);\n res.end();\n return;\n }\n\n try {\n await this.handleRequest(req, res);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger.error(\"Request error:\", error as any);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Internal server error\" }));\n }\n });\n\n this.server.listen(port, host, () => {\n logger.info(`AgentRun Server started: http://${host}:${port}`);\n logger.info(\n ` POST /openai/v1/chat/completions - OpenAI compatible endpoint`,\n );\n logger.info(\n ` POST ${this.aguiHandler.getPrefix()} - AG-UI compatible endpoint`,\n );\n });\n }\n\n /**\n * Stop the HTTP server\n */\n stop(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!this.server) {\n resolve();\n return;\n }\n\n this.server.close((err) => {\n if (err) {\n reject(err);\n } else {\n logger.info(\"AgentRun Server stopped\");\n resolve();\n }\n });\n });\n }\n\n /**\n * Handle CORS headers\n */\n private handleCors(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): void {\n const origins = this.config.corsOrigins ?? [\"*\"];\n const origin = req.headers.origin;\n\n if (origins.includes(\"*\") || (origin && origins.includes(origin))) {\n res.setHeader(\"Access-Control-Allow-Origin\", origin || \"*\");\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET, POST, OPTIONS\");\n res.setHeader(\n \"Access-Control-Allow-Headers\",\n \"Content-Type, Authorization\",\n );\n res.setHeader(\"Access-Control-Allow-Credentials\", \"true\");\n }\n }\n\n /**\n * Handle HTTP request\n */\n private async handleRequest(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n const url = req.url || \"/\";\n const aguiPrefix = this.aguiHandler.getPrefix();\n\n // OpenAI compatible endpoint\n if (url.endsWith(\"/v1/chat/completions\") && req.method === \"POST\") {\n await this.handleChatCompletions(req, res);\n return;\n }\n\n // AG-UI endpoint\n if (\n (url === aguiPrefix || url.startsWith(aguiPrefix + \"/\")) &&\n req.method === \"POST\"\n ) {\n await this.handleAGUI(req, res);\n return;\n }\n\n // AG-UI health check\n if (url === aguiPrefix + \"/health\" && req.method === \"GET\") {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({ status: \"ok\", protocol: \"ag-ui\", version: \"1.0\" }),\n );\n return;\n }\n\n // General health check\n if (url === \"/health\" && req.method === \"GET\") {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\" }));\n return;\n }\n\n // 404\n res.writeHead(404, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Not found\" }));\n }\n\n /**\n * Handle AG-UI endpoint\n */\n private async handleAGUI(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n const encoder = this.aguiHandler.getEncoder();\n const sseHeaders = {\n \"Content-Type\": encoder.getContentType(),\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n };\n\n try {\n const body = await this.parseBody(req);\n const { agentRequest, context } = this.aguiHandler.parseRequest(body);\n agentRequest.rawRequest = req;\n\n // Invoke agent and get stream\n let result: string | AgentResult | AsyncIterable<string | AgentResult>;\n try {\n result = await Promise.resolve(this.invokeAgent(agentRequest));\n } catch (error) {\n // Handle error in invoke_agent\n res.writeHead(200, sseHeaders);\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n for await (const chunk of this.aguiHandler.errorStream(\n `Internal error: ${errorMessage}`,\n )) {\n res.write(chunk);\n }\n res.end();\n return;\n }\n\n res.writeHead(200, sseHeaders);\n\n // Format the result as AG-UI stream\n const eventStream = this.toAsyncIterable(result);\n for await (const chunk of this.aguiHandler.formatStream(\n eventStream,\n context,\n )) {\n res.write(chunk);\n }\n res.end();\n } catch (error) {\n // Handle error in parse_request\n res.writeHead(200, sseHeaders);\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n for await (const chunk of this.aguiHandler.errorStream(\n `Internal error: ${errorMessage}`,\n )) {\n res.write(chunk);\n }\n res.end();\n }\n }\n\n /**\n * Handle OpenAI chat completions endpoint\n */\n private async handleChatCompletions(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n ): Promise<void> {\n // Parse request body\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const body = await this.parseBody(req);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const messages: Message[] = (body.messages || []).map((m: any) => ({\n role: m.role as MessageRole,\n content: m.content,\n name: m.name,\n toolCallId: m.tool_call_id,\n toolCalls: m.tool_calls?.map((tc: any) => ({\n id: tc.id,\n type: tc.type || \"function\",\n function: tc.function,\n })) as ToolCall[] | undefined,\n }));\n\n const agentRequest: AgentRequest = {\n protocol: \"openai\",\n messages,\n stream: body.stream ?? false,\n model: body.model,\n metadata: body.metadata,\n rawRequest: req,\n };\n\n // Invoke agent\n let result: string | AgentResult | AsyncIterable<string | AgentResult>;\n try {\n result = await Promise.resolve(this.invokeAgent(agentRequest));\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n error: { message: errorMessage, type: \"server_error\" },\n }),\n );\n return;\n }\n\n if (agentRequest.stream && this.isAsyncIterable(result)) {\n // Streaming response\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n\n const id = `chatcmpl-${Date.now()}`;\n const created = Math.floor(Date.now() / 1000);\n\n for await (const chunk of result) {\n let content = \"\";\n let toolCalls: ToolCall[] | undefined;\n\n if (typeof chunk === \"string\") {\n content = chunk;\n } else {\n const event = chunk as AgentEvent;\n if (event.event === EventType.TEXT) {\n content = (event.data?.delta as string) || \"\";\n } else if (event.event === EventType.TOOL_CALL) {\n toolCalls = [\n {\n id: (event.data?.id as string) || \"\",\n type: \"function\",\n function: {\n name: (event.data?.name as string) || \"\",\n arguments: (event.data?.args as string) || \"\",\n },\n },\n ];\n } else if (event.event === EventType.ERROR) {\n const errorData = {\n id,\n object: \"chat.completion.chunk\",\n created,\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n delta: {},\n finish_reason: \"error\",\n },\n ],\n error: {\n message: (event.data?.message as string) || \"Unknown error\",\n code: event.data?.code,\n },\n };\n res.write(`data: ${JSON.stringify(errorData)}\\n\\n`);\n continue;\n } else {\n content = (event.data?.content as string) || \"\";\n }\n }\n\n const data: Record<string, unknown> = {\n id,\n object: \"chat.completion.chunk\",\n created,\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n delta: content\n ? { content }\n : toolCalls\n ? {\n tool_calls: toolCalls.map((tc, idx) => ({\n index: idx,\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n }\n : {},\n finish_reason: null,\n },\n ],\n };\n\n res.write(`data: ${JSON.stringify(data)}\\n\\n`);\n }\n\n // Send done message\n res.write(\"data: [DONE]\\n\\n\");\n res.end();\n } else {\n // Non-streaming response\n let content = \"\";\n let toolCalls: ToolCall[] | undefined;\n\n if (typeof result === \"string\") {\n content = result;\n } else if (this.isAsyncIterable(result)) {\n // Collect all results\n for await (const chunk of result) {\n if (typeof chunk === \"string\") {\n content += chunk;\n } else {\n const event = chunk as AgentEvent;\n if (event.event === EventType.TEXT) {\n content += (event.data?.delta as string) || \"\";\n } else if (event.event === EventType.TOOL_CALL) {\n if (!toolCalls) toolCalls = [];\n toolCalls.push({\n id: (event.data?.id as string) || \"\",\n type: \"function\",\n function: {\n name: (event.data?.name as string) || \"\",\n arguments: (event.data?.args as string) || \"\",\n },\n });\n }\n }\n }\n } else {\n // Handle AgentEvent or simple {content: string} objects\n const event = result as AgentEvent;\n if (event.event === EventType.TEXT) {\n // Try both delta (for streaming) and content (for non-streaming)\n content = (event.data?.delta as string) || (event.data?.content as string) || \"\";\n } else if (event.event) {\n // It's a proper AgentEvent with event type\n content = (event.data?.content as string) || \"\";\n } else {\n // Backward compatibility: simple {content: string} object\n content = (result as { content?: string }).content || \"\";\n }\n }\n\n const response: Record<string, unknown> = {\n id: `chatcmpl-${Date.now()}`,\n object: \"chat.completion\",\n created: Math.floor(Date.now() / 1000),\n model: agentRequest.model || \"agent\",\n choices: [\n {\n index: 0,\n message: {\n role: \"assistant\",\n content,\n tool_calls: toolCalls?.map((tc, idx) => ({\n index: idx,\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n },\n finish_reason: \"stop\",\n },\n ],\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n total_tokens: 0,\n },\n };\n\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(response));\n }\n }\n\n /**\n * Parse request body\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private parseBody(req: http.IncomingMessage): Promise<any> {\n return new Promise((resolve, reject) => {\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", () => {\n try {\n resolve(JSON.parse(body || \"{}\"));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n reject(new Error(\"Invalid JSON\"));\n }\n });\n req.on(\"error\", reject);\n });\n }\n\n /**\n * Check if value is async iterable\n */\n private isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return (\n value !== null &&\n typeof value === \"object\" &&\n Symbol.asyncIterator in value\n );\n }\n\n /**\n * Convert result to async iterable\n */\n private async *toAsyncIterable(\n result: string | AgentResult | AsyncIterable<string | AgentResult>,\n ): AsyncIterable<AgentEvent | string> {\n if (typeof result === \"string\") {\n yield result;\n } else if (this.isAsyncIterable(result)) {\n for await (const chunk of result) {\n yield chunk as AgentEvent | string;\n }\n } else {\n yield result as AgentEvent;\n }\n }\n}\n","/**\n * Server Data Models\n *\n * 此模块定义 Server 相关的所有数据模型。\n * This module defines all data models related to Server.\n */\n\n/**\n * Message role enum\n */\nexport enum MessageRole {\n SYSTEM = \"system\",\n USER = \"user\",\n ASSISTANT = \"assistant\",\n TOOL = \"tool\",\n}\n\n/**\n * Event type enum for AgentEvent (Protocol agnostic)\n *\n * 定义核心事件类型,框架会自动转换为对应协议格式(OpenAI、AG-UI 等)。\n */\nexport enum EventType {\n // 核心事件\n TEXT = \"TEXT\", // 文本内容块\n TOOL_CALL = \"TOOL_CALL\", // 完整工具调用(含 id, name, args)\n TOOL_CALL_CHUNK = \"TOOL_CALL_CHUNK\", // 工具调用参数片段(流式场景)\n TOOL_RESULT = \"TOOL_RESULT\", // 工具执行结果\n TOOL_RESULT_CHUNK = \"TOOL_RESULT_CHUNK\", // 工具执行结果片段(流式输出场景)\n ERROR = \"ERROR\", // 错误事件\n STATE = \"STATE\", // 状态更新(快照或增量)\n\n // 人机交互事件\n HITL = \"HITL\", // Human-in-the-Loop,请求人类介入\n\n // 扩展事件\n CUSTOM = \"CUSTOM\", // 自定义事件\n RAW = \"RAW\", // 原始协议数据(直接透传到响应流)\n}\n\n/**\n * Tool call definition\n */\nexport interface ToolCall {\n id: string;\n type?: string;\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * Tool definition\n */\nexport interface Tool {\n type: string;\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n };\n}\n\n/**\n * Message in a conversation\n */\nexport interface Message {\n id?: string;\n role: MessageRole;\n content?: string | Array<Record<string, unknown>>;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * Agent request\n */\nexport interface AgentRequest {\n /** Protocol name */\n protocol?: string;\n /** Messages in the conversation */\n messages: Message[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Model to use */\n model?: string;\n /** Available tools */\n tools?: Tool[];\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Raw HTTP request (for accessing headers, etc.) */\n rawRequest?: unknown;\n}\n\n/**\n * Merge options for addition field\n */\nexport interface MergeOptions {\n noNewField?: boolean;\n concatList?: boolean;\n ignoreEmptyList?: boolean;\n}\n\n/**\n * Agent event (for streaming)\n *\n * 标准化的事件结构,协议无关设计。\n * 框架层会自动将 AgentEvent 转换为对应协议的格式(OpenAI、AG-UI 等)。\n */\nexport interface AgentEvent {\n /** Event type */\n event: EventType;\n /** Event data */\n data?: Record<string, unknown>;\n /** Additional fields for protocol extension */\n addition?: Record<string, unknown>;\n /** Merge options for addition */\n additionMergeOptions?: MergeOptions;\n}\n\n/**\n * Agent result (alias for AgentEvent)\n */\nexport type AgentResult = AgentEvent;\n\n/**\n * Agent event item (can be string or AgentEvent)\n */\nexport type AgentEventItem = string | AgentEvent;\n\n/**\n * Protocol configuration base\n */\nexport interface ProtocolConfig {\n prefix?: string;\n enable?: boolean;\n}\n\n/**\n * OpenAI protocol configuration\n */\nexport interface OpenAIProtocolConfig extends ProtocolConfig {\n modelName?: string;\n}\n\n/**\n * AG-UI protocol configuration\n */\nexport interface AGUIProtocolConfig extends ProtocolConfig {\n // No additional config for now\n}\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** OpenAI protocol config */\n openai?: OpenAIProtocolConfig;\n /** AG-UI protocol config */\n agui?: AGUIProtocolConfig;\n /** CORS origins */\n corsOrigins?: string[];\n /** Port to listen on */\n port?: number;\n /** Host to listen on */\n host?: string;\n}\n","/**\n * AG-UI (Agent-User Interaction Protocol) 协议实现\n *\n * AG-UI 是一种开源、轻量级、基于事件的协议,用于标准化 AI Agent 与前端应用之间的交互。\n * 参考: https://docs.ag-ui.com/\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport {\n AgentEvent,\n AgentRequest,\n EventType,\n Message,\n MessageRole,\n MergeOptions,\n ServerConfig,\n Tool,\n ToolCall,\n} from \"./model\";\n\n// ============================================================================\n// AG-UI 事件类型常量\n// ============================================================================\n\nexport const AGUI_EVENT_TYPES = {\n RUN_STARTED: \"RUN_STARTED\",\n RUN_FINISHED: \"RUN_FINISHED\",\n RUN_ERROR: \"RUN_ERROR\",\n TEXT_MESSAGE_START: \"TEXT_MESSAGE_START\",\n TEXT_MESSAGE_CONTENT: \"TEXT_MESSAGE_CONTENT\",\n TEXT_MESSAGE_END: \"TEXT_MESSAGE_END\",\n TOOL_CALL_START: \"TOOL_CALL_START\",\n TOOL_CALL_ARGS: \"TOOL_CALL_ARGS\",\n TOOL_CALL_END: \"TOOL_CALL_END\",\n TOOL_CALL_RESULT: \"TOOL_CALL_RESULT\",\n STATE_SNAPSHOT: \"STATE_SNAPSHOT\",\n STATE_DELTA: \"STATE_DELTA\",\n MESSAGES_SNAPSHOT: \"MESSAGES_SNAPSHOT\",\n STEP_STARTED: \"STEP_STARTED\",\n STEP_FINISHED: \"STEP_FINISHED\",\n CUSTOM: \"CUSTOM\",\n RAW: \"RAW\",\n} as const;\n\n// ============================================================================\n// SSE 编码器\n// ============================================================================\n\n/**\n * SSE Event Encoder for AG-UI protocol\n */\nexport class EventEncoder {\n getContentType(): string {\n return \"text/event-stream\";\n }\n\n encode(event: Record<string, unknown>): string {\n return `data: ${JSON.stringify(event)}\\n\\n`;\n }\n}\n\n// ============================================================================\n// 流状态管理\n// ============================================================================\n\ninterface TextState {\n started: boolean;\n ended: boolean;\n messageId: string;\n}\n\ninterface ToolCallState {\n name: string;\n started: boolean;\n ended: boolean;\n hasResult: boolean;\n isHitl: boolean;\n}\n\n/**\n * Stream state machine for tracking message and tool call boundaries\n */\nexport class StreamStateMachine {\n text: TextState = {\n started: false,\n ended: false,\n messageId: uuidv4(),\n };\n toolCallStates: Map<string, ToolCallState> = new Map();\n toolResultChunks: Map<string, string[]> = new Map();\n runErrored: boolean = false;\n\n /**\n * End all open tool calls\n */\n *endAllTools(encoder: EventEncoder, exclude?: string): Generator<string> {\n for (const [toolId, state] of this.toolCallStates) {\n if (exclude && toolId === exclude) {\n continue;\n }\n if (state.started && !state.ended) {\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: toolId,\n });\n state.ended = true;\n }\n }\n }\n\n /**\n * Ensure text message has started\n */\n *ensureTextStarted(encoder: EventEncoder): Generator<string> {\n if (!this.text.started || this.text.ended) {\n if (this.text.ended) {\n this.text = {\n started: false,\n ended: false,\n messageId: uuidv4(),\n };\n }\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_START,\n messageId: this.text.messageId,\n role: \"assistant\",\n });\n this.text.started = true;\n this.text.ended = false;\n }\n }\n\n /**\n * End text message if open\n */\n *endTextIfOpen(encoder: EventEncoder): Generator<string> {\n if (this.text.started && !this.text.ended) {\n yield encoder.encode({\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_END,\n messageId: this.text.messageId,\n });\n this.text.ended = true;\n }\n }\n\n /**\n * Cache tool result chunk\n */\n cacheToolResultChunk(toolId: string, delta: string): void {\n if (!toolId || delta === null || delta === undefined) {\n return;\n }\n if (delta) {\n const chunks = this.toolResultChunks.get(toolId) || [];\n chunks.push(delta);\n this.toolResultChunks.set(toolId, chunks);\n }\n }\n\n /**\n * Pop and concatenate cached tool result chunks\n */\n popToolResultChunks(toolId: string): string {\n const chunks = this.toolResultChunks.get(toolId) || [];\n this.toolResultChunks.delete(toolId);\n return chunks.join(\"\");\n }\n}\n\n// ============================================================================\n// AG-UI 协议处理器\n// ============================================================================\n\nconst DEFAULT_PREFIX = \"/ag-ui/agent\";\n\n/**\n * AG-UI Protocol Handler\n *\n * 实现 AG-UI (Agent-User Interaction Protocol) 兼容接口。\n * 参考: https://docs.ag-ui.com/\n */\nexport class AGUIProtocolHandler {\n name = \"ag-ui\";\n private config: ServerConfig[\"agui\"];\n private encoder = new EventEncoder();\n\n constructor(config?: ServerConfig) {\n this.config = config?.agui;\n }\n\n /**\n * Get the route prefix\n */\n getPrefix(): string {\n return this.config?.prefix ?? DEFAULT_PREFIX;\n }\n\n /**\n * Get the encoder\n */\n getEncoder(): EventEncoder {\n return this.encoder;\n }\n\n /**\n * Parse AG-UI request\n */\n parseRequest(requestData: Record<string, unknown>): {\n agentRequest: AgentRequest;\n context: Record<string, string>;\n } {\n // Create context\n const context = {\n threadId: (requestData.threadId as string) || uuidv4(),\n runId: (requestData.runId as string) || uuidv4(),\n };\n\n // Parse messages\n const messages = this.parseMessages(\n (requestData.messages as Array<Record<string, unknown>>) || [],\n );\n\n // Parse tools\n const tools = this.parseTools(\n requestData.tools as Array<Record<string, unknown>> | undefined,\n );\n\n // Build AgentRequest\n const agentRequest: AgentRequest = {\n protocol: \"agui\",\n messages,\n stream: true, // AG-UI always streams\n tools: tools || undefined,\n model: requestData.model as string | undefined,\n metadata: requestData.metadata as Record<string, unknown> | undefined,\n };\n\n return { agentRequest, context };\n }\n\n /**\n * Parse messages list\n */\n private parseMessages(\n rawMessages: Array<Record<string, unknown>>,\n ): Message[] {\n const messages: Message[] = [];\n\n for (const msgData of rawMessages) {\n if (typeof msgData !== \"object\" || msgData === null) {\n continue;\n }\n\n const roleStr = (msgData.role as string) || \"user\";\n let role: MessageRole;\n try {\n role = roleStr as MessageRole;\n if (!Object.values(MessageRole).includes(role)) {\n role = MessageRole.USER;\n }\n } catch {\n role = MessageRole.USER;\n }\n\n // Parse toolCalls\n let toolCalls: ToolCall[] | undefined;\n const rawToolCalls = msgData.toolCalls as\n | Array<Record<string, unknown>>\n | undefined;\n if (rawToolCalls && Array.isArray(rawToolCalls)) {\n toolCalls = rawToolCalls.map((tc) => ({\n id: (tc.id as string) || \"\",\n type: (tc.type as string) || \"function\",\n function: (tc.function as { name: string; arguments: string }) || {},\n }));\n }\n\n messages.push({\n id: msgData.id as string | undefined,\n role,\n content: msgData.content as string | undefined,\n name: msgData.name as string | undefined,\n toolCalls,\n toolCallId: msgData.toolCallId as string | undefined,\n });\n }\n\n return messages;\n }\n\n /**\n * Parse tools list\n */\n private parseTools(rawTools?: Array<Record<string, unknown>>): Tool[] | null {\n if (!rawTools || !Array.isArray(rawTools)) {\n return null;\n }\n\n const tools: Tool[] = [];\n for (const toolData of rawTools) {\n if (typeof toolData !== \"object\" || toolData === null) {\n continue;\n }\n\n tools.push({\n type: (toolData.type as string) || \"function\",\n function: (toolData.function as Tool[\"function\"]) || { name: \"\" },\n });\n }\n\n return tools.length > 0 ? tools : null;\n }\n\n /**\n * Format event stream as AG-UI SSE format\n */\n async *formatStream(\n eventStream: AsyncIterable<AgentEvent | string>,\n context: Record<string, string>,\n ): AsyncGenerator<string> {\n const state = new StreamStateMachine();\n\n // Send RUN_STARTED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_STARTED,\n threadId: context.threadId,\n runId: context.runId,\n });\n\n for await (const rawEvent of eventStream) {\n // Skip processing if RUN_ERROR occurred\n if (state.runErrored) {\n continue;\n }\n\n // Convert string to TEXT event\n const event: AgentEvent =\n typeof rawEvent === \"string\"\n ? { event: EventType.TEXT, data: { delta: rawEvent } }\n : rawEvent;\n\n // Check if it's an error event\n if (event.event === EventType.ERROR) {\n state.runErrored = true;\n }\n\n // Process event with boundary injection\n for (const sseData of this.processEventWithBoundaries(\n event,\n context,\n state,\n )) {\n if (sseData) {\n yield sseData;\n }\n }\n }\n\n // Don't send cleanup events after RUN_ERROR\n if (state.runErrored) {\n return;\n }\n\n // End all open tool calls\n for (const sseData of state.endAllTools(this.encoder)) {\n yield sseData;\n }\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n // Send RUN_FINISHED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_FINISHED,\n threadId: context.threadId,\n runId: context.runId,\n });\n }\n\n /**\n * Process event and inject boundary events\n */\n private *processEventWithBoundaries(\n event: AgentEvent,\n context: Record<string, string>,\n state: StreamStateMachine,\n ): Generator<string> {\n // RAW event: pass through directly\n if (event.event === EventType.RAW) {\n let rawData = (event.data?.raw as string) || \"\";\n if (rawData) {\n if (!rawData.endsWith(\"\\n\\n\")) {\n rawData = rawData.replace(/\\n+$/, \"\") + \"\\n\\n\";\n }\n yield rawData;\n }\n return;\n }\n\n // TEXT event: inject TEXT_MESSAGE_START before first TEXT\n if (event.event === EventType.TEXT) {\n // End all open tool calls first\n for (const sseData of state.endAllTools(this.encoder)) {\n yield sseData;\n }\n\n // Ensure text started\n for (const sseData of state.ensureTextStarted(this.encoder)) {\n yield sseData;\n }\n\n const aguiEvent: Record<string, unknown> = {\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_CONTENT,\n messageId: state.text.messageId,\n delta: (event.data?.delta as string) || \"\",\n };\n\n if (event.addition) {\n const merged = this.applyAddition(\n aguiEvent,\n event.addition,\n event.additionMergeOptions,\n );\n yield `data: ${JSON.stringify(merged)}\\n\\n`;\n } else {\n yield this.encoder.encode(aguiEvent);\n }\n return;\n }\n\n // TOOL_CALL_CHUNK event\n if (event.event === EventType.TOOL_CALL_CHUNK) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let needStart = false;\n const currentState = state.toolCallStates.get(toolId);\n if (toolId) {\n if (!currentState || currentState.ended) {\n needStart = true;\n }\n }\n\n if (needStart) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n state.toolCallStates.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta:\n (event.data?.args_delta as string) ||\n (event.data?.argsDelta as string) ||\n \"\",\n });\n return;\n }\n\n // TOOL_CALL event: complete tool call\n if (event.event === EventType.TOOL_CALL) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n const toolArgs = (event.data?.args as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let needStart = false;\n const currentState = state.toolCallStates.get(toolId);\n if (toolId) {\n if (!currentState || currentState.ended) {\n needStart = true;\n }\n }\n\n if (needStart) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n state.toolCallStates.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n // Send tool args if exists\n if (toolArgs) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta: toolArgs,\n });\n }\n return;\n }\n\n // TOOL_RESULT_CHUNK event: cache for later\n if (event.event === EventType.TOOL_RESULT_CHUNK) {\n const toolId = (event.data?.id as string) || \"\";\n const delta = (event.data?.delta as string) || \"\";\n state.cacheToolResultChunk(toolId, delta);\n return;\n }\n\n // HITL event: Human-in-the-Loop\n if (event.event === EventType.HITL) {\n const hitlId = (event.data?.id as string) || \"\";\n const toolCallId =\n (event.data?.tool_call_id as string) ||\n (event.data?.toolCallId as string) ||\n \"\";\n const hitlType = (event.data?.type as string) || \"confirmation\";\n const prompt = (event.data?.prompt as string) || \"\";\n const options = event.data?.options;\n const defaultValue = event.data?.default;\n const timeout = event.data?.timeout;\n const schema = event.data?.schema;\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n // If tool_call_id exists and tool is tracked\n if (toolCallId && state.toolCallStates.has(toolCallId)) {\n const toolState = state.toolCallStates.get(toolCallId)!;\n if (toolState.started && !toolState.ended) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId,\n });\n toolState.ended = true;\n }\n toolState.isHitl = true;\n toolState.hasResult = false;\n return;\n }\n\n // Create independent HITL tool call\n const argsDict: Record<string, unknown> = {\n type: hitlType,\n prompt,\n };\n if (options) argsDict.options = options;\n if (defaultValue !== undefined) argsDict.default = defaultValue;\n if (timeout !== undefined) argsDict.timeout = timeout;\n if (schema) argsDict.schema = schema;\n\n const argsJson = JSON.stringify(argsDict);\n const actualId = toolCallId || hitlId;\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: actualId,\n toolCallName: `hitl_${hitlType}`,\n });\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: actualId,\n delta: argsJson,\n });\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: actualId,\n });\n\n state.toolCallStates.set(actualId, {\n name: `hitl_${hitlType}`,\n started: true,\n ended: true,\n hasResult: false,\n isHitl: true,\n });\n return;\n }\n\n // TOOL_RESULT event\n if (event.event === EventType.TOOL_RESULT) {\n const toolId = (event.data?.id as string) || \"\";\n const toolName = (event.data?.name as string) || \"\";\n\n // End text if open\n for (const sseData of state.endTextIfOpen(this.encoder)) {\n yield sseData;\n }\n\n let toolState = state.toolCallStates.get(toolId);\n if (toolId && !toolState) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n });\n toolState = {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n };\n state.toolCallStates.set(toolId, toolState);\n }\n\n if (toolState && toolState.started && !toolState.ended) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_END,\n toolCallId: toolId,\n });\n toolState.ended = true;\n }\n\n let finalResult =\n ((event.data?.content as string) || (event.data?.result as string)) ??\n \"\";\n if (toolId) {\n const cachedChunks = state.popToolResultChunks(toolId);\n if (cachedChunks) {\n finalResult = cachedChunks + finalResult;\n }\n }\n\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.TOOL_CALL_RESULT,\n messageId:\n (event.data?.message_id as string) ||\n (event.data?.messageId as string) ||\n `tool-result-${toolId}`,\n toolCallId: toolId,\n content: finalResult,\n role: \"tool\",\n });\n return;\n }\n\n // ERROR event\n if (event.event === EventType.ERROR) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message: (event.data?.message as string) || \"\",\n code: event.data?.code,\n });\n return;\n }\n\n // STATE event\n if (event.event === EventType.STATE) {\n if (\"snapshot\" in (event.data || {})) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data?.snapshot || {},\n });\n } else if (\"delta\" in (event.data || {})) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_DELTA,\n delta: event.data?.delta || [],\n });\n } else {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data || {},\n });\n }\n return;\n }\n\n // CUSTOM event\n if (event.event === EventType.CUSTOM) {\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: (event.data?.name as string) || \"custom\",\n value: event.data?.value,\n });\n return;\n }\n\n // Unknown event type - convert to CUSTOM\n const eventName = event.event || \"unknown\";\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: eventName,\n value: event.data,\n });\n }\n\n /**\n * Apply addition fields\n */\n private applyAddition(\n eventData: Record<string, unknown>,\n addition: Record<string, unknown>,\n mergeOptions?: MergeOptions,\n ): Record<string, unknown> {\n if (!addition) {\n return eventData;\n }\n\n const result = { ...eventData };\n for (const [key, value] of Object.entries(addition)) {\n if (mergeOptions?.noNewField && !(key in eventData)) {\n continue;\n }\n result[key] = value;\n }\n return result;\n }\n\n /**\n * Generate error stream\n */\n async *errorStream(message: string): AsyncGenerator<string> {\n const threadId = uuidv4();\n const runId = uuidv4();\n\n // Send RUN_STARTED\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_STARTED,\n threadId,\n runId,\n });\n\n // Send RUN_ERROR\n yield this.encoder.encode({\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message,\n code: \"REQUEST_ERROR\",\n });\n }\n}\n","/**\n * Adapter Interface Definition\n *\n * 定义统一的适配器接口,所有框架适配器都实现这些接口。\n * Defines unified adapter interfaces that all framework adapters implement.\n */\n\n/**\n * 标准消息格式 (OpenAI 兼容)\n * Canonical message format (OpenAI compatible)\n */\nexport interface CanonicalMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\";\n content: string | null;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * 工具调用\n * Tool call\n */\nexport interface ToolCall {\n id: string;\n type: \"function\";\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * 标准工具定义\n * Canonical tool definition\n */\nexport interface CanonicalTool {\n name: string;\n description: string;\n parameters?: Record<string, unknown>;\n func?: (...args: unknown[]) => unknown | Promise<unknown>;\n}\n\n/**\n * 通用模型配置\n * Common model configuration\n */\nexport interface CommonModelConfig {\n /** 模型端点 URL */\n endpoint?: string;\n /** API Key */\n apiKey?: string;\n /** 模型名称 */\n modelName?: string;\n /** 温度参数 */\n temperature?: number;\n /** 最大 tokens */\n maxTokens?: number;\n /** 超时时间 (毫秒) */\n timeout?: number;\n}\n\n/**\n * 消息适配器接口\n * Message adapter interface\n *\n * 用于在不同框架消息格式之间进行转换。\n * Used to convert between different framework message formats.\n */\nexport interface MessageAdapter<TFrameworkMessage = unknown> {\n /**\n * 将框架消息转换为标准格式\n * Convert framework messages to canonical format\n */\n toCanonical(messages: TFrameworkMessage[]): CanonicalMessage[];\n\n /**\n * 将标准消息转换为框架格式\n * Convert canonical messages to framework format\n */\n fromCanonical(messages: CanonicalMessage[]): TFrameworkMessage[];\n}\n\n/**\n * 工具适配器接口\n * Tool adapter interface\n *\n * 用于将标准工具定义转换为框架特定格式。\n * Used to convert canonical tool definitions to framework-specific format.\n */\nexport interface ToolAdapter<TFrameworkTool = unknown> {\n /**\n * 将标准工具转换为框架格式\n * Convert canonical tools to framework format\n */\n fromCanonical(tools: CanonicalTool[]): TFrameworkTool[];\n\n /**\n * 将框架工具转换为标准格式 (可选)\n * Convert framework tools to canonical format (optional)\n */\n toCanonical?(tools: TFrameworkTool[]): CanonicalTool[];\n}\n\n/**\n * 模型适配器接口\n * Model adapter interface\n *\n * 用于包装框架模型,使其能够与 AgentRun 协同工作。\n * Used to wrap framework models to work with AgentRun.\n */\nexport interface ModelAdapter<TFrameworkModel = unknown> {\n /**\n * 使用 AgentRun 模型配置创建框架模型\n * Create framework model with AgentRun model configuration\n */\n createModel(config: CommonModelConfig): TFrameworkModel;\n}\n\n/**\n * 框架集成适配器\n * Framework integration adapter\n *\n * 组合消息、工具和模型适配器的完整框架集成。\n * Complete framework integration combining message, tool, and model adapters.\n */\nexport interface FrameworkAdapter<\n TMessage = unknown,\n TTool = unknown,\n TModel = unknown,\n> {\n name: string;\n message: MessageAdapter<TMessage>;\n tool: ToolAdapter<TTool>;\n model: ModelAdapter<TModel>;\n}\n\n/**\n * 将 JSON Schema 类型转换为 TypeScript 类型\n * Convert JSON Schema type to TypeScript type\n */\nexport function schemaToType(schema: Record<string, unknown>): string {\n if (!schema || typeof schema !== \"object\") {\n return \"unknown\";\n }\n\n const schemaType = schema[\"type\"] as string;\n\n switch (schemaType) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"array\": {\n const items = schema[\"items\"] as Record<string, unknown> | undefined;\n if (items) {\n return `${schemaToType(items)}[]`;\n }\n return \"unknown[]\";\n }\n case \"object\":\n return \"Record<string, unknown>\";\n case \"null\":\n return \"null\";\n default:\n return \"unknown\";\n }\n}\n","/**\n * Mastra Adapter\n *\n * Mastra 框架的集成适配器。\n * Integration adapter for Mastra framework.\n */\n\nimport {\n CanonicalMessage,\n CanonicalTool,\n CommonModelConfig,\n FrameworkAdapter,\n MessageAdapter,\n ModelAdapter,\n ToolAdapter,\n} from \"../adapter\";\n\nimport {\n MastraAgentConfig,\n MastraMessage,\n MastraModelConfig,\n MastraTool,\n MastraToolCall,\n} from \"./types\";\n\n/**\n * Mastra 消息适配器\n * Mastra message adapter\n */\nexport class MastraMessageAdapter implements MessageAdapter<MastraMessage> {\n /**\n * 将 Mastra 消息转换为标准格式\n */\n toCanonical(messages: MastraMessage[]): CanonicalMessage[] {\n return messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n name: msg.name,\n toolCallId: msg.tool_call_id,\n toolCalls: msg.tool_calls?.map((tc) => ({\n id: tc.id,\n type: tc.type,\n function: tc.function,\n })),\n }));\n }\n\n /**\n * 将标准消息转换为 Mastra 格式\n */\n fromCanonical(messages: CanonicalMessage[]): MastraMessage[] {\n return messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n name: msg.name,\n tool_call_id: msg.toolCallId,\n tool_calls: msg.toolCalls?.map(\n (tc): MastraToolCall => ({\n id: tc.id,\n type: tc.type,\n function: tc.function,\n }),\n ),\n }));\n }\n}\n\n/**\n * Mastra 工具适配器\n * Mastra tool adapter\n */\nexport class MastraToolAdapter implements ToolAdapter<MastraTool> {\n /**\n * 将标准工具转换为 Mastra 格式\n */\n fromCanonical(tools: CanonicalTool[]): MastraTool[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.parameters,\n execute: tool.func as MastraTool[\"execute\"],\n }));\n }\n\n /**\n * 将 Mastra 工具转换为标准格式\n */\n toCanonical(tools: MastraTool[]): CanonicalTool[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n func: tool.execute as CanonicalTool[\"func\"],\n }));\n }\n}\n\n/**\n * Mastra 模型适配器\n * Mastra model adapter\n */\nexport class MastraModelAdapter implements ModelAdapter<MastraModelConfig> {\n /**\n * 使用 AgentRun 配置创建 Mastra 模型配置\n */\n createModel(config: CommonModelConfig): MastraModelConfig {\n // 从端点 URL 解析提供商\n const provider = this.detectProvider(config.endpoint);\n\n return {\n provider,\n modelId: config.modelName || \"gpt-4\",\n apiKey: config.apiKey,\n baseUrl: config.endpoint,\n temperature: config.temperature,\n maxTokens: config.maxTokens,\n };\n }\n\n /**\n * 检测模型提供商\n */\n private detectProvider(endpoint?: string): string {\n if (!endpoint) {\n return \"openai\";\n }\n\n const lowerEndpoint = endpoint.toLowerCase();\n\n if (lowerEndpoint.includes(\"openai\")) {\n return \"openai\";\n }\n if (lowerEndpoint.includes(\"anthropic\")) {\n return \"anthropic\";\n }\n if (lowerEndpoint.includes(\"dashscope\")) {\n return \"dashscope\";\n }\n if (lowerEndpoint.includes(\"google\") || lowerEndpoint.includes(\"gemini\")) {\n return \"google\";\n }\n\n // 默认使用 openai-compatible\n return \"openai-compatible\";\n }\n}\n\n/**\n * Mastra 完整框架适配器\n * Mastra complete framework adapter\n */\nexport class MastraAdapter\n implements FrameworkAdapter<MastraMessage, MastraTool, MastraModelConfig>\n{\n readonly name = \"mastra\";\n readonly message = new MastraMessageAdapter();\n readonly tool = new MastraToolAdapter();\n readonly model = new MastraModelAdapter();\n}\n\n/**\n * 创建 Mastra 适配器实例\n * Create Mastra adapter instance\n */\nexport function createMastraAdapter(): MastraAdapter {\n return new MastraAdapter();\n}\n\n/**\n * 将 AgentRun 工具包装为 Mastra 工具\n * Wrap AgentRun tools as Mastra tools\n */\nexport function wrapTools(tools: CanonicalTool[]): MastraTool[] {\n const adapter = new MastraToolAdapter();\n return adapter.fromCanonical(tools);\n}\n\n/**\n * 将 AgentRun 模型配置转换为 Mastra 模型配置\n * Convert AgentRun model config to Mastra model config\n */\nexport function wrapModel(config: CommonModelConfig): MastraModelConfig {\n const adapter = new MastraModelAdapter();\n return adapter.createModel(config);\n}\n\n/**\n * Agent 包装器配置参数\n * Agent wrapper configuration parameters\n */\nexport interface WrapAgentParams {\n /** Agent 名称 */\n name: string;\n /** Agent 指令/系统提示词 */\n instructions?: string;\n /** 模型配置 */\n modelConfig: CommonModelConfig;\n /** 工具列表 */\n tools?: CanonicalTool[];\n}\n\n/**\n * 将 AgentRun 组件包装为完整的 Mastra Agent 配置\n * Wrap AgentRun components as complete Mastra agent configuration\n *\n * @param params - Agent 包装器配置参数\n * @returns Mastra Agent 配置对象\n *\n * @example\n * ```typescript\n * const agentConfig = wrapAgent({\n * name: \"MyAssistant\",\n * instructions: \"You are a helpful assistant\",\n * modelConfig: {\n * endpoint: \"https://api.openai.com/v1\",\n * apiKey: \"sk-...\",\n * modelName: \"gpt-4\"\n * },\n * tools: [calculatorTool, weatherTool]\n * });\n * ```\n */\nexport function wrapAgent(params: WrapAgentParams): MastraAgentConfig {\n const { name, instructions, modelConfig, tools } = params;\n\n // 转换模型配置\n const modelAdapter = new MastraModelAdapter();\n const mastraModel = modelAdapter.createModel(modelConfig);\n\n // 转换工具(如果有)\n let mastraTools: MastraTool[] | undefined;\n if (tools && tools.length > 0) {\n const toolAdapter = new MastraToolAdapter();\n mastraTools = toolAdapter.fromCanonical(tools);\n }\n\n return {\n name,\n instructions,\n model: mastraModel,\n tools: mastraTools,\n };\n}\n"]}