TextSource.php•1 kB
<?php
declare(strict_types=1);
namespace Butschster\ContextGenerator\Source\Text;
use Butschster\ContextGenerator\Source\BaseSource;
/**
 * Source for plain text content
 */
final class TextSource extends BaseSource
{
    /**
     * @param string $description Human-readable description
     * @param non-empty-string $content Text content
     * @param array<non-empty-string> $tags
     */
    public function __construct(
        public readonly string $content,
        string $description = '',
        public readonly string $tag = 'INSTRUCTION',
        array $tags = [],
    ) {
        parent::__construct(description: $description, tags: $tags);
    }
    #[\Override]
    public function jsonSerialize(): array
    {
        return \array_filter([
            'type' => 'text',
            ...parent::jsonSerialize(),
            'content' => $this->content,
            'tag' => $this->tag,
        ], static fn($value) => $value !== null && $value !== '' && $value !== []);
    }
}