Skip to content
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.

v0.1.0

Latest
Compare
Choose a tag to compare
@frgfm frgfm released this 15 May 12:10
· 18 commits to main since this release
efbadf8

This first release adds a full fledged API for coding assistants while curating team insights, built on top of FastAPI, Ollama, Gradio & Mintlify.

Note: Companion 0.1.0 requires a NVIDIA GPU with 6Gb of VRAM to run it.

Highlights

Local & private code chat

Using your LLM running locally thanks to Ollama 🦙, you can get your coding companion in a chat interface 🦆

Code chat demo

Back-end API

REST API for guideline curation and coding assistant powered by LLM:

API Swagger screenshot

You can use the cloud version in a very similar fashion:

curl --request POST \
  --url https://api.quackai.com/api/v1/code/chat \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "messages": [
    {
      "role": "user",
      "content": "<string>"
    }
  ]
}'

Developer community

Whether you're a user of the Cloud version or a developer, you can check our documentation.

Quack Companion documentation

Also, you can join our Discord to get in touch 🦆

What's Changed

Breaking Changes 🛠

  • refactor: Moved guideline fetching and updated scope requirements by @frgfm in #6
  • refactor: Turns the "removed_at" column of repos into a boolean "is_active" column by @frgfm in #29
  • feat(code): switch fully to ollama as LLM provider by @frgfm in #101
  • refactor(models): simplify data model by @frgfm in #107
  • fix(migrations): clean the alembic migrations & scratch revisions by @frgfm in #145

New Features ✨

  • feat: Adds FastAPI to handle tables users, repos and guidelines by @frgfm in #2
  • feat: Adds a route to update the guideline order of a given repo by @frgfm in #3
  • feat: Adds GitHub code & token request routes by @frgfm in #4
  • feat: Adds product analytics PostHog by @frgfm in #5
  • ci: Adds docker build & push by @frgfm in #14
  • test: Adds basic test suite for the project by @frgfm in #16
  • ci: Adds CI job to autodeploy docker by @frgfm in #17
  • test: Adds test suite for first endpoints by @frgfm in #19
  • feat: Adds compute route using OpenAI API by @frgfm in #21
  • feat: Updates route permissions & telemetry by @frgfm in #22
  • test: Adds unittests for all routes but compute by @frgfm in #26
  • feat: Updates OpenAI interactions and adds tests by @frgfm in #28
  • ci: Adds check of deployment by @frgfm in #30
  • feat: Adds route for repo waitlist by @frgfm in #34
  • feat: Adds guideline extraction & validation routes by @frgfm in #35
  • feat: Adds docker & client for Ollama (preview) by @frgfm in #42
  • feat: Adds proper APM using Prometheus and Grafana by @frgfm in #52
  • ci: Adds dependabot update configuration by @frgfm in #56
  • ci(github): add jobs to verify PR labels and title by @frgfm in #74
  • feat(code): add multi-turn chat capabilities by @frgfm in #103
  • feat(login): add token validation route by @frgfm in #115
  • feat(code): embed guidelines in the code chat by @frgfm in #122
  • feat(demo): add a Gradio demo for the code chat by @frgfm in #124
  • ci(github): add package publish to ghcr by @frgfm in #135
  • docs(mintlify): move the documentation to the companion repo by @frgfm in #141
  • feat(demo): add analytics to Gradio demo by @frgfm in #144
  • feat(auth): add Supabase auth utils & clean JWT by @frgfm in #154
  • feat(llm): enable the choice of LLM provider by @frgfm in #157
  • feat(llm): add alternative support of OpenAI API by @frgfm in #163

Bug Fixes 🐛

  • ci(github): pin the ssh action version by @frgfm in #76
  • fix(login): revert provider user ID format by @frgfm in #112
  • fix(dependencies): handle cases where the token isn't JWT compliant by @frgfm in #123
  • fix(docker): fix the position of the traefik service in the prod docker compose by @frgfm in #142

Dependencies

  • build(deps-dev): Bump gitpython from 3.1.32 to 3.1.34 by @dependabot in #7
  • build(deps-dev): Bump gitpython from 3.1.34 to 3.1.35 by @dependabot in #8
  • build(deps): Bump urllib3 from 2.0.4 to 2.0.6 by @dependabot in #10
  • build(deps): Bump urllib3 from 2.0.6 to 2.0.7 by @dependabot in #12
  • ci: Bumps poetry from 1.6.1 to 1.7.1 by @frgfm in #68
  • ci: Updates dependabot frequency by @frgfm in #69
  • build(deps): Bump the gh-actions group with 6 updates by @dependabot in #57
  • build(deps-dev): Bump pytest from 7.4.3 to 8.0.0 by @dependabot in #64
  • build(deps-dev): bump ruff from 0.1.9 to 0.1.14 by @dependabot in #60
  • build(deps-dev): bump pytest-asyncio from 0.21.1 to 0.23.4 by @dependabot in #75
  • build(deps-dev): bump pre-commit from 2.21.0 to 3.6.0 by @dependabot in #80
  • build(deps-dev): bump ruff from 0.1.14 to 0.2.0 by @dependabot in #85
  • build(deps-dev): bump ruff to 0.2.2 by @frgfm in #91
  • build(deps): bump fastapi to 0.110.0 by @frgfm in #108
  • build(deps): bump sqlmodel to 0.0.16 by @frgfm in #109
  • build(deps): bump pydantic to 2.6.2 by @frgfm in #110
  • build(deps-dev): bump ruff from 0.2.2 to 0.3.0 by @dependabot in #111
  • build(deps-dev): bump mypy from 1.8.0 to 1.9.0 by @dependabot in #118
  • build(deps-dev): bump ruff from 0.3.0 to 0.3.2 by @dependabot in #119
  • build(deps): bump the gh-actions group with 1 update by @dependabot in #87
  • build(deps-dev): bump pytest from 7.4.4 to 8.0.1 by @dependabot in #92
  • build(deps-dev): bump ruff from 0.3.2 to 0.3.3 by @dependabot in #131
  • build(deps-dev): bump ruff from 0.3.3 to 0.3.4 by @dependabot in #133
  • build(deps-dev): bump ruff from 0.3.4 to 0.3.5 by @dependabot in #147
  • build(deps): bump idna & pillow to address security issues by @dependabot in #149
  • build(deps-dev): bump ruff from 0.3.5 to 0.3.7 by @dependabot in #150
  • build(deps-dev): bump ruff from 0.3.7 to 0.4.0 by @dependabot in #151
  • build(deps-dev): bump ruff from 0.4.0 to 0.4.1 by @dependabot in #152
  • build(deps-dev): bump mypy from 1.9.0 to 1.10.0 by @dependabot in #153
  • build(deps-dev): bump ruff from 0.4.1 to 0.4.4 by @dependabot in #160
  • build(deps-dev): bump tqdm from 4.66.2 to 4.66.3 in the pip group by @dependabot in #158
  • build(deps): bump ollama to 0.1.38 by @frgfm in #164

