Commit graph

2297 commits

Author SHA1 Message Date
Paul Gauthier
a07492b90a moved --vim to Other Settings 2024-06-12 11:30:26 -07:00
Nicolas Perez
abeb9f4d84 fix: enable_playwright url had a typo 2024-06-12 02:32:50 -04:00
Krazer
486c5ce65c add support to load/override model settings 2024-06-11 17:15:48 -05:00
Paul Gauthier
6216a273fe drop context at the caller 2024-06-11 13:33:46 -07:00
Paul Gauthier
fb3cc98da5 cleanup --model-metadata-file 2024-06-11 13:30:35 -07:00
paul-gauthier
2f6e360188
Merge pull request #666 from caseymcc/register_model
Allow models to be registered with litellm
2024-06-11 13:20:02 -07:00
Paul Gauthier
ba1ae76fc0 Merge remote-tracking branch 'origin/main' 2024-06-11 13:19:11 -07:00
Paul Gauthier
20f730a673 stop including chat conversation in commits 2024-06-11 13:19:02 -07:00
Krazer
568d72ebe8 update docs 2024-06-11 14:09:45 -05:00
Krazer
58965a9cff minor output change 2024-06-11 13:48:50 -05:00
paul-gauthier
9382fa1091
Merge pull request #629 from youknow04/main 2024-06-11 11:44:04 -07:00
Krazer
a1b5f98d02 remove print 2024-06-11 13:41:29 -05:00
Krazer
a090de6a00 add change requests 2024-06-11 13:39:55 -05:00
Krazer
f3b5eae778 remove duplicates 2024-06-11 13:30:18 -05:00
Krazer
d819d52f82 add current directory 2024-06-11 13:18:43 -05:00
Krazer
acccbb1512 update command line arg 2024-06-11 13:14:22 -05:00
Krazer
d91707f73e all models to be registered with litellm 2024-06-11 13:07:19 -05:00
Paul Gauthier
dece830cb8 wait up to 5sec 2024-06-11 06:37:41 -07:00
Paul Gauthier
4ebc35e038 aider: Set a maximum timeout of 5 seconds for page.goto in the scrape_with_playwright method.
# Aider chat conversation:

USER: set a max timeout of 5sec for page.goto

ASSISTANT: To set a maximum timeout of 5 seconds for `page.goto`, we need to modify the `scrape_with_playwright` method in `aider/scrape.py`.

Here is the *SEARCH/REPLACE* block:

aider/scrape.py
```python
<<<<<<< SEARCH
            page.goto(url, wait_until="networkidle")
=======
            page.goto(url, wait_until="networkidle", timeout=5000)
>>>>>>> REPLACE
```
2024-06-11 06:36:35 -07:00
Paul Gauthier
337891e739 aider: Modified scrape_with_playwright method to wait for network to be idle before extracting content.
# Aider chat conversation:

USER: with playwright enabled, i get: You need to enable JavaScript to run this app.

ASSISTANT: To address the issue of JavaScript not being enabled, we need to ensure that Playwright is properly executing JavaScript on the page. This can be done by waiting for the page to load completely and ensuring that JavaScript is executed.

We will modify the `scrape_with_playwright` method to wait for the network to be idle and ensure that the page is fully loaded before extracting the content.

Here are the changes:

aider/scrape.py
```python
<<<<<<< SEARCH
            page.goto(url)
=======
            page.goto(url, wait_until="networkidle")
>>>>>>> REPLACE
```

This change will ensure that Playwright waits for the network to be idle, which typically means that all JavaScript has been executed and the page is fully loaded.
2024-06-11 06:35:00 -07:00
Paul Gauthier
a17b81236c Add content dumping functionality to the Scraper class. 2024-06-11 06:34:58 -07:00
Paul Gauthier
05a74d67de finished --vim 2024-06-10 21:16:33 -07:00
Paul Gauthier
eddf31b38f Fix duplicate import and remove redundant code for setting editing mode in main function. 2024-06-10 21:11:29 -07:00
Paul Gauthier
b30077daee Add support for different editing modes in the main function. 2024-06-10 21:10:10 -07:00
Paul Gauthier
e63cc92cb9 Set editing mode based on user input before initializing InputOutput. 2024-06-10 21:10:04 -07:00
Paul Gauthier
196c1314eb Add support for VI editing mode in the terminal. 2024-06-10 21:09:46 -07:00
Paul Gauthier
eae9a1e065 aider: Add editingmode argument to InputOutput class for EditingMode.VI and EditingMode.EMACS.
# Aider chat conversation:

