Files
HomeAgent/internal/sdk/adapter_impl.go
JianFeeeee 4e70b8d5d8 refactor(module): 核心仓 Go module 路径改为 github.com/JianFeeeee/HologramAgent
批 1,不含 SDK 仓与目录改名。

- go.mod 第 1 行 module 路径
- 366 个 .go 文件的完整前缀 github.com/JianFeeeee/HomeAgent 机械替换
  (857 处,仅完整前缀;展示名/注释里的 HomeAgent 字样留给批 5)
- 未改:third_party 目录名、SDK 自身 go.mod module、go.mod replace 目标、
  homed/waiter 可执行名、.hmap 后缀
2026-10-21 12:17:19 +08:00

63 lines
1.2 KiB
Go

package sdk
import (
"errors"
"os"
"path/filepath"
luaVM "github.com/JianFeeeee/HologramAgent/internal/lua"
)
// adapterImpl 桥接 Lua VM 的协议适配器管理。
type adapterImpl struct {
vm *luaVM.VM
}
func NewAdapter(vm *luaVM.VM) AdapterAPI {
return &adapterImpl{vm: vm}
}
func (a *adapterImpl) List() []APIAdapter {
if a.vm == nil {
return nil
}
got := a.vm.ListAdapters()
out := make([]APIAdapter, len(got))
for i, ad := range got {
out[i] = APIAdapter{Name: ad.Name, Version: ad.Version}
}
return out
}
func (a *adapterImpl) Load(name, code string) error {
if a.vm == nil {
return errors.New("lua vm not available")
}
path := filepath.Join(a.vm.AdapterDir(), name+".lua")
if err := os.WriteFile(path, []byte(code), 0644); err != nil {
return err
}
return a.vm.LoadAdapter(path)
}
func (a *adapterImpl) Remove(name string) error {
if a.vm == nil {
return errors.New("lua vm not available")
}
path := filepath.Join(a.vm.AdapterDir(), name+".lua")
if err := os.Remove(path); err != nil {
return err
}
a.vm.RemoveAdapter(name)
return nil
}
func (a *adapterImpl) AdapterDir() string {
if a.vm == nil {
return ""
}
return a.vm.AdapterDir()
}
var _ AdapterAPI = (*adapterImpl)(nil)