This commit is contained in:
Ian Gulliver
2026-10-20 22:32:24 -07:00
parent 3560327dd4
commit ae6e9e3f77
2 changed files with 15 additions and 18 deletions
+13 -12
View File
@@ -39,7 +39,7 @@ func (m *Manager) clientTools(l *live) []mcp.Tool {
"The most recently active one is listed first; it is usually the Mac the human sits at.",
InputSchema: json.RawMessage(`{"type": "object", "properties": {}}`),
Handler: func(ctx context.Context, raw json.RawMessage) (string, error) {
return m.listClients(ctx)
return m.listClients(), nil
},
},
{
@@ -219,24 +219,25 @@ func (m *Manager) clientTools(l *live) []mcp.Tool {
}
}
func (m *Manager) listClients(ctx context.Context) (string, error) {
status, err := m.status(ctx)
if err != nil {
return "", err
}
rows := status.Clients
if len(rows) == 0 {
return "No client Macs are connected.", nil
}
func (m *Manager) recentClients() []clients.Client {
rows := m.clients.List()
sort.SliceStable(rows, func(i, j int) bool {
a, b := rows[i].LastActionAt, rows[j].LastActionAt
return a != nil && (b == nil || a.After(*b))
})
return rows
}
func (m *Manager) listClients() string {
rows := m.recentClients()
if len(rows) == 0 {
return "No client Macs are connected."
}
now := time.Now()
b := &strings.Builder{}
for i, r := range rows {
fmt.Fprintf(b, "- %s (%s, id %s): ", r.Host, r.Login, r.Id)
fmt.Fprintf(b, "- %s (%s, id %s): ", r.Host, r.Login, r.ID)
if r.LastActionAt == nil {
b.WriteString("no action since byre started")
} else {
@@ -251,7 +252,7 @@ func (m *Manager) listClients(ctx context.Context) (string, error) {
}
b.WriteString("\n")
}
return b.String(), nil
return b.String()
}
type clientBashArgs struct {
+2 -6
View File
@@ -3,7 +3,6 @@ package agents
import (
"context"
"fmt"
"sort"
"strings"
"time"
@@ -16,7 +15,7 @@ const signTimeout = 2 * time.Minute
func (m *Manager) signer(ctx context.Context, user api.User) func(payload []byte) ([]byte, error) {
return func(payload []byte) ([]byte, error) {
mine := []clients.Client{}
for _, c := range m.clients.List() {
for _, c := range m.recentClients() {
if c.Login == user.Login {
mine = append(mine, c)
}
@@ -24,10 +23,7 @@ func (m *Manager) signer(ctx context.Context, user api.User) func(payload []byte
if len(mine) == 0 {
return nil, fmt.Errorf("commits are signed on %s's Mac, and none of theirs is connected", user.Login)
}
sort.SliceStable(mine, func(i, j int) bool {
a, b := mine[i].LastActionAt, mine[j].LastActionAt
return a != nil && (b == nil || a.After(*b))
})
client := mine[0]
ident := fmt.Sprintf("%s <%s>", user.GitName, user.GitEmail)