package cli

import (
	"crypto/sha256"
	"encoding/hex"
	"fmt"
	"strings"
)

const generatedSessionIDPrefix = "notarius:v1:"

func resolvePromptSessionID(explicitSessionID, inputModule string, rawInput []byte) (string, error) {
	inputModule = strings.TrimSpace(inputModule)
	if inputModule == "" {
		return "", fmt.Errorf("resolve prompt session: input module key must not be empty")
	}
	if sessionID := strings.TrimSpace(explicitSessionID); sessionID != "" {
		return sessionID, nil
	}

	hasher := sha256.New()
	_, _ = hasher.Write([]byte(inputModule))
	_, _ = hasher.Write([]byte{0})
	_, _ = hasher.Write(rawInput)
	return generatedSessionIDPrefix + hex.EncodeToString(hasher.Sum(nil)), nil
}