USER: `InputOutput` should accept an arg editingmode of either EditingMode.VI EditingMode.EMACS

ASSISTANT: To add the `editingmode` argument to the `InputOutput` class, we need to:

1. Import `EditingMode` from `prompt_toolkit`.
2. Add the `editingmode` parameter to the `__init__` method.
3. Use the `editingmode` parameter when creating the `PromptSession`.

Here are the *SEARCH/REPLACE* blocks:

aider/io.py
```python
<<<<<<< SEARCH
from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt
=======
from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt, EditingMode
>>>>>>> REPLACE
```

aider/io.py
```python
<<<<<<< SEARCH
    ):
=======
        editingmode=EditingMode.EMACS,
    ):
        self.editingmode = editingmode
>>>>>>> REPLACE
```

aider/io.py
```python
<<<<<<< SEARCH
            session = PromptSession(key_bindings=kb, **session_kwargs)
=======
            session = PromptSession(key_bindings=kb, editing_mode=self.editingmode, **session_kwargs)
>>>>>>> REPLACE
```
2024-06-10 21:08:40 -07:00
Paul Gauthier
d30b21139b aider: Skip commit action when running --commit --dry-run.
# Aider chat conversation:

USER: https://github.com/paul-gauthier/aider/issues/663

https://github.com/paul-gauthier/aider/issues/663:

