From 026aa14b2f61b44acdb82184b0ad33d7ea67232a Mon Sep 17 00:00:00 2001 From: Luxferre Date: Mon, 23 Mar 2026 09:03:00 +0200 Subject: [PATCH] refactored the dir structure --- README.md | 6 +++--- cmd/sidekick-mcp/main.go | 2 +- cmd/sidekick-tui/main.go | 2 +- cmd/sidekick-tui/repro_test.go | 2 +- cmd/sidekick-tui/tui_test.go | 2 +- go.mod | 2 +- go.sum | 12 ++++++++---- agent.go => pkg/sidekick/agent.go | 0 buffer.go => pkg/sidekick/buffer.go | 0 config.go => pkg/sidekick/config.go | 0 internal_tools.go => pkg/sidekick/internal_tools.go | 0 .../sidekick/internal_tools_test.go | 0 llm.go => pkg/sidekick/llm.go | 0 log.go => pkg/sidekick/log.go | 0 mcp.go => pkg/sidekick/mcp.go | 0 .../sidekick/mcp_server_test.go | 0 prompts.go => pkg/sidekick/prompts.go | 0 prompts_test.go => pkg/sidekick/prompts_test.go | 0 sidekick_test.go => pkg/sidekick/sidekick_test.go | 0 tools.go => pkg/sidekick/tools.go | 0 types.go => pkg/sidekick/types.go | 0 21 files changed, 16 insertions(+), 12 deletions(-) rename agent.go => pkg/sidekick/agent.go (100%) rename buffer.go => pkg/sidekick/buffer.go (100%) rename config.go => pkg/sidekick/config.go (100%) rename internal_tools.go => pkg/sidekick/internal_tools.go (100%) rename internal_tools_test.go => pkg/sidekick/internal_tools_test.go (100%) rename llm.go => pkg/sidekick/llm.go (100%) rename log.go => pkg/sidekick/log.go (100%) rename mcp.go => pkg/sidekick/mcp.go (100%) rename mcp_server_test.go => pkg/sidekick/mcp_server_test.go (100%) rename prompts.go => pkg/sidekick/prompts.go (100%) rename prompts_test.go => pkg/sidekick/prompts_test.go (100%) rename sidekick_test.go => pkg/sidekick/sidekick_test.go (100%) rename tools.go => pkg/sidekick/tools.go (100%) rename types.go => pkg/sidekick/types.go (100%) diff --git a/README.md b/README.md index 555729a..c529c0a 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ toolsets = ["filesystem"] To use Sidekick as a framework in your own Go projects: ```bash -go get codeberg.org/luxferre/Sidekick +go get codeberg.org/luxferre/Sidekick/pkg/sidekick ``` ### Installing the TUI @@ -193,7 +193,7 @@ import ( "fmt" "log" - "codeberg.org/luxferre/Sidekick" + "codeberg.org/luxferre/Sidekick/pkg/sidekick" ) func main() { @@ -216,7 +216,7 @@ func main() { } } - agent := sidekick.NewAgent("coordinator", agentCfg, cfg) + agent := sidekick.NewSidekick(agentCfg, cfg.Models, nil) // 4. Run the Agent Loop ctx := context.Background() diff --git a/cmd/sidekick-mcp/main.go b/cmd/sidekick-mcp/main.go index b2568aa..fbcf233 100644 --- a/cmd/sidekick-mcp/main.go +++ b/cmd/sidekick-mcp/main.go @@ -7,7 +7,7 @@ import ( "log" "os" - "sidekick" + "sidekick/pkg/sidekick" "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" diff --git a/cmd/sidekick-tui/main.go b/cmd/sidekick-tui/main.go index 0f9ee0a..df2be0c 100644 --- a/cmd/sidekick-tui/main.go +++ b/cmd/sidekick-tui/main.go @@ -12,7 +12,7 @@ import ( tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/glamour" "github.com/charmbracelet/lipgloss" - "sidekick" + "sidekick/pkg/sidekick" ) var ( diff --git a/cmd/sidekick-tui/repro_test.go b/cmd/sidekick-tui/repro_test.go index 94e8564..c9cecee 100644 --- a/cmd/sidekick-tui/repro_test.go +++ b/cmd/sidekick-tui/repro_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/charmbracelet/glamour" - "sidekick" + "sidekick/pkg/sidekick" ) func TestRenderMessageNewlines(t *testing.T) { diff --git a/cmd/sidekick-tui/tui_test.go b/cmd/sidekick-tui/tui_test.go index 8e75480..2757a39 100644 --- a/cmd/sidekick-tui/tui_test.go +++ b/cmd/sidekick-tui/tui_test.go @@ -6,7 +6,7 @@ import ( "github.com/charmbracelet/bubbles/viewport" tea "github.com/charmbracelet/bubbletea" - "sidekick" + "sidekick/pkg/sidekick" ) // Since sidekick-tui/main.go uses global variables and is a tea.Model, diff --git a/go.mod b/go.mod index db5050a..e6fe7d7 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/BurntSushi/toml v1.6.0 github.com/charmbracelet/bubbles v1.0.0 github.com/charmbracelet/bubbletea v1.3.10 + github.com/charmbracelet/glamour v1.0.0 github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834 github.com/mark3labs/mcp-go v0.45.0 ) @@ -18,7 +19,6 @@ require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/charmbracelet/colorprofile v0.4.1 // indirect - github.com/charmbracelet/glamour v1.0.0 // indirect github.com/charmbracelet/x/ansi v0.11.6 // indirect github.com/charmbracelet/x/cellbuf v0.0.15 // indirect github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf // indirect diff --git a/go.sum b/go.sum index 5d7b5a5..7802f67 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,12 @@ github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw= github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA= +github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= +github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -24,14 +28,14 @@ github.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco github.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk= github.com/charmbracelet/glamour v1.0.0 h1:AWMLOVFHTsysl4WV8T8QgkQ0s/ZNZo7CiE4WKhk8l08= github.com/charmbracelet/glamour v1.0.0/go.mod h1:DSdohgOBkMr2ZQNhw4LZxSGpx3SvpeujNoXrQyH2hxo= -github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= -github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834 h1:ZR7e0ro+SZZiIZD7msJyA+NjkCNNavuiPBLgerbOziE= github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834/go.mod h1:aKC/t2arECF6rNOnaKaVU6y4t4ZeHQzqfxedE/VkVhA= github.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8= github.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ= github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI= github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q= +github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ= +github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf h1:rLG0Yb6MQSDKdB52aGX55JT1oi0P0Kuaj7wi1bLUpnI= github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf/go.mod h1:B3UgsnsBZS/eX42BlaNiJkD1pPOUa+oF1IYC6Yd2CEU= github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= @@ -56,6 +60,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= @@ -118,8 +124,6 @@ golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= -golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/agent.go b/pkg/sidekick/agent.go similarity index 100% rename from agent.go rename to pkg/sidekick/agent.go diff --git a/buffer.go b/pkg/sidekick/buffer.go similarity index 100% rename from buffer.go rename to pkg/sidekick/buffer.go diff --git a/config.go b/pkg/sidekick/config.go similarity index 100% rename from config.go rename to pkg/sidekick/config.go diff --git a/internal_tools.go b/pkg/sidekick/internal_tools.go similarity index 100% rename from internal_tools.go rename to pkg/sidekick/internal_tools.go diff --git a/internal_tools_test.go b/pkg/sidekick/internal_tools_test.go similarity index 100% rename from internal_tools_test.go rename to pkg/sidekick/internal_tools_test.go diff --git a/llm.go b/pkg/sidekick/llm.go similarity index 100% rename from llm.go rename to pkg/sidekick/llm.go diff --git a/log.go b/pkg/sidekick/log.go similarity index 100% rename from log.go rename to pkg/sidekick/log.go diff --git a/mcp.go b/pkg/sidekick/mcp.go similarity index 100% rename from mcp.go rename to pkg/sidekick/mcp.go diff --git a/mcp_server_test.go b/pkg/sidekick/mcp_server_test.go similarity index 100% rename from mcp_server_test.go rename to pkg/sidekick/mcp_server_test.go diff --git a/prompts.go b/pkg/sidekick/prompts.go similarity index 100% rename from prompts.go rename to pkg/sidekick/prompts.go diff --git a/prompts_test.go b/pkg/sidekick/prompts_test.go similarity index 100% rename from prompts_test.go rename to pkg/sidekick/prompts_test.go diff --git a/sidekick_test.go b/pkg/sidekick/sidekick_test.go similarity index 100% rename from sidekick_test.go rename to pkg/sidekick/sidekick_test.go diff --git a/tools.go b/pkg/sidekick/tools.go similarity index 100% rename from tools.go rename to pkg/sidekick/tools.go diff --git a/types.go b/pkg/sidekick/types.go similarity index 100% rename from types.go rename to pkg/sidekick/types.go