1package agent
2
3import (
4 "reflect"
5 "testing"
6
7 "github.com/bnema/zut/packages/agent/extensions"
8 "github.com/bnema/zut/packages/agent/skills"
9)
10
11func TestInstructionContextPathsPreserveLoadOrder(t *testing.T) {
12 files := []ContextFile{
13 {Path: "/home/user/AGENTS.md", Content: "global rule"},
14 {Path: "/repo/AGENTS.md", Content: "project rule"},
15 }
16
17 paths := instructionContextPaths(files)
18 if len(paths) != len(files) {
19 t.Fatalf("got %d startup paths, want %d", len(paths), len(files))
20 }
21 for idx, path := range paths {
22 if path != files[idx].Path {
23 t.Fatalf("path %d = %q, want %q", idx, path, files[idx].Path)
24 }
25 }
26}
27
28func TestStartupExtensionNamesAreSortedAndEnabled(t *testing.T) {
29 disabled := false
30 exts := []*extensions.Extension{
31 {Manifest: extensions.Manifest{Name: "zeta"}},
32 {Manifest: extensions.Manifest{Name: "disabled", Enabled: &disabled}},
33 {Manifest: extensions.Manifest{Name: "alpha"}},
34 nil,
35 }
36 if got, want := startupExtensionNames(exts), []string{"alpha", "zeta"}; !reflect.DeepEqual(got, want) {
37 t.Fatalf("startupExtensionNames() = %v, want %v", got, want)
38 }
39}
40
41func TestStartupSkillNamesExcludeBuiltins(t *testing.T) {
42 discovered := []*skills.Skill{
43 {Name: "zeta"},
44 {Name: "internal", Builtin: true},
45 {Name: "alpha"},
46 }
47 if got, want := startupSkillNames(discovered), []string{"alpha", "zeta"}; !reflect.DeepEqual(got, want) {
48 t.Fatalf("startupSkillNames() = %v, want %v", got, want)
49 }
50}