Commit graph

1520 commits

Author SHA1 Message Date
Paul Gauthier
0253588616 set version to 0.17.1-dev 2023-11-06 20:27:37 -08:00
Paul Gauthier
393878120e version bump to 0.17.0 2023-11-06 20:27:12 -08:00
Paul Gauthier
5098be6172 Add context windows and pricing for 1106 models 2023-11-06 20:18:40 -08:00
Paul Gauthier
af71638b06 less simple, but docker image builds 2023-11-03 14:53:22 -07:00
Paul Gauthier
208fc7ae78 simpler 2023-11-03 14:45:49 -07:00
Paul Gauthier
87ab5495a7 Simplify scripting aider 2023-11-03 14:29:45 -07:00
Paul Gauthier
1fe48fd161 Updated /help messages 2023-11-03 09:23:04 -07:00
Paul Gauthier
d868e96467 Abandon checking gitignore if can not read file 2023-11-03 08:33:32 -07:00
Paul Gauthier
c4f6ce6435 handle encoding error when checking .gitignore 2023-11-03 08:12:01 -07:00
Paul Gauthier
f3d3815201 Armor AutoCompleter against unicode errors #305 2023-11-03 07:26:21 -07:00
Paul Gauthier
d720bfe459 Properly test if /added file is already in the repo #314 2023-11-02 15:50:30 -07:00
Paul Gauthier
2609ec1b06 find_original_update_blocks now accepts fence param, raises on mangled <source>filename.ext #317 2023-11-02 12:05:39 -07:00
Paul Gauthier
f0711d4b96 Disable pretty when the fence is an html tag not triple-backticks 2023-11-02 10:52:55 -07:00
Paul Gauthier
b3bc8b0f2b Ask for concise S/R blocks 2023-11-02 10:09:18 -07:00
Paul Gauthier
5c9275191e aider: Refused to add blocked file by .gitignore and printed error message.
# Aider chat conversation:

USER: crash when /add a file which is blocked by .gitignore; we should catch the error, print a tool_error an

d refuse to /add the file
. > /add tmp/wordpress.py

Traceback (most recent call last):
  File "/home/m/.local/bin/aider", line 8, in <module>
    sys.exit(main())
  File "/home/m/.local/lib/python3.10/site-packages/aider/main.py", line 564, in main
    coder.run()
  File "/home/m/.local/lib/python3.10/site-packages/aider/coders/base_coder.py", line 319, in run
    new_user_message = self.run_loop()
  File "/home/m/.local/lib/python3.10/site-packages/aider/coders/base_coder.py", line 398, in run_loop
    return self.commands.run(inp)
  File "/home/m/.local/lib/python3.10/site-packages/aider/commands.py", line 73, in run
    return self.do_run(matching_commands[0][1:], rest_inp)
  File "/home/m/.local/lib/python3.10/site-packages/aider/commands.py", line 51, in do_run
    return cmd_method(args)
  File "/home/m/.local/lib/python3.10/site-packages/aider/commands.py", line 316, in cmd_add
    self.coder.repo.repo.git.add(abs_file_path)
  File "/home/m/.local/lib/python3.10/site-packages/git/cmd.py", line 741, in <lambda>
    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
  File "/home/m/.local/lib/python3.10/site-packages/git/cmd.py", line 1315, in _call_process
    return self.execute(call, **exec_kwargs)
  File "/home/m/.local/lib/python3.10/site-packages/git/cmd.py", line 1109, in execute
    raise GitCommandError(redacted_command, status, stderr_value, stdout_value)
git.exc.GitCommandError: Cmd('git') failed due to: exit code(1)
  cmdline: git add /home/m/Private/Projects/Freelance/nbdter69/pars_porntube/tmp/wordpress.py
  stderr: 'The following paths are ignored by one of your .gitignore files:
tmp
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"'

