package workspace

import (
	"github.com/tidbcloud/AgentTeam/internal/api/dto"
	"github.com/tidbcloud/AgentTeam/internal/store/workspace"
)

func presentWorkspace(summary workspace.Summary, hasUnread bool, meshXEnabled bool) dto.WorkspaceResponse {
	var unreadCount int64
	if hasUnread {
		// Transitional compatibility for clients that still key off unreadCount.
		// Workspace-level product semantics are now existence-only.
		unreadCount = 1
	}
	return dto.WorkspaceResponse{
		ID:                summary.WorkspaceID,
		Slug:              summary.Slug,
		Name:              summary.Name,
		Role:              summary.WorkspaceRole,
		MemberID:          summary.MemberID,
		MemberDisplayName: summary.MemberDisplayName,
		Plan:              summary.PlanKey,
		HasUnread:         hasUnread,
		UnreadCount:       unreadCount,
		Capabilities:      workspaceCapabilities(meshXEnabled),
	}
}

// workspaceCapabilities builds the capabilities payload. We always emit the
// Memory capability when MeshX is enabled so clients can rely on the shape;
// when MeshX is disabled the whole Capabilities pointer stays nil and the
// field disappears from JSON (omitempty), signalling "no Memory flow".
func workspaceCapabilities(meshXEnabled bool) *dto.WorkspaceCapabilities {
	if !meshXEnabled {
		return nil
	}
	return &dto.WorkspaceCapabilities{
		Memory: &dto.WorkspaceMemoryCapability{Enabled: true},
		Roles:  &dto.WorkspaceRoleCapability{Enabled: true},
	}
}
