Files
tutti/packages/agent/daemon/runtime/controller_connector_capabilities.go
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

54 lines
1.8 KiB
Go

package agentruntime
import (
"context"
"strings"
)
type ConnectorCapabilityInput struct {
RoomID string
AgentSessionID string
AgentTargetID string
Provider string
CWD string
Env []string
ProviderTargetRef map[string]any
PermissionModeID string
Settings *SessionSettings
}
// ConnectorCapabilities resolves the exact adapter that will own the session
// and asks it for explicit Connector transport support. Unknown and future
// adapters fail closed to an ordinary, Connector-free session.
func (c *Controller) ConnectorCapabilities(
ctx context.Context,
input ConnectorCapabilityInput,
) (ConnectorCapabilities, error) {
provider := strings.TrimSpace(input.Provider)
adapter, err := c.resolveAdapter(ctx, AdapterResolveInput{
Provider: provider,
AgentTargetID: strings.TrimSpace(input.AgentTargetID),
CWD: strings.TrimSpace(input.CWD),
ProviderTargetRef: clonePayload(input.ProviderTargetRef),
})
if err != nil {
return ConnectorCapabilities{}, err
}
capabilityAdapter, ok := adapter.(ConnectorCapabilityAdapter)
if !ok {
return ConnectorCapabilities{}, nil
}
return capabilityAdapter.ConnectorCapabilities(ctx, Session{
RoomID: strings.TrimSpace(input.RoomID),
AgentSessionID: strings.TrimSpace(input.AgentSessionID),
RootAgentSessionID: strings.TrimSpace(input.AgentSessionID),
AgentTargetID: strings.TrimSpace(input.AgentTargetID),
Provider: provider,
CWD: strings.TrimSpace(input.CWD),
Env: append([]string(nil), input.Env...),
ProviderTargetRef: clonePayload(input.ProviderTargetRef),
PermissionModeID: strings.TrimSpace(input.PermissionModeID),
Settings: cloneOptionalSessionSettings(input.Settings),
})
}