This repository has been archived on 2026-07-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

40 lines
871 B
Go

package process
import (
"io"
"os/exec"
"sync"
)
// Status represents the status of a process for a workspace.
type Status struct {
WorkspaceID string `json:"workspaceId"`
Running bool `json:"running"`
PID int `json:"pid,omitempty"`
}
// ExitInfo holds the exit reason of a process.
type ExitInfo struct {
Code int
Signal string
}
// Session holds the runtime state of a started OpenCode process.
type Session struct {
WorkspaceID string
Root string
Cmd *exec.Cmd
Stdin io.WriteCloser
Subscribers map[Subscription]struct{}
Exit ExitInfo
mu sync.Mutex
}
// removeSubscription removes sub from s.Subscribers. It is safe to call when
// the subscription is no longer present.
func (s *Session) removeSubscription(sub *subscription) {
s.mu.Lock()
defer s.mu.Unlock()
delete(s.Subscribers, sub)
}