aider-ce 0.87.6.dev1__tar.gz → 0.87.8.dev9__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.87.6.dev1/aider_ce.egg-info → aider_ce-0.87.8.dev9}/PKG-INFO +5 -1
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/README.md +4 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/__init__.py +1 -1
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/_version.py +3 -3
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/base_coder.py +73 -9
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/commands.py +206 -66
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/help.py +1 -1
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/io.py +86 -35
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/main.py +2 -1
- aider_ce-0.87.8.dev9/aider/queries/tree-sitter-languages/julia-tags.scm +60 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/repomap.py +41 -2
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/scrape.py +1 -1
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9/aider_ce.egg-info}/PKG-INFO +5 -1
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/SOURCES.txt +1 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/README.md +1 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/benchmark.py +278 -72
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_io.py +45 -22
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.dockerignore +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.flake8 +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/check_pypi_version.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/docker-build-test.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/docker-release.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/issues.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/pages.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/pre-commit.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/release.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/ubuntu-tests.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/windows-tests.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.gitignore +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/.pre-commit-config.yaml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/CNAME +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/CONTRIBUTING.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/HISTORY.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/LICENSE.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/MANIFEST.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/__main__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/analytics.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/args.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/args_formatter.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/change_tracker.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/architect_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/architect_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/ask_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/ask_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/base_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/chat_chunks.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/context_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/context_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editblock_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/help_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/help_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/navigator_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/navigator_legacy_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/navigator_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/patch_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/patch_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/search_replace.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/shell.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/udiff_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/udiff_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/copypaste.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/deprecated.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/diffs.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/dump.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/editor.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/exceptions.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/format_settings.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/gui.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/help_pats.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/history.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/linter.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/llm.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/mcp/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/mcp/server.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/mdstream.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/models.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/onboarding.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/openrouter.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/README.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/README.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/reasoning_tags.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/repo.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/report.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/resources/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/resources/model-metadata.json +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/resources/model-settings.yml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/run_cmd.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/sendchat.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/special.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/command.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/command_interactive.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/delete_block.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/delete_line.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/delete_lines.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/extract_lines.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/grep.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/indent_lines.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/insert_block.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/list_changes.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/ls.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/make_editable.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/make_readonly.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/remove.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/replace_all.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/replace_line.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/replace_lines.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/replace_text.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/show_numbered_context.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/tool_utils.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/undo_change.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/view.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/view_files_at_glob.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/view_files_matching.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/tools/view_files_with_symbol.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/urls.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/utils.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/versioncheck.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/voice.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/waiting.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/watch.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/watch_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/Gemfile +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/blame.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/get-started.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/help-tip.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/help.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/install.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/keys.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/model-warnings.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/multi-line.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/python-m-aider.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.css +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/replit-pipx.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_includes/works-best.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/_sass/custom/custom.scss +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/adv-model-settings.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/aider_conf.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/api-keys.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/dotenv.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/editor.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/mcp.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/model-aliases.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/options.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config/reasoning.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/config.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/faq.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/git.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/index.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/install/codespaces.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/install/docker.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/install/optional.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/install/replit.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/install.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/languages.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/contributor-agreement.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/privacy.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/anthropic.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/azure.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/bedrock.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/cohere.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/deepseek.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/gemini.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/github.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/groq.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/lm-studio.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/ollama.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai-compat.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openrouter.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/other.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/vertex.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/warnings.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/xai.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/llms.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/more/analytics.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/more/edit-formats.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/more/infinite-output.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/more-info.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/index.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/repomap.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/scripting.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/imports.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/support.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/token-limits.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/warnings.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/browser.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/caching.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/commands.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/conventions.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/copypaste.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/images-urls.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/lint-test.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/modes.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/not-code.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/notifications.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tips.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tutorials.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/voice.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/watch.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/docs/usage.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider/website/share/index.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/dependency_links.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/entry_points.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/requires.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/top_level.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/Dockerfile +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/clone-exercism.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/cpp-test.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/docker.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/docker_build.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/install-docker-ubuntu.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/npm-test.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/over_time.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/plot.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/plots.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/problem_stats.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/refactor_tools.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/rsync.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/rungrid.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/swe-bench-lite.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/swe-bench.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/swe_bench.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/benchmark/test_benchmark.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/docker/Dockerfile +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/pyproject.toml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/pytest.ini +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/common-constraints.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-help.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-help.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/requirements.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements/tree-sitter.in +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/requirements.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/30k-image.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/Dockerfile.jekyll +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/blame.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/clean_metadata.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/dl_icons.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/history_prompts.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/homepage.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/issues.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/jekyll_build.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/jekyll_run.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/logo_svg.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/my_models.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/pip-compile.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/recording_audio.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/redact-cast.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/tmux_record.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/tsl_pack_langs.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/update-blame.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/update-docs.sh +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/update-history.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/versionbump.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/scripts/yank-old-versions.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/setup.cfg +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/__init__.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_analytics.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_aws_credentials.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_coder.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_commands.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_deprecated.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_editblock.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_editor.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_exceptions.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_find_or_blocks.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_history.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_linter.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_main.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_model_info_manager.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_models.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_onboarding.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_openrouter.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_reasoning.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_repo.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_repomap.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_run_cmd.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_sanity_check_repo.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_scripting.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_sendchat.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_special.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_ssl_verification.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_udiff.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_urls.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_voice.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_watch.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/basic/test_wholefile.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/browser/test_browser.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history.md +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/arduino/test.ino +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/c/test.c +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/clojure/test.clj +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/csharp/test.cs +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/d/test.d +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/dart/test.dart +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elisp/test.el +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elixir/test.ex +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elm/test.elm +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/go/test.go +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/hcl/test.tf +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/java/test.java +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/javascript/test.js +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/lua/test.lua +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/matlab/test.m +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/php/test.php +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/pony/test.pony +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/properties/test.properties +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/python/test.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ql/test.ql +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/r/test.r +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/racket/test.rkt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ruby/test.rb +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/rust/test.rs +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/scala/test.scala +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/solidity/test.sol +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/swift/test.swift +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/typescript/test.ts +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/udev/test.rules +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.js +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.js +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.lisp +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/fixtures/watch_question.js +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/help/test_help.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/scrape/test_playwright_disable.py +0 -0
- {aider_ce-0.87.6.dev1 → aider_ce-0.87.8.dev9}/tests/scrape/test_scrape.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aider-ce
|
|
3
|
-
Version: 0.87.
|
|
3
|
+
Version: 0.87.8.dev9
|
|
4
4
|
Summary: Aider is AI pair programming in your terminal
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/aider-ce
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -93,6 +93,7 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
93
93
|
* [Map Cache Location Config: #2911](https://github.com/Aider-AI/aider/pull/2911)
|
|
94
94
|
* [Enhanced System Prompts: #3804](https://github.com/Aider-AI/aider/pull/3804)
|
|
95
95
|
* [Repo Map File Name Truncation Fix: #4320](https://github.com/Aider-AI/aider/pull/4320)
|
|
96
|
+
* [Read Only Stub Files For Context Window Management : #3056](https://github.com/Aider-AI/aider/pull/3056)
|
|
96
97
|
|
|
97
98
|
### Other Updates
|
|
98
99
|
|
|
@@ -108,6 +109,9 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
108
109
|
* [Edit Before Adding Files and Reflecting](https://github.com/dwash96/aider-ce/pull/22)
|
|
109
110
|
* [Fix Deepseek model configurations](https://github.com/Aider-AI/aider/commit/c839a6dd8964d702172cae007375e299732d3823)
|
|
110
111
|
* [Relax Version Pinning For Easier Distribution](https://github.com/dwash96/aider-ce/issues/18)
|
|
112
|
+
* [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
|
|
113
|
+
* [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
|
|
114
|
+
* [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
|
|
111
115
|
|
|
112
116
|
### Other Notes
|
|
113
117
|
* [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
|
|
@@ -13,6 +13,7 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
13
13
|
* [Map Cache Location Config: #2911](https://github.com/Aider-AI/aider/pull/2911)
|
|
14
14
|
* [Enhanced System Prompts: #3804](https://github.com/Aider-AI/aider/pull/3804)
|
|
15
15
|
* [Repo Map File Name Truncation Fix: #4320](https://github.com/Aider-AI/aider/pull/4320)
|
|
16
|
+
* [Read Only Stub Files For Context Window Management : #3056](https://github.com/Aider-AI/aider/pull/3056)
|
|
16
17
|
|
|
17
18
|
### Other Updates
|
|
18
19
|
|
|
@@ -28,6 +29,9 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
28
29
|
* [Edit Before Adding Files and Reflecting](https://github.com/dwash96/aider-ce/pull/22)
|
|
29
30
|
* [Fix Deepseek model configurations](https://github.com/Aider-AI/aider/commit/c839a6dd8964d702172cae007375e299732d3823)
|
|
30
31
|
* [Relax Version Pinning For Easier Distribution](https://github.com/dwash96/aider-ce/issues/18)
|
|
32
|
+
* [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
|
|
33
|
+
* [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
|
|
34
|
+
* [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
|
|
31
35
|
|
|
32
36
|
### Other Notes
|
|
33
37
|
* [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
|
|
@@ -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.87.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 87,
|
|
31
|
+
__version__ = version = '0.87.8.dev9'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 87, 8, 'dev9')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g7cd8a6bf1'
|
|
@@ -91,6 +91,7 @@ all_fences = [
|
|
|
91
91
|
class Coder:
|
|
92
92
|
abs_fnames = None
|
|
93
93
|
abs_read_only_fnames = None
|
|
94
|
+
abs_read_only_stubs_fnames = None
|
|
94
95
|
repo = None
|
|
95
96
|
last_aider_commit_hash = None
|
|
96
97
|
aider_edited_files = None
|
|
@@ -184,8 +185,10 @@ class Coder:
|
|
|
184
185
|
# Bring along context from the old Coder
|
|
185
186
|
update = dict(
|
|
186
187
|
fnames=list(from_coder.abs_fnames),
|
|
187
|
-
# Copy read-only files
|
|
188
|
-
|
|
188
|
+
read_only_fnames=list(from_coder.abs_read_only_fnames), # Copy read-only files
|
|
189
|
+
read_only_stubs_fnames=list(
|
|
190
|
+
from_coder.abs_read_only_stubs_fnames
|
|
191
|
+
), # Copy read-only stubs
|
|
189
192
|
done_messages=done_messages,
|
|
190
193
|
cur_messages=from_coder.cur_messages,
|
|
191
194
|
aider_commit_hashes=from_coder.aider_commit_hashes,
|
|
@@ -301,6 +304,10 @@ class Coder:
|
|
|
301
304
|
rel_fname = self.get_rel_fname(fname)
|
|
302
305
|
lines.append(f"Added {rel_fname} to the chat (read-only).")
|
|
303
306
|
|
|
307
|
+
for fname in self.abs_read_only_stubs_fnames:
|
|
308
|
+
rel_fname = self.get_rel_fname(fname)
|
|
309
|
+
lines.append(f"Added {rel_fname} to the chat (read-only stub).")
|
|
310
|
+
|
|
304
311
|
if self.done_messages:
|
|
305
312
|
lines.append("Restored previous conversation history.")
|
|
306
313
|
|
|
@@ -319,6 +326,7 @@ class Coder:
|
|
|
319
326
|
fnames=None,
|
|
320
327
|
add_gitignore_files=False,
|
|
321
328
|
read_only_fnames=None,
|
|
329
|
+
read_only_stubs_fnames=None,
|
|
322
330
|
show_diffs=False,
|
|
323
331
|
auto_commits=True,
|
|
324
332
|
dirty_commits=True,
|
|
@@ -359,6 +367,7 @@ class Coder:
|
|
|
359
367
|
context_compaction_max_tokens=None,
|
|
360
368
|
context_compaction_summary_tokens=8192,
|
|
361
369
|
map_cache_dir=".",
|
|
370
|
+
repomap_in_memory=False,
|
|
362
371
|
):
|
|
363
372
|
# initialize from args.map_cache_dir
|
|
364
373
|
self.map_cache_dir = map_cache_dir
|
|
@@ -420,6 +429,7 @@ class Coder:
|
|
|
420
429
|
self.abs_fnames = set()
|
|
421
430
|
self.abs_read_only_fnames = set()
|
|
422
431
|
self.add_gitignore_files = add_gitignore_files
|
|
432
|
+
self.abs_read_only_stubs_fnames = set()
|
|
423
433
|
|
|
424
434
|
if cur_messages:
|
|
425
435
|
self.cur_messages = cur_messages
|
|
@@ -513,6 +523,17 @@ class Coder:
|
|
|
513
523
|
else:
|
|
514
524
|
self.io.tool_warning(f"Error: Read-only file {fname} does not exist. Skipping.")
|
|
515
525
|
|
|
526
|
+
if read_only_stubs_fnames:
|
|
527
|
+
self.abs_read_only_stubs_fnames = set()
|
|
528
|
+
for fname in read_only_stubs_fnames:
|
|
529
|
+
abs_fname = self.abs_root_path(fname)
|
|
530
|
+
if os.path.exists(abs_fname):
|
|
531
|
+
self.abs_read_only_stubs_fnames.add(abs_fname)
|
|
532
|
+
else:
|
|
533
|
+
self.io.tool_warning(
|
|
534
|
+
f"Error: Read-only (stub) file {fname} does not exist. Skipping."
|
|
535
|
+
)
|
|
536
|
+
|
|
516
537
|
if map_tokens is None:
|
|
517
538
|
use_repo_map = main_model.use_repo_map
|
|
518
539
|
map_tokens = 1024
|
|
@@ -535,6 +556,8 @@ class Coder:
|
|
|
535
556
|
map_mul_no_files=map_mul_no_files,
|
|
536
557
|
refresh=map_refresh,
|
|
537
558
|
max_code_line_length=map_max_line_length,
|
|
559
|
+
repo_root=self.root,
|
|
560
|
+
use_memory_cache=repomap_in_memory,
|
|
538
561
|
)
|
|
539
562
|
|
|
540
563
|
self.summarizer = summarizer or ChatSummary(
|
|
@@ -647,6 +670,10 @@ class Coder:
|
|
|
647
670
|
content = self.io.read_text(_fname)
|
|
648
671
|
if content is not None:
|
|
649
672
|
all_content += content + "\n"
|
|
673
|
+
for _fname in self.abs_read_only_stubs_fnames:
|
|
674
|
+
content = self.io.read_text(_fname)
|
|
675
|
+
if content is not None:
|
|
676
|
+
all_content += content + "\n"
|
|
650
677
|
|
|
651
678
|
lines = all_content.splitlines()
|
|
652
679
|
good = False
|
|
@@ -720,6 +747,7 @@ class Coder:
|
|
|
720
747
|
|
|
721
748
|
def get_read_only_files_content(self):
|
|
722
749
|
prompt = ""
|
|
750
|
+
# Handle regular read-only files
|
|
723
751
|
for fname in self.abs_read_only_fnames:
|
|
724
752
|
content = self.io.read_text(fname)
|
|
725
753
|
if content is not None and not is_image_file(fname):
|
|
@@ -764,6 +792,17 @@ class Coder:
|
|
|
764
792
|
prompt += content
|
|
765
793
|
|
|
766
794
|
prompt += f"{self.fence[1]}\n"
|
|
795
|
+
|
|
796
|
+
# Handle stub files
|
|
797
|
+
for fname in self.abs_read_only_stubs_fnames:
|
|
798
|
+
if not is_image_file(fname):
|
|
799
|
+
relative_fname = self.get_rel_fname(fname)
|
|
800
|
+
prompt += "\n"
|
|
801
|
+
prompt += f"{relative_fname} (stub)"
|
|
802
|
+
prompt += f"\n{self.fence[0]}\n"
|
|
803
|
+
stub = self.get_file_stub(fname)
|
|
804
|
+
prompt += stub
|
|
805
|
+
prompt += f"{self.fence[1]}\n"
|
|
767
806
|
return prompt
|
|
768
807
|
|
|
769
808
|
def get_cur_message_text(self):
|
|
@@ -817,8 +856,24 @@ class Coder:
|
|
|
817
856
|
mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents))
|
|
818
857
|
|
|
819
858
|
all_abs_files = set(self.get_all_abs_files())
|
|
859
|
+
|
|
860
|
+
# Exclude metadata/docs from repo map inputs to reduce parsing overhead
|
|
861
|
+
def _include_in_map(abs_path):
|
|
862
|
+
try:
|
|
863
|
+
rel = self.get_rel_fname(abs_path)
|
|
864
|
+
except Exception:
|
|
865
|
+
rel = str(abs_path)
|
|
866
|
+
parts = Path(rel).parts
|
|
867
|
+
if ".meta" in parts or ".docs" in parts:
|
|
868
|
+
return False
|
|
869
|
+
return True
|
|
870
|
+
|
|
871
|
+
all_abs_files = {p for p in all_abs_files if _include_in_map(p)}
|
|
820
872
|
repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files
|
|
821
|
-
|
|
873
|
+
repo_abs_read_only_stubs_fnames = set(self.abs_read_only_stubs_fnames) & all_abs_files
|
|
874
|
+
chat_files = (
|
|
875
|
+
set(self.abs_fnames) | repo_abs_read_only_fnames | repo_abs_read_only_stubs_fnames
|
|
876
|
+
)
|
|
822
877
|
other_files = all_abs_files - chat_files
|
|
823
878
|
|
|
824
879
|
repo_content = self.repo_map.get_repo_map(
|
|
@@ -877,7 +932,9 @@ class Coder:
|
|
|
877
932
|
]
|
|
878
933
|
|
|
879
934
|
# Handle image files
|
|
880
|
-
images_message = self.get_images_message(
|
|
935
|
+
images_message = self.get_images_message(
|
|
936
|
+
list(self.abs_read_only_fnames) + list(self.abs_read_only_stubs_fnames)
|
|
937
|
+
)
|
|
881
938
|
if images_message is not None:
|
|
882
939
|
readonly_messages += [
|
|
883
940
|
images_message,
|
|
@@ -998,15 +1055,17 @@ class Coder:
|
|
|
998
1055
|
|
|
999
1056
|
def get_input(self):
|
|
1000
1057
|
inchat_files = self.get_inchat_relative_files()
|
|
1001
|
-
|
|
1002
|
-
|
|
1058
|
+
all_read_only_fnames = self.abs_read_only_fnames | self.abs_read_only_stubs_fnames
|
|
1059
|
+
all_read_only_files = [self.get_rel_fname(fname) for fname in all_read_only_fnames]
|
|
1060
|
+
all_files = sorted(set(inchat_files + all_read_only_files))
|
|
1003
1061
|
edit_format = "" if self.edit_format == self.main_model.edit_format else self.edit_format
|
|
1004
1062
|
return self.io.get_input(
|
|
1005
1063
|
self.root,
|
|
1006
1064
|
all_files,
|
|
1007
1065
|
self.get_addable_relative_files(),
|
|
1008
1066
|
self.commands,
|
|
1009
|
-
self.abs_read_only_fnames,
|
|
1067
|
+
abs_read_only_fnames=self.abs_read_only_fnames,
|
|
1068
|
+
abs_read_only_stubs_fnames=self.abs_read_only_stubs_fnames,
|
|
1010
1069
|
edit_format=edit_format,
|
|
1011
1070
|
)
|
|
1012
1071
|
|
|
@@ -2220,7 +2279,8 @@ class Coder:
|
|
|
2220
2279
|
|
|
2221
2280
|
# Get basenames of files already in chat or read-only
|
|
2222
2281
|
existing_basenames = {os.path.basename(f) for f in self.get_inchat_relative_files()} | {
|
|
2223
|
-
os.path.basename(self.get_rel_fname(f))
|
|
2282
|
+
os.path.basename(self.get_rel_fname(f))
|
|
2283
|
+
for f in self.abs_read_only_fnames | self.abs_read_only_stubs_fnames
|
|
2224
2284
|
}
|
|
2225
2285
|
|
|
2226
2286
|
mentioned_rel_fnames = set()
|
|
@@ -2639,6 +2699,9 @@ class Coder:
|
|
|
2639
2699
|
|
|
2640
2700
|
return cur + new
|
|
2641
2701
|
|
|
2702
|
+
def get_file_stub(self, fname):
|
|
2703
|
+
return RepoMap.get_file_stub(fname, self.io)
|
|
2704
|
+
|
|
2642
2705
|
def get_rel_fname(self, fname):
|
|
2643
2706
|
try:
|
|
2644
2707
|
return os.path.relpath(fname, self.root)
|
|
@@ -2675,7 +2738,8 @@ class Coder:
|
|
|
2675
2738
|
all_files = set(self.get_all_relative_files())
|
|
2676
2739
|
inchat_files = set(self.get_inchat_relative_files())
|
|
2677
2740
|
read_only_files = set(self.get_rel_fname(fname) for fname in self.abs_read_only_fnames)
|
|
2678
|
-
|
|
2741
|
+
stub_files = set(self.get_rel_fname(fname) for fname in self.abs_read_only_stubs_fnames)
|
|
2742
|
+
return all_files - inchat_files - read_only_files - stub_files
|
|
2679
2743
|
|
|
2680
2744
|
def check_for_dirty_commit(self, path):
|
|
2681
2745
|
if not self.repo:
|
|
@@ -416,6 +416,7 @@ class Commands:
|
|
|
416
416
|
|
|
417
417
|
def _drop_all_files(self):
|
|
418
418
|
self.coder.abs_fnames = set()
|
|
419
|
+
self.coder.abs_read_only_stubs_fnames = set()
|
|
419
420
|
|
|
420
421
|
# When dropping all files, keep those that were originally provided via args.read
|
|
421
422
|
if self.original_read_only_fnames:
|
|
@@ -553,6 +554,15 @@ class Commands:
|
|
|
553
554
|
file_res.sort()
|
|
554
555
|
res.extend(file_res)
|
|
555
556
|
|
|
557
|
+
# stub files
|
|
558
|
+
for fname in self.coder.abs_read_only_stubs_fnames:
|
|
559
|
+
relative_fname = self.coder.get_rel_fname(fname)
|
|
560
|
+
if not is_image_file(relative_fname):
|
|
561
|
+
stub = self.coder.get_file_stub(fname)
|
|
562
|
+
content = f"{relative_fname} (stub)\n{fence}\n" + stub + "{fence}\n"
|
|
563
|
+
tokens = self.coder.main_model.token_count(content)
|
|
564
|
+
res.append((tokens, f"{relative_fname} (read-only stub)", "/drop to remove"))
|
|
565
|
+
|
|
556
566
|
self.io.tool_output(
|
|
557
567
|
f"Approximate context window usage for {self.coder.main_model.name}, in tokens:"
|
|
558
568
|
)
|
|
@@ -747,6 +757,9 @@ class Commands:
|
|
|
747
757
|
fname = f'"{fname}"'
|
|
748
758
|
return fname
|
|
749
759
|
|
|
760
|
+
def completions_raw_read_only_stub(self, document, complete_event):
|
|
761
|
+
return self.completions_raw_read_only(document, complete_event)
|
|
762
|
+
|
|
750
763
|
def completions_raw_read_only(self, document, complete_event):
|
|
751
764
|
# Get the text before the cursor
|
|
752
765
|
text = document.text_before_cursor
|
|
@@ -923,6 +936,17 @@ class Commands:
|
|
|
923
936
|
if abs_file_path in self.coder.abs_fnames:
|
|
924
937
|
self.io.tool_error(f"{matched_file} is already in the chat as an editable file")
|
|
925
938
|
continue
|
|
939
|
+
elif abs_file_path in self.coder.abs_read_only_stubs_fnames:
|
|
940
|
+
if self.coder.repo and self.coder.repo.path_in_repo(matched_file):
|
|
941
|
+
self.coder.abs_read_only_stubs_fnames.remove(abs_file_path)
|
|
942
|
+
self.coder.abs_fnames.add(abs_file_path)
|
|
943
|
+
self.io.tool_output(
|
|
944
|
+
f"Moved {matched_file} from read-only (stub) to editable files in the chat"
|
|
945
|
+
)
|
|
946
|
+
else:
|
|
947
|
+
self.io.tool_error(
|
|
948
|
+
f"Cannot add {matched_file} as it's not part of the repository"
|
|
949
|
+
)
|
|
926
950
|
elif abs_file_path in self.coder.abs_read_only_fnames:
|
|
927
951
|
if self.coder.repo and self.coder.repo.path_in_repo(matched_file):
|
|
928
952
|
self.coder.abs_read_only_fnames.remove(abs_file_path)
|
|
@@ -962,7 +986,10 @@ class Commands:
|
|
|
962
986
|
|
|
963
987
|
def completions_drop(self):
|
|
964
988
|
files = self.coder.get_inchat_relative_files()
|
|
965
|
-
read_only_files = [
|
|
989
|
+
read_only_files = [
|
|
990
|
+
self.coder.get_rel_fname(fn)
|
|
991
|
+
for fn in self.coder.abs_read_only_fnames | self.coder.abs_read_only_stubs_fnames
|
|
992
|
+
]
|
|
966
993
|
all_files = files + read_only_files
|
|
967
994
|
all_files = [self.quote_fname(fn) for fn in all_files]
|
|
968
995
|
return all_files
|
|
@@ -989,6 +1016,26 @@ class Commands:
|
|
|
989
1016
|
"Symbol Outline",
|
|
990
1017
|
]
|
|
991
1018
|
|
|
1019
|
+
def _handle_read_only_files(self, expanded_word, file_set, description=""):
|
|
1020
|
+
"""Handle read-only files with substring matching and samefile check"""
|
|
1021
|
+
matched = []
|
|
1022
|
+
for f in file_set:
|
|
1023
|
+
if expanded_word in f:
|
|
1024
|
+
matched.append(f)
|
|
1025
|
+
continue
|
|
1026
|
+
|
|
1027
|
+
# Try samefile comparison for relative paths
|
|
1028
|
+
try:
|
|
1029
|
+
abs_word = os.path.abspath(expanded_word)
|
|
1030
|
+
if os.path.samefile(abs_word, f):
|
|
1031
|
+
matched.append(f)
|
|
1032
|
+
except (FileNotFoundError, OSError):
|
|
1033
|
+
continue
|
|
1034
|
+
|
|
1035
|
+
for matched_file in matched:
|
|
1036
|
+
file_set.remove(matched_file)
|
|
1037
|
+
self.io.tool_output(f"Removed {description} file {matched_file} from the chat")
|
|
1038
|
+
|
|
992
1039
|
def cmd_drop(self, args=""):
|
|
993
1040
|
"Remove files from the chat session to free up context space"
|
|
994
1041
|
|
|
@@ -1014,25 +1061,13 @@ class Commands:
|
|
|
1014
1061
|
# Expand tilde in the path
|
|
1015
1062
|
expanded_word = os.path.expanduser(word)
|
|
1016
1063
|
|
|
1017
|
-
# Handle read-only files
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
# Try samefile comparison for relative paths
|
|
1025
|
-
try:
|
|
1026
|
-
abs_word = os.path.abspath(expanded_word)
|
|
1027
|
-
if os.path.samefile(abs_word, f):
|
|
1028
|
-
read_only_matched.append(f)
|
|
1029
|
-
except (FileNotFoundError, OSError):
|
|
1030
|
-
continue
|
|
1031
|
-
|
|
1032
|
-
for matched_file in read_only_matched:
|
|
1033
|
-
self.coder.abs_read_only_fnames.remove(matched_file)
|
|
1034
|
-
self.io.tool_output(f"Removed read-only file {matched_file} from the chat")
|
|
1035
|
-
files_changed = True
|
|
1064
|
+
# Handle read-only files
|
|
1065
|
+
self._handle_read_only_files(
|
|
1066
|
+
expanded_word, self.coder.abs_read_only_fnames, "read-only"
|
|
1067
|
+
)
|
|
1068
|
+
self._handle_read_only_files(
|
|
1069
|
+
expanded_word, self.coder.abs_read_only_stubs_fnames, "read-only (stub)"
|
|
1070
|
+
)
|
|
1036
1071
|
|
|
1037
1072
|
# For editable files, use glob if word contains glob chars, otherwise use substring
|
|
1038
1073
|
if any(c in expanded_word for c in "*?[]"):
|
|
@@ -1269,6 +1304,7 @@ class Commands:
|
|
|
1269
1304
|
other_files = []
|
|
1270
1305
|
chat_files = []
|
|
1271
1306
|
read_only_files = []
|
|
1307
|
+
read_only_stub_files = []
|
|
1272
1308
|
for file in files:
|
|
1273
1309
|
abs_file_path = self.coder.abs_root_path(file)
|
|
1274
1310
|
if abs_file_path in self.coder.abs_fnames:
|
|
@@ -1281,7 +1317,12 @@ class Commands:
|
|
|
1281
1317
|
rel_file_path = self.coder.get_rel_fname(abs_file_path)
|
|
1282
1318
|
read_only_files.append(rel_file_path)
|
|
1283
1319
|
|
|
1284
|
-
|
|
1320
|
+
# Add read-only stub files
|
|
1321
|
+
for abs_file_path in self.coder.abs_read_only_stubs_fnames:
|
|
1322
|
+
rel_file_path = self.coder.get_rel_fname(abs_file_path)
|
|
1323
|
+
read_only_stub_files.append(rel_file_path)
|
|
1324
|
+
|
|
1325
|
+
if not chat_files and not other_files and not read_only_files and not read_only_stub_files:
|
|
1285
1326
|
self.io.tool_output("\nNo files in chat, git repo, or read-only list.")
|
|
1286
1327
|
return
|
|
1287
1328
|
|
|
@@ -1290,10 +1331,13 @@ class Commands:
|
|
|
1290
1331
|
for file in other_files:
|
|
1291
1332
|
self.io.tool_output(f" {file}")
|
|
1292
1333
|
|
|
1293
|
-
|
|
1334
|
+
# Read-only files:
|
|
1335
|
+
if read_only_files or read_only_stub_files:
|
|
1294
1336
|
self.io.tool_output("\nRead-only files:\n")
|
|
1295
1337
|
for file in read_only_files:
|
|
1296
1338
|
self.io.tool_output(f" {file}")
|
|
1339
|
+
for file in read_only_stub_files:
|
|
1340
|
+
self.io.tool_output(f" {file} (stub)")
|
|
1297
1341
|
|
|
1298
1342
|
if chat_files:
|
|
1299
1343
|
self.io.tool_output("\nFiles in chat:\n")
|
|
@@ -1530,38 +1574,26 @@ class Commands:
|
|
|
1530
1574
|
except Exception as e:
|
|
1531
1575
|
self.io.tool_error(f"Error processing clipboard content: {e}")
|
|
1532
1576
|
|
|
1533
|
-
def
|
|
1534
|
-
"""
|
|
1535
|
-
With no args, opens a fuzzy finder to select files from the repo.
|
|
1536
|
-
If no files are selected, converts all editable files in chat to read-only.
|
|
1537
|
-
"""
|
|
1577
|
+
def _cmd_read_only_base(self, args, source_set, target_set, source_mode, target_mode):
|
|
1578
|
+
"""Base implementation for read-only and read-only-stub commands"""
|
|
1538
1579
|
if not args.strip():
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
self.coder.abs_fnames.remove(fname)
|
|
1557
|
-
self.coder.abs_read_only_fnames.add(fname)
|
|
1558
|
-
rel_fname = self.coder.get_rel_fname(fname)
|
|
1559
|
-
self.io.tool_output(f"Converted {rel_fname} to read-only")
|
|
1560
|
-
else:
|
|
1561
|
-
self.io.tool_output("No files selected.")
|
|
1562
|
-
return
|
|
1563
|
-
|
|
1564
|
-
args = " ".join([self.quote_fname(f) for f in selected_files])
|
|
1580
|
+
# Handle editable files
|
|
1581
|
+
for fname in list(self.coder.abs_fnames):
|
|
1582
|
+
self.coder.abs_fnames.remove(fname)
|
|
1583
|
+
target_set.add(fname)
|
|
1584
|
+
rel_fname = self.coder.get_rel_fname(fname)
|
|
1585
|
+
self.io.tool_output(f"Converted {rel_fname} from editable to {target_mode}")
|
|
1586
|
+
|
|
1587
|
+
# Handle source set files if provided
|
|
1588
|
+
if source_set:
|
|
1589
|
+
for fname in list(source_set):
|
|
1590
|
+
source_set.remove(fname)
|
|
1591
|
+
target_set.add(fname)
|
|
1592
|
+
rel_fname = self.coder.get_rel_fname(fname)
|
|
1593
|
+
self.io.tool_output(
|
|
1594
|
+
f"Converted {rel_fname} from {source_mode} to {target_mode}"
|
|
1595
|
+
)
|
|
1596
|
+
return
|
|
1565
1597
|
|
|
1566
1598
|
filenames = parse_quoted_filenames(args)
|
|
1567
1599
|
all_paths = []
|
|
@@ -1596,13 +1628,28 @@ class Commands:
|
|
|
1596
1628
|
for path in sorted(all_paths):
|
|
1597
1629
|
abs_path = self.coder.abs_root_path(path)
|
|
1598
1630
|
if os.path.isfile(abs_path):
|
|
1599
|
-
self._add_read_only_file(
|
|
1631
|
+
self._add_read_only_file(
|
|
1632
|
+
abs_path,
|
|
1633
|
+
path,
|
|
1634
|
+
target_set,
|
|
1635
|
+
source_set,
|
|
1636
|
+
source_mode=source_mode,
|
|
1637
|
+
target_mode=target_mode,
|
|
1638
|
+
)
|
|
1600
1639
|
elif os.path.isdir(abs_path):
|
|
1601
|
-
self._add_read_only_directory(abs_path, path)
|
|
1640
|
+
self._add_read_only_directory(abs_path, path, source_set, target_set, target_mode)
|
|
1602
1641
|
else:
|
|
1603
1642
|
self.io.tool_error(f"Not a file or directory: {abs_path}")
|
|
1604
1643
|
|
|
1605
|
-
def _add_read_only_file(
|
|
1644
|
+
def _add_read_only_file(
|
|
1645
|
+
self,
|
|
1646
|
+
abs_path,
|
|
1647
|
+
original_name,
|
|
1648
|
+
target_set,
|
|
1649
|
+
source_set,
|
|
1650
|
+
source_mode="read-only",
|
|
1651
|
+
target_mode="read-only",
|
|
1652
|
+
):
|
|
1606
1653
|
if is_image_file(original_name) and not self.coder.main_model.info.get("supports_vision"):
|
|
1607
1654
|
self.io.tool_error(
|
|
1608
1655
|
f"Cannot add image file {original_name} as the"
|
|
@@ -1610,38 +1657,123 @@ class Commands:
|
|
|
1610
1657
|
)
|
|
1611
1658
|
return
|
|
1612
1659
|
|
|
1613
|
-
if abs_path in
|
|
1614
|
-
self.io.tool_error(f"{original_name} is already in the chat as a
|
|
1660
|
+
if abs_path in target_set:
|
|
1661
|
+
self.io.tool_error(f"{original_name} is already in the chat as a {target_mode} file")
|
|
1615
1662
|
return
|
|
1616
1663
|
elif abs_path in self.coder.abs_fnames:
|
|
1617
1664
|
self.coder.abs_fnames.remove(abs_path)
|
|
1618
|
-
|
|
1665
|
+
target_set.add(abs_path)
|
|
1666
|
+
self.io.tool_output(
|
|
1667
|
+
f"Moved {original_name} from editable to {target_mode} files in the chat"
|
|
1668
|
+
)
|
|
1669
|
+
elif source_set and abs_path in source_set:
|
|
1670
|
+
source_set.remove(abs_path)
|
|
1671
|
+
target_set.add(abs_path)
|
|
1619
1672
|
self.io.tool_output(
|
|
1620
|
-
f"Moved {original_name} from
|
|
1673
|
+
f"Moved {original_name} from {source_mode} to {target_mode} files in the chat"
|
|
1621
1674
|
)
|
|
1622
1675
|
else:
|
|
1623
|
-
|
|
1624
|
-
self.io.tool_output(f"Added {original_name} to
|
|
1676
|
+
target_set.add(abs_path)
|
|
1677
|
+
self.io.tool_output(f"Added {original_name} to {target_mode} files.")
|
|
1625
1678
|
|
|
1626
|
-
def _add_read_only_directory(
|
|
1679
|
+
def _add_read_only_directory(
|
|
1680
|
+
self, abs_path, original_name, source_set, target_set, target_mode
|
|
1681
|
+
):
|
|
1627
1682
|
added_files = 0
|
|
1628
1683
|
for root, _, files in os.walk(abs_path):
|
|
1629
1684
|
for file in files:
|
|
1630
1685
|
file_path = os.path.join(root, file)
|
|
1631
1686
|
if (
|
|
1632
1687
|
file_path not in self.coder.abs_fnames
|
|
1633
|
-
and file_path not in
|
|
1688
|
+
and file_path not in target_set
|
|
1689
|
+
and (source_set is None or file_path not in source_set)
|
|
1634
1690
|
):
|
|
1635
|
-
|
|
1691
|
+
target_set.add(file_path)
|
|
1636
1692
|
added_files += 1
|
|
1637
1693
|
|
|
1638
1694
|
if added_files > 0:
|
|
1639
1695
|
self.io.tool_output(
|
|
1640
|
-
f"Added {added_files} files from directory {original_name} to
|
|
1696
|
+
f"Added {added_files} files from directory {original_name} to {target_mode} files."
|
|
1641
1697
|
)
|
|
1642
1698
|
else:
|
|
1643
1699
|
self.io.tool_output(f"No new files added from directory {original_name}.")
|
|
1644
1700
|
|
|
1701
|
+
def cmd_read_only(self, args):
|
|
1702
|
+
"Add files to the chat that are for reference only, or turn added files to read-only"
|
|
1703
|
+
if not args.strip():
|
|
1704
|
+
# If no args provided, use fuzzy finder to select files to add as read-only
|
|
1705
|
+
all_files = self.coder.get_all_relative_files()
|
|
1706
|
+
files_in_chat = self.coder.get_inchat_relative_files()
|
|
1707
|
+
addable_files = sorted(set(all_files) - set(files_in_chat))
|
|
1708
|
+
if not addable_files:
|
|
1709
|
+
# If no files available to add, convert all editable files to read-only
|
|
1710
|
+
self._cmd_read_only_base(
|
|
1711
|
+
"",
|
|
1712
|
+
source_set=self.coder.abs_read_only_stubs_fnames,
|
|
1713
|
+
target_set=self.coder.abs_read_only_fnames,
|
|
1714
|
+
source_mode="read-only (stub)",
|
|
1715
|
+
target_mode="read-only",
|
|
1716
|
+
)
|
|
1717
|
+
return
|
|
1718
|
+
selected_files = run_fzf(addable_files, multi=True)
|
|
1719
|
+
if not selected_files:
|
|
1720
|
+
# If user didn't select any files, convert all editable files to read-only
|
|
1721
|
+
self._cmd_read_only_base(
|
|
1722
|
+
"",
|
|
1723
|
+
source_set=self.coder.abs_read_only_stubs_fnames,
|
|
1724
|
+
target_set=self.coder.abs_read_only_fnames,
|
|
1725
|
+
source_mode="read-only (stub)",
|
|
1726
|
+
target_mode="read-only",
|
|
1727
|
+
)
|
|
1728
|
+
return
|
|
1729
|
+
args = " ".join([self.quote_fname(f) for f in selected_files])
|
|
1730
|
+
|
|
1731
|
+
self._cmd_read_only_base(
|
|
1732
|
+
args,
|
|
1733
|
+
source_set=self.coder.abs_read_only_stubs_fnames,
|
|
1734
|
+
target_set=self.coder.abs_read_only_fnames,
|
|
1735
|
+
source_mode="read-only (stub)",
|
|
1736
|
+
target_mode="read-only",
|
|
1737
|
+
)
|
|
1738
|
+
|
|
1739
|
+
def cmd_read_only_stub(self, args):
|
|
1740
|
+
"Add files to the chat as read-only stubs, or turn added files to read-only (stubs)"
|
|
1741
|
+
if not args.strip():
|
|
1742
|
+
# If no args provided, use fuzzy finder to select files to add as read-only stubs
|
|
1743
|
+
all_files = self.coder.get_all_relative_files()
|
|
1744
|
+
files_in_chat = self.coder.get_inchat_relative_files()
|
|
1745
|
+
addable_files = sorted(set(all_files) - set(files_in_chat))
|
|
1746
|
+
if not addable_files:
|
|
1747
|
+
# If no files available to add, convert all editable files to read-only stubs
|
|
1748
|
+
self._cmd_read_only_base(
|
|
1749
|
+
"",
|
|
1750
|
+
source_set=self.coder.abs_read_only_fnames,
|
|
1751
|
+
target_set=self.coder.abs_read_only_stubs_fnames,
|
|
1752
|
+
source_mode="read-only",
|
|
1753
|
+
target_mode="read-only (stub)",
|
|
1754
|
+
)
|
|
1755
|
+
return
|
|
1756
|
+
selected_files = run_fzf(addable_files, multi=True)
|
|
1757
|
+
if not selected_files:
|
|
1758
|
+
# If user didn't select any files, convert all editable files to read-only stubs
|
|
1759
|
+
self._cmd_read_only_base(
|
|
1760
|
+
"",
|
|
1761
|
+
source_set=self.coder.abs_read_only_fnames,
|
|
1762
|
+
target_set=self.coder.abs_read_only_stubs_fnames,
|
|
1763
|
+
source_mode="read-only",
|
|
1764
|
+
target_mode="read-only (stub)",
|
|
1765
|
+
)
|
|
1766
|
+
return
|
|
1767
|
+
args = " ".join([self.quote_fname(f) for f in selected_files])
|
|
1768
|
+
|
|
1769
|
+
self._cmd_read_only_base(
|
|
1770
|
+
args,
|
|
1771
|
+
source_set=self.coder.abs_read_only_fnames,
|
|
1772
|
+
target_set=self.coder.abs_read_only_stubs_fnames,
|
|
1773
|
+
source_mode="read-only",
|
|
1774
|
+
target_mode="read-only (stub)",
|
|
1775
|
+
)
|
|
1776
|
+
|
|
1645
1777
|
def cmd_map(self, args):
|
|
1646
1778
|
"Print out the current repository map"
|
|
1647
1779
|
repo_map = self.coder.get_repo_map()
|
|
@@ -1743,6 +1875,14 @@ class Commands:
|
|
|
1743
1875
|
f.write(f"/read-only {rel_fname}\n")
|
|
1744
1876
|
else:
|
|
1745
1877
|
f.write(f"/read-only {fname}\n")
|
|
1878
|
+
# Write commands to add read-only stubs files
|
|
1879
|
+
for fname in sorted(self.coder.abs_read_only_stubs_fnames):
|
|
1880
|
+
# Use absolute path for files outside repo root, relative path for files inside
|
|
1881
|
+
if Path(fname).is_relative_to(self.coder.root):
|
|
1882
|
+
rel_fname = self.coder.get_rel_fname(fname)
|
|
1883
|
+
f.write(f"/read-only-stub {rel_fname}\n")
|
|
1884
|
+
else:
|
|
1885
|
+
f.write(f"/read-only-stub {fname}\n")
|
|
1746
1886
|
|
|
1747
1887
|
self.io.tool_output(f"Saved commands to {args.strip()}")
|
|
1748
1888
|
except Exception as e:
|