[Skip to content](#start-of-content)

## Navigation Menu

Toggle navigation

[](https://github.com/)

[Sign
in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F663)

-   Product

    -   [](https://github.com/features/actions)

        Actions

        Automate any workflow

    -   [](https://github.com/features/packages)

        Packages

        Host and manage packages

    -   [](https://github.com/features/security)

        Security

        Find and fix vulnerabilities

    -   [](https://github.com/features/codespaces)

        Codespaces

        Instant dev environments

    -   [](https://github.com/features/copilot)

        GitHub Copilot

        Write better code with AI

    -   [](https://github.com/features/code-review)

        Code review

        Manage code changes

    -   [](https://github.com/features/issues)

        Issues

        Plan and track work

    -   [](https://github.com/features/discussions)

        Discussions

        Collaborate outside of code

    Explore
    -   [All features](https://github.com/features)
    -   [Documentation](https://docs.github.com)
    -   [GitHub Skills](https://skills.github.com)
    -   [Blog](https://github.blog)

-   Solutions

    For
    -   [Enterprise](https://github.com/enterprise)
    -   [Teams](https://github.com/team)
    -   [Startups](https://github.com/enterprise/startups)
    -   [Education](https://education.github.com)

    By Solution
    -   [CI/CD & Automation](https://github.com/solutions/ci-cd)
    -   [DevOps](https://github.com/solutions/devops)
    -   [DevSecOps](https://resources.github.com/devops/fundamentals/devsecops)

    Resources
    -   [Learning Pathways](https://resources.github.com/learn/pathways)
    -   [White papers, Ebooks, Webinars](https://resources.github.com)
    -   [Customer Stories](https://github.com/customer-stories)
    -   [Partners](https://partner.github.com)

-   Open Source

    -   [](/sponsors)

        GitHub Sponsors

        Fund open source developers

    -   [](https://github.com/readme)

        The ReadME Project

        GitHub community articles

    Repositories
    -   [Topics](https://github.com/topics)
    -   [Trending](https://github.com/trending)
    -   [Collections](https://github.com/collections)

-   Enterprise

    -   [](/enterprise)

        Enterprise platform

        AI-powered developer platform

    Available add-ons
    -   [](https://github.com/enterprise/advanced-security)

        Advanced Security

        Enterprise-grade security features

    -   [](/features/copilot#enterprise)

        GitHub Copilot

        Enterprise-grade AI features

    -   [](/premium-support)

        Premium Support

        Enterprise-grade 24/7 support

-   [Pricing](https://github.com/pricing)

Search or jump to\...

# Search code, repositories, users, issues, pull requests\...

Search

Clear

[Search syntax
tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax)

# Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

# Saved searches

## Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our
[documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax).

Cancel

Create saved search

[Sign
in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F663)

[Sign
up](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=paul-gauthier%2Faider)

You signed in with another tab or window. [Reload]() to refresh your
session. You signed out in another tab or window. [Reload]() to refresh
your session. You switched accounts on another tab or window. [Reload]()
to refresh your session.

Dismiss alert

{{ message }}

::: {role="main"}

[paul-gauthier](/paul-gauthier) / **[aider](/paul-gauthier/aider)**
Public

-   [Notifications](/login?return_to=%2Fpaul-gauthier%2Faider) You must
    be signed in to change notification settings

-   [Fork 1.1k](/login?return_to=%2Fpaul-gauthier%2Faider)

-

    [ Star 11.3k](/login?return_to=%2Fpaul-gauthier%2Faider)

-   [Code ](/paul-gauthier/aider)
-   [Issues 59](/paul-gauthier/aider/issues)
-   [Pull requests 14](/paul-gauthier/aider/pulls)
-   [Actions ](/paul-gauthier/aider/actions)
-   [Projects 0](/paul-gauthier/aider/projects)
-   [Security](/paul-gauthier/aider/security)
-   [Insights ](/paul-gauthier/aider/pulse)

Additional navigation options

-   [ Code ](/paul-gauthier/aider)
-   [ Issues ](/paul-gauthier/aider/issues)
-   [ Pull requests ](/paul-gauthier/aider/pulls)
-   [ Actions ](/paul-gauthier/aider/actions)
-   [ Projects ](/paul-gauthier/aider/projects)
-   [ Security ](/paul-gauthier/aider/security)
-   [ Insights ](/paul-gauthier/aider/pulse)

New issue

**Have a question about this project?** Sign up for a free GitHub
account to open an issue and contact its maintainers and the community.

[Sign up for
GitHub](/signup?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose)

By clicking "Sign up for GitHub", you agree to our [terms of
service](https://docs.github.com/terms) and [privacy
statement](https://docs.github.com/privacy). We'll occasionally send you
account related emails.

Already on GitHub? [Sign
in](/login?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose)
to your account

[Jump to bottom](#issue-comment-box)

# Running \--commit \--dry-run should not actually make the commit #663

Open

[paul-gauthier](/paul-gauthier) opened this issue Jun 10, 2024 · 0
comments

Open

# [Running \--commit \--dry-run should not actually make the commit](#top) #663

[paul-gauthier](/paul-gauthier) opened this issue Jun 10, 2024 · 0
comments

Labels

[bug](/paul-gauthier/aider/labels/bug) Something isn\'t working

## Comments

[](/paul-gauthier)

Copy link

Owner

###

**[paul-gauthier](/paul-gauthier)** commented [Jun 10,
2024](#issue-2344397167)

+-----------------------------------------------------------------------+
| ### Issue                                                             |
|                                                                       |
| Per discord:                                                          |
|                                                                       |
| <https://discord.com/                                                 |
| channels/1131200896827654144/1133060505792159755/1249568492634509344> |
|                                                                       |
| ### Version and model info                                            |
|                                                                       |
| *No response*                                                         |
+-----------------------------------------------------------------------+
|                                                                       |
|                                                                       |
| The text was updated successfully, but these errors were encountered: |
|                                                                       |
|                                                                       |
+-----------------------------------------------------------------------+

All reactions

[paul-gauthier](/paul-gauthier) added the
[bug](/paul-gauthier/aider/labels/bug) Something isn\'t working label
[Jun 10, 2024](#event-13104705978)

[Sign up for free](/join?source=comment-repo) **to join this
conversation on GitHub**. Already have an account? [Sign in to
comment](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F663)

Assignees

No one assigned

Labels

[bug](/paul-gauthier/aider/labels/bug) Something isn\'t working

Projects

None yet

Milestone

No milestone

Development

No branches or pull requests

1 participant

:::

## Footer

[](https://github.com) © 2024 GitHub, Inc.

### Footer navigation

-   [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
-   [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
-   [Security](https://github.com/security)
-   [Status](https://www.githubstatus.com/)
-   [Docs](https://docs.github.com/)
-   [Contact](https://support.github.com?tags=dotcom-footer)
-   Manage cookies
-   Do not share my personal information

You can't perform that action at this time.

ASSISTANT: To address the issue where running `--commit --dry-run` should not actually make the commit, we need to modify the `main.py` file to ensure that the commit action is skipped when `--dry-run` is specified.

Here are the steps to implement this:

1. Check if `args.dry_run` is set before performing the commit action.
2. If `args.dry_run` is set, skip the commit action and print a message indicating that the commit is being skipped due to the dry run.

Let's implement these changes:

aider/main.py
```python
<<<<<<< SEARCH
    if args.commit:
        coder.commands.cmd_commit()
        return
=======
    if args.commit:
        if args.dry_run:
            io.tool_output("Dry run enabled, skipping commit.")
        else:
            coder.commands.cmd_commit()
        return
>>>>>>> REPLACE
```

This change ensures that when `--dry-run` is specified along with `--commit`, the commit action is skipped, and a message is printed to indicate this.
2024-06-10 15:54:56 -07:00
Paul Gauthier
bde80e4577 aider: Handle the case where the ~/.gitconfig file is missing or does not contain the user.name entry.
# Aider chat conversation:

USER: https://github.com/paul-gauthier/aider/issues/662

https://github.com/paul-gauthier/aider/issues/662:

[Skip to content](#start-of-content)

## Navigation Menu

Toggle navigation

[](https://github.com/)

[Sign
in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F662)

-   Product

    -   [](https://github.com/features/actions)

        Actions

        Automate any workflow

    -   [](https://github.com/features/packages)

        Packages

        Host and manage packages

    -   [](https://github.com/features/security)

        Security

        Find and fix vulnerabilities

    -   [](https://github.com/features/codespaces)

        Codespaces

        Instant dev environments

    -   [](https://github.com/features/copilot)

        GitHub Copilot

        Write better code with AI

    -   [](https://github.com/features/code-review)

        Code review

        Manage code changes

    -   [](https://github.com/features/issues)

        Issues

        Plan and track work

    -   [](https://github.com/features/discussions)

        Discussions

        Collaborate outside of code

    Explore
    -   [All features](https://github.com/features)
    -   [Documentation](https://docs.github.com)
    -   [GitHub Skills](https://skills.github.com)
    -   [Blog](https://github.blog)

-   Solutions

    For
    -   [Enterprise](https://github.com/enterprise)
    -   [Teams](https://github.com/team)
    -   [Startups](https://github.com/enterprise/startups)
    -   [Education](https://education.github.com)

    By Solution
    -   [CI/CD & Automation](https://github.com/solutions/ci-cd)
    -   [DevOps](https://github.com/solutions/devops)
    -   [DevSecOps](https://resources.github.com/devops/fundamentals/devsecops)

    Resources
    -   [Learning Pathways](https://resources.github.com/learn/pathways)
    -   [White papers, Ebooks, Webinars](https://resources.github.com)
    -   [Customer Stories](https://github.com/customer-stories)
    -   [Partners](https://partner.github.com)

-   Open Source

    -   [](/sponsors)

        GitHub Sponsors

        Fund open source developers

    -   [](https://github.com/readme)

        The ReadME Project

        GitHub community articles

    Repositories
    -   [Topics](https://github.com/topics)
    -   [Trending](https://github.com/trending)
    -   [Collections](https://github.com/collections)

-   Enterprise

    -   [](/enterprise)

        Enterprise platform

        AI-powered developer platform

    Available add-ons
    -   [](https://github.com/enterprise/advanced-security)

        Advanced Security

        Enterprise-grade security features

    -   [](/features/copilot#enterprise)

        GitHub Copilot

        Enterprise-grade AI features

    -   [](/premium-support)

        Premium Support

        Enterprise-grade 24/7 support

-   [Pricing](https://github.com/pricing)

Search or jump to\...

# Search code, repositories, users, issues, pull requests\...

Search

Clear

[Search syntax
tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax)

# Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

# Saved searches

## Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our
[documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax).

Cancel

Create saved search

[Sign
in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F662)

[Sign
up](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=paul-gauthier%2Faider)

You signed in with another tab or window. [Reload]() to refresh your
session. You signed out in another tab or window. [Reload]() to refresh
your session. You switched accounts on another tab or window. [Reload]()
to refresh your session.

Dismiss alert

{{ message }}

::: {role="main"}

[paul-gauthier](/paul-gauthier) / **[aider](/paul-gauthier/aider)**
Public

-   [Notifications](/login?return_to=%2Fpaul-gauthier%2Faider) You must
    be signed in to change notification settings

-   [Fork 1.1k](/login?return_to=%2Fpaul-gauthier%2Faider)

-

    [ Star 11.3k](/login?return_to=%2Fpaul-gauthier%2Faider)

-   [Code ](/paul-gauthier/aider)
-   [Issues 59](/paul-gauthier/aider/issues)
-   [Pull requests 14](/paul-gauthier/aider/pulls)
-   [Actions ](/paul-gauthier/aider/actions)
-   [Projects 0](/paul-gauthier/aider/projects)
-   [Security](/paul-gauthier/aider/security)
-   [Insights ](/paul-gauthier/aider/pulse)

Additional navigation options

-   [ Code ](/paul-gauthier/aider)
-   [ Issues ](/paul-gauthier/aider/issues)
-   [ Pull requests ](/paul-gauthier/aider/pulls)
-   [ Actions ](/paul-gauthier/aider/actions)
-   [ Projects ](/paul-gauthier/aider/projects)
-   [ Security ](/paul-gauthier/aider/security)
-   [ Insights ](/paul-gauthier/aider/pulse)

New issue

**Have a question about this project?** Sign up for a free GitHub
account to open an issue and contact its maintainers and the community.

[Sign up for
GitHub](/signup?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose)

By clicking "Sign up for GitHub", you agree to our [terms of
service](https://docs.github.com/terms) and [privacy
statement](https://docs.github.com/privacy). We'll occasionally send you
account related emails.

Already on GitHub? [Sign
in](/login?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose)
to your account

[Jump to bottom](#issue-comment-box)

# Ugly crash during startup when `~/.gitconfig` is missing \[user\] #662

Open

[Megamannen](/Megamannen) opened this issue Jun 10, 2024 · 1 comment

Open

# [Ugly crash during startup when `~/.gitconfig` is missing \[user\]](#top) #662

[Megamannen](/Megamannen) opened this issue Jun 10, 2024 · 1 comment

## Comments

[](/Megamannen)

Copy link

###

**[Megamannen](/Megamannen)** commented [Jun 10,
2024](#issue-2343705266)

+-----------------------------------------------------------------------+
| ### Issue                                                             |
|                                                                       |
| This is my `~/.gitconfig`                                             |
|                                                                       |
|                                                                       |
|                                                                       |
|     [safe]                                                            |
|         directory = /home/mega/Projects                               |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
| This is the output:                                                   |
|                                                                       |
|                                                                       |
|                                                                       |
|     aider                                                             |
|     Traceback (most recent call last):                                |
|       File "/usr/lib/python3.12/configparser.py", line 767, in get    |
|         value = d[option]                                             |
|                 ~^^^^^^^^                                             |
|       File "/u                                                        |
| sr/lib/python3.12/collections/__init__.py", line 1015, in __getitem__ |
|         return self.__m                                               |
| issing__(key)            # support subclasses that define __missing__ |
|                ^^^^^^^^^^^^^^^^^^^^^                                  |
|       File "/u                                                        |
| sr/lib/python3.12/collections/__init__.py", line 1007, in __missing__ |
|         raise KeyError(key)                                           |
|     KeyError: 'name'                                                  |
|                                                                       |
|                                                                       |
|   During handling of the above exception, another exception occurred: |
|                                                                       |
|     Traceback (most recent call last):                                |
|       File "/home/mega/.local/bin/aider", line 8, in <module>         |
|         sys.exit(main())                                              |
|                  ^^^^^^                                               |
|       File "/home/mega/.local/share/pipx/venvs/aide                   |
| r-chat/lib/python3.12/site-packages/aider/main.py", line 306, in main |
|         git_root = setup_git(git_root, io)                            |
|                    ^^^^^^^^^^^^^^^^^^^^^^^                            |
|       File "/home/mega/.local/share/pipx/venvs/aider-ch               |
| at/lib/python3.12/site-packages/aider/main.py", line 68, in setup_git |
|         user_name = config.get_value("user", "name", None)            |
|                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            |
|       File "/home/mega/.local/share/pipx/venvs/aider-cha              |
| t/lib/python3.12/site-packages/git/config.py", line 793, in get_value |
|         valuestr = self.get(section, option)                          |
|                    ^^^^^^^^^^^^^^^^^^^^^^^^^                          |
|       File "/home/mega/.local/share/pipx/venvs/aider-chat/lib/pyth    |
| on3.12/site-packages/git/config.py", line 114, in assure_data_present |
|         return func(self, *args, **kwargs)                            |
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^^                            |
|       File "/usr/lib/python3.12/configparser.py", line 770, in get    |
|         raise NoOptionError(option, section)                          |
|     configparser.NoOptionError: No option 'name' in section: 'user'   |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
| I added my user info to .gitconfig and it works                       |
|                                                                       |
| ### Version and model info                                            |
|                                                                       |
| Aider: v0.37.0                                                        |
+-----------------------------------------------------------------------+
|                                                                       |
|                                                                       |
| The text was updated successfully, but these errors were encountered: |
|                                                                       |
|                                                                       |
+-----------------------------------------------------------------------+

All reactions

Copy link

Owner

###

**[paul-gauthier](/paul-gauthier)** commented [Jun 10,
2024](#issuecomment-2159441132)

+-----------------------------------------------------------------------+
| Thanks for trying aider and filing this issue.                        |
|                                                                       |
| I am unable to reproduce this issue. I made my `~/.gitconfig` the     |
| same as yours and aider does the expected thing:                      |
|                                                                       |
|                                                                       |
|                                                                       |
|     $ git init                                                        |
|                                                                       |
|     $ aider                                                           |
|     Update git name with: git config user.name "Your Name"            |
|     Update git email with: git config user.email "you@example.com"    |
|     ...                                                               |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
|                                                                       |
| Can you describe more clearly how to reproduce?                       |
+-----------------------------------------------------------------------+

All reactions

Sorry, something went wrong.

[Sign up for free](/join?source=comment-repo) **to join this
conversation on GitHub**. Already have an account? [Sign in to
comment](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F662)

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

No branches or pull requests

2 participants

:::

## Footer

[](https://github.com) © 2024 GitHub, Inc.

### Footer navigation

-   [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
-   [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
-   [Security](https://github.com/security)
-   [Status](https://www.githubstatus.com/)
-   [Docs](https://docs.github.com/)
-   [Contact](https://support.github.com?tags=dotcom-footer)
-   Manage cookies
-   Do not share my personal information

You can't perform that action at this time.

ASSISTANT: To address the issue described in https://github.com/paul-gauthier/aider/issues/662, we need to handle the case where the `~/.gitconfig` file is missing or does not contain the `user.name` entry. The most likely file to need changes is:

- `aider/main.py`

Please add `aider/main.py` to the chat so I can propose the necessary changes.

USER: I added these files to the chat: aider/main.py.

If you need to propose edits to other existing files not already added to the chat, you *MUST* tell the me their full path names and ask me to *add the files to the chat*. End your reply and wait for my approval. You can keep asking if you then decide you need to edit more files.

ASSISTANT: To handle the case where the `~/.gitconfig` file is missing or does not contain the `user.name` entry, we need to catch the `configparser.NoOptionError` exception and handle it gracefully.

Here are the changes needed:

1. Modify the `setup_git` function to handle the `configparser.NoOptionError` exception.

aider/main.py
```python
<<<<<<< SEARCH
        except configparser.NoSectionError:
=======
        except (configparser.NoSectionError, configparser.NoOptionError):
>>>>>>> REPLACE
```

This change will ensure that the code handles the case where the `user.name` or `user.email` is missing in the `~/.gitconfig` file without crashing.
2024-06-10 15:52:57 -07:00
Paul Gauthier
5282e6fc4a Merge remote-tracking branch 'origin/main' 2024-06-10 15:34:29 -07:00
Paul Gauthier
ce46ea8d62 moved tests/ to aider/tests/ 2024-06-10 15:33:49 -07:00
Paul Gauthier
470b8d0251 Show model warnings in normal color, not red/error 2024-06-10 15:23:33 -07:00
develmusa
098944a133 Update help text for specifying the API key to mention Anthropic instead of OpenAI. 2024-06-09 12:35:42 +02:00
Paul Gauthier
4cbeb59bec browser ver should stop after 3 reflections 2024-06-08 13:38:18 -07:00
Paul Gauthier
8d3a320ab3 log the announcements in the gui too 2024-06-08 13:31:40 -07:00
Paul Gauthier
d2b9eec3e0 fixed bad url; fixed max_reflection logic 2024-06-08 12:57:36 -07:00
Paul Gauthier
1f1da4b1a2 refac all urls into urls.py 2024-06-08 12:53:54 -07:00
Paul Gauthier
09d3d02971 more conservative reflection if 2024-06-08 12:40:35 -07:00
Daniel Vainsencher
e6e360a4ef Added support for logging LLM history to a specified file. 2024-06-07 10:40:32 -04:00
Daniel Vainsencher
8896909e19 aider: Capitalize the "ASSISTANT" role when logging to the LLM history file.
# Aider chat conversation:

USER: When logging to llm history file, capitalize the ASSISTANT role.

ASSISTANT: To capitalize the "ASSISTANT" role when logging to the LLM history file, we need to modify the `send_new_user_message` method in `aider/coders/base_coder.py`.

Here is the *SEARCH/REPLACE* block:

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
        with open('.aider.llm.history', 'a') as log_file:
            log_file.write(f"LLM RESPONSE {timestamp}\n")
            log_file.write(format_content("assistant", content) + "\n")
=======
        with open('.aider.llm.history', 'a') as log_file:
            log_file.write(f"LLM RESPONSE {timestamp}\n")
            log_file.write(format_content("ASSISTANT", content) + "\n")
>>>>>>> REPLACE
```
2024-06-07 09:39:03 -04:00
Daniel Vainsencher
2bd5daf2ad aider: Add logging of conversation between coder and LLM in .aider.llm.history file using new formatting functions in send_new_user_message.
# Aider chat conversation:

USER: We want to add logging of the conversation between coder and the LLM into a new file called .aider.llm.history. The formatting should be done using the new format_messages and format_content. Modify only the `send_new_user_message` function in base_coder, formatting and logging `messages` as soon as it is defined, and logging `content` before `tool_output`. Precede them by a single line saying "TO LLM {timestamp}" and "LLM RESPONSE {timestamp}" where the timestamp is uses ISO date format and has second precision.

ASSISTANT: To implement the logging of the conversation between the coder and the LLM, we will:

1. Format and log `messages` as soon as it is defined in `send_new_user_message`.
2. Log `content` before `tool_output`.
3. Precede the logs with a timestamp in ISO date format with second precision.

Here are the *SEARCH/REPLACE* blocks:

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
        messages = self.format_messages()
=======
        import datetime
        from aider.utils import format_messages, format_content

        messages = self.format_messages()

        timestamp = datetime.datetime.now().isoformat(timespec='seconds')
        with open('.aider.llm.history', 'a') as log_file:
            log_file.write(f"TO LLM {timestamp}\n")
            log_file.write(format_messages(messages) + "\n")
>>>>>>> REPLACE
```

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
        self.io.tool_output()
=======
        self.io.tool_output()

        timestamp = datetime.datetime.now().isoformat(timespec='seconds')
        with open('.aider.llm.history', 'a') as log_file:
            log_file.write(f"LLM RESPONSE {timestamp}\n")
            log_file.write(format_content("assistant", content) + "\n")
>>>>>>> REPLACE
```
2024-06-07 09:39:03 -04:00
Daniel Vainsencher
abf8d5e60d aider: Refactored format_messages to use a new function format_content for line-by-line formatting.
# Aider chat conversation:

USER: Now refactor format_messages: extract a function that takes a role and content (where content is a string), and returns the line by line formatted string.

ASSISTANT: To refactor `format_messages`, we will:

1. Create a new function `format_content` that takes a role and content (where content is a string) and returns the line-by-line formatted string.
2. Update `format_messages` to use `format_content`.

Here are the *SEARCH/REPLACE* blocks:

aider/utils.py
```python
<<<<<<< SEARCH
def format_messages(messages, title=None):
=======
def format_content(role, content):
    formatted_lines = []
    for line in content.splitlines():
        formatted_lines.append(f"{role} {line}")
    return "\n".join(formatted_lines)

>>>>>>> REPLACE
```

aider/utils.py
```python
<<<<<<< SEARCH
        elif isinstance(content, str):  # Handle string content
            for line in content.splitlines():
                output.append(f"{role} {line}")
=======
        elif isinstance(content, str):  # Handle string content
            output.append(format_content(role, content))
>>>>>>> REPLACE
```

USER:
# Fix any errors below, if possible.

## Running: flake8 --select=E9,F821,F823,F831,F406,F407,F701,F702,F704,F706 --show-source --isolated aider/utils.py

aider/utils.py:94:8: F821 undefined name 'title'
    if title:
       ^
aider/utils.py:95:26: F821 undefined name 'title'
        output.append(f"{title.upper()} {'*' * 50}")
                         ^
aider/utils.py:97:16: F821 undefined name 'messages'
    for msg in messages:
               ^
aider/utils.py:115:24: F821 undefined name 'format_messages'
    formatted_output = format_messages(messages, title)
                       ^

## See relevant lines below marked with █.

aider/utils.py:
...⋮...
 87│def format_content(role, content):
 88│    formatted_lines = []
...⋮...
 91│    return "\n".join(formatted_lines)
 92│
 93│    output = []
 94█    if title:
 95█        output.append(f"{title.upper()} {'*' * 50}")
 96│
 97█    for msg in messages:
 98│        output.append("")
 99│        role = msg["role"].upper()
100│        content = msg.get("content")
...⋮...
112│
113│
114│def show_messages(messages, title=None, functions=None):
115█    formatted_output = format_messages(messages, title)
116│    print(formatted_output)
117│
118│    if functions:
...⋮...

ASSISTANT: To fix the errors, we need to ensure that the `format_messages` function is properly defined and that the misplaced code is correctly organized. Here are the corrected *SEARCH/REPLACE* blocks:

aider/utils.py
```python
<<<<<<< SEARCH
    return "\n".join(formatted_lines)

    output = []
    if title:
        output.append(f"{title.upper()} {'*' * 50}")

    for msg in messages:
        output.append("")
        role = msg["role"].upper()
        content = msg.get("content")
        if isinstance(content, list):  # Handle list content (e.g., image messages)
            for item in content:
                if isinstance(item, dict) and "image_url" in item:
                    output.append(f"{role} Image URL: {item['image_url']['url']}")
        elif isinstance(content, str):  # Handle string content
            output.append(format_content(role, content))
        content = msg.get("function_call")
        if content:
            output.append(f"{role} {content}")

    return "\n".join(output)
=======
    return "\n".join(formatted_lines)

def format_messages(messages, title=None):
    output = []
    if title:
        output.append(f"{title.upper()} {'*' * 50}")

    for msg in messages:
        output.append("")
        role = msg["role"].upper()
        content = msg.get("content")
        if isinstance(content, list):  # Handle list content (e.g., image messages)
            for item in content:
                if isinstance(item, dict) and "image_url" in item:
                    output.append(f"{role} Image URL: {item['image_url']['url']}")
        elif isinstance(content, str):  # Handle string content
            output.append(format_content(role, content))
        content = msg.get("function_call")
        if content:
            output.append(f"{role} {content}")

    return "\n".join(output)
>>>>>>> REPLACE
```
2024-06-07 09:39:03 -04:00
Daniel Vainsencher
a0b279f105 Refactored format_messages to use format_content for string content handling. 2024-06-07 09:39:03 -04:00
Daniel Vainsencher
69c27d6cd1 aider: Refactored show_messages to call format_messages for formatting title and messages.
# Aider chat conversation:

USER: Refactor show_messages in utils, so that the formatting of title and messages is done in a separate function which returns a string. show_messages should call it and print its output.

ASSISTANT: To refactor the `show_messages` function, we will:

1. Create a new function `format_messages` that formats the title and messages and returns a string.
2. Update `show_messages` to call `format_messages` and print its output.

Here are the *SEARCH/REPLACE* blocks:

aider/utils.py
```python
<<<<<<< SEARCH
def show_messages(messages, title=None, functions=None):
    if title:
        print(title.upper(), "*" * 50)

    for msg in messages:
        print()
        role = msg["role"].upper()
        content = msg.get("content")
        if isinstance(content, list):  # Handle list content (e.g., image messages)
            for item in content:
                if isinstance(item, dict) and "image_url" in item:
                    print(role, "Image URL:", item["image_url"]["url"])
        elif isinstance(content, str):  # Handle string content
            for line in content.splitlines():
                print(role, line)
        content = msg.get("function_call")
        if content:
            print(role, content)

    if functions:
        dump(functions)
=======
def format_messages(messages, title=None):
    output = []
    if title:
        output.append(f"{title.upper()} {'*' * 50}")

    for msg in messages:
        output.append("")
        role = msg["role"].upper()
        content = msg.get("content")
        if isinstance(content, list):  # Handle list content (e.g., image messages)
            for item in content:
                if isinstance(item, dict) and "image_url" in item:
                    output.append(f"{role} Image URL: {item['image_url']['url']}")
        elif isinstance(content, str):  # Handle string content
            for line in content.splitlines():
                output.append(f"{role} {line}")
        content = msg.get("function_call")
        if content:
            output.append(f"{role} {content}")

    return "\n".join(output)

def show_messages(messages, title=None, functions=None):
    formatted_output = format_messages(messages, title)
    print(formatted_output)

    if functions:
        dump(functions)
>>>>>>> REPLACE
```
2024-06-07 09:39:03 -04:00
Paul Gauthier
30f4a905c1 renamed config/options and get_md_help() 2024-06-06 14:00:14 -07:00
Paul Gauthier
53deb04e75 use dashed-names not underscore_names in yaml 2024-06-06 13:46:32 -07:00
Paul Gauthier
65c9a7866a improved handling of defaults 2024-06-06 13:40:16 -07:00
Paul Gauthier
645ace1d0e fix defaults in sample yml 2024-06-06 12:46:07 -07:00
Paul Gauthier
2d62e3fb1f add sample aider.conf.yml 2024-06-06 12:40:25 -07:00
Paul Gauthier
caca261587 output nice md usage 2024-06-06 12:26:06 -07:00