feat(skills): wire session.Append into retrospective and trainer
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
iexec "github.com/mathiasbq/supervisor/internal/exec"
|
iexec "github.com/mathiasbq/supervisor/internal/exec"
|
||||||
"github.com/mathiasbq/supervisor/internal/session"
|
"github.com/mathiasbq/supervisor/internal/session"
|
||||||
@@ -52,6 +53,7 @@ func (s *Skill) Handle(ctx context.Context, tool string, args json.RawMessage) (
|
|||||||
if s.cfg.ExecutorFn == nil {
|
if s.cfg.ExecutorFn == nil {
|
||||||
return nil, fmt.Errorf("no executor configured")
|
return nil, fmt.Errorf("no executor configured")
|
||||||
}
|
}
|
||||||
|
t0 := time.Now()
|
||||||
result, err := s.cfg.ExecutorFn(ctx, iexec.Request{
|
result, err := s.cfg.ExecutorFn(ctx, iexec.Request{
|
||||||
SkillPrompt: s.cfg.SkillPrompt,
|
SkillPrompt: s.cfg.SkillPrompt,
|
||||||
TaskPrompt: taskPrompt,
|
TaskPrompt: taskPrompt,
|
||||||
@@ -62,6 +64,18 @@ func (s *Skill) Handle(ctx context.Context, tool string, args json.RawMessage) (
|
|||||||
return nil, fmt.Errorf("retrospective worker: %w", err)
|
return nil, fmt.Errorf("retrospective worker: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ = session.Append(s.cfg.SessionsDir, a.SessionID, session.Entry{
|
||||||
|
SessionID: a.SessionID,
|
||||||
|
Timestamp: time.Now(),
|
||||||
|
Skill: "retrospective",
|
||||||
|
Phase: "retrospective",
|
||||||
|
Attempts: session.AttemptsFrom(result.Attempts),
|
||||||
|
FinalStatus: result.Status,
|
||||||
|
ModelUsed: result.ModelUsed,
|
||||||
|
DurationMs: time.Since(t0).Milliseconds(),
|
||||||
|
Message: result.Message,
|
||||||
|
})
|
||||||
|
|
||||||
b, err := json.Marshal(result)
|
b, err := json.Marshal(result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("marshal result: %w", err)
|
return nil, fmt.Errorf("marshal result: %w", err)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
iexec "github.com/mathiasbq/supervisor/internal/exec"
|
iexec "github.com/mathiasbq/supervisor/internal/exec"
|
||||||
"github.com/mathiasbq/supervisor/internal/session"
|
"github.com/mathiasbq/supervisor/internal/session"
|
||||||
@@ -58,6 +59,7 @@ func (s *Skill) Handle(ctx context.Context, tool string, args json.RawMessage) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Step 2: Writer agent (receives reader candidates) ────────────────────
|
// ── Step 2: Writer agent (receives reader candidates) ────────────────────
|
||||||
|
t0 := time.Now()
|
||||||
writerTask := fmt.Sprintf(
|
writerTask := fmt.Sprintf(
|
||||||
"role: writer\nsession_id: %s\nbrain_dir: %s\n\nreader_summary: %s\nreader_candidates:\n%s",
|
"role: writer\nsession_id: %s\nbrain_dir: %s\n\nreader_summary: %s\nreader_candidates:\n%s",
|
||||||
a.SessionID, s.cfg.BrainDir, readerResult.Message, readerResult.RunnerOutput,
|
a.SessionID, s.cfg.BrainDir, readerResult.Message, readerResult.RunnerOutput,
|
||||||
@@ -72,6 +74,18 @@ func (s *Skill) Handle(ctx context.Context, tool string, args json.RawMessage) (
|
|||||||
return nil, fmt.Errorf("writer agent: %w", err)
|
return nil, fmt.Errorf("writer agent: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ = session.Append(s.cfg.SessionsDir, a.SessionID, session.Entry{
|
||||||
|
SessionID: a.SessionID,
|
||||||
|
Timestamp: time.Now(),
|
||||||
|
Skill: "trainer",
|
||||||
|
Phase: "trainer",
|
||||||
|
Attempts: session.AttemptsFrom(writerResult.Attempts),
|
||||||
|
FinalStatus: writerResult.Status,
|
||||||
|
ModelUsed: writerResult.ModelUsed,
|
||||||
|
DurationMs: time.Since(t0).Milliseconds(),
|
||||||
|
Message: writerResult.Message,
|
||||||
|
})
|
||||||
|
|
||||||
b, err := json.Marshal(writerResult)
|
b, err := json.Marshal(writerResult)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("marshal result: %w", err)
|
return nil, fmt.Errorf("marshal result: %w", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user