Review every new snapshot with an agent from the other vendor

This commit is contained in:
Ian Gulliver
2026-10-15 16:33:17 -07:00
parent a539ddab43
commit e9039cceb4
39 changed files with 1737 additions and 218 deletions
+255 -164
View File
@@ -46,6 +46,7 @@ func (e AgentProcessHealth) Valid() bool {
const (
Implementer AgentSessionRole = "implementer"
Lead AgentSessionRole = "lead"
Reviewer AgentSessionRole = "reviewer"
)
// Valid indicates whether the value is a known member of the AgentSessionRole enum.
@@ -55,6 +56,8 @@ func (e AgentSessionRole) Valid() bool {
return true
case Lead:
return true
case Reviewer:
return true
default:
return false
}
@@ -206,10 +209,10 @@ func (e InboxItemKind) Valid() bool {
// Defines values for InboxItemPriority.
const (
Blocked InboxItemPriority = "blocked"
Fyi InboxItemPriority = "fyi"
Gate InboxItemPriority = "gate"
Review InboxItemPriority = "review"
Blocked InboxItemPriority = "blocked"
Fyi InboxItemPriority = "fyi"
Gate InboxItemPriority = "gate"
ReviewPriority InboxItemPriority = "review"
)
// Valid indicates whether the value is a known member of the InboxItemPriority enum.
@@ -221,7 +224,7 @@ func (e InboxItemPriority) Valid() bool {
return true
case Gate:
return true
case Review:
case ReviewPriority:
return true
default:
return false
@@ -273,6 +276,27 @@ func (e InboxState) Valid() bool {
}
}
// Defines values for ReviewState.
const (
ReviewStateDone ReviewState = "done"
ReviewStateFailed ReviewState = "failed"
ReviewStateRunning ReviewState = "running"
)
// Valid indicates whether the value is a known member of the ReviewState enum.
func (e ReviewState) Valid() bool {
switch e {
case ReviewStateDone:
return true
case ReviewStateFailed:
return true
case ReviewStateRunning:
return true
default:
return false
}
}
// Defines values for SnapshotTrigger.
const (
SnapshotTriggerAskHuman SnapshotTrigger = "ask_human"
@@ -328,6 +352,7 @@ const (
TabInbox TaskTab = "inbox"
TabPreview TaskTab = "preview"
TabProject TaskTab = "project"
TabReviews TaskTab = "reviews"
TabTerminal TaskTab = "terminal"
TabTranscript TaskTab = "transcript"
)
@@ -345,6 +370,8 @@ func (e TaskTab) Valid() bool {
return true
case TabProject:
return true
case TabReviews:
return true
case TabTerminal:
return true
case TabTranscript:
@@ -407,7 +434,9 @@ type AgentSession struct {
Model string `json:"model"`
// Owner The login whose lead agent this is; empty for a task's session.
Owner string `json:"owner"`
Owner string `json:"owner"`
// Role reviewer: a review's session (see Review); a task's sessions list leaves these out.
Role AgentSessionRole `json:"role"`
State AgentSessionState `json:"state"`
@@ -421,7 +450,7 @@ type AgentSession struct {
VendorSessionId string `json:"vendor_session_id"`
}
// AgentSessionRole defines model for AgentSession.Role.
// AgentSessionRole reviewer: a review's session (see Review); a task's sessions list leaves these out.
type AgentSessionRole string
// AgentSessionState defines model for AgentSession.State.
@@ -573,9 +602,12 @@ type InboxItem struct {
ResolvedAt *time.Time `json:"resolved_at,omitempty"`
ResolvedBy *string `json:"resolved_by,omitempty"`
Responses []InboxResponse `json:"responses"`
State InboxState `json:"state"`
TaskId string `json:"task_id"`
ThreadId string `json:"thread_id"`
// Reviews question: the review of the first snapshot the task took after the question was asked (the snapshot at the end of the turn that asked it), once that snapshot exists; empty for other items.
Reviews []Review `json:"reviews"`
State InboxState `json:"state"`
TaskId string `json:"task_id"`
ThreadId string `json:"thread_id"`
}
// InboxItemKind defines model for InboxItem.Kind.
@@ -733,6 +765,29 @@ type PushSubscription struct {
P256dh string `json:"p256dh"`
}
// Review An agent session on the vendor the task's agent doesn't use, reviewing one snapshot's change.
type Review struct {
// AgentSessionId The reviewer's session.
AgentSessionId string `json:"agent_session_id"`
CreatedAt time.Time `json:"created_at"`
// Error failed: why.
Error string `json:"error"`
FinishedAt *time.Time `json:"finished_at,omitempty"`
Id string `json:"id"`
Model string `json:"model"`
// Result done: the reviewer's submit_review arguments: summary (Markdown) and findings, each with severity, category, title, detail, path and line.
Result *map[string]interface{} `json:"result,omitempty"`
SnapshotN int `json:"snapshot_n"`
State ReviewState `json:"state"`
TaskId string `json:"task_id"`
Vendor string `json:"vendor"`
}
// ReviewState defines model for Review.State.
type ReviewState string
// SessionCreate defines model for SessionCreate.
type SessionCreate struct {
// Images Blob ids from uploadBlob, sent to the agent as images alongside the prompt.
@@ -1169,6 +1224,9 @@ type ServerInterface interface {
// (GET /api/tasks/{taskId}/previews)
ListPreviews(w http.ResponseWriter, r *http.Request, taskId string)
// (GET /api/tasks/{taskId}/reviews)
ListReviews(w http.ResponseWriter, r *http.Request, taskId string)
// (GET /api/tasks/{taskId}/sessions)
ListSessions(w http.ResponseWriter, r *http.Request, taskId string)
@@ -2351,6 +2409,32 @@ func (siw *ServerInterfaceWrapper) ListPreviews(w http.ResponseWriter, r *http.R
handler.ServeHTTP(w, r)
}
// ListReviews operation middleware
func (siw *ServerInterfaceWrapper) ListReviews(w http.ResponseWriter, r *http.Request) {
var err error
_ = err
// ------------- Path parameter "taskId" -------------
var taskId string
err = runtime.BindStyledParameterWithOptions("simple", "taskId", r.PathValue("taskId"), &taskId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "", ValueIsUnescaped: true})
if err != nil {
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "taskId", Err: err})
return
}
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
siw.Handler.ListReviews(w, r, taskId)
}))
for _, middleware := range siw.HandlerMiddlewares {
handler = middleware(handler)
}
handler.ServeHTTP(w, r)
}
// ListSessions operation middleware
func (siw *ServerInterfaceWrapper) ListSessions(w http.ResponseWriter, r *http.Request) {
@@ -2698,6 +2782,7 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/terminal", wrapper.GetTaskTerminal)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/previews", wrapper.ListPreviews)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/snapshots", wrapper.ListSnapshots)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/reviews", wrapper.ListReviews)
m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/tasks/{taskId}/snapshots/{n}/fork", wrapper.ForkSnapshot)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/sessions", wrapper.ListSessions)
m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/tasks/{taskId}/sessions", wrapper.CreateSession)
@@ -2721,160 +2806,166 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H
// const string: with thousands of chunks the chained `+` fold is several
// times slower for the Go compiler than parsing a slice literal.
var swaggerSpec = []string{
"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",
"//8=",
"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",
"t3o9Zoe4MMdQlzj/e7j0avqH3eGPH/9fAAAA//8=",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,