new task lag
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE agent_sessions ADD COLUMN started INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE agent_sessions ADD COLUMN pending INTEGER NOT NULL DEFAULT 0;
|
||||
UPDATE agent_sessions SET started = 1 WHERE id IN (SELECT agent_session_id FROM events WHERE kind = 'user.message' AND agent_session_id IS NOT NULL);
|
||||
+43
-1
@@ -1006,6 +1006,21 @@ func (s *Store) FirstPrompt(ctx context.Context, taskID string) (string, error)
|
||||
return text, err
|
||||
}
|
||||
|
||||
func (s *Store) LastMessage(ctx context.Context, sessionID string) (api.Event, bool, error) {
|
||||
rows, err := s.db.QueryContext(ctx, `
|
||||
SELECT `+eventColumns+`
|
||||
FROM events WHERE agent_session_id = ? AND kind = 'user.message' ORDER BY seq DESC LIMIT 1
|
||||
`, sessionID)
|
||||
if err != nil {
|
||||
return api.Event{}, false, err
|
||||
}
|
||||
evs, err := scanEvents(rows)
|
||||
if err != nil || len(evs) == 0 {
|
||||
return api.Event{}, false, err
|
||||
}
|
||||
return evs[0], true, nil
|
||||
}
|
||||
|
||||
func (s *Store) BoardPosts(ctx context.Context, taskID string, after int64) ([]api.Event, error) {
|
||||
rows, err := s.db.QueryContext(ctx, `
|
||||
SELECT `+eventColumns+`
|
||||
@@ -1330,10 +1345,37 @@ func (s *Store) SetSubagents(ctx context.Context, id string, n int, actor string
|
||||
|
||||
func (s *Store) SessionStarted(ctx context.Context, sessionID string) (bool, error) {
|
||||
started := false
|
||||
err := s.db.QueryRowContext(ctx, `SELECT EXISTS (SELECT 1 FROM events WHERE agent_session_id = ? AND kind = 'user.message')`, sessionID).Scan(&started)
|
||||
err := s.db.QueryRowContext(ctx, `SELECT started FROM agent_sessions WHERE id = ?`, sessionID).Scan(&started)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return false, ErrNotFound
|
||||
}
|
||||
return started, err
|
||||
}
|
||||
|
||||
func (s *Store) SessionPending(ctx context.Context, sessionID string) (bool, error) {
|
||||
pending := false
|
||||
err := s.db.QueryRowContext(ctx, `SELECT pending FROM agent_sessions WHERE id = ?`, sessionID).Scan(&pending)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return false, ErrNotFound
|
||||
}
|
||||
return pending, err
|
||||
}
|
||||
|
||||
func (s *Store) RecordTurnMessage(ctx context.Context, sessionID string, ev api.Event) error {
|
||||
return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error {
|
||||
_, err := tx.ExecContext(ctx, `UPDATE agent_sessions SET pending = 1 WHERE id = ?`, sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return emit(ev)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Store) MarkSessionDelivered(ctx context.Context, sessionID string) error {
|
||||
_, err := s.db.ExecContext(ctx, `UPDATE agent_sessions SET started = 1, pending = 0 WHERE id = ?`, sessionID)
|
||||
return err
|
||||
}
|
||||
|
||||
type Turn struct {
|
||||
Actor string
|
||||
At time.Time
|
||||
|
||||
Reference in New Issue
Block a user