Audit of e875853
This commit is contained in:
@@ -7,7 +7,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"g.fc.run/ai/byre/internal/antigravity"
|
"g.fc.run/ai/byre/internal/antigravity"
|
||||||
@@ -15,16 +14,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type agySteps struct {
|
type agySteps struct {
|
||||||
mu sync.Mutex
|
|
||||||
text map[int]*strings.Builder
|
text map[int]*strings.Builder
|
||||||
tools map[string]bool
|
tools map[string]bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func newAgySteps() *agySteps {
|
func (m *Manager) handleAntigravity(ctx context.Context, l *live, p antigravityProcess, steps *agySteps, ev antigravity.Event) error {
|
||||||
return &agySteps{text: map[int]*strings.Builder{}, tools: map[string]bool{}}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Manager) handleAntigravity(ctx context.Context, l *live, p antigravityProcess, ev antigravity.Event) error {
|
|
||||||
switch ev.Kind {
|
switch ev.Kind {
|
||||||
case "init":
|
case "init":
|
||||||
return nil
|
return nil
|
||||||
@@ -34,7 +28,7 @@ func (m *Manager) handleAntigravity(ctx context.Context, l *live, p antigravityP
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return m.agyStep(ctx, l, p, ev, su)
|
return m.agyStep(ctx, l, steps, ev, su)
|
||||||
|
|
||||||
case "result":
|
case "result":
|
||||||
res, err := ev.Result()
|
res, err := ev.Result()
|
||||||
@@ -52,24 +46,22 @@ func (m *Manager) handleAntigravity(ctx context.Context, l *live, p antigravityP
|
|||||||
return m.emit(ctx, l, agentActor, "agent.vendor", raw)
|
return m.emit(ctx, l, agentActor, "agent.vendor", raw)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) agyStep(ctx context.Context, l *live, p antigravityProcess, ev antigravity.Event, su antigravity.StepUpdate) error {
|
func (m *Manager) agyStep(ctx context.Context, l *live, steps *agySteps, ev antigravity.Event, su antigravity.StepUpdate) error {
|
||||||
switch su.StepType {
|
switch su.StepType {
|
||||||
case "user_input":
|
case "user_input":
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
case "agent_response":
|
case "agent_response":
|
||||||
p.steps.mu.Lock()
|
b := steps.text[su.StepIndex]
|
||||||
b := p.steps.text[su.StepIndex]
|
|
||||||
if b == nil {
|
if b == nil {
|
||||||
b = &strings.Builder{}
|
b = &strings.Builder{}
|
||||||
p.steps.text[su.StepIndex] = b
|
steps.text[su.StepIndex] = b
|
||||||
}
|
}
|
||||||
b.WriteString(su.TextDelta)
|
b.WriteString(su.TextDelta)
|
||||||
done := su.State != "ACTIVE"
|
done := su.State != "ACTIVE"
|
||||||
if done {
|
if done {
|
||||||
delete(p.steps.text, su.StepIndex)
|
delete(steps.text, su.StepIndex)
|
||||||
}
|
}
|
||||||
p.steps.mu.Unlock()
|
|
||||||
|
|
||||||
if su.TextDelta != "" {
|
if su.TextDelta != "" {
|
||||||
m.store.Broadcast(m.event(l, agentActor, "agent.delta", map[string]any{"text": su.TextDelta}))
|
m.store.Broadcast(m.event(l, agentActor, "agent.delta", map[string]any{"text": su.TextDelta}))
|
||||||
@@ -89,13 +81,11 @@ func (m *Manager) agyStep(ctx context.Context, l *live, p antigravityProcess, ev
|
|||||||
if su.ToolInfo != nil {
|
if su.ToolInfo != nil {
|
||||||
info = *su.ToolInfo
|
info = *su.ToolInfo
|
||||||
}
|
}
|
||||||
p.steps.mu.Lock()
|
called := steps.tools[id]
|
||||||
called := p.steps.tools[id]
|
steps.tools[id] = su.State == "ACTIVE"
|
||||||
p.steps.tools[id] = su.State == "ACTIVE"
|
|
||||||
if su.State != "ACTIVE" {
|
if su.State != "ACTIVE" {
|
||||||
delete(p.steps.tools, id)
|
delete(steps.tools, id)
|
||||||
}
|
}
|
||||||
p.steps.mu.Unlock()
|
|
||||||
|
|
||||||
if !called {
|
if !called {
|
||||||
name, input, err := agyToolCall(su.ToolName, info.Parameters)
|
name, input, err := agyToolCall(su.ToolName, info.Parameters)
|
||||||
|
|||||||
@@ -260,8 +260,7 @@ func (p codexProcess) drive(m *Manager, l *live) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type antigravityProcess struct {
|
type antigravityProcess struct {
|
||||||
s *antigravity.Session
|
s *antigravity.Session
|
||||||
steps *agySteps
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) startAntigravity(ctx context.Context, sess api.AgentSession, l *live, g string, servers []*mcp.Server, stdio []mcp.Stdio, env []string) (agentProcess, error) {
|
func (m *Manager) startAntigravity(ctx context.Context, sess api.AgentSession, l *live, g string, servers []*mcp.Server, stdio []mcp.Stdio, env []string) (agentProcess, error) {
|
||||||
@@ -293,7 +292,7 @@ func (m *Manager) startAntigravity(ctx context.Context, sess api.AgentSession, l
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return antigravityProcess{s: s, steps: newAgySteps()}, nil
|
return antigravityProcess{s: s}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p antigravityProcess) send(ctx context.Context, text string, images []image) error {
|
func (p antigravityProcess) send(ctx context.Context, text string, images []image) error {
|
||||||
@@ -324,12 +323,13 @@ func (p antigravityProcess) discard() {
|
|||||||
|
|
||||||
func (p antigravityProcess) drive(m *Manager, l *live) {
|
func (p antigravityProcess) drive(m *Manager, l *live) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
steps := &agySteps{text: map[int]*strings.Builder{}, tools: map[string]bool{}}
|
||||||
for ev := range p.s.Events() {
|
for ev := range p.s.Events() {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
if wait := start.Sub(ev.Read); wait > 200*time.Millisecond {
|
if wait := start.Sub(ev.Read); wait > 200*time.Millisecond {
|
||||||
slog.Info("agent event waited", "session", l.id, "event", ev.Kind, "wait", wait)
|
slog.Info("agent event waited", "session", l.id, "event", ev.Kind, "wait", wait)
|
||||||
}
|
}
|
||||||
err := m.handleAntigravity(ctx, l, p, ev)
|
err := m.handleAntigravity(ctx, l, p, steps, ev)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("record agent event", "session", l.id, "event", ev.Kind, "err", err)
|
slog.Error("record agent event", "session", l.id, "event", ev.Kind, "err", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user