feat: add skill registry with tool routing
This commit is contained in:
51
internal/registry/registry_test.go
Normal file
51
internal/registry/registry_test.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package registry_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/mathiasbq/supervisor/internal/registry"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type stubSkill struct {
|
||||
name string
|
||||
}
|
||||
|
||||
func (s stubSkill) Name() string { return s.name }
|
||||
func (s stubSkill) Tools() []registry.ToolDef {
|
||||
return []registry.ToolDef{{
|
||||
Name: s.name + "_tool",
|
||||
Description: "stub tool",
|
||||
InputSchema: json.RawMessage(`{"type":"object","properties":{}}`),
|
||||
}}
|
||||
}
|
||||
func (s stubSkill) Handle(ctx context.Context, tool string, args json.RawMessage) (json.RawMessage, error) {
|
||||
return json.RawMessage(`{"ok":true}`), nil
|
||||
}
|
||||
|
||||
func TestRegistryRoutes(t *testing.T) {
|
||||
r := registry.New()
|
||||
r.Register(stubSkill{name: "tdd"})
|
||||
|
||||
result, err := r.Dispatch(context.Background(), "tdd_tool", json.RawMessage(`{}`))
|
||||
require.NoError(t, err)
|
||||
assert.JSONEq(t, `{"ok":true}`, string(result))
|
||||
}
|
||||
|
||||
func TestRegistryUnknownTool(t *testing.T) {
|
||||
r := registry.New()
|
||||
_, err := r.Dispatch(context.Background(), "unknown_tool", json.RawMessage(`{}`))
|
||||
assert.ErrorContains(t, err, "unknown tool")
|
||||
}
|
||||
|
||||
func TestRegistryListsTools(t *testing.T) {
|
||||
r := registry.New()
|
||||
r.Register(stubSkill{name: "tdd"})
|
||||
|
||||
tools := r.Tools()
|
||||
require.Len(t, tools, 1)
|
||||
assert.Equal(t, "tdd_tool", tools[0].Name)
|
||||
}
|
||||
Reference in New Issue
Block a user