Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
55 lines
2.1 KiB
Go
55 lines
2.1 KiB
Go
package implementationhost
|
|
|
|
import market "github.com/tutti-os/tutti/packages/connector/daemon/core"
|
|
|
|
type SkillSummary = market.ConnectorSkillSummary
|
|
type ConnectorSummary = market.ConnectorSummary
|
|
type ConnectorInterfaceSummary = market.ConnectorInterfaceSummary
|
|
|
|
// ConnectorRoutingHint is a bounded, non-secret projection of one active
|
|
// route for Agent runtime preparation.
|
|
type ConnectorRoutingHint struct {
|
|
Key string
|
|
DisplayName string
|
|
Aliases []string
|
|
SkillRoot string
|
|
}
|
|
|
|
// ConnectorSummaries returns immutable discovery metadata already validated
|
|
// before each route was committed. It never rescans installed artifacts.
|
|
func (registry *RouteRegistry) ConnectorSummaries() []ConnectorSummary {
|
|
routes := registry.Routes()
|
|
connectors := make([]ConnectorSummary, 0, len(routes))
|
|
for _, route := range routes {
|
|
connectors = append(connectors, connectorSummaryFromDescriptor(route))
|
|
}
|
|
return connectors
|
|
}
|
|
|
|
func connectorSummaryFromDescriptor(route RouteDescriptor) ConnectorSummary {
|
|
interfaces := make([]ConnectorInterfaceSummary, 0, 2)
|
|
if route.HasMCP {
|
|
interfaces = append(interfaces, ConnectorInterfaceSummary{Kind: "mcp", ServerName: "connector",
|
|
ToolPrefix: route.ConnectorKey + "_", Status: string(route.InterfaceState("mcp"))})
|
|
}
|
|
if route.CLIInvocationCommand != "" {
|
|
interfaces = append(interfaces, ConnectorInterfaceSummary{Kind: "cli", Command: route.CLIInvocationCommand,
|
|
Status: string(route.InterfaceState("cli"))})
|
|
}
|
|
return ConnectorSummary{Key: route.ConnectorKey, Version: route.ConnectorVersion, Name: route.DisplayName, Description: route.Description,
|
|
Skills: append([]SkillSummary(nil), route.Skills...), Interfaces: interfaces}
|
|
}
|
|
|
|
// RoutingHints returns a detached snapshot for Agent runtime preparation.
|
|
func (registry *RouteRegistry) RoutingHints() []ConnectorRoutingHint {
|
|
routes := registry.Routes()
|
|
hints := make([]ConnectorRoutingHint, 0, len(routes))
|
|
for _, route := range routes {
|
|
hints = append(hints, ConnectorRoutingHint{
|
|
Key: route.ConnectorKey, DisplayName: route.DisplayName,
|
|
Aliases: append([]string(nil), route.RoutingAliases...), SkillRoot: route.SkillRoot,
|
|
})
|
|
}
|
|
return hints
|
|
}
|