From c2e0b290f97841cfd96ea0be5b3ab684fe7f5c01 Mon Sep 17 00:00:00 2001 From: Manuel Odendahl Date: Tue, 31 Dec 2024 18:15:13 -0500 Subject: [PATCH 1/3] :arrow_up: Bump dependencies --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 873fe89..7bc1103 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.22 toolchain go1.23.3 require ( + github.com/a-h/templ v0.2.793 github.com/charmbracelet/huh v0.6.0 github.com/go-go-golems/clay v0.1.17 github.com/go-go-golems/glazed v0.5.18 @@ -19,7 +20,6 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect - github.com/a-h/templ v0.2.793 // indirect github.com/adrg/frontmatter v0.2.0 // indirect github.com/alecthomas/chroma/v2 v2.14.0 // indirect github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de // indirect From f2fbb2a2fa883af693d7cacc8a174f00fd4e4e1f Mon Sep 17 00:00:00 2001 From: Manuel Odendahl Date: Tue, 31 Dec 2024 18:21:22 -0500 Subject: [PATCH 2/3] :sparkles: Show stats when clipping prompto --- pkg/server/handlers/prompt.go | 41 +++++++++++++++++++++++++++++++ pkg/server/static/js/favorites.js | 19 +++++++++++--- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/pkg/server/handlers/prompt.go b/pkg/server/handlers/prompt.go index 6b2f823..167d7f1 100644 --- a/pkg/server/handlers/prompt.go +++ b/pkg/server/handlers/prompt.go @@ -1,6 +1,7 @@ package handlers import ( + "encoding/json" "fmt" "net/http" "strings" @@ -8,8 +9,21 @@ import ( "github.com/go-go-golems/prompto/pkg" "github.com/go-go-golems/prompto/pkg/server/templates/components" "github.com/rs/zerolog/log" + "github.com/weaviate/tiktoken-go" ) +type PromptResponse struct { + Name string `json:"name"` + Group string `json:"group"` + Repository string `json:"repository"` + Content string `json:"content"` + Stats struct { + Tokens int `json:"tokens"` + Lines int `json:"lines"` + Size int `json:"size"` + } `json:"stats"` +} + func (h *Handlers) PromptList() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { parts := strings.Split(r.URL.Path, "/") @@ -139,6 +153,33 @@ func (h *Handlers) PromptContent() http.HandlerFunc { return } + // Check if JSON is requested + if r.Header.Get("Accept") == "application/json" { + tokenCounter, err := tiktoken.GetEncoding("cl100k_base") + if err != nil { + http.Error(w, "Error initializing token counter", http.StatusInternalServerError) + return + } + + tokens := tokenCounter.Encode(content, nil, nil) + response := PromptResponse{ + Name: foundFile.Name, + Group: group, + Repository: foundFile.Repository, + Content: content, + } + response.Stats.Tokens = len(tokens) + response.Stats.Lines = strings.Count(content, "\n") + 1 + response.Stats.Size = len(content) + + w.Header().Set("Content-Type", "application/json") + err = json.NewEncoder(w).Encode(response) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + return + } + w.Header().Set("Content-Type", "text/markdown") _, _ = w.Write([]byte(content)) } diff --git a/pkg/server/static/js/favorites.js b/pkg/server/static/js/favorites.js index a795617..fce2a66 100644 --- a/pkg/server/static/js/favorites.js +++ b/pkg/server/static/js/favorites.js @@ -10,11 +10,22 @@ function getFavorites() { } function copyToClipboard(text) { - fetch("/prompts/" + text) - .then(response => response.text()) - .then(content => { - navigator.clipboard.writeText(content).then(() => { + fetch("/prompts/" + text, { + headers: { + 'Accept': 'application/json' + } + }) + .then(response => response.json()) + .then(data => { + navigator.clipboard.writeText(data.content).then(() => { const toastEl = document.getElementById('copyToast'); + const toastBody = toastEl.querySelector('.toast-body'); + toastBody.innerHTML = ` + Copied to clipboard!
+ + ${data.stats.tokens} tokens • ${data.stats.lines} lines • ${data.stats.size} bytes + + `; const toast = new bootstrap.Toast(toastEl); toast.show(); }); From fad401f98d6744c308ae81e9f2dae961ce363588 Mon Sep 17 00:00:00 2001 From: Manuel Odendahl Date: Tue, 31 Dec 2024 18:24:02 -0500 Subject: [PATCH 3/3] :arrow_up: Bump dependencies --- go.mod | 1 + go.sum | 2 ++ 2 files changed, 3 insertions(+) diff --git a/go.mod b/go.mod index 7bc1103..2898f08 100644 --- a/go.mod +++ b/go.mod @@ -13,6 +13,7 @@ require ( github.com/rs/zerolog v1.33.0 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 + github.com/weaviate/tiktoken-go v0.0.2 ) require ( diff --git a/go.sum b/go.sum index 4383a7c..f7729fc 100644 --- a/go.sum +++ b/go.sum @@ -189,6 +189,8 @@ github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160 h1:NSWpaDaurcAJY7PkL8Xt0 github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= github.com/tj/go-naturaldate v1.3.0 h1:OgJIPkR/Jk4bFMBLbxZ8w+QUxwjqSvzd9x+yXocY4RI= github.com/tj/go-naturaldate v1.3.0/go.mod h1:rpUbjivDKiS1BlfMGc2qUKNZ/yxgthOfmytQs8d8hKk= +github.com/weaviate/tiktoken-go v0.0.2 h1:lkwTMEoXSFSXxYvw1c44/xz3OOAh27L3+3vvNN/TSSg= +github.com/weaviate/tiktoken-go v0.0.2/go.mod h1:u47qSckEGSi4sOcVJmUnd3xoHpDV9/5FDDi3KUCFUq4= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=