fix evolution review issues
This commit is contained in:
parent
8f0fabd709
commit
e0a80ec621
5 changed files with 24 additions and 24 deletions
|
|
@ -213,7 +213,7 @@ func (b *evolutionBridge) handleTurnEndAsync(meta EventMeta, payload TurnEndPayl
|
||||||
b.closeMu.Unlock()
|
b.closeMu.Unlock()
|
||||||
go func() {
|
go func() {
|
||||||
defer b.wg.Done()
|
defer b.wg.Done()
|
||||||
if err := b.runtime.FinalizeTurn(context.Background(), input); err != nil {
|
if err := b.runtime.FinalizeTurn(b.bgCtx, input); err != nil {
|
||||||
logger.WarnCF("agent", "Evolution finalize turn failed", map[string]any{
|
logger.WarnCF("agent", "Evolution finalize turn failed", map[string]any{
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
"turn_id": input.TurnID,
|
"turn_id": input.TurnID,
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@ func TestEvolutionBridge_DirectDeliveryFailureFallsBackToCurrentRuntimeBridge(t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEvolutionBridge_CloseFlushesPendingTurnEndRecord(t *testing.T) {
|
func TestEvolutionBridge_CloseCancelsPendingTurnEndRecord(t *testing.T) {
|
||||||
tmpDir := t.TempDir()
|
tmpDir := t.TempDir()
|
||||||
al := newEvolutionTestLoop(t, tmpDir, config.EvolutionConfig{
|
al := newEvolutionTestLoop(t, tmpDir, config.EvolutionConfig{
|
||||||
Enabled: true,
|
Enabled: true,
|
||||||
|
|
@ -315,14 +315,17 @@ func TestEvolutionBridge_CloseFlushesPendingTurnEndRecord(t *testing.T) {
|
||||||
UserMessage: "close flush task",
|
UserMessage: "close flush task",
|
||||||
FinalContent: "ok",
|
FinalContent: "ok",
|
||||||
})
|
})
|
||||||
al.Close()
|
|
||||||
|
|
||||||
record := waitForEvolutionRecord(t, filepath.Join(tmpDir, "state", "evolution", "task-records.jsonl"))
|
done := make(chan struct{})
|
||||||
if got := record["session_key"]; got != "session-close-flush" {
|
go func() {
|
||||||
t.Fatalf("session_key = %v, want session-close-flush", got)
|
al.Close()
|
||||||
}
|
close(done)
|
||||||
if got := record["summary"]; got != "close flush task" {
|
}()
|
||||||
t.Fatalf("summary = %v, want close flush task", got)
|
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-time.After(2 * time.Second):
|
||||||
|
t.Fatal("Close timed out")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ func TestDefaultConfig_EvolutionDefaults(t *testing.T) {
|
||||||
cfg := DefaultConfig()
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
assert.False(t, cfg.Evolution.Enabled)
|
assert.False(t, cfg.Evolution.Enabled)
|
||||||
assert.Equal(t, "apply", cfg.Evolution.Mode)
|
assert.Equal(t, "observe", cfg.Evolution.Mode)
|
||||||
assert.Equal(t, "", cfg.Evolution.StateDir)
|
assert.Equal(t, "", cfg.Evolution.StateDir)
|
||||||
assert.Equal(t, 2, cfg.Evolution.MinTaskCount)
|
assert.Equal(t, 2, cfg.Evolution.MinTaskCount)
|
||||||
assert.Equal(t, 0.7, cfg.Evolution.MinSuccessRatio)
|
assert.Equal(t, 0.7, cfg.Evolution.MinSuccessRatio)
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ func DefaultConfig() *Config {
|
||||||
},
|
},
|
||||||
Evolution: EvolutionConfig{
|
Evolution: EvolutionConfig{
|
||||||
Enabled: false,
|
Enabled: false,
|
||||||
Mode: "apply",
|
Mode: "observe",
|
||||||
MinTaskCount: 2,
|
MinTaskCount: 2,
|
||||||
MinSuccessRatio: 0.7,
|
MinSuccessRatio: 0.7,
|
||||||
ColdPathTrigger: "after_turn",
|
ColdPathTrigger: "after_turn",
|
||||||
|
|
|
||||||
|
|
@ -57,29 +57,26 @@ func (a *Applier) applyDraftWithRollback(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
skillDir := filepath.Join(workspace, "skills", draft.TargetSkillName)
|
|
||||||
if mkdirErr := os.MkdirAll(skillDir, 0o755); mkdirErr != nil {
|
|
||||||
return nil, mkdirErr
|
|
||||||
}
|
|
||||||
|
|
||||||
renderedBody, err := renderAppliedBody(draft, existingBody, hadOriginal)
|
renderedBody, err := renderAppliedBody(draft, existingBody, hadOriginal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
skillPath := filepath.Join(skillDir, "SKILL.md")
|
|
||||||
if err := fileutil.WriteFileAtomic(skillPath, []byte(renderedBody), 0o644); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := validateAppliedSkillBody(
|
if err := validateAppliedSkillBody(
|
||||||
renderedBody,
|
renderedBody,
|
||||||
draft.TargetSkillName,
|
draft.TargetSkillName,
|
||||||
allowsExistingFrontmatterFields(draft.ChangeKind, hadOriginal),
|
allowsExistingFrontmatterFields(draft.ChangeKind, hadOriginal),
|
||||||
); err != nil {
|
); err != nil {
|
||||||
if rollbackErr := a.rollbackSkill(skillPath, backupPath, hadOriginal); rollbackErr != nil {
|
return nil, err
|
||||||
return nil, errorsJoin(err, rollbackErr)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
skillDir := filepath.Join(workspace, "skills", draft.TargetSkillName)
|
||||||
|
if mkdirErr := os.MkdirAll(skillDir, 0o755); mkdirErr != nil {
|
||||||
|
return nil, mkdirErr
|
||||||
|
}
|
||||||
|
|
||||||
|
skillPath := filepath.Join(skillDir, "SKILL.md")
|
||||||
|
if err := fileutil.WriteFileAtomic(skillPath, []byte(renderedBody), 0o644); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue