Files
Agent-System/internal/squad/dialogue_context_test.go
T
weichen dc29b84cdf feat(ctx): inject cleaned project dialogue into squad and assistant
Add dialoguectx packaging, conflictresolve adjudication with HITL routing,
workspace context/dialogue/ injection (default on), and goose 00071.
2026-09-24 17:04:04 +00:00

53 lines
1.7 KiB
Go

package squad_test
import (
"os"
"path/filepath"
"strings"
"testing"
"chat-agent-system/internal/squad"
)
func TestPrepareWorkspaceWritesDialogueContext(t *testing.T) {
dir := t.TempDir()
engine := squad.NewWorkspaceEngine()
ws, err := engine.PrepareWorkspace(squad.WorkspacePrepareRequest{
WorkDir: dir,
TaskKey: "system_reqs",
StageTitle: "系统需求",
ProjectName: "Demo",
CustomerName: "Acme",
DialoguePackage: &squad.DialoguePackage{
DigestMD: "# 项目对话纪要\n\n- **2026-09-24**: 张工: 器械类型眼科OCT\n",
TurnsMD: "# turns\n\n[2026-09-24 15:00] 张工(engineer/member) 用户: 器械类型:眼科OCT\n",
FactsJSON: []byte(`[{"key":"device_type","value":"眼科OCT"}]`),
ConfirmationsMD: "# 裁决\n\n无冲突\n",
},
WorkflowSteps: []squad.StepSpec{{
ID: "s1", Title: "整理", Role: "organizer", Mode: "write",
SubWorkspace: "tasks/01_organizer", Status: "pending",
}},
})
if err != nil {
t.Fatal(err)
}
if ws == nil {
t.Fatal("nil workspace")
}
for _, name := range []string{"digest.md", "turns.md", "facts.json", "CONFIRMATIONS.md", "README.md"} {
p := filepath.Join(dir, "context", "dialogue", name)
if _, err := os.Stat(p); err != nil {
t.Fatalf("missing %s: %v", name, err)
}
}
readme, _ := os.ReadFile(filepath.Join(dir, "context", "README.md"))
if !strings.Contains(string(readme), "collab_dialogue") {
t.Fatalf("README missing collab_dialogue: %s", readme)
}
taskMD, _ := os.ReadFile(filepath.Join(dir, "tasks", "01_organizer", "TASK.md"))
if !strings.Contains(string(taskMD), "context/dialogue/") {
t.Fatalf("TASK.md missing dialogue nav: %s", taskMD)
}
}