feat(capability/skills): 可复用工作流技能(Skill 模型 + Store + YAML Loader + Runner 展开 + 注册)

This commit is contained in:
Aska committed 2026-09-06 06:25:42 +08:00
1 parent d947ec41a9
commit 915aa8a100
10 files changed
+1235

No files matched your search

@@ -0,0 +1,56 @@
package skills
import (
"errors"
"testing"
"git.yeij.top/AskaEth/Cyrene_v2/internal/capability/registry"
"git.yeij.top/AskaEth/Cyrene_v2/pkg/plugins/sdk"
)
func TestRegister_正常(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg, makeSkill(t, "a"), makeSkill(t, "b")); err != nil {
t.Fatalf("Register: %v", err)
}
cap, err := reg.Get("a")
if err != nil {
t.Fatalf("Get a: %v", err)
}
if cap.Kind != registry.KindSkill {
t.Fatalf("Kind = %q, want %q", cap.Kind, registry.KindSkill)
}
sk, ok := cap.Value.(sdk.Skill)
if !ok {
t.Fatalf("Value is %T, want sdk.Skill", cap.Value)
}
if sk.Name() != "a" || sk.Description() != "desc a" {
t.Fatalf("registered skill = %q/%q, want a/desc a", sk.Name(), sk.Description())
}
}
func TestRegister_NilRegistrar_异常(t *testing.T) {
t.Parallel()
if err := Register(nil, makeSkill(t, "a")); !errors.Is(err, ErrNilRegistrar) {
t.Fatalf("Register(nil) err = %v, want ErrNilRegistrar", err)
}
}
func TestRegister_NilSkill_异常(t *testing.T) {
t.Parallel()
if err := Register(registry.New(), nil); !errors.Is(err, ErrInvalidSkill) {
t.Fatalf("Register(nil skill) err = %v, want ErrInvalidSkill", err)
}
}
func TestRegister_Duplicate_异常(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg, makeSkill(t, "review")); err != nil {
t.Fatalf("first Register: %v", err)
}
if err := Register(reg, makeSkill(t, "review")); !errors.Is(err, registry.ErrDuplicate) {
t.Fatalf("second Register err = %v, want registry.ErrDuplicate", err)
}
}