From 0e09fe11d3667b6b97c1c0f54705dc78c574a7d2 Mon Sep 17 00:00:00 2001
From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com>
Date: Thu, 25 Jan 2024 07:35:02 +0100
Subject: [PATCH] chore(docs): update homepage

---
 .gitignore                                    |  1 +
 app/Template/StaticPageLayout/Turbo.php       |  2 +-
 docs/pages/docs/features/database/index.md    |  6 +++---
 resources/css/docs-page-homepage.css          |  4 ++--
 src/Command/LlamaCppGenerate.php              |  8 ++++++++
 src/Command/LlamaCppGenerate/Completion.php   |  2 +-
 src/Command/StaticPagesDumpContent.php        |  2 +-
 src/Command/Watch.php                         |  2 +-
 src/CommonMarkTableOfContentsBuilder.php      |  7 +++----
 src/LlamaCppClient.php                        |  6 ++++--
 src/LlamaCppCompletionRequest.php             |  2 +-
 src/LlamaCppEmbedding.php                     |  2 +-
 src/LlamaCppEmbeddingRequest.php              |  6 +++++-
 src/LlamaCppPromptTemplate.php                | 16 ---------------
 .../MistralInstructChat.php                   | 20 -------------------
 src/LlamaCppPromptTemplate/Phi2Question.php   | 20 -------------------
 src/LlamaCppPromptTemplate/Plain.php          | 17 ----------------
 src/StaticPageAggregate.php                   |  2 +-
 18 files changed, 33 insertions(+), 92 deletions(-)
 delete mode 100644 src/LlamaCppPromptTemplate.php
 delete mode 100644 src/LlamaCppPromptTemplate/MistralInstructChat.php
 delete mode 100644 src/LlamaCppPromptTemplate/Phi2Question.php
 delete mode 100644 src/LlamaCppPromptTemplate/Plain.php

diff --git a/.gitignore b/.gitignore
index 86ea30be..217cce41 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 fe00a6ce..21f0c601 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 17731be2..e0e1f49b 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 0091c949..670b0145 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 681b789e..2fab6a39 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 39c33922..7d39aea8 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 155d12e5..6760d585 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 e7a941a6..796e1723 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 549c5e6a..cf129132 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 facbdaec..163c8302 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 484f68ce..3083efc4 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 a779d6f9..0cea51a7 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 39985104..5fc8d8c9 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 73d4d804..00000000
--- 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 3b2e0ac1..00000000
--- 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 493105a6..00000000
--- 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 3e28b975..00000000
--- 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 c00cf2ba..1beda7d1 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;
 
-- 
GitLab