package mcp

import (
	"context"

	"github.com/google/uuid"

	"github.com/yan1h/agent-coding-workflow/internal/infra/errs"
)

func CheckToolFromCtx(ctx context.Context, toolName string) error {
	sess, ok := FromContext(ctx)
	if !ok {
		return errs.New(errs.CodeInternal, "mcp: AuthSession missing")
	}
	if !sess.Scope.AllowsTool(toolName) {
		return errs.New(errs.CodeMcpTokenScopeViolation,
			"tool '"+toolName+"' is not in token scope")
	}
	return nil
}

func CheckProjectFromCtx(ctx context.Context, projectID uuid.UUID) error {
	sess, ok := FromContext(ctx)
	if !ok {
		return errs.New(errs.CodeInternal, "mcp: AuthSession missing")
	}
	if !sess.Scope.AllowsProject(projectID) {
		return errs.New(errs.CodeMcpTokenScopeViolation,
			"project is not in token scope")
	}
	return nil
}
