Simplify codebase per audit of 7aff773

This commit is contained in:
Ian Gulliver
2026-10-23 16:31:34 -07:00
parent f8798f3150
commit 48e3457286
13 changed files with 491 additions and 606 deletions
-21
View File
@@ -283,20 +283,6 @@ paths:
schema:
type: array
items: { $ref: "#/components/schemas/Project" }
post:
operationId: createProject
requestBody:
required: true
content:
application/json:
schema: { $ref: "#/components/schemas/ProjectCreate" }
responses:
"201":
description: The new project.
content:
application/json:
schema: { $ref: "#/components/schemas/Project" }
"400": { $ref: "#/components/responses/Error" }
/api/projects/{projectId}/review-workflow:
parameters:
@@ -1580,13 +1566,6 @@ components:
properties:
workflow: { type: string, description: "A saved workflow, or empty for none." }
ProjectCreate:
type: object
required: [name, repo_path]
properties:
name: { type: string }
repo_path: { type: string }
Task:
type: object
required: [id, project_id, title, merge_title, branch, worktree_path, base_ref, color, status, created_by, created_at, state, merging, discarding, merging_into_parent, merge_after_review, summary_seq, background, merge_facts]
+2 -2
View File
@@ -211,7 +211,7 @@ func (m *Manager) steerMidTurn(ctx context.Context, l *live, s *codex.Session) {
func (m *Manager) codexAfterTool(l *live) hookcmd.Func {
return func(ctx context.Context, input json.RawMessage) (map[string]any, error) {
if m.holdWhilePaused(ctx, l, "") && ctx.Err() == nil {
m.steerMidTurn(context.WithoutCancel(ctx), l, l.sess.(codexProcess).s)
m.steerMidTurn(context.WithoutCancel(ctx), l, l.sess.(codexProcess).Session)
}
return map[string]any{}, nil
}
@@ -318,7 +318,7 @@ func (m *Manager) codexTurnCompleted(ctx context.Context, l *live, s *codex.Sess
final := l.lastText
m.mu.Unlock()
bounce, err := m.continueProseQuestion(ctx, l, codexProcess{s: s}, final, turn.Status == codex.TurnStatusCompleted)
bounce, err := m.continueProseQuestion(ctx, l, codexProcess{s}, final, turn.Status == codex.TurnStatusCompleted)
if err != nil || bounce {
return err
}
+3 -3
View File
@@ -132,15 +132,15 @@ func (m *Manager) Health(ctx context.Context) (Health, error) {
if err != nil {
return Health{}, err
}
pid := l.sess.pid()
pid := l.sess.Pid()
procs = append(procs, procInfo{
sessionID: l.id,
taskID: l.taskID,
vendor: l.vendor,
pid: pid,
state: sess.State,
lastLine: l.sess.lastLine(),
exited: l.sess.exited() || !pidAlive(pid),
lastLine: l.sess.LastLine(),
exited: l.sess.Exited() || !pidAlive(pid),
})
}
+2 -2
View File
@@ -363,8 +363,8 @@ func (m *Manager) Deliver(ctx context.Context, sessionID string) error {
pid := 0
exited := false
if l != nil {
pid = l.sess.pid()
exited = l.sess.exited()
pid = l.sess.Pid()
exited = l.sess.Exited()
}
slog.Info("deliver sent", "session", sessionID, "state", after.State, "pid", pid, "exited", exited, "closing", closing, "responses", ids, "snapshot", snapshotN)
return m.store.MarkDelivered(ctx, ids, snapshotN)
+4 -1
View File
@@ -286,7 +286,10 @@ func (m *Manager) leadTools(l *live) []mcp.Tool {
"name": {"type": "string"},
"repo_path": {"type": "string"}
}, "required": ["name", "repo_path"]}`,
func(ctx context.Context, user api.User, args api.ProjectCreate) (string, error) {
func(ctx context.Context, user api.User, args struct {
Name string `json:"name"`
RepoPath string `json:"repo_path"`
}) (string, error) {
p, err := m.addProject(ctx, args.Name, args.RepoPath, user.Login)
if err != nil {
return "", err
+5 -5
View File
@@ -327,7 +327,7 @@ func (m *Manager) Interrupt(ctx context.Context, sessionID string) (api.AgentSes
err = l.sess.interrupt(ictx)
if errors.Is(err, context.DeadlineExceeded) {
slog.Warn("agent didn't answer interrupt, ending its process", "session", sess.Id)
l.sess.kill()
l.sess.Kill()
return sess, nil
}
if err != nil {
@@ -378,7 +378,7 @@ func (m *Manager) stopLive(sessionID string) {
m.mu.Unlock()
if l != nil {
l.sess.kill()
l.sess.Kill()
}
}
@@ -582,7 +582,7 @@ func (m *Manager) Close() {
st.cancel()
}
for _, l := range all {
l.sess.kill()
l.sess.Kill()
}
for _, st := range pending {
<-st.done
@@ -856,7 +856,7 @@ func (m *Manager) ensureLive(ctx context.Context, sess api.AgentSession, task ap
if err == nil && closing {
go l.sess.discard()
l.sess.kill()
l.sess.Kill()
l, err = nil, errors.New("shutting down")
}
st.l, st.err = l, err
@@ -867,7 +867,7 @@ func (m *Manager) ensureLive(ctx context.Context, sess api.AgentSession, task ap
go m.pump(l)
if stopping {
l.sess.kill()
l.sess.Kill()
}
return l, nil
}
+27 -42
View File
@@ -23,10 +23,10 @@ type agentProcess interface {
send(ctx context.Context, text string, images []agentinput.Image) error
interrupt(ctx context.Context) error
setModel(ctx context.Context, model, effort string) error
kill()
pid() int
lastLine() time.Time
exited() bool
Kill()
Pid() int
LastLine() time.Time
Exited() bool
drive(m *Manager, l *live)
discard()
}
@@ -76,7 +76,7 @@ func (m *Manager) changeModel(ctx context.Context, sess api.AgentSession, model,
}
type claudeProcess struct {
s *claude.Session
*claude.Session
}
func (m *Manager) startClaude(ctx context.Context, sess api.AgentSession, l *live, g string, servers []*mcp.Server, stdio []mcp.Stdio, env []string) (agentProcess, error) {
@@ -125,19 +125,19 @@ func (m *Manager) startClaude(ctx context.Context, sess api.AgentSession, l *liv
if err != nil {
return nil, fmt.Errorf("start claude: %w", err)
}
return claudeProcess{s: s}, nil
return claudeProcess{s}, nil
}
func (p claudeProcess) send(ctx context.Context, text string, images []agentinput.Image) error {
return p.s.Send(text, images...)
return p.Send(text, images...)
}
func (p claudeProcess) interrupt(ctx context.Context) error {
return p.s.Interrupt(ctx)
return p.Interrupt(ctx)
}
func (p claudeProcess) setModel(ctx context.Context, model, effort string) error {
_, err := p.s.Control(ctx, map[string]any{"subtype": "set_model", "model": model})
_, err := p.Control(ctx, map[string]any{"subtype": "set_model", "model": model})
if err != nil {
return err
}
@@ -145,23 +145,18 @@ func (p claudeProcess) setModel(ctx context.Context, model, effort string) error
if effort == "" {
level = nil
}
_, err = p.s.Control(ctx, map[string]any{"subtype": "apply_flag_settings", "settings": map[string]any{"effortLevel": level}})
_, err = p.Control(ctx, map[string]any{"subtype": "apply_flag_settings", "settings": map[string]any{"effortLevel": level}})
return err
}
func (p claudeProcess) kill() { p.s.Kill() }
func (p claudeProcess) pid() int { return p.s.Pid() }
func (p claudeProcess) lastLine() time.Time { return p.s.LastLine() }
func (p claudeProcess) exited() bool { return p.s.Exited() }
func (p claudeProcess) discard() {
for range p.s.Events() {
for range p.Events() {
}
}
func (p claudeProcess) drive(m *Manager, l *live) {
ctx := context.Background()
for ev := range p.s.Events() {
for ev := range p.Events() {
m.handleProcessEvent(l, ev.Read, ev.Type, ev.Raw, func() error {
return m.handle(ctx, l, ev)
})
@@ -169,7 +164,7 @@ func (p claudeProcess) drive(m *Manager, l *live) {
}
type codexProcess struct {
s *codex.Session
*codex.Session
}
func (m *Manager) startCodex(ctx context.Context, sess api.AgentSession, l *live, g string, servers []*mcp.Server, stdio []mcp.Stdio, env []string) (agentProcess, error) {
@@ -211,44 +206,39 @@ func (m *Manager) startCodex(ctx context.Context, sess api.AgentSession, l *live
return nil, err
}
}
return codexProcess{s: s}, nil
return codexProcess{s}, nil
}
func (p codexProcess) send(ctx context.Context, text string, images []agentinput.Image) error {
_, err := p.s.Send(ctx, text, images...)
_, err := p.Send(ctx, text, images...)
return err
}
func (p codexProcess) interrupt(ctx context.Context) error {
return p.s.Interrupt(ctx)
return p.Interrupt(ctx)
}
func (p codexProcess) setModel(ctx context.Context, model, effort string) error {
p.s.SetModel(model, effort)
p.SetModel(model, effort)
return nil
}
func (p codexProcess) kill() { p.s.Kill() }
func (p codexProcess) pid() int { return p.s.Pid() }
func (p codexProcess) lastLine() time.Time { return p.s.LastLine() }
func (p codexProcess) exited() bool { return p.s.Exited() }
func (p codexProcess) discard() {
for range p.s.Events() {
for range p.Events() {
}
}
func (p codexProcess) drive(m *Manager, l *live) {
ctx := context.Background()
for ev := range p.s.Events() {
for ev := range p.Events() {
m.handleProcessEvent(l, ev.Read, ev.Method, ev.Params, func() error {
return m.handleCodex(ctx, l, p.s, ev)
return m.handleCodex(ctx, l, p.Session, ev)
})
}
}
type antigravityProcess struct {
s *antigravity.Session
*antigravity.Session
}
func (m *Manager) startAntigravity(ctx context.Context, sess api.AgentSession, l *live, g string, servers []*mcp.Server, stdio []mcp.Stdio, env []string) (agentProcess, error) {
@@ -279,35 +269,30 @@ func (m *Manager) startAntigravity(ctx context.Context, sess api.AgentSession, l
return nil, err
}
}
return antigravityProcess{s: s}, nil
return antigravityProcess{s}, nil
}
func (p antigravityProcess) send(ctx context.Context, text string, images []agentinput.Image) error {
return p.s.Send(text, images...)
return p.Send(text, images...)
}
func (p antigravityProcess) interrupt(ctx context.Context) error {
return p.s.Interrupt()
return p.Interrupt()
}
func (p antigravityProcess) setModel(ctx context.Context, model, effort string) error {
return p.s.SetModel(model, effort)
return p.SetModel(model, effort)
}
func (p antigravityProcess) kill() { p.s.Kill() }
func (p antigravityProcess) pid() int { return p.s.Pid() }
func (p antigravityProcess) lastLine() time.Time { return p.s.LastLine() }
func (p antigravityProcess) exited() bool { return p.s.Exited() }
func (p antigravityProcess) discard() {
for range p.s.Events() {
for range p.Events() {
}
}
func (p antigravityProcess) drive(m *Manager, l *live) {
ctx := context.Background()
steps := &agySteps{text: map[int]*strings.Builder{}, tools: map[string]bool{}}
for ev := range p.s.Events() {
for ev := range p.Events() {
m.handleProcessEvent(l, ev.Read, ev.Kind, ev.Raw, func() error {
return m.handleAntigravity(ctx, l, p, steps, ev)
})
+10 -40
View File
@@ -1,8 +1,6 @@
package antigravity
import (
"bufio"
"bytes"
"context"
"crypto/rand"
"encoding/json"
@@ -16,12 +14,12 @@ import (
"path/filepath"
"strings"
"sync"
"sync/atomic"
"syscall"
"time"
"g.fc.run/ai/byre/internal/agentinput"
"g.fc.run/ai/byre/internal/hookcmd"
"g.fc.run/ai/byre/internal/jsonlines"
"g.fc.run/ai/byre/internal/mcp"
"g.fc.run/ai/byre/internal/procgroup"
)
@@ -134,10 +132,11 @@ type Session struct {
started chan struct{}
initOnce sync.Once
srv *http.Server
base string
servers map[string]*mcp.Server
lastLine atomic.Int64
srv *http.Server
base string
servers map[string]*mcp.Server
*jsonlines.Stream
}
func Start(ctx context.Context, opts Options) (*Session, error) {
@@ -161,11 +160,11 @@ func Start(ctx context.Context, opts Options) (*Session, error) {
started: make(chan struct{}),
base: "http://" + ln.Addr().String() + "/" + token,
servers: map[string]*mcp.Server{},
Stream: jsonlines.New("agy", opts.OnBadLine),
}
for _, srv := range opts.MCPServers {
s.servers[srv.Name] = srv
}
s.lastLine.Store(time.Now().UnixNano())
mux := http.NewServeMux()
mux.HandleFunc("POST /"+token+"/mcp/{server}", s.serveMCP)
@@ -332,21 +331,7 @@ func (s *Session) spawnLocked() error {
}
func (s *Session) readLoop(p *proc, stdout io.Reader) {
r := bufio.NewReader(stdout)
for {
line, err := r.ReadBytes('\n')
line = bytes.TrimRight(line, "\r\n")
if len(line) > 0 {
s.lastLine.Store(time.Now().UnixNano())
s.handleLine(line)
}
if err != nil {
if err != io.EOF {
slog.Error("read agy stdout", "err", err)
}
break
}
}
s.Read(stdout, s.handleLine)
p.cmd.Wait()
close(p.done)
@@ -361,21 +346,17 @@ func (s *Session) readLoop(p *proc, stdout io.Reader) {
func (s *Session) handleLine(line []byte) {
read := time.Now()
if line[0] != '{' {
s.badLine(line, "not a JSON object")
return
}
env := struct {
Event string `json:"event"`
ConversationID string `json:"conversation_id"`
}{}
err := json.Unmarshal(line, &env)
if err != nil {
s.badLine(line, err.Error())
s.BadLine(line, err.Error())
return
}
if !knownEvents[env.Event] {
s.badLine(line, fmt.Sprintf("unrecognized event %q", env.Event))
s.BadLine(line, fmt.Sprintf("unrecognized event %q", env.Event))
}
if env.Event == "init" {
s.idMu.Lock()
@@ -427,10 +408,6 @@ func (s *Session) Pid() int {
return s.p.cmd.Process.Pid
}
func (s *Session) LastLine() time.Time {
return time.Unix(0, s.lastLine.Load())
}
func (s *Session) Exited() bool {
select {
case <-s.dead:
@@ -550,10 +527,3 @@ func (s *Session) Kill() {
}
s.die()
}
func (s *Session) badLine(line []byte, reason string) {
slog.Warn("bad agy line", "reason", reason, "line", string(line))
if s.opts.OnBadLine != nil {
s.opts.OnBadLine(line, reason)
}
}
+363 -391
View File
@@ -1242,12 +1242,6 @@ type Project struct {
ReviewWorkflow string `json:"review_workflow"`
}
// ProjectCreate defines model for ProjectCreate.
type ProjectCreate struct {
Name string `json:"name"`
RepoPath string `json:"repo_path"`
}
// ProjectWorkflow defines model for ProjectWorkflow.
type ProjectWorkflow struct {
// Workflow A saved workflow, or empty for none.
@@ -2033,9 +2027,6 @@ type SetPaneFocusJSONRequestBody = PaneFocus
// UpdateQuickRunJSONRequestBody defines body for UpdateQuickRun for application/json ContentType.
type UpdateQuickRunJSONRequestBody = QuickRun
// CreateProjectJSONRequestBody defines body for CreateProject for application/json ContentType.
type CreateProjectJSONRequestBody = ProjectCreate
// SetAuditWorkflowJSONRequestBody defines body for SetAuditWorkflow for application/json ContentType.
type SetAuditWorkflowJSONRequestBody = ProjectWorkflow
@@ -2195,9 +2186,6 @@ type ServerInterface interface {
// (GET /api/projects)
ListProjects(w http.ResponseWriter, r *http.Request)
// (POST /api/projects)
CreateProject(w http.ResponseWriter, r *http.Request)
// (PUT /api/projects/{projectId}/audit-workflow)
SetAuditWorkflow(w http.ResponseWriter, r *http.Request, projectId string)
@@ -3047,20 +3035,6 @@ func (siw *ServerInterfaceWrapper) ListProjects(w http.ResponseWriter, r *http.R
handler.ServeHTTP(w, r)
}
// CreateProject operation middleware
func (siw *ServerInterfaceWrapper) CreateProject(w http.ResponseWriter, r *http.Request) {
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
siw.Handler.CreateProject(w, r)
}))
for _, middleware := range siw.HandlerMiddlewares {
handler = middleware(handler)
}
handler.ServeHTTP(w, r)
}
// SetAuditWorkflow operation middleware
func (siw *ServerInterfaceWrapper) SetAuditWorkflow(w http.ResponseWriter, r *http.Request) {
@@ -4835,7 +4809,6 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/me/summary-reads", wrapper.GetSummaryReads)
m.HandleFunc(http.MethodPut+" "+options.BaseURL+"/api/me/pane-focus", wrapper.SetPaneFocus)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/projects", wrapper.ListProjects)
m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/projects", wrapper.CreateProject)
m.HandleFunc(http.MethodPut+" "+options.BaseURL+"/api/projects/{projectId}/review-workflow", wrapper.SetReviewWorkflow)
m.HandleFunc(http.MethodPut+" "+options.BaseURL+"/api/projects/{projectId}/audit-workflow", wrapper.SetAuditWorkflow)
m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/projects/{projectId}/tasks", wrapper.ListActiveTasks)
@@ -4912,370 +4885,369 @@ 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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",
"U05+/Pj/DwA=",
"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",
"8QGDu+K+fmvKyY8f//8BAA==",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
+13 -46
View File
@@ -1,8 +1,6 @@
package claude
import (
"bufio"
"bytes"
"context"
"crypto/rand"
"encoding/base64"
@@ -14,11 +12,11 @@ import (
"log/slog"
"os"
"sync"
"sync/atomic"
"time"
"g.fc.run/ai/byre/internal/agentinput"
"g.fc.run/ai/byre/internal/hookcmd"
"g.fc.run/ai/byre/internal/jsonlines"
"g.fc.run/ai/byre/internal/mcp"
"g.fc.run/ai/byre/internal/procgroup"
)
@@ -213,8 +211,7 @@ type Session struct {
idMu sync.Mutex
id string
onBadLine func(line []byte, reason string)
lastLine atomic.Int64
*jsonlines.Stream
}
type controlResult struct {
@@ -233,16 +230,15 @@ type envelope struct {
func Start(ctx context.Context, opts Options) (*Session, error) {
s := &Session{
events: make(chan Event, 256),
done: make(chan struct{}),
pending: map[string]chan controlResult{},
inflight: map[string]context.CancelFunc{},
hooks: map[string]hookcmd.Func{},
servers: map[string]*mcp.Server{},
id: initialID(opts),
onBadLine: opts.OnBadLine,
events: make(chan Event, 256),
done: make(chan struct{}),
pending: map[string]chan controlResult{},
inflight: map[string]context.CancelFunc{},
hooks: map[string]hookcmd.Func{},
servers: map[string]*mcp.Server{},
id: initialID(opts),
Stream: jsonlines.New("claude", opts.OnBadLine),
}
s.lastLine.Store(time.Now().UnixNano())
s.ctx, s.stop = context.WithCancel(context.Background())
args, err := s.buildArgs(opts)
@@ -411,10 +407,6 @@ func (s *Session) Pid() int {
return s.cmd.Process.Pid
}
func (s *Session) LastLine() time.Time {
return time.Unix(0, s.lastLine.Load())
}
func (s *Session) Exited() bool {
select {
case <-s.done:
@@ -535,25 +527,7 @@ func (s *Session) readLoop(stdout io.Reader) {
defer close(s.events)
defer s.stop()
r := bufio.NewReader(stdout)
for {
line, err := r.ReadBytes('\n')
line = bytes.TrimRight(line, "\r\n")
if len(line) > 0 {
s.lastLine.Store(time.Now().UnixNano())
}
if len(line) > 0 && line[0] == '{' {
s.handleLine(line)
} else if len(line) > 0 {
s.badLine(line, "not a JSON object")
}
if err != nil {
if err != io.EOF {
slog.Error("read claude stdout", "err", err)
}
return
}
}
s.Read(stdout, s.handleLine)
}
func (s *Session) handleLine(line []byte) {
@@ -561,12 +535,12 @@ func (s *Session) handleLine(line []byte) {
env := envelope{}
err := json.Unmarshal(line, &env)
if err != nil {
s.badLine(line, err.Error())
s.BadLine(line, err.Error())
return
}
if !knownTypes[env.Type] {
s.badLine(line, fmt.Sprintf("unrecognized type %q", env.Type))
s.BadLine(line, fmt.Sprintf("unrecognized type %q", env.Type))
}
switch env.Type {
@@ -604,13 +578,6 @@ func (s *Session) handleLine(line []byte) {
s.events <- Event{Type: env.Type, Subtype: env.Subtype, Raw: append(json.RawMessage{}, line...), Read: read}
}
func (s *Session) badLine(line []byte, reason string) {
slog.Warn("bad claude line", "reason", reason, "line", string(line))
if s.onBadLine != nil {
s.onBadLine(line, reason)
}
}
func (s *Session) handleControlResponse(raw json.RawMessage) {
resp := struct {
Subtype string `json:"subtype"`
+7 -39
View File
@@ -1,8 +1,6 @@
package codex
import (
"bufio"
"bytes"
"context"
"crypto/rand"
"encoding/base64"
@@ -21,6 +19,7 @@ import (
"g.fc.run/ai/byre/internal/agentinput"
"g.fc.run/ai/byre/internal/hookcmd"
"g.fc.run/ai/byre/internal/jsonlines"
"g.fc.run/ai/byre/internal/mcp"
"g.fc.run/ai/byre/internal/procgroup"
)
@@ -93,8 +92,7 @@ type Session struct {
reminder string
hookSrv *http.Server
onBadLine func(line []byte, reason string)
lastLine atomic.Int64
*jsonlines.Stream
}
func Start(ctx context.Context, opts Options) (*Session, error) {
@@ -214,12 +212,11 @@ func newSession(opts Options, stdin *os.File, stdout io.Reader) *Session {
pending: map[int64]chan rpcResult{},
servers: map[string]*mcp.Server{},
reminder: opts.Reminder,
onBadLine: opts.OnBadLine,
Stream: jsonlines.New("codex", opts.OnBadLine),
}
for _, srv := range opts.MCPServers {
s.servers[srv.Name] = srv
}
s.lastLine.Store(time.Now().UnixNano())
go s.readLoop(stdout)
return s
}
@@ -341,10 +338,6 @@ func (s *Session) Pid() int {
return s.cmd.Process.Pid
}
func (s *Session) LastLine() time.Time {
return time.Unix(0, s.lastLine.Load())
}
func (s *Session) Exited() bool {
select {
case <-s.done:
@@ -616,25 +609,7 @@ func (s *Session) readLoop(stdout io.Reader) {
defer close(s.done)
defer close(s.events)
r := bufio.NewReader(stdout)
for {
line, err := r.ReadBytes('\n')
line = bytes.TrimRight(line, "\r\n")
if len(line) > 0 {
s.lastLine.Store(time.Now().UnixNano())
}
if len(line) > 0 && line[0] == '{' {
s.handleLine(line)
} else if len(line) > 0 {
s.badLine(line, "not a JSON object")
}
if err != nil {
if err != io.EOF {
slog.Error("read codex stdout", "err", err)
}
return
}
}
s.Read(stdout, s.handleLine)
}
func (s *Session) handleLine(line []byte) {
@@ -642,7 +617,7 @@ func (s *Session) handleLine(line []byte) {
m := message{}
err := json.Unmarshal(line, &m)
if err != nil {
s.badLine(line, err.Error())
s.BadLine(line, err.Error())
return
}
@@ -657,7 +632,7 @@ func (s *Session) handleLine(line []byte) {
}
if _, ok := notificationMethods[m.Method]; !ok {
s.badLine(line, fmt.Sprintf("unrecognized method %q", m.Method))
s.BadLine(line, fmt.Sprintf("unrecognized method %q", m.Method))
}
s.trackTurn(m)
@@ -688,7 +663,7 @@ func (s *Session) trackTurn(m message) {
func (s *Session) handleResponse(line []byte, m message) {
id, err := strconv.ParseInt(string(m.ID), 10, 64)
if err != nil {
s.badLine(line, "response with a non-numeric id")
s.BadLine(line, "response with a non-numeric id")
return
}
@@ -763,10 +738,3 @@ func (s *Session) callTool(raw json.RawMessage) (any, error) {
}
return DynamicToolCallResponse{Success: !res.IsError, ContentItems: items}, nil
}
func (s *Session) badLine(line []byte, reason string) {
slog.Warn("bad codex line", "reason", reason, "line", string(line))
if s.onBadLine != nil {
s.onBadLine(line, reason)
}
}
+55
View File
@@ -0,0 +1,55 @@
package jsonlines
import (
"bufio"
"bytes"
"io"
"log/slog"
"sync/atomic"
"time"
)
type Stream struct {
vendor string
onBad func(line []byte, reason string)
lastLine atomic.Int64
}
func New(vendor string, onBad func(line []byte, reason string)) *Stream {
s := &Stream{vendor: vendor, onBad: onBad}
s.lastLine.Store(time.Now().UnixNano())
return s
}
func (s *Stream) LastLine() time.Time {
return time.Unix(0, s.lastLine.Load())
}
func (s *Stream) BadLine(line []byte, reason string) {
slog.Warn("bad "+s.vendor+" line", "reason", reason, "line", string(line))
if s.onBad != nil {
s.onBad(line, reason)
}
}
func (s *Stream) Read(stdout io.Reader, handle func(line []byte)) {
r := bufio.NewReader(stdout)
for {
line, err := r.ReadBytes('\n')
line = bytes.TrimRight(line, "\r\n")
if len(line) > 0 {
s.lastLine.Store(time.Now().UnixNano())
if line[0] == '{' {
handle(line)
} else {
s.BadLine(line, "not a JSON object")
}
}
if err != nil {
if err != io.EOF {
slog.Error("read "+s.vendor+" stdout", "err", err)
}
return
}
}
}
-14
View File
@@ -309,20 +309,6 @@ func (s *Server) ListProjects(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusOK, projects)
}
func (s *Server) CreateProject(w http.ResponseWriter, r *http.Request) {
req := api.ProjectCreate{}
if !readJSON(w, r, &req) {
return
}
p, err := s.createProject(r.Context(), req.Name, req.RepoPath, actor(r))
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusCreated, p)
}
func (s *Server) createProject(ctx context.Context, name, repoPath, createdBy string) (api.Project, error) {
if strings.TrimSpace(name) == "" {
return api.Project{}, fmt.Errorf("%w: name is required", agents.ErrInvalid)