diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 708083e4c..c3e28dac3 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -11,7 +11,7 @@ on: branches: - "main" paths: - - "website/**" + - "aider/website/**" # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: website + working-directory: aider/website steps: - name: Checkout uses: actions/checkout@v3 @@ -43,7 +43,7 @@ jobs: ruby-version: '3.3' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems - working-directory: '${{ github.workspace }}/website' + working-directory: '${{ github.workspace }}/aider/website' - name: Setup Pages id: pages uses: actions/configure-pages@v3 @@ -56,7 +56,7 @@ jobs: # Automatically uploads an artifact from the './_site' directory by default uses: actions/upload-pages-artifact@v1 with: - path: "website/_site/" + path: "aider/website/_site/" # Deployment job deploy: diff --git a/README.md b/README.md index a682c458a..92f326d11 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ and works best with GPT-4o, Claude 3.5 Sonnet, Claude 3 Opus and DeepSeek Coder You can get started quickly like this: diff --git a/aider/args_formatter.py b/aider/args_formatter.py index cc7e3e73d..f2f1df195 100644 --- a/aider/args_formatter.py +++ b/aider/args_formatter.py @@ -96,6 +96,10 @@ class YamlHelpFormatter(argparse.HelpFormatter): # Place in your home dir, or at the root of your git repo. ########################################################## +# Note: You can only put OpenAI and Anthropic API keys in the yaml +# config file. Keys for all APIs can be stored in a .env file +# https://aider.chat/docs/config/dotenv.html + """ def _format_action(self, action): diff --git a/aider/coders/__init__.py b/aider/coders/__init__.py index 19d12b0d7..08126bae5 100644 --- a/aider/coders/__init__.py +++ b/aider/coders/__init__.py @@ -2,6 +2,7 @@ from .base_coder import Coder from .editblock_coder import EditBlockCoder from .editblock_fenced_coder import EditBlockFencedCoder from .editblock_func_coder import EditBlockFunctionCoder +from .help_coder import HelpCoder from .single_wholefile_func_coder import SingleWholeFileFunctionCoder from .udiff_coder import UnifiedDiffCoder from .wholefile_coder import WholeFileCoder @@ -16,4 +17,5 @@ __all__ = [ EditBlockFunctionCoder, SingleWholeFileFunctionCoder, UnifiedDiffCoder, + HelpCoder, ] diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index f6c8f7174..a552b4ed1 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -4,6 +4,7 @@ import hashlib import json import mimetypes import os +import platform import re import sys import threading @@ -76,11 +77,13 @@ class Coder: edit_format=None, io=None, from_coder=None, + summarize_from_coder=True, **kwargs, ): from . import ( EditBlockCoder, EditBlockFencedCoder, + HelpCoder, UnifiedDiffCoder, WholeFileCoder, ) @@ -108,7 +111,7 @@ class Coder: # confused the new LLM. It may try and imitate it, disobeying # the system prompt. done_messages = from_coder.done_messages - if edit_format != from_coder.edit_format and done_messages: + if edit_format != from_coder.edit_format and done_messages and summarize_from_coder: done_messages = from_coder.summarizer.summarize_all(done_messages) # Bring along context from the old Coder @@ -132,6 +135,8 @@ class Coder: res = WholeFileCoder(main_model, io, **kwargs) elif edit_format == "udiff": res = UnifiedDiffCoder(main_model, io, **kwargs) + elif edit_format == "help": + res = HelpCoder(main_model, io, **kwargs) else: raise ValueError(f"Unknown edit format {edit_format}") @@ -555,18 +560,16 @@ class Coder: files_reply = "Ok, any changes I propose will be to those files." elif repo_content: files_content = self.gpt_prompts.files_no_full_files_with_repo_map - files_reply = ( - "Ok, based on your requests I will suggest which files need to be edited and then" - " stop and wait for your approval." - ) + files_reply = self.gpt_prompts.files_no_full_files_with_repo_map_reply else: files_content = self.gpt_prompts.files_no_full_files files_reply = "Ok." - files_messages += [ - dict(role="user", content=files_content), - dict(role="assistant", content=files_reply), - ] + if files_content: + files_messages += [ + dict(role="user", content=files_content), + dict(role="assistant", content=files_reply), + ] images_message = self.get_images_message() if images_message is not None: @@ -730,7 +733,15 @@ class Coder: def fmt_system_prompt(self, prompt): lazy_prompt = self.gpt_prompts.lazy_prompt if self.main_model.lazy else "" - prompt = prompt.format(fence=self.fence, lazy_prompt=lazy_prompt) + platform_text = ( + f"The user's system is `{platform.platform()}` according to python platform.platform()" + ) + + prompt = prompt.format( + fence=self.fence, + lazy_prompt=lazy_prompt, + platform=platform_text, + ) return prompt def format_messages(self): @@ -739,7 +750,8 @@ class Coder: example_messages = [] if self.main_model.examples_as_sys_msg: - main_sys += "\n# Example conversations:\n\n" + if self.gpt_prompts.example_messages: + main_sys += "\n# Example conversations:\n\n" for msg in self.gpt_prompts.example_messages: role = msg["role"] content = self.fmt_system_prompt(msg["content"]) diff --git a/aider/coders/base_prompts.py b/aider/coders/base_prompts.py index 79ca13c20..c6c5f2d43 100644 --- a/aider/coders/base_prompts.py +++ b/aider/coders/base_prompts.py @@ -28,6 +28,11 @@ Only include the files that are most likely to actually need to be edited. Don't include files that might contain relevant context, just files that will need to be changed. """ # noqa: E501 + files_no_full_files_with_repo_map_reply = ( + "Ok, based on your requests I will suggest which files need to be edited and then" + " stop and wait for your approval." + ) + repo_content_prefix = """Here are summaries of some files present in my git repository. Do not propose changes to these files, treat them as *read-only*. If you need to edit any of these files, ask me to *add them to the chat* first. diff --git a/aider/coders/help_coder.py b/aider/coders/help_coder.py new file mode 100644 index 000000000..1225b7b97 --- /dev/null +++ b/aider/coders/help_coder.py @@ -0,0 +1,17 @@ +from ..dump import dump # noqa: F401 +from .base_coder import Coder +from .help_prompts import HelpPrompts + + +class HelpCoder(Coder): + edit_format = "help" + + def __init__(self, *args, **kwargs): + self.gpt_prompts = HelpPrompts() + super().__init__(*args, **kwargs) + + def get_edits(self, mode="update"): + return [] + + def apply_edits(self, edits): + pass diff --git a/aider/coders/help_prompts.py b/aider/coders/help_prompts.py new file mode 100644 index 000000000..0defbc0e4 --- /dev/null +++ b/aider/coders/help_prompts.py @@ -0,0 +1,44 @@ +# flake8: noqa: E501 + +from .base_prompts import CoderPrompts + + +class HelpPrompts(CoderPrompts): + main_system = """You are an expert on the AI coding tool called Aider. +Answer the user's questions about how to use aider. + +The user is currently chatting with you using aider, to write and edit code. + +Use the provided aider documentation *if it is relevant to the user's question*. + +Include a bulleted list of urls to the aider docs that might be relevant for the user to read. +Include *bare* urls. *Do not* make [markdown links](http://...). +For example: +- https://aider.chat/docs/usage.html +- https://aider.chat/docs/faq.html + +If you don't know the answer, say so and suggest some relevant aider doc urls. + +If asks for something that isn't possible with aider, be clear about that. +Don't suggest a solution that isn't supported. + +Be helpful but concise. + +Unless the question indicates otherwise, assume the user wants to use aider as a CLI tool. +{platform} +""" + + example_messages = [] + system_reminder = "" + + files_content_prefix = """These are some files we have been discussing that we may want to edit after you answer my questions: +""" + + files_no_full_files = "I am not sharing any files with you." + + files_no_full_files_with_repo_map = "" + files_no_full_files_with_repo_map_reply = "" + + repo_content_prefix = """Here are summaries of some files present in my git repository. +We may look at these in more detail after you answer my questions. +""" diff --git a/aider/commands.py b/aider/commands.py index b50138c2b..571b9372b 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -7,6 +7,7 @@ from pathlib import Path import git from aider import models, prompts, voice +from aider.help import Help from aider.llm import litellm from aider.scrape import Scraper from aider.utils import is_image_file @@ -32,6 +33,8 @@ class Commands: self.voice_language = voice_language + self.help = None + def cmd_model(self, args): "Switch to a new LLM" @@ -625,32 +628,73 @@ class Commands: for file in chat_files: self.io.tool_output(f" {file}") - def cmd_help(self, args): - "Show help about all commands" + def basic_help(self): commands = sorted(self.get_commands()) + pad = max(len(cmd) for cmd in commands) + pad = "{cmd:" + str(pad) + "}" for cmd in commands: cmd_method_name = f"cmd_{cmd[1:]}" cmd_method = getattr(self, cmd_method_name, None) + cmd = pad.format(cmd=cmd) if cmd_method: description = cmd_method.__doc__ self.io.tool_output(f"{cmd} {description}") else: self.io.tool_output(f"{cmd} No description available.") + self.io.tool_output() + self.io.tool_output("Use `/help ` to ask questions about how to use aider.") + + def cmd_help(self, args): + "Ask questions about aider" + + if not args.strip(): + self.basic_help() + return + + from aider.coders import Coder + + if not self.help: + self.help = Help() + + coder = Coder.create( + main_model=self.coder.main_model, + io=self.io, + from_coder=self.coder, + edit_format="help", + summarize_from_coder=False, + ) + user_msg = self.help.ask(args) + user_msg += """ +# Announcement lines from when this session of aider was launched: + +""" + user_msg += "\n".join(self.coder.get_announcements()) + "\n" + + assistant_msg = coder.run(user_msg) + + self.coder.cur_messages += [ + dict(role="user", content=user_msg), + dict(role="assistant", content=assistant_msg), + ] def get_help_md(self): "Show help about all commands in markdown" - res = "" + res = """ +|Command|Description| +|:------|:----------| +""" commands = sorted(self.get_commands()) for cmd in commands: cmd_method_name = f"cmd_{cmd[1:]}" cmd_method = getattr(self, cmd_method_name, None) if cmd_method: description = cmd_method.__doc__ - res += f"- **{cmd}** {description}\n" + res += f"| **{cmd}** | {description} |\n" else: - res += f"- **{cmd}**\n" + res += f"| **{cmd}** | |\n" + res += "\n" return res def cmd_voice(self, args): diff --git a/aider/help.py b/aider/help.py new file mode 100755 index 000000000..693ee87c5 --- /dev/null +++ b/aider/help.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python + +import os +import warnings +from pathlib import Path + +import importlib_resources + +from aider import __version__ +from aider.dump import dump # noqa: F401 +from aider.help_pats import exclude_website_pats + +warnings.simplefilter("ignore", category=FutureWarning) + + +def get_package_files(): + for path in importlib_resources.files("aider.website").iterdir(): + if path.is_file(): + yield path + elif path.is_dir(): + for subpath in path.rglob("*.md"): + yield subpath + + +def fname_to_url(filepath): + website = "website/" + index = "/index.md" + md = ".md" + + docid = "" + if filepath.startswith("website/_includes/"): + pass + elif filepath.startswith(website): + docid = filepath[len(website) :] + + if filepath.endswith(index): + filepath = filepath[: -len(index)] + "/" + elif filepath.endswith(md): + filepath = filepath[: -len(md)] + ".html" + + docid = "https://aider.chat/" + filepath + + return docid + + +def get_index(): + from llama_index.core import ( + Document, + StorageContext, + VectorStoreIndex, + load_index_from_storage, + ) + from llama_index.core.node_parser import MarkdownNodeParser + + dname = Path.home() / ".aider" / "caches" / ("help." + __version__) + + if dname.exists(): + storage_context = StorageContext.from_defaults( + persist_dir=dname, + ) + index = load_index_from_storage(storage_context) + else: + parser = MarkdownNodeParser() + + nodes = [] + for fname in get_package_files(): + fname = Path(fname) + if any(fname.match(pat) for pat in exclude_website_pats): + continue + + doc = Document( + text=importlib_resources.files("aider.website") + .joinpath(fname) + .read_text(encoding="utf-8"), + metadata=dict( + filename=fname.name, + extension=fname.suffix, + url=fname_to_url(str(fname)), + ), + ) + nodes += parser.get_nodes_from_documents([doc]) + + index = VectorStoreIndex(nodes, show_progress=True) + dname.parent.mkdir(parents=True, exist_ok=True) + index.storage_context.persist(dname) + + return index + + +class Help: + def __init__(self): + from llama_index.core import Settings + from llama_index.embeddings.huggingface import HuggingFaceEmbedding + + os.environ["TOKENIZERS_PARALLELISM"] = "true" + Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5") + + index = get_index() + + self.retriever = index.as_retriever(similarity_top_k=20) + + def ask(self, question): + nodes = self.retriever.retrieve(question) + + context = f"""# Question: {question} + +# Relevant docs: + +""" + + for node in nodes: + url = node.metadata.get("url", "") + if url: + url = f' from_url="{url}"' + + context += f"\n" + context += node.text + context += "\n\n\n" + + return context diff --git a/aider/help_pats.py b/aider/help_pats.py new file mode 100644 index 000000000..6a2c20a0b --- /dev/null +++ b/aider/help_pats.py @@ -0,0 +1,10 @@ +exclude_website_pats = [ + "examples/**", + "_posts/**", + "HISTORY.md", + "docs/benchmarks*md", + "docs/ctags.md", + "docs/unified-diffs.md", + "docs/leaderboards/index.md", + "assets/**", +] diff --git a/aider/tests/test_help.py b/aider/tests/test_help.py new file mode 100644 index 000000000..99113d61c --- /dev/null +++ b/aider/tests/test_help.py @@ -0,0 +1,31 @@ +import unittest + +from aider.help import Help + + +class TestHelp(unittest.TestCase): + def test_init(self): + help_inst = Help() + self.assertIsNotNone(help_inst.retriever) + + def test_ask_without_mock(self): + help_instance = Help() + question = "What is aider?" + result = help_instance.ask(question) + + self.assertIn(f"# Question: {question}", result) + self.assertIn("", result) + self.assertGreater(len(result), 100) # Ensure we got a substantial response + + # Check for some expected content (adjust based on your actual help content) + self.assertIn("aider", result.lower()) + self.assertIn("ai", result.lower()) + self.assertIn("chat", result.lower()) + + # Assert that there are more than 5 entries + self.assertGreater(result.count("` to ask aider about itself. +You can ask how to customize settings, troubleshoot errors +or use different LLMs. diff --git a/website/_includes/help.md b/aider/website/_includes/help.md similarity index 100% rename from website/_includes/help.md rename to aider/website/_includes/help.md diff --git a/website/_includes/model-warnings.md b/aider/website/_includes/model-warnings.md similarity index 94% rename from website/_includes/model-warnings.md rename to aider/website/_includes/model-warnings.md index aaba1f0b1..bcf483b48 100644 --- a/website/_includes/model-warnings.md +++ b/aider/website/_includes/model-warnings.md @@ -5,8 +5,6 @@ Model foobar: Unknown context window size and costs, using sane defaults. ``` -*You can probably ignore the unknown context window size and token costs warning.* - If you specify a model that aider has never heard of, you will get this warning. This means aider doesn't know the context window size and token costs @@ -18,6 +16,9 @@ See the docs on [configuring advanced model settings](/docs/config/adv-model-settings.html) for details on how to remove this warning. +{: .tip } +You can probably ignore the unknown context window size and token costs warning. + ## Did you mean? If aider isn't familiar with the model you've specified, diff --git a/website/_includes/multi-line.md b/aider/website/_includes/multi-line.md similarity index 100% rename from website/_includes/multi-line.md rename to aider/website/_includes/multi-line.md diff --git a/website/_includes/nav_footer_custom.html b/aider/website/_includes/nav_footer_custom.html similarity index 100% rename from website/_includes/nav_footer_custom.html rename to aider/website/_includes/nav_footer_custom.html diff --git a/website/_includes/special-keys.md b/aider/website/_includes/special-keys.md similarity index 100% rename from website/_includes/special-keys.md rename to aider/website/_includes/special-keys.md diff --git a/website/_layouts/redirect.html b/aider/website/_layouts/redirect.html similarity index 100% rename from website/_layouts/redirect.html rename to aider/website/_layouts/redirect.html diff --git a/website/_posts/2023-05-25-ctags.md b/aider/website/_posts/2023-05-25-ctags.md similarity index 100% rename from website/_posts/2023-05-25-ctags.md rename to aider/website/_posts/2023-05-25-ctags.md diff --git a/website/_posts/2023-07-02-benchmarks.md b/aider/website/_posts/2023-07-02-benchmarks.md similarity index 100% rename from website/_posts/2023-07-02-benchmarks.md rename to aider/website/_posts/2023-07-02-benchmarks.md diff --git a/website/_posts/2023-10-22-repomap.md b/aider/website/_posts/2023-10-22-repomap.md similarity index 100% rename from website/_posts/2023-10-22-repomap.md rename to aider/website/_posts/2023-10-22-repomap.md diff --git a/website/_posts/2023-11-06-benchmarks-1106.md b/aider/website/_posts/2023-11-06-benchmarks-1106.md similarity index 100% rename from website/_posts/2023-11-06-benchmarks-1106.md rename to aider/website/_posts/2023-11-06-benchmarks-1106.md diff --git a/website/_posts/2023-11-06-benchmarks-speed-1106.md b/aider/website/_posts/2023-11-06-benchmarks-speed-1106.md similarity index 100% rename from website/_posts/2023-11-06-benchmarks-speed-1106.md rename to aider/website/_posts/2023-11-06-benchmarks-speed-1106.md diff --git a/website/_posts/2023-12-21-unified-diffs.md b/aider/website/_posts/2023-12-21-unified-diffs.md similarity index 100% rename from website/_posts/2023-12-21-unified-diffs.md rename to aider/website/_posts/2023-12-21-unified-diffs.md diff --git a/website/_posts/2024-01-25-benchmarks-0125.md b/aider/website/_posts/2024-01-25-benchmarks-0125.md similarity index 100% rename from website/_posts/2024-01-25-benchmarks-0125.md rename to aider/website/_posts/2024-01-25-benchmarks-0125.md diff --git a/website/_posts/2024-03-08-claude-3.md b/aider/website/_posts/2024-03-08-claude-3.md similarity index 100% rename from website/_posts/2024-03-08-claude-3.md rename to aider/website/_posts/2024-03-08-claude-3.md diff --git a/website/_posts/2024-04-09-gpt-4-turbo.md b/aider/website/_posts/2024-04-09-gpt-4-turbo.md similarity index 100% rename from website/_posts/2024-04-09-gpt-4-turbo.md rename to aider/website/_posts/2024-04-09-gpt-4-turbo.md diff --git a/website/_posts/2024-05-02-browser.md b/aider/website/_posts/2024-05-02-browser.md similarity index 100% rename from website/_posts/2024-05-02-browser.md rename to aider/website/_posts/2024-05-02-browser.md diff --git a/website/_posts/2024-05-13-models-over-time.md b/aider/website/_posts/2024-05-13-models-over-time.md similarity index 100% rename from website/_posts/2024-05-13-models-over-time.md rename to aider/website/_posts/2024-05-13-models-over-time.md diff --git a/website/_posts/2024-05-22-draft.md b/aider/website/_posts/2024-05-22-draft.md similarity index 100% rename from website/_posts/2024-05-22-draft.md rename to aider/website/_posts/2024-05-22-draft.md diff --git a/website/_posts/2024-05-22-linting.md b/aider/website/_posts/2024-05-22-linting.md similarity index 100% rename from website/_posts/2024-05-22-linting.md rename to aider/website/_posts/2024-05-22-linting.md diff --git a/website/_posts/2024-05-22-swe-bench-lite.md b/aider/website/_posts/2024-05-22-swe-bench-lite.md similarity index 100% rename from website/_posts/2024-05-22-swe-bench-lite.md rename to aider/website/_posts/2024-05-22-swe-bench-lite.md diff --git a/website/_posts/2024-05-24-self-assembly.md b/aider/website/_posts/2024-05-24-self-assembly.md similarity index 100% rename from website/_posts/2024-05-24-self-assembly.md rename to aider/website/_posts/2024-05-24-self-assembly.md diff --git a/website/_posts/2024-06-02-main-swe-bench.md b/aider/website/_posts/2024-06-02-main-swe-bench.md similarity index 100% rename from website/_posts/2024-06-02-main-swe-bench.md rename to aider/website/_posts/2024-06-02-main-swe-bench.md diff --git a/website/_posts/2024-07-01-sonnet-not-lazy.md b/aider/website/_posts/2024-07-01-sonnet-not-lazy.md similarity index 100% rename from website/_posts/2024-07-01-sonnet-not-lazy.md rename to aider/website/_posts/2024-07-01-sonnet-not-lazy.md diff --git a/website/_sass/custom/custom.scss b/aider/website/_sass/custom/custom.scss similarity index 100% rename from website/_sass/custom/custom.scss rename to aider/website/_sass/custom/custom.scss diff --git a/website/assets/2024-03-07-claude-3.jpg b/aider/website/assets/2024-03-07-claude-3.jpg similarity index 100% rename from website/assets/2024-03-07-claude-3.jpg rename to aider/website/assets/2024-03-07-claude-3.jpg diff --git a/website/assets/2024-03-07-claude-3.svg b/aider/website/assets/2024-03-07-claude-3.svg similarity index 100% rename from website/assets/2024-03-07-claude-3.svg rename to aider/website/assets/2024-03-07-claude-3.svg diff --git a/website/assets/2024-04-09-gpt-4-turbo-laziness.jpg b/aider/website/assets/2024-04-09-gpt-4-turbo-laziness.jpg similarity index 100% rename from website/assets/2024-04-09-gpt-4-turbo-laziness.jpg rename to aider/website/assets/2024-04-09-gpt-4-turbo-laziness.jpg diff --git a/website/assets/2024-04-09-gpt-4-turbo-laziness.svg b/aider/website/assets/2024-04-09-gpt-4-turbo-laziness.svg similarity index 100% rename from website/assets/2024-04-09-gpt-4-turbo-laziness.svg rename to aider/website/assets/2024-04-09-gpt-4-turbo-laziness.svg diff --git a/website/assets/2024-04-09-gpt-4-turbo.jpg b/aider/website/assets/2024-04-09-gpt-4-turbo.jpg similarity index 100% rename from website/assets/2024-04-09-gpt-4-turbo.jpg rename to aider/website/assets/2024-04-09-gpt-4-turbo.jpg diff --git a/website/assets/2024-04-09-gpt-4-turbo.svg b/aider/website/assets/2024-04-09-gpt-4-turbo.svg similarity index 100% rename from website/assets/2024-04-09-gpt-4-turbo.svg rename to aider/website/assets/2024-04-09-gpt-4-turbo.svg diff --git a/website/assets/aider-browser-social.mp4 b/aider/website/assets/aider-browser-social.mp4 similarity index 100% rename from website/assets/aider-browser-social.mp4 rename to aider/website/assets/aider-browser-social.mp4 diff --git a/website/assets/aider-square.jpg b/aider/website/assets/aider-square.jpg similarity index 100% rename from website/assets/aider-square.jpg rename to aider/website/assets/aider-square.jpg diff --git a/website/assets/aider.jpg b/aider/website/assets/aider.jpg similarity index 100% rename from website/assets/aider.jpg rename to aider/website/assets/aider.jpg diff --git a/website/assets/benchmarks-0125.jpg b/aider/website/assets/benchmarks-0125.jpg similarity index 100% rename from website/assets/benchmarks-0125.jpg rename to aider/website/assets/benchmarks-0125.jpg diff --git a/website/assets/benchmarks-0125.svg b/aider/website/assets/benchmarks-0125.svg similarity index 100% rename from website/assets/benchmarks-0125.svg rename to aider/website/assets/benchmarks-0125.svg diff --git a/website/assets/benchmarks-1106.jpg b/aider/website/assets/benchmarks-1106.jpg similarity index 100% rename from website/assets/benchmarks-1106.jpg rename to aider/website/assets/benchmarks-1106.jpg diff --git a/website/assets/benchmarks-1106.svg b/aider/website/assets/benchmarks-1106.svg similarity index 100% rename from website/assets/benchmarks-1106.svg rename to aider/website/assets/benchmarks-1106.svg diff --git a/website/assets/benchmarks-speed-1106.jpg b/aider/website/assets/benchmarks-speed-1106.jpg similarity index 100% rename from website/assets/benchmarks-speed-1106.jpg rename to aider/website/assets/benchmarks-speed-1106.jpg diff --git a/website/assets/benchmarks-speed-1106.svg b/aider/website/assets/benchmarks-speed-1106.svg similarity index 100% rename from website/assets/benchmarks-speed-1106.svg rename to aider/website/assets/benchmarks-speed-1106.svg diff --git a/website/assets/benchmarks-udiff.jpg b/aider/website/assets/benchmarks-udiff.jpg similarity index 100% rename from website/assets/benchmarks-udiff.jpg rename to aider/website/assets/benchmarks-udiff.jpg diff --git a/website/assets/benchmarks-udiff.svg b/aider/website/assets/benchmarks-udiff.svg similarity index 100% rename from website/assets/benchmarks-udiff.svg rename to aider/website/assets/benchmarks-udiff.svg diff --git a/website/assets/benchmarks.jpg b/aider/website/assets/benchmarks.jpg similarity index 100% rename from website/assets/benchmarks.jpg rename to aider/website/assets/benchmarks.jpg diff --git a/website/assets/benchmarks.svg b/aider/website/assets/benchmarks.svg similarity index 100% rename from website/assets/benchmarks.svg rename to aider/website/assets/benchmarks.svg diff --git a/website/assets/browser.jpg b/aider/website/assets/browser.jpg similarity index 100% rename from website/assets/browser.jpg rename to aider/website/assets/browser.jpg diff --git a/website/assets/codespaces.jpg b/aider/website/assets/codespaces.jpg similarity index 100% rename from website/assets/codespaces.jpg rename to aider/website/assets/codespaces.jpg diff --git a/website/assets/codespaces.mp4 b/aider/website/assets/codespaces.mp4 similarity index 100% rename from website/assets/codespaces.mp4 rename to aider/website/assets/codespaces.mp4 diff --git a/website/assets/figure.png b/aider/website/assets/figure.png similarity index 100% rename from website/assets/figure.png rename to aider/website/assets/figure.png diff --git a/website/assets/icons/android-chrome-192x192.png b/aider/website/assets/icons/android-chrome-192x192.png similarity index 100% rename from website/assets/icons/android-chrome-192x192.png rename to aider/website/assets/icons/android-chrome-192x192.png diff --git a/website/assets/icons/android-chrome-384x384.png b/aider/website/assets/icons/android-chrome-384x384.png similarity index 100% rename from website/assets/icons/android-chrome-384x384.png rename to aider/website/assets/icons/android-chrome-384x384.png diff --git a/website/assets/icons/apple-touch-icon.png b/aider/website/assets/icons/apple-touch-icon.png similarity index 100% rename from website/assets/icons/apple-touch-icon.png rename to aider/website/assets/icons/apple-touch-icon.png diff --git a/website/assets/icons/browserconfig.xml b/aider/website/assets/icons/browserconfig.xml similarity index 100% rename from website/assets/icons/browserconfig.xml rename to aider/website/assets/icons/browserconfig.xml diff --git a/website/assets/icons/favicon-16x16.png b/aider/website/assets/icons/favicon-16x16.png similarity index 100% rename from website/assets/icons/favicon-16x16.png rename to aider/website/assets/icons/favicon-16x16.png diff --git a/website/assets/icons/favicon-32x32.png b/aider/website/assets/icons/favicon-32x32.png similarity index 100% rename from website/assets/icons/favicon-32x32.png rename to aider/website/assets/icons/favicon-32x32.png diff --git a/website/assets/icons/favicon.ico b/aider/website/assets/icons/favicon.ico similarity index 100% rename from website/assets/icons/favicon.ico rename to aider/website/assets/icons/favicon.ico diff --git a/website/assets/icons/mstile-150x150.png b/aider/website/assets/icons/mstile-150x150.png similarity index 100% rename from website/assets/icons/mstile-150x150.png rename to aider/website/assets/icons/mstile-150x150.png diff --git a/website/assets/icons/safari-pinned-tab.svg b/aider/website/assets/icons/safari-pinned-tab.svg similarity index 100% rename from website/assets/icons/safari-pinned-tab.svg rename to aider/website/assets/icons/safari-pinned-tab.svg diff --git a/website/assets/icons/site.webmanifest b/aider/website/assets/icons/site.webmanifest similarity index 100% rename from website/assets/icons/site.webmanifest rename to aider/website/assets/icons/site.webmanifest diff --git a/website/assets/install.jpg b/aider/website/assets/install.jpg similarity index 100% rename from website/assets/install.jpg rename to aider/website/assets/install.jpg diff --git a/website/assets/install.mp4 b/aider/website/assets/install.mp4 similarity index 100% rename from website/assets/install.mp4 rename to aider/website/assets/install.mp4 diff --git a/website/assets/leaderboard.jpg b/aider/website/assets/leaderboard.jpg similarity index 100% rename from website/assets/leaderboard.jpg rename to aider/website/assets/leaderboard.jpg diff --git a/website/assets/linting.jpg b/aider/website/assets/linting.jpg similarity index 100% rename from website/assets/linting.jpg rename to aider/website/assets/linting.jpg diff --git a/website/assets/llms.jpg b/aider/website/assets/llms.jpg similarity index 100% rename from website/assets/llms.jpg rename to aider/website/assets/llms.jpg diff --git a/website/assets/models-over-time.png b/aider/website/assets/models-over-time.png similarity index 100% rename from website/assets/models-over-time.png rename to aider/website/assets/models-over-time.png diff --git a/website/assets/models-over-time.svg b/aider/website/assets/models-over-time.svg similarity index 100% rename from website/assets/models-over-time.svg rename to aider/website/assets/models-over-time.svg diff --git a/website/assets/robot-ast.png b/aider/website/assets/robot-ast.png similarity index 100% rename from website/assets/robot-ast.png rename to aider/website/assets/robot-ast.png diff --git a/website/assets/robot-flowchart.png b/aider/website/assets/robot-flowchart.png similarity index 100% rename from website/assets/robot-flowchart.png rename to aider/website/assets/robot-flowchart.png diff --git a/website/assets/sample.aider.conf.yml b/aider/website/assets/sample.aider.conf.yml similarity index 97% rename from website/assets/sample.aider.conf.yml rename to aider/website/assets/sample.aider.conf.yml index afadcbecb..e5bc4ca95 100644 --- a/website/assets/sample.aider.conf.yml +++ b/aider/website/assets/sample.aider.conf.yml @@ -4,6 +4,10 @@ # Place in your home dir, or at the root of your git repo. ########################################################## +# Note: You can only put OpenAI and Anthropic API keys in the yaml +# config file. Keys for all APIs can be stored in a .env file +# https://aider.chat/docs/config/dotenv.html + ########## # options: diff --git a/website/assets/sample.env b/aider/website/assets/sample.env similarity index 100% rename from website/assets/sample.env rename to aider/website/assets/sample.env diff --git a/website/assets/screencast.svg b/aider/website/assets/screencast.svg similarity index 100% rename from website/assets/screencast.svg rename to aider/website/assets/screencast.svg diff --git a/website/assets/screenshot.png b/aider/website/assets/screenshot.png similarity index 100% rename from website/assets/screenshot.png rename to aider/website/assets/screenshot.png diff --git a/website/assets/self-assembly.jpg b/aider/website/assets/self-assembly.jpg similarity index 100% rename from website/assets/self-assembly.jpg rename to aider/website/assets/self-assembly.jpg diff --git a/website/assets/sonnet-not-lazy.jpg b/aider/website/assets/sonnet-not-lazy.jpg similarity index 100% rename from website/assets/sonnet-not-lazy.jpg rename to aider/website/assets/sonnet-not-lazy.jpg diff --git a/website/assets/swe_bench.jpg b/aider/website/assets/swe_bench.jpg similarity index 100% rename from website/assets/swe_bench.jpg rename to aider/website/assets/swe_bench.jpg diff --git a/website/assets/swe_bench.svg b/aider/website/assets/swe_bench.svg similarity index 100% rename from website/assets/swe_bench.svg rename to aider/website/assets/swe_bench.svg diff --git a/website/assets/swe_bench_lite.jpg b/aider/website/assets/swe_bench_lite.jpg similarity index 100% rename from website/assets/swe_bench_lite.jpg rename to aider/website/assets/swe_bench_lite.jpg diff --git a/website/assets/swe_bench_lite.svg b/aider/website/assets/swe_bench_lite.svg similarity index 100% rename from website/assets/swe_bench_lite.svg rename to aider/website/assets/swe_bench_lite.svg diff --git a/website/assets/udiffs.jpg b/aider/website/assets/udiffs.jpg similarity index 100% rename from website/assets/udiffs.jpg rename to aider/website/assets/udiffs.jpg diff --git a/website/blog/index.html b/aider/website/blog/index.html similarity index 100% rename from website/blog/index.html rename to aider/website/blog/index.html diff --git a/website/docs/benchmarks-0125.md b/aider/website/docs/benchmarks-0125.md similarity index 100% rename from website/docs/benchmarks-0125.md rename to aider/website/docs/benchmarks-0125.md diff --git a/website/docs/benchmarks-1106.md b/aider/website/docs/benchmarks-1106.md similarity index 100% rename from website/docs/benchmarks-1106.md rename to aider/website/docs/benchmarks-1106.md diff --git a/website/docs/benchmarks-speed-1106.md b/aider/website/docs/benchmarks-speed-1106.md similarity index 100% rename from website/docs/benchmarks-speed-1106.md rename to aider/website/docs/benchmarks-speed-1106.md diff --git a/website/docs/benchmarks.md b/aider/website/docs/benchmarks.md similarity index 100% rename from website/docs/benchmarks.md rename to aider/website/docs/benchmarks.md diff --git a/website/docs/browser.md b/aider/website/docs/browser.md similarity index 100% rename from website/docs/browser.md rename to aider/website/docs/browser.md diff --git a/website/docs/commands.md b/aider/website/docs/commands.md similarity index 59% rename from website/docs/commands.md rename to aider/website/docs/commands.md index b74f720fa..3196a4f76 100644 --- a/website/docs/commands.md +++ b/aider/website/docs/commands.md @@ -11,25 +11,29 @@ Aider supports commands from within the chat, which all start with `/`. from aider.commands import get_help_md cog.out(get_help_md()) ]]]--> -- **/add** Add files to the chat so GPT can edit them or review them in detail -- **/clear** Clear the chat history -- **/commit** Commit edits to the repo made outside the chat (commit message optional) -- **/diff** Display the diff of the last aider commit -- **/drop** Remove files from the chat session to free up context space -- **/exit** Exit the application -- **/git** Run a git command -- **/help** Show help about all commands -- **/lint** Lint and fix provided files or in-chat files if none provided -- **/ls** List all known files and indicate which are included in the chat session -- **/model** Switch to a new LLM -- **/models** Search the list of available models -- **/quit** Exit the application -- **/run** Run a shell command and optionally add the output to the chat (alias: !) -- **/test** Run a shell command and add the output to the chat on non-zero exit code -- **/tokens** Report on the number of tokens used by the current chat context -- **/undo** Undo the last git commit if it was done by aider -- **/voice** Record and transcribe voice input -- **/web** Use headless selenium to scrape a webpage and add the content to the chat + +|Command|Description| +|:------|:----------| +| **/add** | Add files to the chat so GPT can edit them or review them in detail | +| **/clear** | Clear the chat history | +| **/commit** | Commit edits to the repo made outside the chat (commit message optional) | +| **/diff** | Display the diff of the last aider commit | +| **/drop** | Remove files from the chat session to free up context space | +| **/exit** | Exit the application | +| **/git** | Run a git command | +| **/help** | Ask questions about aider | +| **/lint** | Lint and fix provided files or in-chat files if none provided | +| **/ls** | List all known files and indicate which are included in the chat session | +| **/model** | Switch to a new LLM | +| **/models** | Search the list of available models | +| **/quit** | Exit the application | +| **/run** | Run a shell command and optionally add the output to the chat (alias: !) | +| **/test** | Run a shell command and add the output to the chat on non-zero exit code | +| **/tokens** | Report on the number of tokens used by the current chat context | +| **/undo** | Undo the last git commit if it was done by aider | +| **/voice** | Record and transcribe voice input | +| **/web** | Use headless selenium to scrape a webpage and add the content to the chat | + # Entering multi-line chat messages diff --git a/website/docs/config.md b/aider/website/docs/config.md similarity index 95% rename from website/docs/config.md rename to aider/website/docs/config.md index 1aeb6e975..40087c936 100644 --- a/website/docs/config.md +++ b/aider/website/docs/config.md @@ -39,3 +39,6 @@ Using an `.env` file: ``` AIDER_DARK_MODE=true ``` + +{% include env-keys-tip.md %} + diff --git a/website/docs/config/adv-model-settings.md b/aider/website/docs/config/adv-model-settings.md similarity index 100% rename from website/docs/config/adv-model-settings.md rename to aider/website/docs/config/adv-model-settings.md diff --git a/website/docs/config/aider_conf.md b/aider/website/docs/config/aider_conf.md similarity index 95% rename from website/docs/config/aider_conf.md rename to aider/website/docs/config/aider_conf.md index a3c2bd48b..6a6799ab8 100644 --- a/website/docs/config/aider_conf.md +++ b/aider/website/docs/config/aider_conf.md @@ -14,13 +14,15 @@ your git repo. Below is a sample of the file, which you can also -[download from GitHub](https://github.com/paul-gauthier/aider/blob/main/website/assets/sample.aider.conf.yml). +[download from GitHub](https://github.com/paul-gauthier/aider/blob/main/aider/website/assets/sample.aider.conf.yml). + +{% include env-keys-tip.md %} You can get started quickly like this: diff --git a/website/share/index.md b/aider/website/share/index.md similarity index 100% rename from website/share/index.md rename to aider/website/share/index.md diff --git a/dev-requirements.in b/dev-requirements.in index 48dfe58c0..ded94b556 100644 --- a/dev-requirements.in +++ b/dev-requirements.in @@ -1,3 +1,4 @@ +-c requirements.txt # # pip-compile --output-file=dev-requirements.txt dev-requirements.in --upgrade # diff --git a/dev-requirements.txt b/dev-requirements.txt index 3c679cc6a..9e014122a 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -10,14 +10,19 @@ babel==2.15.0 # via sphinx build==1.2.1 # via pip-tools -certifi==2024.6.2 - # via requests +certifi==2024.7.4 + # via + # -c requirements.txt + # requests cfgv==3.4.0 # via pre-commit charset-normalizer==3.3.2 - # via requests + # via + # -c requirements.txt + # requests click==8.1.7 # via + # -c requirements.txt # pip-tools # typer cogapp==3.4.1 @@ -37,13 +42,17 @@ docutils==0.20.1 # sphinx # sphinx-rtd-theme filelock==3.15.4 - # via virtualenv + # via + # -c requirements.txt + # virtualenv fonttools==4.53.0 # via matplotlib identify==2.5.36 # via pre-commit idna==3.7 - # via requests + # via + # -c requirements.txt + # requests imagesize==1.4.1 # via sphinx imgcat==0.5.0 @@ -51,40 +60,54 @@ imgcat==0.5.0 iniconfig==2.0.0 # via pytest jinja2==3.1.4 - # via sphinx + # via + # -c requirements.txt + # sphinx kiwisolver==1.4.5 # via matplotlib lox==0.12.0 # via -r dev-requirements.in markdown-it-py==3.0.0 - # via rich + # via + # -c requirements.txt + # rich markupsafe==2.1.5 - # via jinja2 -matplotlib==3.9.0 + # via + # -c requirements.txt + # jinja2 +matplotlib==3.9.1 # via -r dev-requirements.in mdurl==0.1.2 - # via markdown-it-py + # via + # -c requirements.txt + # markdown-it-py multiprocess==0.70.16 # via pathos nodeenv==1.9.1 # via pre-commit -numpy==2.0.0 +numpy==1.26.4 # via + # -c requirements.txt # contourpy # matplotlib # pandas packaging==24.1 # via + # -c requirements.txt # build # matplotlib # pytest # sphinx pandas==2.2.2 - # via -r dev-requirements.in + # via + # -c requirements.txt + # -r dev-requirements.in pathos==0.3.2 # via lox -pillow==10.3.0 - # via matplotlib +pillow==10.4.0 + # via + # -c requirements.txt + # matplotlib pip-tools==7.4.1 # via -r dev-requirements.in platformdirs==4.2.2 @@ -99,10 +122,13 @@ pre-commit==3.7.1 # via -r dev-requirements.in pygments==2.18.0 # via + # -c requirements.txt # rich # sphinx pyparsing==3.1.2 - # via matplotlib + # via + # -c requirements.txt + # matplotlib pyproject-hooks==1.1.0 # via # build @@ -111,20 +137,31 @@ pytest==8.2.2 # via -r dev-requirements.in python-dateutil==2.9.0.post0 # via + # -c requirements.txt # matplotlib # pandas pytz==2024.1 - # via pandas + # via + # -c requirements.txt + # pandas pyyaml==6.0.1 - # via pre-commit + # via + # -c requirements.txt + # pre-commit requests==2.32.3 - # via sphinx + # via + # -c requirements.txt + # sphinx rich==13.7.1 - # via typer + # via + # -c requirements.txt + # typer shellingham==1.5.4 # via typer six==1.16.0 - # via python-dateutil + # via + # -c requirements.txt + # python-dateutil snowballstemmer==2.2.0 # via sphinx sphinx==7.3.7 @@ -150,11 +187,17 @@ sphinxcontrib-serializinghtml==1.1.10 typer==0.12.3 # via -r dev-requirements.in typing-extensions==4.12.2 - # via typer + # via + # -c requirements.txt + # typer tzdata==2024.1 - # via pandas + # via + # -c requirements.txt + # pandas urllib3==2.2.2 - # via requests + # via + # -c requirements.txt + # requests virtualenv==20.26.3 # via pre-commit wheel==0.43.0 diff --git a/requirements.in b/requirements.in index 72b929e84..92912c60d 100644 --- a/requirements.in +++ b/requirements.in @@ -27,6 +27,9 @@ google-generativeai streamlit watchdog flake8 +llama-index-core +llama-index-embeddings-huggingface +importlib_resources # v3.3 no longer works on python 3.9 networkx<3.3 @@ -40,4 +43,4 @@ scipy<1.14 # GitHub Release action failing on "KeyError: 'home-page'" # https://github.com/pypa/twine/blob/6fbf880ee60915cf1666348c4bdd78a10415f2ac/twine/__init__.py#L40 # Uses importlib-metadata -importlib-metadata<8.0.0 \ No newline at end of file +importlib-metadata<8.0.0 diff --git a/requirements.txt b/requirements.txt index 321dd1ae0..b275cb61c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,10 @@ # pip-compile requirements.in # aiohttp==3.9.5 - # via litellm + # via + # huggingface-hub + # litellm + # llama-index-core aiosignal==1.3.1 # via aiohttp altair==5.3.0 @@ -31,7 +34,7 @@ cachetools==5.3.3 # via # google-auth # streamlit -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -45,17 +48,27 @@ charset-normalizer==3.3.2 click==8.1.7 # via # litellm + # nltk # streamlit configargparse==1.7 # via -r requirements.in +dataclasses-json==0.6.7 + # via llama-index-core +deprecated==1.2.14 + # via llama-index-core diff-match-patch==20230430 # via -r requirements.in +dirtyjson==1.0.8 + # via llama-index-core diskcache==5.6.3 # via -r requirements.in distro==1.9.0 # via openai filelock==3.15.4 - # via huggingface-hub + # via + # huggingface-hub + # torch + # transformers flake8==7.1.0 # via -r requirements.in frozenlist==1.4.1 @@ -63,7 +76,10 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2024.6.1 - # via huggingface-hub + # via + # huggingface-hub + # llama-index-core + # torch gitdb==4.0.11 # via gitpython gitpython==3.1.43 @@ -77,9 +93,9 @@ google-api-core[grpc]==2.19.1 # google-ai-generativelanguage # google-api-python-client # google-generativeai -google-api-python-client==2.135.0 +google-api-python-client==2.136.0 # via google-generativeai -google-auth==2.30.0 +google-auth==2.31.0 # via # google-ai-generativelanguage # google-api-core @@ -95,7 +111,9 @@ googleapis-common-protos==1.63.2 # google-api-core # grpcio-status greenlet==3.0.3 - # via playwright + # via + # playwright + # sqlalchemy grep-ast==0.3.2 # via -r requirements.in grpcio==1.64.1 @@ -113,80 +131,126 @@ httplib2==0.22.0 # google-api-python-client # google-auth-httplib2 httpx==0.27.0 - # via openai -huggingface-hub==0.23.4 - # via tokenizers + # via + # llama-cloud + # llama-index-core + # openai +huggingface-hub[inference]==0.23.4 + # via + # llama-index-embeddings-huggingface + # sentence-transformers + # tokenizers + # transformers idna==3.7 # via # anyio # httpx # requests # yarl -ijson==3.3.0 - # via litellm importlib-metadata==7.2.1 # via # -r requirements.in # litellm +importlib-resources==6.4.0 + # via -r requirements.in jinja2==3.1.4 # via # altair # litellm # pydeck + # torch +joblib==1.4.2 + # via + # nltk + # scikit-learn jsonschema==4.22.0 # via # -r requirements.in # altair + # litellm jsonschema-specifications==2023.12.1 # via jsonschema -litellm==1.41.0 +litellm==1.41.6 + # via -r requirements.in +llama-cloud==0.0.6 + # via llama-index-core +llama-index-core==0.10.52.post2 + # via + # -r requirements.in + # llama-index-embeddings-huggingface +llama-index-embeddings-huggingface==0.2.2 # via -r requirements.in markdown-it-py==3.0.0 # via rich markupsafe==2.1.5 # via jinja2 +marshmallow==3.21.3 + # via dataclasses-json mccabe==0.7.0 # via flake8 mdurl==0.1.2 # via markdown-it-py +minijinja==2.0.1 + # via huggingface-hub +mpmath==1.3.0 + # via sympy multidict==6.0.5 # via # aiohttp # yarl +mypy-extensions==1.0.0 + # via typing-inspect +nest-asyncio==1.6.0 + # via llama-index-core networkx==3.2.1 - # via -r requirements.in -numpy==2.0.0 + # via + # -r requirements.in + # llama-index-core + # torch +nltk==3.8.1 + # via llama-index-core +numpy==1.26.4 # via # -r requirements.in # altair + # llama-index-core # pandas # pyarrow # pydeck + # scikit-learn # scipy + # sentence-transformers # streamlit -openai==1.35.7 + # transformers +openai==1.35.10 # via # -r requirements.in # litellm + # llama-index-core packaging==24.1 # via # -r requirements.in # altair # huggingface-hub + # marshmallow # streamlit + # transformers pandas==2.2.2 # via # altair + # llama-index-core # streamlit pathspec==0.12.1 # via # -r requirements.in # grep-ast -pillow==10.3.0 +pillow==10.4.0 # via # -r requirements.in + # llama-index-core + # sentence-transformers # streamlit -playwright==1.44.0 +playwright==1.45.0 # via -r requirements.in prompt-toolkit==3.0.47 # via -r requirements.in @@ -215,12 +279,13 @@ pycodestyle==2.12.0 # via flake8 pycparser==2.22 # via cffi -pydantic==2.7.4 +pydantic==2.8.2 # via # google-generativeai # litellm + # llama-cloud # openai -pydantic-core==2.18.4 +pydantic-core==2.20.1 # via pydantic pydeck==0.9.1 # via streamlit @@ -244,19 +309,26 @@ pyyaml==6.0.1 # via # -r requirements.in # huggingface-hub + # llama-index-core + # transformers referencing==0.35.1 # via # jsonschema # jsonschema-specifications regex==2024.5.15 - # via tiktoken + # via + # nltk + # tiktoken + # transformers requests==2.32.3 # via # google-api-core # huggingface-hub # litellm + # llama-index-core # streamlit # tiktoken + # transformers rich==13.7.1 # via # -r requirements.in @@ -267,8 +339,17 @@ rpds-py==0.18.1 # referencing rsa==4.9 # via google-auth +safetensors==0.4.3 + # via transformers +scikit-learn==1.5.1 + # via sentence-transformers scipy==1.13.1 - # via -r requirements.in + # via + # -r requirements.in + # scikit-learn + # sentence-transformers +sentence-transformers==3.0.1 + # via llama-index-embeddings-huggingface six==1.16.0 # via python-dateutil smmap==5.0.1 @@ -284,27 +365,48 @@ soundfile==0.12.1 # via -r requirements.in soupsieve==2.5 # via beautifulsoup4 +sqlalchemy[asyncio]==2.0.31 + # via + # llama-index-core + # sqlalchemy streamlit==1.36.0 # via -r requirements.in +sympy==1.12.1 + # via torch tenacity==8.4.2 - # via streamlit + # via + # llama-index-core + # streamlit +threadpoolctl==3.5.0 + # via scikit-learn tiktoken==0.7.0 # via # -r requirements.in # litellm + # llama-index-core tokenizers==0.19.1 - # via litellm + # via + # litellm + # transformers toml==0.10.2 # via streamlit toolz==0.12.1 # via altair +torch==2.2.2 + # via sentence-transformers tornado==6.4.1 # via streamlit tqdm==4.66.4 # via # google-generativeai # huggingface-hub + # llama-index-core + # nltk # openai + # sentence-transformers + # transformers +transformers==4.42.3 + # via sentence-transformers tree-sitter==0.21.3 # via # -r requirements.in @@ -315,11 +417,19 @@ typing-extensions==4.12.2 # via # google-generativeai # huggingface-hub + # llama-index-core # openai # pydantic # pydantic-core # pyee + # sqlalchemy # streamlit + # torch + # typing-inspect +typing-inspect==0.9.0 + # via + # dataclasses-json + # llama-index-core tzdata==2024.1 # via pandas uritemplate==4.1.1 @@ -330,6 +440,10 @@ watchdog==4.0.1 # via -r requirements.in wcwidth==0.2.13 # via prompt-toolkit +wrapt==1.16.0 + # via + # deprecated + # llama-index-core yarl==1.9.4 # via aiohttp zipp==3.19.2 diff --git a/scripts/jekyll_run.sh b/scripts/jekyll_run.sh index a2ea847d5..97aa071ff 100755 --- a/scripts/jekyll_run.sh +++ b/scripts/jekyll_run.sh @@ -3,7 +3,7 @@ # Run the Docker container docker run \ --rm \ - -v "$PWD/website:/site" \ + -v "$PWD/aider/website:/site" \ -p 4000:4000 \ -e HISTFILE=/site/.bash_history \ -it \ diff --git a/scripts/update-docs.sh b/scripts/update-docs.sh index feb5d7f43..20a7304b3 100755 --- a/scripts/update-docs.sh +++ b/scripts/update-docs.sh @@ -12,10 +12,10 @@ fi # README.md before index.md, because index.md uses cog to include README.md cog $ARG \ README.md \ - website/index.md \ - website/HISTORY.md \ - website/docs/commands.md \ - website/docs/languages.md \ - website/docs/config/dotenv.md \ - website/docs/config/options.md \ - website/docs/config/aider_conf.md + aider/website/index.md \ + aider/website/HISTORY.md \ + aider/website/docs/commands.md \ + aider/website/docs/languages.md \ + aider/website/docs/config/dotenv.md \ + aider/website/docs/config/options.md \ + aider/website/docs/config/aider_conf.md diff --git a/setup.py b/setup.py index d31d87a77..60dfc95b4 100644 --- a/setup.py +++ b/setup.py @@ -6,20 +6,27 @@ with open("requirements.txt") as f: requirements = f.read().splitlines() from aider import __version__ +from aider.help_pats import exclude_website_pats with open("README.md", "r", encoding="utf-8") as f: long_description = f.read() long_description = re.sub(r"\n!\[.*\]\(.*\)", "", long_description) # long_description = re.sub(r"\n- \[.*\]\(.*\)", "", long_description) +# Debug: Print discovered packages +packages = find_packages(exclude=["benchmark"]) + ["aider.website"] +print("Discovered packages:", packages) + setup( name="aider-chat", version=__version__, - packages=find_packages(), + packages=packages, include_package_data=True, package_data={ - "aider": ["queries/*"], + "aider": ["queries/*.scm"], + "aider.website": ["**/*.md"], }, + exclude_package_data={"aider.website": exclude_website_pats}, install_requires=requirements, python_requires=">=3.9,<3.13", entry_points={