okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
f65a648
main
1package daemon 2 3import ( 4"context" 5 6"albedo/cli/internal/daemon/protocol" 7) 8 9type AgentPhase string 10 11const ( 12PhaseResting AgentPhase = "resting" 13PhaseInterrupted AgentPhase = "interrupted" 14PhasePreparing AgentPhase = "preparing" 15PhaseReasoning AgentPhase = "reasoning" 16PhaseTool AgentPhase = "tool" 17PhaseModel AgentPhase = "model" 18PhaseIdle AgentPhase = "idle" 19PhaseCompacting AgentPhase = "compacting" 20) 21 22type AgentStatus struct { 23Phase * AgentPhase 24RunID * string 25KernelJobs * int64 26KernelBuild ,KernelInstanceID * string 27KernelLink ,KernelStep string 28RunningJobs []protocol.KernelJob 29InputOrder int64 30Running ,Idle ,KernelStale bool 31} 32 33func validateSessionStatus (status protocol.SessionStatus )error { 34switch status .Phase { 35case "idle" ,"preparing" ,"generating" ,"running" ,"interrupting" ,"compacting" : 36return nil 37 } 38return fieldError ("status.phase" ) 39} 40func statusValue (status protocol.SessionStatus ,kernel protocol.Kernel )AgentStatus { 41phase := PhaseIdle 42switch status .Phase { 43case "preparing" : 44phase = PhasePreparing 45case "generating" : 46phase = PhaseModel 47case "running" : 48phase = PhaseTool 49case "interrupting" : 50phase = PhaseInterrupted 51case "compacting" : 52phase = PhaseCompacting 53 } 54return AgentStatus { 55Phase :& phase ,Running :status .Phase != "idle" ,Idle :status .Phase == "idle" , 56KernelStale :kernel .Stale ,KernelLink :kernel .State ,KernelStep :value (kernel .Stage ), 57RunID :status .RunID ,KernelJobs :kernel .LiveJobCount ,RunningJobs :kernel .RunningJobs , 58KernelBuild :kernel .Build ,KernelInstanceID :kernel .InstanceID , 59 } 60} 61func (c * ChatClient )GetStatus (ctx context.Context ) (* AgentStatus ,error ) { 62session ,err := c .GetSession (ctx ) 63if err != nil { 64return nil ,err 65 } 66status := session .Status 67status .InputOrder = session .wire .InputOrder 68return & status ,nil 69} 70 71func (c * ChatClient )GetSession (ctx context.Context ) (Session ,error ) { 72return GetSession (ctx ,c .conn ,c .agentID ) 73}