Show agent liveness, stuck/zombie detection and parse errors in admin
This commit is contained in:
+203
-91
@@ -21,6 +21,27 @@ import (
|
||||
"github.com/oapi-codegen/runtime"
|
||||
)
|
||||
|
||||
// Defines values for AgentProcessHealth.
|
||||
const (
|
||||
HealthExited AgentProcessHealth = "exited"
|
||||
HealthOk AgentProcessHealth = "ok"
|
||||
HealthStuck AgentProcessHealth = "stuck"
|
||||
)
|
||||
|
||||
// Valid indicates whether the value is a known member of the AgentProcessHealth enum.
|
||||
func (e AgentProcessHealth) Valid() bool {
|
||||
switch e {
|
||||
case HealthExited:
|
||||
return true
|
||||
case HealthOk:
|
||||
return true
|
||||
case HealthStuck:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// Defines values for AgentSessionRole.
|
||||
const (
|
||||
Implementer AgentSessionRole = "implementer"
|
||||
@@ -252,6 +273,43 @@ func (e TaskStatus) Valid() bool {
|
||||
}
|
||||
}
|
||||
|
||||
// Defines values for ZombieKind.
|
||||
const (
|
||||
ProcessWithoutSession ZombieKind = "process_without_session"
|
||||
RunningWithoutProcess ZombieKind = "running_without_process"
|
||||
)
|
||||
|
||||
// Valid indicates whether the value is a known member of the ZombieKind enum.
|
||||
func (e ZombieKind) Valid() bool {
|
||||
switch e {
|
||||
case ProcessWithoutSession:
|
||||
return true
|
||||
case RunningWithoutProcess:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// AgentProcess defines model for AgentProcess.
|
||||
type AgentProcess struct {
|
||||
// Health stuck means a turn is running and no stream event has arrived for stuck_after_seconds; exited means the process is gone.
|
||||
Health AgentProcessHealth `json:"health"`
|
||||
|
||||
// LastEventAt When the process last wrote a line to its stream
|
||||
LastEventAt time.Time `json:"last_event_at"`
|
||||
Pid int `json:"pid"`
|
||||
SessionId string `json:"session_id"`
|
||||
|
||||
// State The session's state
|
||||
State string `json:"state"`
|
||||
TaskId string `json:"task_id"`
|
||||
Vendor string `json:"vendor"`
|
||||
}
|
||||
|
||||
// AgentProcessHealth stuck means a turn is running and no stream event has arrived for stuck_after_seconds; exited means the process is gone.
|
||||
type AgentProcessHealth string
|
||||
|
||||
// AgentSession defines model for AgentSession.
|
||||
type AgentSession struct {
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
@@ -474,6 +532,29 @@ type ProjectCreate struct {
|
||||
RepoPath string `json:"repo_path"`
|
||||
}
|
||||
|
||||
// ProtocolError defines model for ProtocolError.
|
||||
type ProtocolError struct {
|
||||
At time.Time `json:"at"`
|
||||
|
||||
// Raw The line as received
|
||||
Raw string `json:"raw"`
|
||||
Reason string `json:"reason"`
|
||||
SessionId string `json:"session_id"`
|
||||
|
||||
// Size The line's full length in bytes.
|
||||
Size int `json:"size"`
|
||||
Vendor string `json:"vendor"`
|
||||
}
|
||||
|
||||
// ProtocolErrors defines model for ProtocolErrors.
|
||||
type ProtocolErrors struct {
|
||||
// Counts Stream lines the adapter couldn't parse or didn't recognise since byre started, keyed by vendor.
|
||||
Counts map[string]int `json:"counts"`
|
||||
|
||||
// Recent The most recent ones, newest first.
|
||||
Recent []ProtocolError `json:"recent"`
|
||||
}
|
||||
|
||||
// PushKey defines model for PushKey.
|
||||
type PushKey struct {
|
||||
// PublicKey Base64url
|
||||
@@ -500,14 +581,18 @@ type SessionCreate struct {
|
||||
|
||||
// Status defines model for Status.
|
||||
type Status struct {
|
||||
ActiveTasks int `json:"active_tasks"`
|
||||
Caps Caps `json:"caps"`
|
||||
DbBytes int64 `json:"db_bytes"`
|
||||
LastEventSeq int64 `json:"last_event_seq"`
|
||||
ActiveTasks int `json:"active_tasks"`
|
||||
|
||||
// AgentProcesses Every agent process byre is tracking, idle sessions included.
|
||||
AgentProcesses []AgentProcess `json:"agent_processes"`
|
||||
Caps Caps `json:"caps"`
|
||||
DbBytes int64 `json:"db_bytes"`
|
||||
LastEventSeq int64 `json:"last_event_seq"`
|
||||
|
||||
// LiveAgents Agent processes currently running.
|
||||
LiveAgents int `json:"live_agents"`
|
||||
Projects int `json:"projects"`
|
||||
LiveAgents int `json:"live_agents"`
|
||||
Projects int `json:"projects"`
|
||||
ProtocolErrors ProtocolErrors `json:"protocol_errors"`
|
||||
|
||||
// QueuedTurns Turns waiting for room under the caps, in the order they will start.
|
||||
QueuedTurns []TurnRef `json:"queued_turns"`
|
||||
@@ -519,6 +604,12 @@ type Status struct {
|
||||
RunningTurns []TurnRef `json:"running_turns"`
|
||||
SseClients int `json:"sse_clients"`
|
||||
StartedAt time.Time `json:"started_at"`
|
||||
|
||||
// StuckAfterSeconds How long a running turn may go without a stream event before it counts as stuck.
|
||||
StuckAfterSeconds int `json:"stuck_after_seconds"`
|
||||
|
||||
// Zombies Sessions marked running with no live process, and agent processes byre has no session for.
|
||||
Zombies []Zombie `json:"zombies"`
|
||||
}
|
||||
|
||||
// Task defines model for Task.
|
||||
@@ -599,6 +690,18 @@ type UserUpdate struct {
|
||||
GitName string `json:"git_name"`
|
||||
}
|
||||
|
||||
// Zombie defines model for Zombie.
|
||||
type Zombie struct {
|
||||
Detail string `json:"detail"`
|
||||
Kind ZombieKind `json:"kind"`
|
||||
Pid *int `json:"pid,omitempty"`
|
||||
SessionId *string `json:"session_id,omitempty"`
|
||||
TaskId *string `json:"task_id,omitempty"`
|
||||
}
|
||||
|
||||
// ZombieKind defines model for Zombie.Kind.
|
||||
type ZombieKind string
|
||||
|
||||
// StreamEventsParams defines parameters for StreamEvents.
|
||||
type StreamEventsParams struct {
|
||||
After *int64 `form:"after,omitempty" json:"after,omitempty"`
|
||||
@@ -1825,91 +1928,100 @@ 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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",
|
||||
"/w==",
|
||||
"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",
|
||||
"3N7+TwAAAP//",
|
||||
}
|
||||
|
||||
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
|
||||
|
||||
Reference in New Issue
Block a user