ASSISTANT: To handle this issue, we need to modify the `cmd_add` method in the `Commands` class in the `aider/commands.py` file. We will add a check to see if the file is ignored by git before trying to add it. If it is ignored, we will print an error message and skip adding the file.

Here is the *SEARCH/REPLACE block* for the change:

<source>python
aider/commands.py
<<<<<<< SEARCH
        for matched_file in all_matched_files:
            abs_file_path = self.coder.abs_root_path(matched_file)

            if not abs_file_path.startswith(self.coder.root):
                self.io.tool_error(
                    f"Can not add {abs_file_path}, which is not within {self.coder.root}"
                )
                continue

            if self.coder.repo and matched_file not in git_files:
                self.coder.repo.repo.git.add(abs_file_path)
                git_added.append(matched_file)

            if abs_file_path in self.coder.abs_fnames:
                self.io.tool_error(f"{matched_file} is already in the chat")
            else:
                content = self.io.read_text(abs_file_path)
                if content is None:
                    self.io.tool_error(f"Unable to read {matched_file}")
                else:
                    self.coder.abs_fnames.add(abs_file_path)
                    self.io.tool_output(f"Added {matched_file} to the chat")
                    added_fnames.append(matched_file)
=======
        for matched_file in all_matched_files:
            abs_file_path = self.coder.abs_root_path(matched_file)

            if not abs_file_path.startswith(self.coder.root):
                self.io.tool_error(
                    f"Can not add {abs_file_path}, which is not within {self.coder.root}"
                )
                continue

            if self.coder.repo and matched_file not in git_files:
                try:
                    self.coder.repo.repo.git.add(abs_file_path)
                    git_added.append(matched_file)
                except git.exc.GitCommandError as e:
                    self.io.tool_error(f"Unable to add {matched_file}: {str(e)}")
                    continue

            if abs_file_path in self.coder.abs_fnames:
                self.io.tool_error(f"{matched_file} is already in the chat")
            else:
                content = self.io.read_text(abs_file_path)
                if content is None:
                    self.io.tool_error(f"Unable to read {matched_file}")
                else:
                    self.coder.abs_fnames.add(abs_file_path)
                    self.io.tool_output(f"Added {matched_file} to the chat")
                    added_fnames.append(matched_file)
>>>>>>> REPLACE
</source>
2023-11-02 10:08:25 -07:00
paul-gauthier
b507ea087f
Merge pull request #310 from omri123/autocommit-bugfix
Do not autocommit after add if autocommit is disabled
2023-11-02 09:40:15 -07:00
Paul Gauthier
4e2e03dfef Pick up refs in elisp 2023-11-02 09:32:55 -07:00
Paul Gauthier
f0c575e413 use io.read_text to avoid unicode errors in repomap #305 2023-11-02 09:30:59 -07:00
Paul Gauthier
5df4f2f1a4 removed empty r tags file 2023-11-01 15:01:55 -07:00
Paul Gauthier
f6288d51b4 set version to 0.16.4-dev 2023-11-01 07:36:19 -07:00
Paul Gauthier
8fedf5f12e version bump to 0.16.3 2023-11-01 07:35:53 -07:00
Omri Bloch
e8c4b3cf81 Do not autocommit after add if autocommit is disabled 2023-11-01 10:28:45 +02:00
Paul Gauthier
05b0597f8b use grep-ast==0.2.4 to fully fix c-sharp bug 2023-10-31 16:48:44 -07:00
Paul Gauthier
007f54de16 set version to 0.16.3-dev 2023-10-31 15:10:39 -07:00
Paul Gauthier
0c9363062c version bump to 0.16.2 2023-10-31 15:10:14 -07:00
Paul Gauthier
4c31062b69 set version to 0.16.2-dev 2023-10-31 14:14:31 -07:00
Paul Gauthier
d710124d1d version bump to 0.16.1 2023-10-31 14:14:02 -07:00
Paul Gauthier
f4b59c923d set version to 0.16.1-dev 2023-10-29 13:24:51 -07:00
Paul Gauthier
92ea4c09a3 version bump to 0.16.0 2023-10-29 13:24:22 -07:00
Paul Gauthier
b6142af12b make sure **.txt does not crash chat #293 2023-10-25 15:52:26 -07:00
Paul Gauthier
15d3a5d581 Switch from "edit block" to "search/replace block"
Succeeded in tricky task in the grep-ast codebase:
- checkout ed714ffe58734 / tricky-search-and-replace-state
- "read and parse .gitignore once, not each time we recurse `enumerate_files`"
- was having a lot of trouble creating a head/updated block that matched the actual source code
- new search/replace block does much better

