Support configuring effort alongside model

This commit is contained in:
Ian Gulliver
2026-10-23 08:40:00 -07:00
parent 6bbae3fffe
commit d6d9dd86d9
40 changed files with 805 additions and 541 deletions
+8 -7
View File
@@ -100,7 +100,7 @@ func (m *Manager) activeLead(ctx context.Context, owner string) (api.AgentSessio
return api.AgentSession{}, false, nil
}
func (m *Manager) createLead(ctx context.Context, owner api.User, prompt, model, actor, sendID, client string, images []string) (api.AgentSession, error) {
func (m *Manager) createLead(ctx context.Context, owner api.User, prompt, model, effort, actor, sendID, client string, images []string) (api.AgentSession, error) {
_, found, err := m.activeLead(ctx, owner.Login)
if err != nil {
return api.AgentSession{}, err
@@ -116,6 +116,7 @@ func (m *Manager) createLead(ctx context.Context, owner api.User, prompt, model,
Owner: owner.Login,
Vendor: vendor,
Model: model,
Effort: effort,
VendorSessionId: initialVendorSessionID(vendor),
State: api.AgentSessionStateIdle,
Role: api.Lead,
@@ -129,7 +130,7 @@ func (m *Manager) createLead(ctx context.Context, owner api.User, prompt, model,
return m.turn(ctx, sess, api.Task{}, actor, prompt, sendID, client, images)
}
func (m *Manager) MessageLead(ctx context.Context, user api.User, text, model, sendID, client string, images []string) (api.AgentSession, error) {
func (m *Manager) MessageLead(ctx context.Context, user api.User, text, model, effort, sendID, client string, images []string) (api.AgentSession, error) {
m.setStartedTodo(user.Login, false)
m.leadMu.Lock()
@@ -150,17 +151,17 @@ func (m *Manager) MessageLead(ctx context.Context, user api.User, text, model, s
return prior, nil
}
if !found {
return m.createLead(ctx, user, text, model, user.Login, sendID, client, images)
return m.createLead(ctx, user, text, model, effort, user.Login, sendID, client, images)
}
if sess.State == api.AgentSessionStateIdle {
s, err := m.Send(ctx, sess.Id, user.Login, text, model, sendID, client, images...)
s, err := m.Send(ctx, sess.Id, user.Login, text, model, effort, sendID, client, images...)
if !errors.Is(err, ErrConflict) {
return s, err
}
}
sess, err = m.changeModel(ctx, sess, model, user.Login)
sess, err = m.changeModel(ctx, sess, model, effort, user.Login)
if err != nil {
return api.AgentSession{}, err
}
@@ -217,7 +218,7 @@ func (m *Manager) tryDeliverLead(ctx context.Context, owner string) error {
}
text += "\n\n" + state
}
_, err = m.Send(ctx, sess.Id, actor, text, "", sendID, client, images...)
_, err = m.Send(ctx, sess.Id, actor, text, "", "", sendID, client, images...)
if errors.Is(err, ErrConflict) {
return nil
}
@@ -346,7 +347,7 @@ func (m *Manager) compactLead(sessionID string) {
ctx := context.Background()
sess, err := m.store.GetSession(ctx, sessionID)
if err == nil {
_, err = m.launchCompaction(ctx, sess, api.Task{}, "")
_, err = m.launchCompaction(ctx, sess, api.Task{}, "", "")
}
if err == nil {
return