mirror of
https://github.com/lukaszraczylo/harness-sync.git
synced 2026-10-12 00:45:22 +00:00
The Zed Agent panel (new ACP-based UI) only discovers providers registered
under language_models.openai_compatible.<name>, not language_models.openai.
Each named entry appears as its own provider in the LLM Providers list.
- language_models.openai_compatible.harness-sync-gateway holds gateway URL + models
- agent.default_model.provider = 'harness-sync-gateway' (was 'openai')
- Model entries include capabilities {tools,images,parallel_tool_calls}
- Export common.GatewayProviderID so zed.go can reference it
- Fix staticcheck QF1001 (De Morgan's law) in io.go
- Fix struct field alignment in File (80→72 bytes)
- gofmt remaining files
62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
package adapter
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/lukaszraczylo/harness-sync/internal/canonical"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestFileSetAddAndIterate(t *testing.T) {
|
|
fs := NewFileSet()
|
|
fs.Add(File{Dest: "/tmp/a", Kind: RenderedFile, Content: []byte("a")})
|
|
fs.Add(File{Dest: "/tmp/b", Kind: SymlinkFile, SymlinkTarget: "/canon/b"})
|
|
|
|
seen := map[string]Kind{}
|
|
fs.ForEach(func(f File) {
|
|
seen[f.Dest] = f.Kind
|
|
})
|
|
assert.Equal(t, RenderedFile, seen["/tmp/a"])
|
|
assert.Equal(t, SymlinkFile, seen["/tmp/b"])
|
|
}
|
|
|
|
func TestKindString(t *testing.T) {
|
|
assert.Equal(t, "rendered", RenderedFile.String())
|
|
assert.Equal(t, "symlink-file", SymlinkFile.String())
|
|
}
|
|
|
|
type fakeAdapter struct {
|
|
name string
|
|
detect bool
|
|
}
|
|
|
|
func (f *fakeAdapter) Name() string { return f.name }
|
|
func (f *fakeAdapter) Detect() bool { return f.detect }
|
|
func (f *fakeAdapter) Render(_ *canonical.Bundle) (*FileSet, error) { return NewFileSet(), nil }
|
|
func (f *fakeAdapter) Import(_ string) (*ImportResult, error) { return &ImportResult{}, nil }
|
|
func (f *fakeAdapter) Capabilities() HarnessCapabilities { return HarnessCapabilities{} }
|
|
|
|
func TestRegistry(t *testing.T) {
|
|
r := NewRegistry()
|
|
a := &fakeAdapter{name: "a", detect: true}
|
|
b := &fakeAdapter{name: "b", detect: false}
|
|
r.Register(a)
|
|
r.Register(b)
|
|
|
|
assert.Equal(t, []string{"a", "b"}, r.Names())
|
|
assert.Equal(t, []string{"a"}, r.DetectedNames())
|
|
|
|
got, ok := r.Get("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "a", got.Name())
|
|
|
|
_, ok = r.Get("missing")
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestRegistryDuplicatePanics(t *testing.T) {
|
|
r := NewRegistry()
|
|
r.Register(&fakeAdapter{name: "x"})
|
|
assert.Panics(t, func() { r.Register(&fakeAdapter{name: "x"}) })
|
|
}
|