This commit is contained in:
2026-06-22 08:55:57 +08:00
parent dbb87823e8
commit 6ade6e8fa9
325 changed files with 41131 additions and 855 deletions
+62
View File
@@ -0,0 +1,62 @@
package run
// exec_dto.go 定义一次性 exec(run_command / run_tests)的请求/响应契约。
// 与 run profile 不同:exec 是同步请求-响应,输出在内存捕获后一次性返回。
// ExecCommandReq 是 run_command 的输入。WorktreeID 为空 → 在 workspace main_path 执行。
type ExecCommandReq struct {
WorkspaceID string `json:"workspace_id"`
WorktreeID string `json:"worktree_id,omitempty"`
Command string `json:"command"`
Args []string `json:"args,omitempty"`
Env map[string]string `json:"env,omitempty"` // 临时覆盖(明文,不落库)
TimeoutSec int `json:"timeout_sec,omitempty"`
}
// ExecCommandResp 是 run_command 的结构化结果。
type ExecCommandResp struct {
ExitCode int `json:"exit_code"`
Stdout string `json:"stdout"`
Stderr string `json:"stderr"`
DurationMs int64 `json:"duration_ms"`
TimedOut bool `json:"timed_out"`
Truncated bool `json:"truncated"`
}
// ExecTestsReq 是 run_tests 的输入:在 run_command 基础上增加 Format(解析格式)。
type ExecTestsReq struct {
WorkspaceID string `json:"workspace_id"`
WorktreeID string `json:"worktree_id,omitempty"`
Command string `json:"command"`
Args []string `json:"args,omitempty"`
Format string `json:"format,omitempty"` // gotest|junit|vitest|auto(默认 auto)
Env map[string]string `json:"env,omitempty"`
TimeoutSec int `json:"timeout_sec,omitempty"`
}
// ExecTestsResp 是 run_tests 的结果:run_command 输出 + 结构化测试摘要。
// ParseError 非空表示解析失败,但原始输出与退出码仍可用——run_tests 永不因解析失败
// 而向 agent 返回错误。
type ExecTestsResp struct {
ExecCommandResp
Summary TestSummary `json:"summary"`
ParseError string `json:"parse_error,omitempty"`
}
// TestSummary 是跨框架(go test / JUnit / vitest)归一化的测试结果摘要。
type TestSummary struct {
Framework string `json:"framework"`
Total int `json:"total"`
Passed int `json:"passed"`
Failed int `json:"failed"`
Skipped int `json:"skipped"`
DurationMs int64 `json:"duration_ms"`
Failures []TestFailure `json:"failures"`
}
// TestFailure 描述单个失败用例。Package 对非 go 框架可能为空。
type TestFailure struct {
Name string `json:"name"`
Package string `json:"package,omitempty"`
Message string `json:"message,omitempty"`
}