Skip to content

Commit 8060d0e

Browse files
committed
feat(agent_runtime): align SDK model with official agentrun-20250910
补齐 AgentRuntime / Endpoint / List 入参与官方 SDK 的字段差异,并把 ``tags`` 字段下线(已被原生 ``system_tags`` 覆盖,与 super_agent 模块统一)。 字段变更: - AgentRuntimeMutableProps: + disk_size, enable_session_isolation, nas_config, oss_mount_config; - tags - AgentRuntimeListInput: + status, workspace_ids; - tags - AgentRuntimeEndpointMutableProps: + disable_public_network_access, scaling_config; - tags - AgentRuntimeEndpointUpdateInput: + delete_scaling_config - AgentRuntimeContainer: + acr_instance_id, image_registry_type, port, registry_config - AgentRuntimeProtocolConfig: + protocol_settings - AgentRuntimeEndpointRoutingWeight.weight: int -> float 新增辅助模型(一比一对齐官方): - NASConfig / NASMountConfig - OSSMountConfig / OSSMountPoint - ScalingConfig / ScheduledPolicy - RegistryConfig / RegistryAuthConfig / RegistryCertConfig / RegistryNetworkConfig - ProtocolSettings list_all / list_all_async 形参同步更新:删 tags,加 system_tags / status / workspace_id / workspace_ids;runtime.py 通过 make codegen 重新生成。 测试:agent_runtime model.py 100% 行/分支覆盖;3444 全量单测通过; mypy --config-file mypy.ini agentrun/agent_runtime/ 无 issue。 Signed-off-by: Sodawyx <sodawyx@126.com>
1 parent dd328f5 commit 8060d0e

5 files changed

Lines changed: 511 additions & 24 deletions

File tree