Benchmark had *best* try 1 result and *lowest* num_error_outputs ever seen on gpt-4-0613.
Low num_error_outputs means it's less likely to elide/... code in the before block (original/search).

──────────── tmp.benchmarks/2023-10-25-22-03-19--search-and-replace-and-think ─────────────
test-cases: 133
model: gpt-4
edit_format: diff
commit_hash: c9c2ddb
num_error_outputs: 6
num_user_asks: 0
num_exhausted_context_windows 0
test_timeouts: 2

50.4% correct after try 0
66.2% correct after try 1
2023-10-25 15:24:03 -07:00
Paul Gauthier
5edf20915f updated sample map 2023-10-22 15:06:35 -07:00
Paul Gauthier
3299d90317 Handle successive editblocks from same file w/o filename #267 2023-10-22 11:28:22 -07:00
Paul Gauthier
7871186e0f Stronger prompt to include file path 2023-10-22 11:18:41 -07:00
Paul Gauthier
815fdaabc3 Merge branch 'sitter-map' 2023-10-20 09:57:45 -07:00
Paul Gauthier
4fcf005481 set version to 0.15.1-dev 2023-10-20 09:55:47 -07:00
Paul Gauthier
3b7f2ad1e6 version bump to 0.15.0 2023-10-20 09:55:13 -07:00
Paul Gauthier
4654e81241 Merge branch 'main' into sitter-map 2023-10-20 08:05:33 -07:00
Paul Gauthier
ac9160ae54 aider: Add --encoding argument and pass it to InputOutput.
# Aider chat conversation:

USER: add --encoding and pass it to `InputOutput`

ASSISTANT: To add the `--encoding` argument and pass it to `InputOutput`, we need to modify the `aider/main.py` file.

Here are the steps:

1. Add a new argument `--encoding` to the `argparse.ArgumentParser` in the `main` function.
2. Pass the `args.encoding` to the `InputOutput` class instantiation.

Here are the changes:

```python
aider/main.py
<<<<<<< HEAD
    ##########
    other_group = parser.add_argument_group("Other Settings")
    other_group.add_argument(
        "--version",
        action="version",
        version=f"%(prog)s {__version__}",
        help="Show the version number and exit",
    )
    other_group.add_argument(
        "--apply",
        metavar="FILE",
        help="Apply the changes from the given file instead of running the chat (debug)",
    )
    other_group.add_argument(
        "--yes",
        action="store_true",
        help="Always say yes to every confirmation",
        default=None,
    )
    other_group.add_argument(
        "-v",
        "--verbose",
        action="store_true",
        help="Enable verbose output",
        default=False,
    )
    other_group.add_argument(
        "--show-repo-map",
        action="store_true",
        help="Print the repo map and exit (debug)",
        default=False,
    )
    other_group.add_argument(
        "--message",
        "--msg",
        "-m",
        metavar="COMMAND",
        help="Specify a single message to send GPT, process reply then exit (disables chat mode)",
    )
    other_group.add_argument(
        "-c",
        "--config",
        is_config_file=True,
        metavar="CONFIG_FILE",
        help=(
            "Specify the config file (default: search for .aider.conf.yml in git root, cwd"
            " or home directory)"
        ),
    )

    args = parser.parse_args(argv)
=======
    ##########
    other_group = parser.add_argument_group("Other Settings")
    other_group.add_argument(
        "--version",
        action="version",
        version=f"%(prog)s {__version__}",
        help="Show the version number and exit",
    )
    other_group.add_argument(
        "--apply",
        metavar="FILE",
        help="Apply the changes from the given file instead of running the chat (debug)",
    )
    other_group.add_argument(
        "--yes",
        action="store_true",
        help="Always say yes to every confirmation",
        default=None,
    )
    other_group.add_argument(
        "-v",
        "--verbose",
        action="store_true",
        help="Enable verbose output",
        default=False,
    )
    other_group.add_argument(
        "--show-repo-map",
        action="store_true",
        help="Print the repo map and exit (debug)",
        default=False,
    )
    other_group.add_argument(
        "--message",
        "--msg",
        "-m",
        metavar="COMMAND",
        help="Specify a single message to send GPT, process reply then exit (disables chat mode)",
    )
    other_group.add_argument(
        "--encoding",
        default="utf-8",
        help="Specify the encoding for input and output (default: utf-8)",
    )
    other_group.add_argument(
        "-c",
        "--config",
        is_config_file=True,
        metavar="CONFIG_FILE",
        help=(
            "Specify the config file (default: search for .aider.conf.yml in git root, cwd"
            " or home directory)"
        ),
    )

    args = parser.parse_args(argv)
>>>>>>> updated
```

