package agent

import (
	"context"
	"encoding/json"

	storeagent "github.com/tidbcloud/AgentTeam/internal/store/agent"
	"github.com/tidbcloud/AgentTeam/internal/store/message"
)

// AgentThreadAttestation is the AgentTeam-owned attestation resolved from an
// authenticated agent token and the delivery target for its current turn. AgentTeam
// validates agent/target/workspace ownership, while upstream systems own
// domain-specific authorization and request semantics.
type AgentThreadAttestation = message.AgentThreadSessionContext
type AgentThreadTarget = message.AgentThreadTarget

type AgentThreadContextStore interface {
	ResolveAgentThreadAttestation(ctx context.Context, agent storeagent.AuthenticatedAgent, target AgentThreadTarget) (AgentThreadAttestation, error)
}

type AgentThreadGateway interface {
	ForwardAgentThreadUpstream(ctx context.Context, attestation AgentThreadAttestation, method string, path string, request json.RawMessage) (json.RawMessage, error)
}