agentrun/agent_runtime/__runtime_async_template.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ async def create_async(
7777
ResourceAlreadyExistError: 资源已存在 / Resource already exists
7878
HTTPError: HTTP 请求错误 / HTTP request error
7979
"""
80-
return await cls.__get_client(config=config).create_async(input, config=config)
80+
return await cls.__get_client(config=config).create_async(
81+
input, config=config
82+
)
8183

8284
@classmethod
8385
async def delete_by_id_async(cls, id: str, config: Optional[Config] = None):
@@ -155,7 +157,9 @@ async def get_by_id_async(cls, id: str, config: Optional[Config] = None):
155157
ResourceNotExistError: 资源不存在 / Resource does not exist
156158
HTTPError: HTTP 请求错误 / HTTP request error
157159
"""
158-
return await cls.__get_client(config=config).get_async(id, config=config)
160+
return await cls.__get_client(config=config).get_async(
161+
id, config=config
162+
)
159163

160164
@classmethod
161165
async def _list_page_async(
@@ -174,16 +178,22 @@ async def list_all_async(
174178
cls,
175179
*,
176180
agent_runtime_name: Optional[str] = None,
177-
tags: Optional[str] = None,
181+
system_tags: Optional[str] = None,
178182
search_mode: Optional[str] = None,
183+
status: Optional[str] = None,
184+
workspace_id: Optional[str] = None,
185+
workspace_ids: Optional[str] = None,
179186
config: Optional[Config] = None,
180187
) -> List["AgentRuntime"]:
181188
return await cls._list_all_async(
182189
lambda ar: ar.agent_runtime_id or "",
183190
config=config,
184191
agent_runtime_name=agent_runtime_name,
185-
tags=tags,
192+
system_tags=system_tags,
186193
search_mode=search_mode,
194+
status=status,
195+
workspace_id=workspace_id,
196+
workspace_ids=workspace_ids,
187197
)
188198

189199
@classmethod

agentrun/agent_runtime/model.py

Lines changed: 192 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,63 @@ def from_file(
139139
return c
140140

141141

142+
class RegistryAuthConfig(BaseModel):
143+
"""镜像仓库认证配置 / Registry Authentication Configuration"""
144+
145+
password: Optional[str] = None
146+
"""镜像仓库的登录密码 / Registry login password"""
147+
user_name: Optional[str] = None
148+
"""镜像仓库的登录用户名 / Registry login username"""
149+
150+
151+
class RegistryCertConfig(BaseModel):
152+
"""镜像仓库证书配置 / Registry Certificate Configuration"""
153+
154+
insecure: Optional[bool] = None
155+
"""是否跳过 TLS 证书验证 / Whether to skip TLS certificate verification"""
156+
root_ca_cert_base_64: Optional[str] = None
157+
"""镜像仓库根 CA 证书 Base64 编码 / Registry root CA certificate (Base64 encoded)"""
158+
159+
160+
class RegistryNetworkConfig(BaseModel):
161+
"""镜像仓库网络配置 / Registry Network Configuration"""
162+
163+
security_group_id: Optional[str] = None
164+
"""镜像仓库的安全组 ID / Registry security group ID"""
165+
v_switch_id: Optional[str] = None
166+
"""镜像仓库所在的交换机 ID / Registry vSwitch ID"""
167+
vpc_id: Optional[str] = None
168+
"""镜像仓库所在的 VPC ID / Registry VPC ID"""
169+
170+
171+
class RegistryConfig(BaseModel):
172+
"""自定义镜像仓库配置 / Custom Registry Configuration"""
173+
174+
auth_config: Optional[RegistryAuthConfig] = None
175+
"""镜像仓库的认证配置 / Registry authentication configuration"""
176+
cert_config: Optional[RegistryCertConfig] = None
177+
"""镜像仓库的证书配置 / Registry certificate configuration"""
178+
network_config: Optional[RegistryNetworkConfig] = None
179+
"""镜像仓库的网络配置 / Registry network configuration"""
180+
181+
142182
class AgentRuntimeContainer(BaseModel):
143183
"""Agent Runtime 容器配置"""
144184

185+
acr_instance_id: Optional[str] = None
186+
"""阿里云容器镜像服务(ACR)的实例 ID / Aliyun Container Registry (ACR) instance ID"""
145187
command: Optional[List[str]] = Field(alias="command", default=None)
146188
"""在运行时中运行的命令(例如:["python"])"""
147189
image: Optional[str] = Field(alias="image", default=None)
148190
"""容器镜像地址"""
191+
image_registry_type: Optional[str] = None
192+
"""容器镜像来源类型,支持 ACR / ACREE / CUSTOM
193+
/ Container image registry type: ACR / ACREE / CUSTOM"""
194+
port: Optional[int] = None
195+
"""容器内部监听端口 / Container internal port"""
196+
registry_config: Optional[RegistryConfig] = None
197+
"""自定义镜像仓库配置(当 image_registry_type 为 CUSTOM 时使用)
198+
/ Custom registry configuration (used when image_registry_type is CUSTOM)"""
149199

150200

151201
class AgentRuntimeHealthCheckConfig(BaseModel):
@@ -188,20 +238,132 @@ class AgentRuntimeProtocolType(str, Enum):
188238
SUPER_AGENT = "SUPER_AGENT"
189239

190240

241+
class ProtocolSettings(BaseModel):
242+
"""详细协议配置项 / Detailed Protocol Settings
243+
244+
用于配置单个协议的明细参数(路径、HTTP 方法、请求/响应 schema 等)。
245+
Used to configure detailed parameters for a single protocol (path, HTTP method,
246+
request/response schemas, etc.).
247+
"""
248+
249+
a_2aagent_card: Optional[str] = Field(alias="A2AAgentCard", default=None)
250+
"""A2A Agent Card(兼容旧字段名 A2AAgentCard)/ A2A Agent Card (legacy field name)"""
251+
a_2a_agent_card: Optional[str] = Field(alias="a2aAgentCard", default=None)
252+
"""A2A Agent Card / A2A Agent Card"""
253+
a_2a_agent_card_url: Optional[str] = Field(
254+
alias="a2aAgentCardUrl", default=None
255+
)
256+
"""A2A Agent Card URL / A2A Agent Card URL"""
257+
config: Optional[str] = None
258+
"""协议配置的 JSON 字符串 / Protocol configuration JSON string"""
259+
headers: Optional[str] = None
260+
"""请求头 / Request headers"""
261+
input_body_json_schema: Optional[str] = None
262+
"""请求体 JSON Schema / Request body JSON schema"""
263+
method: Optional[str] = None
264+
"""HTTP 方法 / HTTP method"""
265+
name: Optional[str] = None
266+
"""可选展示名 / Optional display name"""
267+
output_body_json_schema: Optional[str] = None
268+
"""响应体 JSON Schema / Response body JSON schema"""
269+
path: Optional[str] = None
270+
"""协议路径 / Protocol path"""
271+
path_prefix: Optional[str] = None
272+
"""协议路径前缀 / Protocol path prefix"""
273+
request_content_type: Optional[str] = None
274+
"""请求内容类型 / Request content type"""
275+
response_content_type: Optional[str] = None
276+
"""响应内容类型 / Response content type"""
277+
type: Optional[str] = None
278+
"""协议类型标识 / Protocol type identifier"""
279+
280+
191281
class AgentRuntimeProtocolConfig(BaseModel):
192282
"""Agent Runtime 协议配置"""
193283

284+
protocol_settings: Optional[List[ProtocolSettings]] = None
285+
"""详细的协议配置信息 / Detailed protocol settings"""
194286
type: AgentRuntimeProtocolType = Field(
195287
alias="type", default=AgentRuntimeProtocolType.HTTP
196288
)
197289
"""协议类型"""
198290

199291

292+
class NASMountConfig(BaseModel):
293+
"""NAS 挂载点配置 / NAS Mount Configuration"""
294+
295+
enable_tls: Optional[bool] = Field(alias="enableTLS", default=None)
296+
"""是否启用 TLS / Whether to enable TLS"""
297+
mount_dir: Optional[str] = None
298+
"""挂载目录 / Mount directory"""
299+
server_addr: Optional[str] = None
300+
"""NAS 服务地址 / NAS server address"""
301+
302+
303+
class NASConfig(BaseModel):
304+
"""NAS 文件系统配置 / NAS Filesystem Configuration"""
305+
306+
group_id: Optional[int] = None
307+
"""用户组 ID / Group ID"""
308+
mount_points: Optional[List[NASMountConfig]] = None
309+
"""挂载点列表 / Mount points"""
310+
user_id: Optional[int] = None
311+
"""用户 ID / User ID"""
312+
313+
314+
class OSSMountPoint(BaseModel):
315+
"""OSS 挂载点 / OSS Mount Point"""
316+
317+
bucket_name: Optional[str] = None
318+
"""OSS Bucket 名称 / OSS bucket name"""
319+
bucket_path: Optional[str] = None
320+
"""OSS Bucket 中要挂载的路径 / Path inside the bucket to mount"""
321+
endpoint: Optional[str] = None
322+
"""OSS Endpoint / OSS endpoint"""
323+
mount_dir: Optional[str] = None
324+
"""容器内挂载目录 / Mount directory inside the container"""
325+
read_only: Optional[bool] = None
326+
"""是否只读挂载 / Whether to mount read-only"""
327+
328+
329+
class OSSMountConfig(BaseModel):
330+
"""OSS 挂载配置 / OSS Mount Configuration"""
331+
332+
mount_points: Optional[List[OSSMountPoint]] = None
333+
"""挂载点列表 / Mount points"""
334+
335+
336+
class ScheduledPolicy(BaseModel):
337+
"""端点弹性伸缩定时策略 / Endpoint Scaling Scheduled Policy"""
338+
339+
end_time: Optional[str] = None
340+
"""结束时间 / End time"""
341+
name: Optional[str] = None
342+
"""策略名称 / Policy name"""
343+
schedule_expression: Optional[str] = None
344+
"""定时表达式(cron) / Schedule expression (cron)"""
345+
start_time: Optional[str] = None
346+
"""开始时间 / Start time"""
347+
target: Optional[int] = None
348+
"""目标实例数 / Target instance count"""
349+
time_zone: Optional[str] = None
350+
"""时区 / Time zone"""
351+
352+
353+
class ScalingConfig(BaseModel):
354+
"""端点弹性伸缩配置 / Endpoint Scaling Configuration"""
355+
356+
min_instances: Optional[int] = None
357+
"""最小实例数 / Minimum instance count"""
358+
scheduled_policies: Optional[List[ScheduledPolicy]] = None
359+
"""定时扩缩容策略列表 / Scheduled scaling policies"""
360+
361+
200362
class AgentRuntimeEndpointRoutingWeight(BaseModel):
201363
"""智能体运行时端点路由配置"""
202364

203365
version: Optional[str] = None
204-
weight: Optional[int] = None
366+
weight: Optional[float] = None
205367

206368

207369
class AgentRuntimeEndpointRoutingConfig(BaseModel):
@@ -226,6 +388,12 @@ class AgentRuntimeMutableProps(BaseModel):
226388
"""Agent Runtime 凭证 ID"""
227389
description: Optional[str] = None
228390
"""Agent Runtime 描述"""
391+
disk_size: Optional[int] = None
392+
"""Agent Runtime 实例磁盘大小,单位:GB
393+
/ Instance disk size in GB"""
394+
enable_session_isolation: Optional[bool] = None
395+
"""是否启用会话隔离,启用后每个会话将在独立的环境中运行
396+
/ Whether to enable session isolation; each session runs in an isolated environment when enabled"""
229397
environment_variables: Optional[Dict[str, str]] = None
230398
"""环境变量"""
231399
execution_role_arn: Optional[str] = None
@@ -238,8 +406,12 @@ class AgentRuntimeMutableProps(BaseModel):
238406
"""日志配置"""
239407
memory: Optional[int] = 4096
240408
"""Agent Runtime 内存配置,单位:MB"""
409+
nas_config: Optional[NASConfig] = None
410+
"""NAS 文件系统挂载配置 / NAS filesystem mount configuration"""
241411
network_configuration: Optional[NetworkConfig] = None
242412
"""Agent Runtime 网络配置"""
413+
oss_mount_config: Optional[OSSMountConfig] = None
414+
"""OSS 挂载配置 / OSS mount configuration"""
243415
port: Optional[int] = 9000
244416
"""Agent Runtime 端口配置"""
245417
protocol_configuration: Optional[AgentRuntimeProtocolConfig] = None
@@ -250,10 +422,9 @@ class AgentRuntimeMutableProps(BaseModel):
250422
"""每实例会话并发限制"""
251423
session_idle_timeout_seconds: Optional[int] = None
252424
"""会话空闲超时时间,单位:秒"""
253-
tags: Optional[List[str]] = None
254-
"""标签列表"""
255425
system_tags: Optional[List[str]] = None
256-
"""系统标签列表 (由平台内部使用, 例如 SuperAgent 用来标识下游 AgentRuntime)"""
426+
"""系统标签列表 (由平台内部使用, 例如 SuperAgent 用来标识下游 AgentRuntime)
427+
/ System tags (used internally by the platform, e.g. by SuperAgent to mark downstream AgentRuntimes)"""
257428

258429

259430
class AgentRuntimeImmutableProps(BaseModel):
@@ -284,9 +455,14 @@ class AgentRuntimeSystemProps(BaseModel):
284455
class AgentRuntimeEndpointMutableProps(BaseModel):
285456
agent_runtime_endpoint_name: Optional[str] = None
286457
description: Optional[str] = None
458+
disable_public_network_access: Optional[bool] = None
459+
"""是否禁用该端点的公网访问
460+
/ Whether to disable public network access for this endpoint"""
287461
routing_configuration: Optional[AgentRuntimeEndpointRoutingConfig] = None
288462
"""智能体运行时端点的路由配置,支持多版本权重分配"""
289-
tags: Optional[List[str]] = None
463+
scaling_config: Optional[ScalingConfig] = None
464+
"""端点的弹性伸缩配置,包括最小实例数和定时扩容策略
465+
/ Endpoint scaling configuration: min instances and scheduled policies"""
290466
target_version: Optional[str] = "LATEST"
291467
"""智能体运行时的目标版本"""
292468

@@ -325,15 +501,20 @@ class AgentRuntimeUpdateInput(AgentRuntimeMutableProps):
325501
class AgentRuntimeListInput(PageableInput):
326502
agent_runtime_name: Optional[str] = None
327503
"""Agent Runtime 名称"""
328-
tags: Optional[str] = None
329-
"""标签过滤,多个标签用逗号分隔"""
330504
system_tags: Optional[str] = None
331-
"""系统标签过滤, 多个标签用逗号分隔"""
505+
"""系统标签过滤, 多个标签用逗号分隔
506+
/ Filter by system tags, comma separated"""
332507
search_mode: Optional[str] = None
333508
"""搜索模式"""
509+
status: Optional[str] = None
510+
"""按状态过滤,多个状态用逗号分隔,支持精确匹配
511+
/ Filter by status, comma separated"""
334512
workspace_id: Optional[str] = None
335513
"""按工作空间标识符过滤
336514
/ Filter by workspace identifier"""
515+
workspace_ids: Optional[str] = None
516+
"""按多个工作空间标识符过滤,逗号分隔
517+
/ Filter by multiple workspace identifiers, comma separated"""
337518

338519

339520
class AgentRuntimeEndpointCreateInput(
@@ -343,7 +524,9 @@ class AgentRuntimeEndpointCreateInput(
343524

344525

345526
class AgentRuntimeEndpointUpdateInput(AgentRuntimeEndpointMutableProps):
346-
pass
527+
delete_scaling_config: Optional[bool] = None
528+
"""为 true 时删除该端点的弹性伸缩配置
529+
/ If true, delete the existing scaling configuration for this endpoint"""
347530

348531

349532
class AgentRuntimeEndpointListInput(PageableInput):

0 commit comments

Comments
 (0)