aider-ce 0.88.2__tar.gz → 0.88.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aider-ce might be problematic. Click here for more details.
- {aider_ce-0.88.2/aider_ce.egg-info → aider_ce-0.88.4}/PKG-INFO +1 -1
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/__init__.py +1 -1
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/_version.py +3 -3
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/base_coder.py +91 -49
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/io.py +95 -65
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/main.py +1 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/urls.py +1 -1
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/versioncheck.py +1 -1
- {aider_ce-0.88.2 → aider_ce-0.88.4/aider_ce.egg-info}/PKG-INFO +1 -1
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_io.py +5 -2
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.dockerignore +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.flake8 +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/check_pypi_version.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/docker-build-test.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/docker-release.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/issues.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/pages.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/pre-commit.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/release.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/ubuntu-tests.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/windows-tests.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.gitignore +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/.pre-commit-config.yaml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/CNAME +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/CONTRIBUTING.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/HISTORY.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/LICENSE.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/MANIFEST.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/README.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/__main__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/analytics.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/args.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/args_formatter.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/change_tracker.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/architect_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/architect_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/ask_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/ask_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/base_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/chat_chunks.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/context_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/context_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_fenced_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_fenced_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_func_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_func_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editblock_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_diff_fenced_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_diff_fenced_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_editblock_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_editblock_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_whole_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/editor_whole_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/help_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/help_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/navigator_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/navigator_legacy_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/navigator_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/patch_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/patch_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/search_replace.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/shell.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/single_wholefile_func_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/single_wholefile_func_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/udiff_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/udiff_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/udiff_simple.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/udiff_simple_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/wholefile_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/wholefile_func_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/wholefile_func_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/coders/wholefile_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/commands.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/copypaste.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/deprecated.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/diffs.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/dump.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/editor.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/exceptions.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/format_settings.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/gui.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/help.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/help_pats.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/history.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/linter.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/llm.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/mcp/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/mcp/server.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/mdstream.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/models.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/onboarding.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/openrouter.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/README.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/README.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/reasoning_tags.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/repo.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/repomap.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/report.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/resources/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/resources/model-metadata.json +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/resources/model-settings.yml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/run_cmd.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/scrape.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/sendchat.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/special.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/command.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/command_interactive.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/delete_block.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/delete_line.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/delete_lines.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/extract_lines.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/git.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/grep.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/indent_lines.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/insert_block.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/list_changes.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/ls.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/make_editable.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/make_readonly.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/remove.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/replace_all.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/replace_line.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/replace_lines.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/replace_text.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/show_numbered_context.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/tool_utils.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/undo_change.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/update_todo_list.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/view.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/view_files_at_glob.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/view_files_matching.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/view_files_with_symbol.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/tools/view_todo_list.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/utils.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/voice.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/waiting.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/watch.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/watch_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/Gemfile +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/blame.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/get-started.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/help-tip.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/help.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/install.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/keys.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/model-warnings.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/multi-line.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/python-m-aider.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/recording.css +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/recording.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/replit-pipx.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_includes/works-best.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/_sass/custom/custom.scss +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/adv-model-settings.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/aider_conf.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/api-keys.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/dotenv.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/editor.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/mcp.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/model-aliases.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/options.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config/reasoning.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/config.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/faq.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/git.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/index.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/install/codespaces.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/install/docker.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/install/optional.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/install/replit.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/install.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/languages.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/legal/contributor-agreement.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/legal/privacy.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/anthropic.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/azure.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/bedrock.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/cohere.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/deepseek.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/gemini.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/github.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/groq.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/lm-studio.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/ollama.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/openai-compat.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/openai.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/openrouter.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/other.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/vertex.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/warnings.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms/xai.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/llms.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/more/analytics.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/more/edit-formats.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/more/infinite-output.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/more-info.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/recordings/index.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/repomap.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/scripting.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/imports.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/support.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/token-limits.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting/warnings.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/troubleshooting.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/browser.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/caching.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/commands.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/conventions.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/copypaste.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/images-urls.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/lint-test.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/modes.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/not-code.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/notifications.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/tips.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/tutorials.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/voice.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage/watch.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/docs/usage.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider/website/share/index.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider_ce.egg-info/SOURCES.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider_ce.egg-info/dependency_links.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider_ce.egg-info/entry_points.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider_ce.egg-info/requires.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/aider_ce.egg-info/top_level.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/Dockerfile +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/README.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/benchmark.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/clone-exercism.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/cpp-test.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/docker.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/docker_build.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/install-docker-ubuntu.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/npm-test.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/over_time.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/plot.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/plots.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/problem_stats.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/refactor_tools.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/rsync.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/rungrid.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/swe-bench-lite.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/swe-bench.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/swe_bench.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/benchmark/test_benchmark.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/docker/Dockerfile +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/pyproject.toml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/pytest.ini +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/common-constraints.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-browser.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-browser.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-dev.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-dev.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-help.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-help.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-playwright.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements-playwright.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/requirements.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements/tree-sitter.in +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/requirements.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/30k-image.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/Dockerfile.jekyll +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/blame.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/clean_metadata.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/dl_icons.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/history_prompts.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/homepage.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/issues.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/jekyll_build.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/jekyll_run.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/logo_svg.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/my_models.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/pip-compile.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/recording_audio.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/redact-cast.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/tmux_record.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/tsl_pack_langs.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/update-blame.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/update-docs.sh +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/update-history.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/versionbump.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/scripts/yank-old-versions.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/setup.cfg +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/__init__.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_analytics.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_aws_credentials.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_coder.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_commands.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_deprecated.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_editblock.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_editor.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_exceptions.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_find_or_blocks.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_history.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_linter.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_main.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_model_info_manager.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_models.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_onboarding.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_openrouter.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_reasoning.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_repo.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_repomap.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_run_cmd.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_sanity_check_repo.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_scripting.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_sendchat.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_special.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_ssl_verification.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_udiff.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_urls.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_voice.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_watch.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/basic/test_wholefile.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/browser/test_browser.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/chat-history.md +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/arduino/test.ino +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/c/test.c +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/clojure/test.clj +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/csharp/test.cs +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/d/test.d +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/dart/test.dart +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/elisp/test.el +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/elixir/test.ex +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/elm/test.elm +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/go/test.go +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/hcl/test.tf +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/java/test.java +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/javascript/test.js +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/lua/test.lua +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/matlab/test.m +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/php/test.php +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/pony/test.pony +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/properties/test.properties +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/python/test.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/ql/test.ql +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/r/test.r +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/racket/test.rkt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/ruby/test.rb +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/rust/test.rs +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/scala/test.scala +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/solidity/test.sol +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/swift/test.swift +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/typescript/test.ts +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/languages/udev/test.rules +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/sample-code-base/sample.js +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/sample-code-base/sample.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/watch.js +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/watch.lisp +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/watch.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/fixtures/watch_question.js +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/help/test_help.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/scrape/test_playwright_disable.py +0 -0
- {aider_ce-0.88.2 → aider_ce-0.88.4}/tests/scrape/test_scrape.py +0 -0
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.88.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 88,
|
|
31
|
+
__version__ = version = '0.88.4'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 88, 4)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g6752d1123'
|
|
@@ -42,7 +42,7 @@ from rich.console import Console
|
|
|
42
42
|
|
|
43
43
|
from aider import __version__, models, prompts, urls, utils
|
|
44
44
|
from aider.analytics import Analytics
|
|
45
|
-
from aider.commands import Commands
|
|
45
|
+
from aider.commands import Commands, SwitchCoder
|
|
46
46
|
from aider.exceptions import LiteLLMExceptions
|
|
47
47
|
from aider.history import ChatSummary
|
|
48
48
|
from aider.io import ConfirmGroup, InputOutput
|
|
@@ -585,8 +585,6 @@ class Coder:
|
|
|
585
585
|
self.summarizer_thread = None
|
|
586
586
|
self.summarized_done_messages = []
|
|
587
587
|
self.summarizing_messages = None
|
|
588
|
-
self.input_task = None
|
|
589
|
-
self.confirmation_in_progress = False
|
|
590
588
|
|
|
591
589
|
self.files_edited_by_tools = set()
|
|
592
590
|
|
|
@@ -1057,7 +1055,7 @@ class Coder:
|
|
|
1057
1055
|
self.commit_before_message.append(self.repo.get_head_commit_sha())
|
|
1058
1056
|
|
|
1059
1057
|
async def run(self, with_message=None, preproc=True):
|
|
1060
|
-
while self.confirmation_in_progress:
|
|
1058
|
+
while self.io.confirmation_in_progress:
|
|
1061
1059
|
await asyncio.sleep(0.1) # Yield control and wait briefly
|
|
1062
1060
|
|
|
1063
1061
|
if self.io.prompt_session:
|
|
@@ -1067,8 +1065,6 @@ class Coder:
|
|
|
1067
1065
|
return await self._run_patched(with_message, preproc)
|
|
1068
1066
|
|
|
1069
1067
|
async def _run_patched(self, with_message=None, preproc=True):
|
|
1070
|
-
input_task = None
|
|
1071
|
-
processing_task = None
|
|
1072
1068
|
try:
|
|
1073
1069
|
if with_message:
|
|
1074
1070
|
self.io.user_input(with_message)
|
|
@@ -1076,91 +1072,134 @@ class Coder:
|
|
|
1076
1072
|
return self.partial_response_content
|
|
1077
1073
|
|
|
1078
1074
|
user_message = None
|
|
1075
|
+
await self.io.cancel_input_task()
|
|
1076
|
+
await self.io.cancel_processing_task()
|
|
1079
1077
|
|
|
1080
1078
|
while True:
|
|
1081
1079
|
try:
|
|
1082
1080
|
if (
|
|
1083
|
-
not self.confirmation_in_progress
|
|
1084
|
-
and not input_task
|
|
1081
|
+
not self.io.confirmation_in_progress
|
|
1085
1082
|
and not user_message
|
|
1086
|
-
and (
|
|
1083
|
+
and (
|
|
1084
|
+
not self.io.input_task
|
|
1085
|
+
or self.io.input_task.done()
|
|
1086
|
+
or self.io.input_task.cancelled()
|
|
1087
|
+
)
|
|
1088
|
+
and (not self.io.processing_task or not self.io.placeholder)
|
|
1087
1089
|
):
|
|
1088
1090
|
if not self.suppress_announcements_for_next_prompt:
|
|
1089
1091
|
self.show_announcements()
|
|
1090
|
-
self.suppress_announcements_for_next_prompt =
|
|
1092
|
+
self.suppress_announcements_for_next_prompt = True
|
|
1091
1093
|
|
|
1092
1094
|
# Stop spinner before showing announcements or getting input
|
|
1093
1095
|
self.io.stop_spinner()
|
|
1094
|
-
|
|
1095
1096
|
self.copy_context()
|
|
1096
|
-
self.input_task = asyncio.create_task(self.get_input())
|
|
1097
|
-
|
|
1097
|
+
self.io.input_task = asyncio.create_task(self.get_input())
|
|
1098
|
+
|
|
1099
|
+
# Yield Control so input can actually get properly set up
|
|
1100
|
+
await asyncio.sleep(0)
|
|
1098
1101
|
|
|
1099
1102
|
tasks = set()
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1103
|
+
|
|
1104
|
+
if self.io.processing_task:
|
|
1105
|
+
if self.io.processing_task.done():
|
|
1106
|
+
exception = self.io.processing_task.exception()
|
|
1107
|
+
if exception:
|
|
1108
|
+
if isinstance(exception, SwitchCoder):
|
|
1109
|
+
await self.io.processing_task
|
|
1110
|
+
elif (
|
|
1111
|
+
not self.io.processing_task.done()
|
|
1112
|
+
and not self.io.processing_task.cancelled()
|
|
1113
|
+
):
|
|
1114
|
+
tasks.add(self.io.processing_task)
|
|
1115
|
+
|
|
1116
|
+
if (
|
|
1117
|
+
self.io.input_task
|
|
1118
|
+
and not self.io.input_task.done()
|
|
1119
|
+
and not self.io.input_task.cancelled()
|
|
1120
|
+
):
|
|
1121
|
+
tasks.add(self.io.input_task)
|
|
1104
1122
|
|
|
1105
1123
|
if tasks:
|
|
1106
1124
|
done, pending = await asyncio.wait(
|
|
1107
1125
|
tasks, return_when=asyncio.FIRST_COMPLETED
|
|
1108
1126
|
)
|
|
1109
1127
|
|
|
1110
|
-
if input_task and input_task in done:
|
|
1111
|
-
if processing_task:
|
|
1112
|
-
if not self.confirmation_in_progress:
|
|
1113
|
-
|
|
1114
|
-
try:
|
|
1115
|
-
await processing_task
|
|
1116
|
-
except asyncio.CancelledError:
|
|
1117
|
-
pass
|
|
1128
|
+
if self.io.input_task and self.io.input_task in done:
|
|
1129
|
+
if self.io.processing_task:
|
|
1130
|
+
if not self.io.confirmation_in_progress:
|
|
1131
|
+
await self.io.cancel_processing_task()
|
|
1118
1132
|
self.io.stop_spinner()
|
|
1119
|
-
processing_task = None
|
|
1120
1133
|
|
|
1121
1134
|
try:
|
|
1122
|
-
user_message = input_task.result()
|
|
1135
|
+
user_message = self.io.input_task.result()
|
|
1136
|
+
await self.io.cancel_input_task()
|
|
1123
1137
|
except (asyncio.CancelledError, KeyboardInterrupt):
|
|
1124
1138
|
user_message = None
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1139
|
+
|
|
1140
|
+
if not user_message:
|
|
1141
|
+
await self.io.cancel_input_task()
|
|
1128
1142
|
continue
|
|
1129
1143
|
|
|
1130
|
-
if processing_task and processing_task in
|
|
1144
|
+
if self.io.processing_task and self.io.processing_task in pending:
|
|
1131
1145
|
try:
|
|
1132
|
-
|
|
1146
|
+
tasks = set()
|
|
1147
|
+
tasks.add(self.io.processing_task)
|
|
1148
|
+
|
|
1149
|
+
# We just did a confirmation so add a new input task
|
|
1150
|
+
if (
|
|
1151
|
+
not self.io.input_task
|
|
1152
|
+
and self.io.get_confirmation_acknowledgement()
|
|
1153
|
+
):
|
|
1154
|
+
self.io.input_task = asyncio.create_task(self.get_input())
|
|
1155
|
+
tasks.add(self.io.input_task)
|
|
1156
|
+
|
|
1157
|
+
done, pending = await asyncio.wait(
|
|
1158
|
+
tasks, return_when=asyncio.FIRST_COMPLETED
|
|
1159
|
+
)
|
|
1160
|
+
|
|
1161
|
+
if self.io.input_task and self.io.input_task in done:
|
|
1162
|
+
await self.io.cancel_processing_task()
|
|
1163
|
+
self.io.stop_spinner()
|
|
1164
|
+
self.io.acknowledge_confirmation()
|
|
1165
|
+
|
|
1166
|
+
try:
|
|
1167
|
+
user_message = self.io.input_task.result()
|
|
1168
|
+
await self.io.cancel_input_task()
|
|
1169
|
+
except (asyncio.CancelledError, KeyboardInterrupt):
|
|
1170
|
+
user_message = None
|
|
1171
|
+
|
|
1133
1172
|
except (asyncio.CancelledError, KeyboardInterrupt):
|
|
1173
|
+
print("error of some sort")
|
|
1134
1174
|
pass
|
|
1135
|
-
|
|
1175
|
+
|
|
1136
1176
|
# Stop spinner when processing task completes
|
|
1137
1177
|
self.io.stop_spinner()
|
|
1138
1178
|
|
|
1139
|
-
if user_message and
|
|
1140
|
-
processing_task = asyncio.create_task(
|
|
1179
|
+
if user_message and not self.io.acknowledge_confirmation():
|
|
1180
|
+
self.io.processing_task = asyncio.create_task(
|
|
1141
1181
|
self._processing_logic(user_message, preproc)
|
|
1142
1182
|
)
|
|
1143
1183
|
# Start spinner for processing task
|
|
1144
1184
|
self.io.start_spinner("Processing...")
|
|
1145
|
-
|
|
1185
|
+
|
|
1186
|
+
self.io.ring_bell()
|
|
1187
|
+
user_message = None
|
|
1146
1188
|
except KeyboardInterrupt:
|
|
1147
|
-
if
|
|
1148
|
-
processing_task.cancel()
|
|
1149
|
-
processing_task = None
|
|
1150
|
-
# Stop spinner when processing task is cancelled
|
|
1151
|
-
self.io.stop_spinner()
|
|
1152
|
-
if input_task:
|
|
1189
|
+
if self.io.input_task:
|
|
1153
1190
|
self.io.set_placeholder("")
|
|
1154
|
-
|
|
1155
|
-
|
|
1191
|
+
await self.io.cancel_input_task()
|
|
1192
|
+
|
|
1193
|
+
if self.io.processing_task:
|
|
1194
|
+
await self.io.cancel_processing_task()
|
|
1195
|
+
self.io.stop_spinner()
|
|
1196
|
+
|
|
1156
1197
|
self.keyboard_interrupt()
|
|
1157
1198
|
except EOFError:
|
|
1158
1199
|
return
|
|
1159
1200
|
finally:
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
if processing_task:
|
|
1163
|
-
processing_task.cancel()
|
|
1201
|
+
await self.io.cancel_input_task()
|
|
1202
|
+
await self.io.cancel_processing_task()
|
|
1164
1203
|
|
|
1165
1204
|
async def _processing_logic(self, user_message, preproc):
|
|
1166
1205
|
try:
|
|
@@ -1188,6 +1227,7 @@ class Coder:
|
|
|
1188
1227
|
all_read_only_files = [self.get_rel_fname(fname) for fname in all_read_only_fnames]
|
|
1189
1228
|
all_files = sorted(set(inchat_files + all_read_only_files))
|
|
1190
1229
|
edit_format = "" if self.edit_format == self.main_model.edit_format else self.edit_format
|
|
1230
|
+
|
|
1191
1231
|
return await self.io.get_input(
|
|
1192
1232
|
self.root,
|
|
1193
1233
|
all_files,
|
|
@@ -1214,6 +1254,8 @@ class Coder:
|
|
|
1214
1254
|
self.init_before_message()
|
|
1215
1255
|
|
|
1216
1256
|
if preproc:
|
|
1257
|
+
if user_message[0] in "!":
|
|
1258
|
+
user_message = f"/run {user_message[1:]}"
|
|
1217
1259
|
message = await self.preproc_user_input(user_message)
|
|
1218
1260
|
else:
|
|
1219
1261
|
message = user_message
|
|
@@ -2704,7 +2746,7 @@ class Coder:
|
|
|
2704
2746
|
|
|
2705
2747
|
async for chunk in completion:
|
|
2706
2748
|
# Check if confirmation is in progress and wait if needed
|
|
2707
|
-
while self.confirmation_in_progress:
|
|
2749
|
+
while self.io.confirmation_in_progress:
|
|
2708
2750
|
await asyncio.sleep(0.1) # Yield control and wait briefly
|
|
2709
2751
|
|
|
2710
2752
|
if isinstance(chunk, str):
|
|
@@ -320,6 +320,7 @@ class InputOutput:
|
|
|
320
320
|
root=".",
|
|
321
321
|
notifications=False,
|
|
322
322
|
notifications_command=None,
|
|
323
|
+
verbose=False,
|
|
323
324
|
):
|
|
324
325
|
self.console = Console()
|
|
325
326
|
self.pretty = pretty
|
|
@@ -337,6 +338,8 @@ class InputOutput:
|
|
|
337
338
|
self.multiline_mode = multiline_mode
|
|
338
339
|
self.bell_on_next_input = False
|
|
339
340
|
self.notifications = notifications
|
|
341
|
+
self.verbose = verbose
|
|
342
|
+
|
|
340
343
|
if notifications and notifications_command is None:
|
|
341
344
|
self.notifications_command = self.get_default_notification_command()
|
|
342
345
|
else:
|
|
@@ -363,7 +366,7 @@ class InputOutput:
|
|
|
363
366
|
)
|
|
364
367
|
|
|
365
368
|
self.fzf_available = shutil.which("fzf")
|
|
366
|
-
if not self.fzf_available:
|
|
369
|
+
if not self.fzf_available and self.verbose:
|
|
367
370
|
self.tool_warning(
|
|
368
371
|
"fzf not found, fuzzy finder features will be disabled. Install it for enhanced"
|
|
369
372
|
" file/history search."
|
|
@@ -418,13 +421,14 @@ class InputOutput:
|
|
|
418
421
|
self.pretty = False
|
|
419
422
|
fancy_input = False
|
|
420
423
|
|
|
424
|
+
# Spinner state
|
|
425
|
+
self.spinner_running = False
|
|
426
|
+
self.spinner_text = ""
|
|
427
|
+
self.spinner_frame_index = 0
|
|
428
|
+
self.spinner_last_frame_index = 0
|
|
429
|
+
self.unicode_palette = "░█"
|
|
430
|
+
|
|
421
431
|
if fancy_input:
|
|
422
|
-
# Spinner state
|
|
423
|
-
self.spinner_running = False
|
|
424
|
-
self.spinner_text = ""
|
|
425
|
-
self.spinner_frame_index = 0
|
|
426
|
-
self.spinner_last_frame_index = 0
|
|
427
|
-
self.unicode_palette = "░█"
|
|
428
432
|
# If unicode is supported, use the rich 'dots2' spinner, otherwise an ascii fallback
|
|
429
433
|
if self._spinner_supports_unicode():
|
|
430
434
|
self.spinner_frames = SPINNERS["dots2"]["frames"]
|
|
@@ -459,7 +463,18 @@ class InputOutput:
|
|
|
459
463
|
self.file_watcher = file_watcher
|
|
460
464
|
self.root = root
|
|
461
465
|
self.outstanding_confirmations = []
|
|
466
|
+
|
|
467
|
+
# Variables used to interface with base_coder
|
|
462
468
|
self.coder = None
|
|
469
|
+
self.input_task = None
|
|
470
|
+
self.processing_task = None
|
|
471
|
+
self.confirmation_in_progress = False
|
|
472
|
+
self.confirmation_acknowledgement = False
|
|
473
|
+
|
|
474
|
+
# State tracking for confirmation input
|
|
475
|
+
self.confirmation_input_active = False
|
|
476
|
+
self.saved_input_text = ""
|
|
477
|
+
self.confirmation_future = None
|
|
463
478
|
|
|
464
479
|
# Validate color settings after console is initialized
|
|
465
480
|
self._validate_color_settings()
|
|
@@ -656,16 +671,8 @@ class InputOutput:
|
|
|
656
671
|
print()
|
|
657
672
|
|
|
658
673
|
def interrupt_input(self):
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
if (
|
|
663
|
-
coder
|
|
664
|
-
and hasattr(coder, "input_task")
|
|
665
|
-
and coder.input_task
|
|
666
|
-
and not coder.input_task.done()
|
|
667
|
-
):
|
|
668
|
-
coder.input_task.cancel()
|
|
674
|
+
if self.input_task and not self.input_task.done():
|
|
675
|
+
self.input_task.cancel()
|
|
669
676
|
|
|
670
677
|
if self.prompt_session and self.prompt_session.app:
|
|
671
678
|
# Store any partial input before interrupting
|
|
@@ -697,9 +704,6 @@ class InputOutput:
|
|
|
697
704
|
self.reject_outstanding_confirmations()
|
|
698
705
|
self.rule()
|
|
699
706
|
|
|
700
|
-
# Ring the bell if needed
|
|
701
|
-
self.ring_bell()
|
|
702
|
-
|
|
703
707
|
rel_fnames = list(rel_fnames)
|
|
704
708
|
show = ""
|
|
705
709
|
if rel_fnames:
|
|
@@ -878,6 +882,11 @@ class InputOutput:
|
|
|
878
882
|
self.tool_error(str(err))
|
|
879
883
|
return ""
|
|
880
884
|
except Exception as err:
|
|
885
|
+
try:
|
|
886
|
+
self.prompt_session.app.exit()
|
|
887
|
+
except Exception:
|
|
888
|
+
pass
|
|
889
|
+
|
|
881
890
|
import traceback
|
|
882
891
|
|
|
883
892
|
self.tool_error(str(err))
|
|
@@ -930,6 +939,26 @@ class InputOutput:
|
|
|
930
939
|
self.user_input(inp)
|
|
931
940
|
return inp
|
|
932
941
|
|
|
942
|
+
async def cancel_input_task(self):
|
|
943
|
+
if self.input_task:
|
|
944
|
+
input_task = self.input_task
|
|
945
|
+
self.input_task = None
|
|
946
|
+
try:
|
|
947
|
+
input_task.cancel()
|
|
948
|
+
await input_task
|
|
949
|
+
except asyncio.CancelledError:
|
|
950
|
+
pass
|
|
951
|
+
|
|
952
|
+
async def cancel_processing_task(self):
|
|
953
|
+
if self.processing_task:
|
|
954
|
+
processing_task = self.processing_task
|
|
955
|
+
self.processing_task = None
|
|
956
|
+
try:
|
|
957
|
+
processing_task.cancel()
|
|
958
|
+
await processing_task
|
|
959
|
+
except asyncio.CancelledError:
|
|
960
|
+
pass
|
|
961
|
+
|
|
933
962
|
def add_to_input_history(self, inp):
|
|
934
963
|
if not self.input_history_file:
|
|
935
964
|
return
|
|
@@ -1000,32 +1029,33 @@ class InputOutput:
|
|
|
1000
1029
|
return True
|
|
1001
1030
|
return False
|
|
1002
1031
|
|
|
1032
|
+
def set_confirmation_acknowledgement(self):
|
|
1033
|
+
self.confirmation_acknowledgement = True
|
|
1034
|
+
|
|
1035
|
+
def get_confirmation_acknowledgement(self):
|
|
1036
|
+
return self.confirmation_acknowledgement
|
|
1037
|
+
|
|
1038
|
+
def acknowledge_confirmation(self):
|
|
1039
|
+
outstanding_confirmation = self.confirmation_acknowledgement
|
|
1040
|
+
self.confirmation_acknowledgement = False
|
|
1041
|
+
return outstanding_confirmation
|
|
1042
|
+
|
|
1003
1043
|
@restore_multiline_async
|
|
1004
1044
|
async def confirm_ask(
|
|
1005
1045
|
self,
|
|
1006
1046
|
*args,
|
|
1007
1047
|
**kwargs,
|
|
1008
1048
|
):
|
|
1009
|
-
|
|
1010
|
-
interrupted_for_confirmation = False
|
|
1011
|
-
if (
|
|
1012
|
-
coder
|
|
1013
|
-
and hasattr(coder, "input_task")
|
|
1014
|
-
and coder.input_task
|
|
1015
|
-
and not coder.input_task.done()
|
|
1016
|
-
):
|
|
1017
|
-
coder.confirmation_in_progress = True
|
|
1018
|
-
interrupted_for_confirmation = True
|
|
1019
|
-
# self.interrupt_input()
|
|
1049
|
+
self.confirmation_in_progress = True
|
|
1020
1050
|
|
|
1021
1051
|
try:
|
|
1052
|
+
self.set_confirmation_acknowledgement()
|
|
1022
1053
|
return await asyncio.create_task(self._confirm_ask(*args, **kwargs))
|
|
1023
1054
|
except KeyboardInterrupt:
|
|
1024
1055
|
# Re-raise KeyboardInterrupt to allow it to propagate
|
|
1025
1056
|
raise
|
|
1026
1057
|
finally:
|
|
1027
|
-
|
|
1028
|
-
coder.confirmation_in_progress = False
|
|
1058
|
+
self.confirmation_in_progress = False
|
|
1029
1059
|
|
|
1030
1060
|
async def _confirm_ask(
|
|
1031
1061
|
self,
|
|
@@ -1038,9 +1068,6 @@ class InputOutput:
|
|
|
1038
1068
|
):
|
|
1039
1069
|
self.num_user_asks += 1
|
|
1040
1070
|
|
|
1041
|
-
# Ring the bell if needed
|
|
1042
|
-
self.ring_bell()
|
|
1043
|
-
|
|
1044
1071
|
question_id = (question, subject)
|
|
1045
1072
|
|
|
1046
1073
|
confirmation_future = asyncio.get_running_loop().create_future()
|
|
@@ -1085,47 +1112,45 @@ class InputOutput:
|
|
|
1085
1112
|
else:
|
|
1086
1113
|
self.tool_output(subject, bold=True)
|
|
1087
1114
|
|
|
1088
|
-
style = self._get_style()
|
|
1089
|
-
|
|
1090
1115
|
if self.yes is True:
|
|
1091
1116
|
res = "n" if explicit_yes_required else "y"
|
|
1117
|
+
self.acknowledge_confirmation()
|
|
1092
1118
|
elif self.yes is False:
|
|
1093
1119
|
res = "n"
|
|
1120
|
+
self.acknowledge_confirmation()
|
|
1094
1121
|
elif group and group.preference:
|
|
1095
1122
|
res = group.preference
|
|
1096
1123
|
self.user_input(f"{question}{res}", log_only=False)
|
|
1124
|
+
self.acknowledge_confirmation()
|
|
1097
1125
|
else:
|
|
1126
|
+
# Ring the bell if needed
|
|
1127
|
+
self.ring_bell()
|
|
1128
|
+
|
|
1098
1129
|
while True:
|
|
1099
1130
|
try:
|
|
1100
1131
|
if self.prompt_session:
|
|
1101
|
-
coder = self.coder() if self.coder else None
|
|
1102
1132
|
if (
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1133
|
+
not self.input_task
|
|
1134
|
+
or self.input_task.done()
|
|
1135
|
+
or self.input_task.cancelled()
|
|
1136
|
+
):
|
|
1137
|
+
coder = self.coder() if self.coder else None
|
|
1138
|
+
|
|
1139
|
+
if coder:
|
|
1140
|
+
self.input_task = asyncio.create_task(coder.get_input())
|
|
1141
|
+
await asyncio.sleep(0)
|
|
1142
|
+
|
|
1143
|
+
if (
|
|
1144
|
+
self.input_task
|
|
1145
|
+
and not self.input_task.done()
|
|
1146
|
+
and not self.input_task.cancelled()
|
|
1107
1147
|
):
|
|
1108
1148
|
self.prompt_session.message = question
|
|
1109
1149
|
self.prompt_session.app.invalidate()
|
|
1110
|
-
res = await coder.input_task
|
|
1111
1150
|
else:
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
style=style,
|
|
1116
|
-
complete_while_typing=False,
|
|
1117
|
-
)
|
|
1118
|
-
)
|
|
1119
|
-
done, pending = await asyncio.wait(
|
|
1120
|
-
{prompt_task, confirmation_future},
|
|
1121
|
-
return_when=asyncio.FIRST_COMPLETED,
|
|
1122
|
-
)
|
|
1123
|
-
|
|
1124
|
-
if confirmation_future in done:
|
|
1125
|
-
prompt_task.cancel()
|
|
1126
|
-
return await confirmation_future
|
|
1127
|
-
|
|
1128
|
-
res = await prompt_task
|
|
1151
|
+
continue
|
|
1152
|
+
|
|
1153
|
+
res = await self.input_task
|
|
1129
1154
|
else:
|
|
1130
1155
|
res = await asyncio.get_event_loop().run_in_executor(
|
|
1131
1156
|
None, input, question
|
|
@@ -1240,17 +1265,22 @@ class InputOutput:
|
|
|
1240
1265
|
|
|
1241
1266
|
if not isinstance(message, Text):
|
|
1242
1267
|
message = Text(message)
|
|
1243
|
-
|
|
1244
|
-
style = dict(
|
|
1268
|
+
|
|
1269
|
+
style = dict()
|
|
1270
|
+
|
|
1271
|
+
if self.pretty:
|
|
1272
|
+
color = ensure_hash_prefix(color) if color else None
|
|
1273
|
+
if color:
|
|
1274
|
+
style["color"] = color
|
|
1245
1275
|
|
|
1246
1276
|
try:
|
|
1247
|
-
self.stream_print(message, **style)
|
|
1277
|
+
self.stream_print(message, style=RichStyle(**style))
|
|
1248
1278
|
except UnicodeEncodeError:
|
|
1249
1279
|
# Fallback to ASCII-safe output
|
|
1250
1280
|
if isinstance(message, Text):
|
|
1251
1281
|
message = message.plain
|
|
1252
1282
|
message = str(message).encode("ascii", errors="replace").decode("ascii")
|
|
1253
|
-
self.stream_print(message, **style)
|
|
1283
|
+
self.stream_print(message, style=RichStyle(**style))
|
|
1254
1284
|
|
|
1255
1285
|
if self.prompt_session and self.prompt_session.app:
|
|
1256
1286
|
self.prompt_session.app.invalidate()
|
|
@@ -601,6 +601,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
|
|
|
601
601
|
multiline_mode=args.multiline,
|
|
602
602
|
notifications=args.notifications,
|
|
603
603
|
notifications_command=args.notifications_command,
|
|
604
|
+
verbose=args.verbose,
|
|
604
605
|
)
|
|
605
606
|
|
|
606
607
|
io = get_io(args.pretty)
|
|
@@ -8,7 +8,7 @@ model_warnings = "https://aider.chat/docs/llms/warnings.html"
|
|
|
8
8
|
token_limits = "https://aider.chat/docs/troubleshooting/token-limits.html"
|
|
9
9
|
llms = "https://aider.chat/docs/llms.html"
|
|
10
10
|
large_repos = "https://aider.chat/docs/faq.html#can-i-use-aider-in-a-large-mono-repo"
|
|
11
|
-
github_issues = "https://github.com/
|
|
11
|
+
github_issues = "https://github.com/dwash96/aider-ce/issues/new"
|
|
12
12
|
git_index_version = "https://github.com/Aider-AI/aider/issues/211"
|
|
13
13
|
install_properly = "https://aider.chat/docs/troubleshooting/imports.html"
|
|
14
14
|
analytics = "https://aider.chat/docs/more/analytics.html"
|
|
@@ -7,6 +7,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
7
7
|
from prompt_toolkit.completion import CompleteEvent
|
|
8
8
|
from prompt_toolkit.document import Document
|
|
9
9
|
|
|
10
|
+
from aider.coders import Coder
|
|
10
11
|
from aider.dump import dump # noqa: F401
|
|
11
12
|
from aider.io import AutoCompleter, ConfirmGroup, InputOutput
|
|
12
13
|
from aider.utils import ChdirTemporaryDirectory
|
|
@@ -389,10 +390,11 @@ class TestInputOutputMultilineMode(unittest.TestCase):
|
|
|
389
390
|
# The invalid Unicode should be replaced with '?'
|
|
390
391
|
self.assertEqual(converted_message, "Hello ?World")
|
|
391
392
|
|
|
392
|
-
def test_multiline_mode_restored_after_interrupt(self):
|
|
393
|
+
async def test_multiline_mode_restored_after_interrupt(self):
|
|
393
394
|
"""Test that multiline mode is restored after KeyboardInterrupt"""
|
|
394
395
|
io = InputOutput(fancy_input=True)
|
|
395
396
|
io.prompt_session = MagicMock()
|
|
397
|
+
await Coder.create(self.GPT35, None, io)
|
|
396
398
|
|
|
397
399
|
# Use AsyncMock for prompt_async (for confirm_ask)
|
|
398
400
|
io.prompt_session.prompt_async = AsyncMock(side_effect=KeyboardInterrupt)
|
|
@@ -413,10 +415,11 @@ class TestInputOutputMultilineMode(unittest.TestCase):
|
|
|
413
415
|
io.prompt_ask("Test prompt?")
|
|
414
416
|
self.assertTrue(io.multiline_mode) # Should be restored
|
|
415
417
|
|
|
416
|
-
def test_multiline_mode_restored_after_normal_exit(self):
|
|
418
|
+
async def test_multiline_mode_restored_after_normal_exit(self):
|
|
417
419
|
"""Test that multiline mode is restored after normal exit"""
|
|
418
420
|
io = InputOutput(fancy_input=True)
|
|
419
421
|
io.prompt_session = MagicMock()
|
|
422
|
+
await Coder.create(self.GPT35, None, io)
|
|
420
423
|
|
|
421
424
|
# Use AsyncMock for prompt_async that returns "y"
|
|
422
425
|
io.prompt_session.prompt_async = AsyncMock(return_value="y")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|