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
54 lines
1.8 KiB
Go
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),
|
|
})
|
|
}
|