xworkmate-bridge/internal/acp/catalog.go
2026-06-12 14:49:51 +08:00

37 lines
1.2 KiB
Go

package acp
import (
"sync"
)
type CapabilityCatalog struct {
mu sync.RWMutex
ProviderCatalog []any `json:"providerCatalog"`
GatewayProviders []any `json:"gatewayProviders"`
AvailableExecutionTargets []any `json:"availableExecutionTargets"`
ProviderProbeSummary []any `json:"providerProbeSummary"`
}
func (c *CapabilityCatalog) Get() map[string]any {
c.mu.RLock()
defer c.mu.RUnlock()
result := map[string]any{
"singleAgent": true,
"multiAgent": false,
"providerCatalog": append([]any(nil), c.ProviderCatalog...),
"gatewayProviders": append([]any(nil), c.GatewayProviders...),
"availableExecutionTargets": append([]any(nil), c.AvailableExecutionTargets...),
"providerProbeSummary": append([]any(nil), c.ProviderProbeSummary...),
}
result["capabilities"] = map[string]any{
"single_agent": true,
"multi_agent": false,
"providerCatalog": append([]any(nil), c.ProviderCatalog...),
"gatewayProviders": append([]any(nil), c.GatewayProviders...),
"availableExecutionTargets": append([]any(nil), c.AvailableExecutionTargets...),
}
return result
}