diff --git a/.gitignore b/.gitignore index 86ea30be47499a396c8fe794e51ee11324d0b264..217cce41b61f4c73b970c51218d58c14bfe251c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /config.ini /esbuild-meta-docs.json /node_modules +/sqlite-vss /vendor /*.cache diff --git a/app/Template/StaticPageLayout/Turbo.php b/app/Template/StaticPageLayout/Turbo.php index fe00a6ce5372f4f2bb02721c7d52548db4b4bf91..21f0c601289414ad4651e148210b712ae2578ff5 100644 --- a/app/Template/StaticPageLayout/Turbo.php +++ b/app/Template/StaticPageLayout/Turbo.php @@ -65,7 +65,7 @@ abstract readonly class Turbo extends StaticPageLayout <title>{$staticPage->frontMatter->title}</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - <link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible&family=Lora&family=Sometype+Mono&display=swap" rel="stylesheet"> + <link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible&family=Sometype+Mono&display=swap" rel="stylesheet"> HTML; yield from $this->renderMeta($staticPage); yield $renderedPreloads; diff --git a/docs/pages/docs/features/database/index.md b/docs/pages/docs/features/database/index.md index 17731be282c9c05daf179fb101c9b1f090a303f0..e0e1f49b4ff7344d7fa75df9c9659cc3ac391314 100644 --- a/docs/pages/docs/features/database/index.md +++ b/docs/pages/docs/features/database/index.md @@ -3,12 +3,12 @@ collections: - documents layout: dm:document parent: docs/features/index -title: Database +title: SQL Database description: > Learn how Resonance uses connection pools. Create and reuse queries, create database entities, and integrate with a migration tool. --- -# Database +# SQL Database -{{docs/features/database/*/index!docs/features/database/index}} +{{docs/features/database/*/index}} diff --git a/resources/css/docs-page-homepage.css b/resources/css/docs-page-homepage.css index 0091c94996e7b0afbc10bf110f5cc2cee175ade6..670b01453f7dea0f583358e025e7f8ad9d46edf1 100644 --- a/resources/css/docs-page-homepage.css +++ b/resources/css/docs-page-homepage.css @@ -12,7 +12,7 @@ padding-top: 20px; } @media screen and (min-width: 1024px) { - padding-top: 60px; + padding-top: 140px; } } @@ -86,7 +86,7 @@ h2.homepage__example__title { padding: 120px 0 60px 0; } @media screen and (min-width: 1024px) { - padding: 160px 0; + padding: 160px 0 120px 0; } } diff --git a/src/Command/LlamaCppGenerate.php b/src/Command/LlamaCppGenerate.php index 681b789e675d9ae640cc2b459891d2bc38301d11..2fab6a39bbb45ec2bfacfbf71df945891ced0237 100644 --- a/src/Command/LlamaCppGenerate.php +++ b/src/Command/LlamaCppGenerate.php @@ -7,12 +7,16 @@ namespace Distantmagic\Resonance\Command; use Distantmagic\Resonance\CoroutineCommand; use Distantmagic\Resonance\LlamaCppClient; use Distantmagic\Resonance\SwooleConfiguration; +use RuntimeException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; abstract class LlamaCppGenerate extends CoroutineCommand { + /** + * @param non-empty-string $prompt + */ abstract protected function executeLlamaCppCommand(InputInterface $input, OutputInterface $output, string $prompt): int; public function __construct( @@ -38,6 +42,10 @@ abstract class LlamaCppGenerate extends CoroutineCommand */ $prompt = $input->getArgument('prompt'); + if (empty($prompt)) { + throw new RuntimeException('Prompt cannot be empty'); + } + return $this->executeLlamaCppCommand($input, $output, $prompt); } } diff --git a/src/Command/LlamaCppGenerate/Completion.php b/src/Command/LlamaCppGenerate/Completion.php index 39c339224845c65336595d610397eaa0f4edf27e..7d39aea87b9f5c181202e6e04cf1bcbdbf731d30 100644 --- a/src/Command/LlamaCppGenerate/Completion.php +++ b/src/Command/LlamaCppGenerate/Completion.php @@ -8,7 +8,7 @@ use Distantmagic\Resonance\Attribute\ConsoleCommand; use Distantmagic\Resonance\Command; use Distantmagic\Resonance\Command\LlamaCppGenerate; use Distantmagic\Resonance\LlamaCppCompletionRequest; -use Distantmagic\Resonance\LlamaCppPromptTemplate\MistralInstructChat; +use Distantmagic\Resonance\LlmPromptTemplate\MistralInstructChat; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; diff --git a/src/Command/StaticPagesDumpContent.php b/src/Command/StaticPagesDumpContent.php index 155d12e50be43ac4a259249b4fc6c1f161421272..6760d585cae3403f1d36406bb83522912b79dc35 100644 --- a/src/Command/StaticPagesDumpContent.php +++ b/src/Command/StaticPagesDumpContent.php @@ -12,7 +12,7 @@ use Symfony\Component\Console\Output\OutputInterface; #[ConsoleCommand( name: 'static-pages:dump-content', - description: 'Dumps static pages content. JSONL format by default.' + description: 'Dumps static pages content into JSONL' )] final class StaticPagesDumpContent extends Command { diff --git a/src/Command/Watch.php b/src/Command/Watch.php index e7a941a6cbf8ea20c057a69c4ed12b9f69f4be0b..796e172364dc50c4b62899614e614f6f404be8d3 100644 --- a/src/Command/Watch.php +++ b/src/Command/Watch.php @@ -17,7 +17,7 @@ use Symfony\Component\Console\Output\OutputInterface; #[ConsoleCommand( name: 'watch:command', - description: 'Watch project files for changes (needs inotify)' + description: 'Watch project files for changes (requires inotify)' )] final class Watch extends Command { diff --git a/src/CommonMarkTableOfContentsBuilder.php b/src/CommonMarkTableOfContentsBuilder.php index 549c5e6a2d1f56083edf2fda7d0ae7ff2b02b85f..cf129132d92f108c869d67f0b709019fcc076718 100644 --- a/src/CommonMarkTableOfContentsBuilder.php +++ b/src/CommonMarkTableOfContentsBuilder.php @@ -19,9 +19,8 @@ readonly class CommonMarkTableOfContentsBuilder */ public function getTableOfContentsLinks(Document $document): Generator { - foreach ($this->getHeadings($document) as $heading) { + foreach ($this->getHeadings($document) as $heading => $headingText) { $headingLevel = $heading->getLevel(); - $headingText = $this->getHeadingText($heading); foreach ($this->getHeadingLinks($heading) as $headingPermalink) { yield new CommonMarkTableOfContentsLink( @@ -46,13 +45,13 @@ readonly class CommonMarkTableOfContentsBuilder } /** - * @return Generator<Heading> + * @return Generator<Heading,string> */ private function getHeadings(Document $document): Generator { foreach ($document->iterator(NodeIterator::FLAG_BLOCKS_ONLY) as $node) { if ($node instanceof Heading) { - yield $node; + yield $node => $this->getHeadingText($node); } } } diff --git a/src/LlamaCppClient.php b/src/LlamaCppClient.php index facbdaecec53e3521010ec4387e2d82efdbaf762..163c830225a9477ad57212228d986263f3bc7411 100644 --- a/src/LlamaCppClient.php +++ b/src/LlamaCppClient.php @@ -53,14 +53,16 @@ readonly class LlamaCppClient $this->assertStatusCode($curlHandle, 200); /** - * @var object{ embedding: array<float> } $responseData + * @var object{ embedding: list<float> } $responseData */ $responseData = $this ->jsonSerializer ->unserialize($responseContent) ; - return new LlamaCppEmbedding($responseData->embedding); + return new LlamaCppEmbedding( + embedding: $responseData->embedding, + ); } /** diff --git a/src/LlamaCppCompletionRequest.php b/src/LlamaCppCompletionRequest.php index 484f68ce54f4188e09418dd5aecead206b3e9ad4..3083efc4a3ae6a47544c4d2da512cbff7148d301 100644 --- a/src/LlamaCppCompletionRequest.php +++ b/src/LlamaCppCompletionRequest.php @@ -9,7 +9,7 @@ use JsonSerializable; readonly class LlamaCppCompletionRequest implements JsonSerializable { public function __construct( - public LlamaCppPromptTemplate $promptTemplate, + public LlmPromptTemplate $promptTemplate, ) {} public function jsonSerialize(): array diff --git a/src/LlamaCppEmbedding.php b/src/LlamaCppEmbedding.php index a779d6f975447bad4bda90b13d726a0480e5de5b..0cea51a7c5b77ec422104deda716a161b7c0f897 100644 --- a/src/LlamaCppEmbedding.php +++ b/src/LlamaCppEmbedding.php @@ -7,7 +7,7 @@ namespace Distantmagic\Resonance; readonly class LlamaCppEmbedding { /** - * @param array<float> $embedding + * @param list<float> $embedding */ public function __construct( public array $embedding, diff --git a/src/LlamaCppEmbeddingRequest.php b/src/LlamaCppEmbeddingRequest.php index 39985104510100d5265b363e1a7791cbc9d88148..5fc8d8c95c3fc26bbd4d761630f40a030dddaea7 100644 --- a/src/LlamaCppEmbeddingRequest.php +++ b/src/LlamaCppEmbeddingRequest.php @@ -8,9 +8,13 @@ use JsonSerializable; readonly class LlamaCppEmbeddingRequest implements JsonSerializable { + /** + * @param non-empty-string $content + */ public function __construct( public string $content, - ) {} + ) { + } public function jsonSerialize(): array { diff --git a/src/LlamaCppPromptTemplate.php b/src/LlamaCppPromptTemplate.php deleted file mode 100644 index 73d4d80426a0cbb9031c8d3fa34eb95fdf39daee..0000000000000000000000000000000000000000 --- a/src/LlamaCppPromptTemplate.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Distantmagic\Resonance; - -use JsonSerializable; -use Stringable; - -abstract readonly class LlamaCppPromptTemplate implements JsonSerializable, Stringable -{ - public function jsonSerialize(): string - { - return (string) $this; - } -} diff --git a/src/LlamaCppPromptTemplate/MistralInstructChat.php b/src/LlamaCppPromptTemplate/MistralInstructChat.php deleted file mode 100644 index 3b2e0ac121a4516b3d0ba036ccc99e14fadcb55c..0000000000000000000000000000000000000000 --- a/src/LlamaCppPromptTemplate/MistralInstructChat.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Distantmagic\Resonance\LlamaCppPromptTemplate; - -use Distantmagic\Resonance\LlamaCppPromptTemplate; - -readonly class MistralInstructChat extends LlamaCppPromptTemplate -{ - public function __construct(private string $prompt) {} - - public function __toString(): string - { - return sprintf( - '[INST]%s[/INST]', - $this->prompt, - ); - } -} diff --git a/src/LlamaCppPromptTemplate/Phi2Question.php b/src/LlamaCppPromptTemplate/Phi2Question.php deleted file mode 100644 index 493105a6bd5b296550fc1d0b635566ff71bca712..0000000000000000000000000000000000000000 --- a/src/LlamaCppPromptTemplate/Phi2Question.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Distantmagic\Resonance\LlamaCppPromptTemplate; - -use Distantmagic\Resonance\LlamaCppPromptTemplate; - -readonly class Phi2Question extends LlamaCppPromptTemplate -{ - public function __construct(private string $prompt) {} - - public function __toString(): string - { - return sprintf( - "Question: %s\nAnswer: ", - $this->prompt, - ); - } -} diff --git a/src/LlamaCppPromptTemplate/Plain.php b/src/LlamaCppPromptTemplate/Plain.php deleted file mode 100644 index 3e28b97525afa2d5efdccf0ef835727165b392f4..0000000000000000000000000000000000000000 --- a/src/LlamaCppPromptTemplate/Plain.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Distantmagic\Resonance\LlamaCppPromptTemplate; - -use Distantmagic\Resonance\LlamaCppPromptTemplate; - -readonly class Plain extends LlamaCppPromptTemplate -{ - public function __construct(private string $prompt) {} - - public function __toString(): string - { - return $this->prompt; - } -} diff --git a/src/StaticPageAggregate.php b/src/StaticPageAggregate.php index c00cf2ba7f5b35771aa420d7b99c519f19c4842b..1beda7d1f4a401976a6b42736a217c0c9068fb87 100644 --- a/src/StaticPageAggregate.php +++ b/src/StaticPageAggregate.php @@ -9,7 +9,7 @@ use Ds\Map; readonly class StaticPageAggregate { /** - * @var Map<string, StaticPage> + * @var Map<string,StaticPage> */ public Map $staticPages;