- 新增 adapter/provider:Provider/Capabilities/Request/Credentials/MetricsRecorder/UpstreamError + 注册表 - 火山实现 Provider(provider.go),Synthesis 收敛为私有 synthesize,提供 BuildRequest 过渡映射 - controller 经 provider.Get(name).Synthesize 调用,voice 路由改在 Request 上覆盖 - UpstreamError 上移到 provider 包,火山用类型别名沿用旧名 - setting 新增 GetTTSRequest/GetDefaultFormat/GetDefaultProviderName - main.go 空导入注册火山 - docs/UPSTREAM_ADAPTER_GUIDE.md 更新为 v1.1(阶段0已落地)
34 lines
947 B
Go
34 lines
947 B
Go
package provider
|
|
|
|
import "sort"
|
|
|
|
// registry 保存所有已注册的上游适配器。
|
|
// 适配器在自己的 init() 里调用 Register;主干只通过 Get/Names 访问。
|
|
var registry = map[string]Provider{}
|
|
|
|
// Register 注册一个上游适配器。通常在适配器包的 init() 里调用。
|
|
// 重名注册会 panic —— 说明有重名 bug,应立即暴露。
|
|
func Register(p Provider) {
|
|
name := p.Name()
|
|
if _, ok := registry[name]; ok {
|
|
panic("provider: duplicate registration: " + name)
|
|
}
|
|
registry[name] = p
|
|
}
|
|
|
|
// Get 按名字取已注册的上游适配器;不存在返回 false。
|
|
func Get(name string) (Provider, bool) {
|
|
p, ok := registry[name]
|
|
return p, ok
|
|
}
|
|
|
|
// Names 返回所有已注册适配器的名字(排序稳定),供 admin UI 下拉框使用。
|
|
func Names() []string {
|
|
names := make([]string, 0, len(registry))
|
|
for name := range registry {
|
|
names = append(names, name)
|
|
}
|
|
sort.Strings(names)
|
|
return names
|
|
}
|