package message

// AgentThreadSessionMetadataKey stores AgentTeam-owned hidden agent-thread/session
// transport metadata on a root message. Product request semantics stay in the
// caller-owned request body/opaque product metadata.
const AgentThreadSessionMetadataKey = "agentThreadSession"

// AgentThreadSessionMetadataKind identifies hidden agent-thread/session roots.
const AgentThreadSessionMetadataKind = "agent_thread_session"

// AgentThreadTarget identifies the AgentTeam delivery scope that an agent runtime is
// currently serving, together with the human message that opened the current
// turn.
type AgentThreadTarget struct {
	TargetKey  string
	TargetType string
	MessageID  string
}

// AgentThreadSessionContext is the trusted AgentTeam-side scope an agent may use to
// reach upstream tools. It contains only transport, identity, and acting-human
// attestation data. ThreadChannelID is retained as the upstream compatibility
// field and equals TargetKey for non-thread targets.
type AgentThreadSessionContext struct {
	WorkspaceID       string
	TargetKey         string
	TargetType        string
	MessageID         string
	ThreadChannelID   string
	ParentChannelID   string
	RootMessageID     string
	AgentID           string
	AgentMemberID     string
	ActingUserID      string
	ActingMemberID    string
	ActingDisplayName string
}