Documentation 📖

  • docs: Adds aGPLv3 license by @frgfm in #1
  • style: Removes bandit & black to switch to ruff by @frgfm in #13
  • refactor: Refactors analytics into telemetry module by @frgfm in #20
  • feat: Adds a safeguard check of permissions for modifications of repos/guidelines by @frgfm in #31
  • refactor: Cleans en vars and setup instructions by @frgfm in #36
  • docs: Updates license to Apache 2 & improves documentation by @frgfm in #38
  • docs: Adds CODEOWNERS and Security policy by @frgfm in #40
  • docs: Updates README hyperlinks by @frgfm in #43
  • [ImgBot] Optimize images by @imgbot in #46
  • docs: Adds link to docs in the README by @frgfm in #47
  • docs: Updates the copyright year by @frgfm in #55
  • docs: Adds FOSSA badge for license scan by @frgfm in #54
  • refactor(docker): move docker utils to a single folder by @frgfm in #121
  • [ImgBot] Optimize images by @imgbot in #127
  • refactor(docker): clean docker orchestration for easier setup by @frgfm in #126
  • feat(scripts): clean LLM latency benchmark by @frgfm in #132
  • docs(benchmark): add throughput evaluation for NVIDIA L4 GPUs by @frgfm in #138
  • refactor: rename project to companion & update references by @frgfm in #140
  • build(docker): bump ollama to 0.1.32 by @frgfm in #156

Improvements

  • chore: Bumps ruff version & fixes typing by @frgfm in #9
  • style: Bumps ruff to 0.1.3 by @frgfm in #18
  • feat: Improves the compute routes for code analysis by @frgfm in #23
  • ci: Removes dangling images by @frgfm in #24
  • refactor: Refactors GitHub interactions & adds unit tests by @frgfm in #27
  • refactor: Refactors user creation & corresponding telemetry by @frgfm in #32
  • feat: Adds permission check shortcut using repo.installed_by by @frgfm in #33
  • style: Bumps ruff to 0.1.7 by @frgfm in #37
  • chore: Updates poetry dependency sync w/ CI by @frgfm in #39
  • feat: Improves guideline extraction pipeline by @frgfm in #41
  • refactor: Removes email from telemetry since we don't use it by @frgfm in #44
  • fix: Fixes Slack notification formatting by @frgfm in #49
  • style: Bumps ruff to 0.1.9 and mypy to 1.8.0 by @frgfm in #51
  • perf(openai): update model versions for GPTs by @frgfm in #86
  • build(deps): remove multipart by @frgfm in #104
  • feat(guideline): enable non-admin users to fetch their own guidelines by @frgfm in #113
  • build(uv): replaces pip with uv by @frgfm in #116
  • refactor(scripts): improve Ollama performance evaluation by @frgfm in #139
  • feat(router): make the router immune to missing trailing slashes by @frgfm in #148
  • build(deps): speed up uvicorn by using uvloop & httptools by @frgfm in #162

Other changes

  • fix: Fixes CI job to push docker by @frgfm in #15
  • fix: Fixes the route input schemas by @frgfm in #25
  • fix: Fixes schema validation of guideline extraction pipeline by @frgfm in #45
  • fix: Fixed license mention in pyproject by @frgfm in #48
  • fix: Fixes thread sorting for review comments by @frgfm in #50
  • ci(dependabot): fix dependabot config by @frgfm in #96
  • ci(dependabot): update the frequency & filter of dependabot by @frgfm in #102
  • build(deps): replace python-jose with pyjwt by @frgfm in #105
  • build(deps): remove bcrypt & sqlalchemy direct deps by @frgfm in #106
  • style(ruff): bump ruff to 0.3.0 in precommit by @frgfm in #114
  • build(docker): bump ollama to 0.1.29 by @frgfm in #120
  • ci(github): fix workflow config for deploy by @frgfm in #136
  • ci(github): fix dockerhub auth by @frgfm in #137
  • ci(github): fix migration & deploy jobs by @frgfm in #143
  • fix(docker): moved auth view of gradio to prod by @frgfm in #146

New Contributors

Full Changelog: https://github.com/quack-ai/companion/commits/v0.1.0