24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
from typing import Dict, List, Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class RunRequest(BaseModel):
|
|
tool: str = Field(..., description="工具名称,对应 config.yaml 的 tools key")
|
|
args: List[str] = Field(default_factory=list, description="传给可执行文件的参数")
|
|
workdir: Optional[str] = Field(None, description="工作目录,默认使用 config.base_workdir")
|
|
timeout: Optional[int] = Field(None, description="超时时间秒,默认取 config.run_defaults")
|
|
env: Optional[Dict[str, str]] = Field(None, description="额外环境变量")
|
|
capture_output: Optional[bool] = Field(None, description="是否捕获 stdout/stderr")
|
|
strip_output: Optional[bool] = Field(None, description="是否 strip 输出换行/空白")
|
|
|
|
|
|
class RunResult(BaseModel):
|
|
success: bool
|
|
return_code: Optional[int] = None
|
|
stdout: Optional[str] = None
|
|
stderr: Optional[str] = None
|
|
elapsed: Optional[float] = None
|
|
tool_path: Optional[str] = None
|
|
workdir: Optional[str] = None
|
|
output_path: Optional[str] = None # 若生成文件,返回落盘路径(由调用方基于共享卷读取)
|