package dispatcher

import (
	"context"
	"strings"

	"github.com/tidbcloud/AgentTeam/desktop/internal/types"
)

func (d *Dispatcher) runtimeAttachmentResolver(binding conversationBinding) types.RuntimeAttachmentResolver {
	if d == nil || d.serverConnections == nil {
		return nil
	}
	ch, ok := d.serverConnections.ServerConnection(binding.channelID)
	if !ok || ch == nil {
		return nil
	}
	resolver, ok := ch.(types.ServerConnectionAttachmentResolver)
	if !ok {
		return nil
	}
	serverAgentID := strings.TrimSpace(binding.serverAgentID)
	return types.RuntimeAttachmentResolverFunc(func(ctx context.Context, attachments []types.MessageAttachment) ([]types.RuntimeAttachment, error) {
		return resolver.ResolveRuntimeAttachments(ctx, serverAgentID, attachments)
	})
}

func (d *Dispatcher) resolveRuntimeAttachments(ctx context.Context, binding conversationBinding, attachments []types.MessageAttachment) ([]types.RuntimeAttachment, error) {
	if len(attachments) == 0 {
		return nil, nil
	}
	resolver := d.runtimeAttachmentResolver(binding)
	if resolver == nil {
		return nil, nil
	}
	return resolver.ResolveRuntimeAttachments(ctx, attachments)
}