```python
aider/main.py
<<<<<<< HEAD
    io = InputOutput(
        args.pretty,
        args.yes,
        args.input_history_file,
        args.chat_history_file,
        input=input,
        output=output,
        user_input_color=args.user_input_color,
        tool_output_color=args.tool_output_color,
        tool_error_color=args.tool_error_color,
        dry_run=args.dry_run,
    )
=======
    io = InputOutput(
        args.pretty,
        args.yes,
        args.input_history_file,
        args.chat_history_file,
        input=input,
        output=output,
        user_input_color=args.user_input_color,
        tool_output_color=args.tool_output_color,
        tool_error_color=args.tool_error_color,
        dry_run=args.dry_run,
        encoding=args.encoding,
    )
>>>>>>> updated
```

Please note that the `InputOutput` class should be able to handle the `encoding` argument. If it's not the case, we need to modify the `InputOutput` class as well.
2023-10-19 20:18:02 -07:00
Paul Gauthier
93fd53263e handle encoding 2023-10-19 13:16:53 -07:00
Paul Gauthier
a941c5cb82 cache tags 2023-10-19 13:13:48 -07:00
Paul Gauthier
5b99281d86 refac 2023-10-19 13:10:29 -07:00
Paul Gauthier
ce3099fa8b Fall back to the pygments lexer for refs if tree-sitter only provides defs 2023-10-19 12:54:27 -07:00
Paul Gauthier
eec174fae7 added tags.scm for C 2023-10-19 12:32:44 -07:00
Paul Gauthier
ce8b6523a6 aider: Refactor struct_specifier, function_declarator, type_definition, and enum_specifier to include the definition class in their respective queries.
# Aider chat conversation:

ASSISTANT: No changes are needed.
2023-10-19 12:27:24 -07:00
Paul Gauthier
f5a6edb568 Added tree-sitter-c-tags.scm for aider queries. 2023-10-19 12:27:23 -07:00
Paul Gauthier
551dddd746 handle languages where tree-sitter only has definition tags 2023-10-19 12:25:01 -07:00
Paul Gauthier
056f4affa6 aider: Refactor tree-sitter-cpp-tags.scm to include the ".definition" property in the appropriate places.
# Aider chat conversation:

ASSISTANT: No changes are needed.
2023-10-19 11:19:07 -07:00
Paul Gauthier
6d1bd4fa01 Added tree-sitter-cpp-tags.scm for aider queries. 2023-10-19 11:19:05 -07:00
Paul Gauthier
cb8d9d6a64 Merge branch 'main' into sitter-map 2023-10-19 10:09:22 -07:00