aider-ce 0.87.6.dev1__tar.gz → 0.87.7.dev11__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.

Files changed (431) hide show
  1. {aider_ce-0.87.6.dev1/aider_ce.egg-info → aider_ce-0.87.7.dev11}/PKG-INFO +3 -1
  2. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/README.md +2 -0
  3. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/__init__.py +1 -1
  4. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/_version.py +3 -3
  5. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/base_coder.py +57 -9
  6. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/commands.py +206 -66
  7. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/help.py +1 -1
  8. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/io.py +86 -35
  9. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/main.py +2 -1
  10. aider_ce-0.87.7.dev11/aider/queries/tree-sitter-languages/julia-tags.scm +60 -0
  11. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/repomap.py +32 -0
  12. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/scrape.py +1 -1
  13. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11/aider_ce.egg-info}/PKG-INFO +3 -1
  14. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider_ce.egg-info/SOURCES.txt +1 -0
  15. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_io.py +45 -22
  16. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.dockerignore +0 -0
  17. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.flake8 +0 -0
  18. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  19. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/check_pypi_version.yml +0 -0
  20. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/docker-build-test.yml +0 -0
  21. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/docker-release.yml +0 -0
  22. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/issues.yml +0 -0
  23. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/pages.yml +0 -0
  24. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/pre-commit.yml +0 -0
  25. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/release.yml +0 -0
  26. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/ubuntu-tests.yml +0 -0
  27. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/windows-tests.yml +0 -0
  28. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.github/workflows/windows_check_pypi_version.yml +0 -0
  29. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.gitignore +0 -0
  30. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/.pre-commit-config.yaml +0 -0
  31. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/CNAME +0 -0
  32. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/CONTRIBUTING.md +0 -0
  33. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/HISTORY.md +0 -0
  34. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/LICENSE.txt +0 -0
  35. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/MANIFEST.in +0 -0
  36. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/__main__.py +0 -0
  37. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/analytics.py +0 -0
  38. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/args.py +0 -0
  39. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/args_formatter.py +0 -0
  40. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/change_tracker.py +0 -0
  41. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/__init__.py +0 -0
  42. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/architect_coder.py +0 -0
  43. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/architect_prompts.py +0 -0
  44. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/ask_coder.py +0 -0
  45. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/ask_prompts.py +0 -0
  46. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/base_prompts.py +0 -0
  47. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/chat_chunks.py +0 -0
  48. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/context_coder.py +0 -0
  49. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/context_prompts.py +0 -0
  50. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_coder.py +0 -0
  51. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_fenced_coder.py +0 -0
  52. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_fenced_prompts.py +0 -0
  53. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_func_coder.py +0 -0
  54. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_func_prompts.py +0 -0
  55. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editblock_prompts.py +0 -0
  56. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_diff_fenced_coder.py +0 -0
  57. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_diff_fenced_prompts.py +0 -0
  58. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_editblock_coder.py +0 -0
  59. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_editblock_prompts.py +0 -0
  60. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_whole_coder.py +0 -0
  61. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/editor_whole_prompts.py +0 -0
  62. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/help_coder.py +0 -0
  63. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/help_prompts.py +0 -0
  64. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/navigator_coder.py +0 -0
  65. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/navigator_legacy_prompts.py +0 -0
  66. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/navigator_prompts.py +0 -0
  67. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/patch_coder.py +0 -0
  68. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/patch_prompts.py +0 -0
  69. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/search_replace.py +0 -0
  70. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/shell.py +0 -0
  71. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/single_wholefile_func_coder.py +0 -0
  72. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/single_wholefile_func_prompts.py +0 -0
  73. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/udiff_coder.py +0 -0
  74. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/udiff_prompts.py +0 -0
  75. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/udiff_simple.py +0 -0
  76. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/udiff_simple_prompts.py +0 -0
  77. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/wholefile_coder.py +0 -0
  78. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/wholefile_func_coder.py +0 -0
  79. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/wholefile_func_prompts.py +0 -0
  80. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/coders/wholefile_prompts.py +0 -0
  81. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/copypaste.py +0 -0
  82. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/deprecated.py +0 -0
  83. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/diffs.py +0 -0
  84. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/dump.py +0 -0
  85. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/editor.py +0 -0
  86. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/exceptions.py +0 -0
  87. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/format_settings.py +0 -0
  88. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/gui.py +0 -0
  89. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/help_pats.py +0 -0
  90. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/history.py +0 -0
  91. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/linter.py +0 -0
  92. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/llm.py +0 -0
  93. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/mcp/__init__.py +0 -0
  94. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/mcp/server.py +0 -0
  95. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/mdstream.py +0 -0
  96. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/models.py +0 -0
  97. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/onboarding.py +0 -0
  98. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/openrouter.py +0 -0
  99. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/prompts.py +0 -0
  100. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/README.md +0 -0
  101. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  102. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  103. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  104. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  105. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  106. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  107. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  108. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  109. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  110. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  111. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  112. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  113. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  114. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  115. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  116. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  117. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  118. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  119. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  120. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  121. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  122. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  123. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  124. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  125. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  126. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  127. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  128. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  129. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  130. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  131. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/README.md +0 -0
  132. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
  133. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  134. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  135. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
  136. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  137. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  138. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
  139. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
  140. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  141. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
  142. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  143. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  144. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  145. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  146. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  147. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
  148. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
  149. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
  150. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  151. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
  152. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
  153. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  154. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/reasoning_tags.py +0 -0
  155. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/repo.py +0 -0
  156. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/report.py +0 -0
  157. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/resources/__init__.py +0 -0
  158. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/resources/model-metadata.json +0 -0
  159. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/resources/model-settings.yml +0 -0
  160. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/run_cmd.py +0 -0
  161. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/sendchat.py +0 -0
  162. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/special.py +0 -0
  163. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/__init__.py +0 -0
  164. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/command.py +0 -0
  165. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/command_interactive.py +0 -0
  166. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/delete_block.py +0 -0
  167. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/delete_line.py +0 -0
  168. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/delete_lines.py +0 -0
  169. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/extract_lines.py +0 -0
  170. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/grep.py +0 -0
  171. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/indent_lines.py +0 -0
  172. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/insert_block.py +0 -0
  173. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/list_changes.py +0 -0
  174. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/ls.py +0 -0
  175. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/make_editable.py +0 -0
  176. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/make_readonly.py +0 -0
  177. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/remove.py +0 -0
  178. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/replace_all.py +0 -0
  179. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/replace_line.py +0 -0
  180. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/replace_lines.py +0 -0
  181. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/replace_text.py +0 -0
  182. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/show_numbered_context.py +0 -0
  183. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/tool_utils.py +0 -0
  184. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/undo_change.py +0 -0
  185. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/view.py +0 -0
  186. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/view_files_at_glob.py +0 -0
  187. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/view_files_matching.py +0 -0
  188. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/tools/view_files_with_symbol.py +0 -0
  189. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/urls.py +0 -0
  190. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/utils.py +0 -0
  191. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/versioncheck.py +0 -0
  192. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/voice.py +0 -0
  193. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/waiting.py +0 -0
  194. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/watch.py +0 -0
  195. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/watch_prompts.py +0 -0
  196. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/Gemfile +0 -0
  197. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/blame.md +0 -0
  198. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/get-started.md +0 -0
  199. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/help-tip.md +0 -0
  200. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/help.md +0 -0
  201. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/install.md +0 -0
  202. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/keys.md +0 -0
  203. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/model-warnings.md +0 -0
  204. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/multi-line.md +0 -0
  205. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/python-m-aider.md +0 -0
  206. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/recording.css +0 -0
  207. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/recording.md +0 -0
  208. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/replit-pipx.md +0 -0
  209. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_includes/works-best.md +0 -0
  210. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/_sass/custom/custom.scss +0 -0
  211. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/adv-model-settings.md +0 -0
  212. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/aider_conf.md +0 -0
  213. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/api-keys.md +0 -0
  214. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/dotenv.md +0 -0
  215. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/editor.md +0 -0
  216. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/mcp.md +0 -0
  217. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/model-aliases.md +0 -0
  218. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/options.md +0 -0
  219. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config/reasoning.md +0 -0
  220. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/config.md +0 -0
  221. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/faq.md +0 -0
  222. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/git.md +0 -0
  223. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/index.md +0 -0
  224. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/install/codespaces.md +0 -0
  225. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/install/docker.md +0 -0
  226. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/install/optional.md +0 -0
  227. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/install/replit.md +0 -0
  228. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/install.md +0 -0
  229. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/languages.md +0 -0
  230. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/legal/contributor-agreement.md +0 -0
  231. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/legal/privacy.md +0 -0
  232. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/anthropic.md +0 -0
  233. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/azure.md +0 -0
  234. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/bedrock.md +0 -0
  235. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/cohere.md +0 -0
  236. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/deepseek.md +0 -0
  237. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/gemini.md +0 -0
  238. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/github.md +0 -0
  239. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/groq.md +0 -0
  240. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/lm-studio.md +0 -0
  241. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/ollama.md +0 -0
  242. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/openai-compat.md +0 -0
  243. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/openai.md +0 -0
  244. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/openrouter.md +0 -0
  245. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/other.md +0 -0
  246. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/vertex.md +0 -0
  247. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/warnings.md +0 -0
  248. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms/xai.md +0 -0
  249. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/llms.md +0 -0
  250. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/more/analytics.md +0 -0
  251. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/more/edit-formats.md +0 -0
  252. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/more/infinite-output.md +0 -0
  253. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/more-info.md +0 -0
  254. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
  255. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
  256. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/recordings/index.md +0 -0
  257. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
  258. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
  259. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/repomap.md +0 -0
  260. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/scripting.md +0 -0
  261. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
  262. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
  263. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/imports.md +0 -0
  264. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
  265. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/support.md +0 -0
  266. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/token-limits.md +0 -0
  267. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting/warnings.md +0 -0
  268. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/troubleshooting.md +0 -0
  269. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/browser.md +0 -0
  270. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/caching.md +0 -0
  271. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/commands.md +0 -0
  272. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/conventions.md +0 -0
  273. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/copypaste.md +0 -0
  274. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/images-urls.md +0 -0
  275. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/lint-test.md +0 -0
  276. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/modes.md +0 -0
  277. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/not-code.md +0 -0
  278. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/notifications.md +0 -0
  279. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/tips.md +0 -0
  280. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/tutorials.md +0 -0
  281. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/voice.md +0 -0
  282. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage/watch.md +0 -0
  283. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/docs/usage.md +0 -0
  284. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider/website/share/index.md +0 -0
  285. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider_ce.egg-info/dependency_links.txt +0 -0
  286. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider_ce.egg-info/entry_points.txt +0 -0
  287. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider_ce.egg-info/requires.txt +0 -0
  288. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/aider_ce.egg-info/top_level.txt +0 -0
  289. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/Dockerfile +0 -0
  290. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/README.md +0 -0
  291. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/__init__.py +0 -0
  292. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/benchmark.py +0 -0
  293. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/clone-exercism.sh +0 -0
  294. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/cpp-test.sh +0 -0
  295. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/docker.sh +0 -0
  296. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/docker_build.sh +0 -0
  297. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/install-docker-ubuntu.sh +0 -0
  298. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/npm-test.sh +0 -0
  299. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/over_time.py +0 -0
  300. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/plot.sh +0 -0
  301. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/plots.py +0 -0
  302. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/problem_stats.py +0 -0
  303. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/prompts.py +0 -0
  304. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/refactor_tools.py +0 -0
  305. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/rsync.sh +0 -0
  306. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/rungrid.py +0 -0
  307. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/swe-bench-lite.txt +0 -0
  308. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/swe-bench.txt +0 -0
  309. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/swe_bench.py +0 -0
  310. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/benchmark/test_benchmark.py +0 -0
  311. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/docker/Dockerfile +0 -0
  312. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/pyproject.toml +0 -0
  313. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/pytest.ini +0 -0
  314. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/common-constraints.txt +0 -0
  315. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-browser.in +0 -0
  316. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-browser.txt +0 -0
  317. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-dev.in +0 -0
  318. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-dev.txt +0 -0
  319. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-help.in +0 -0
  320. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-help.txt +0 -0
  321. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-playwright.in +0 -0
  322. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements-playwright.txt +0 -0
  323. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/requirements.in +0 -0
  324. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements/tree-sitter.in +0 -0
  325. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/requirements.txt +0 -0
  326. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/30k-image.py +0 -0
  327. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/Dockerfile.jekyll +0 -0
  328. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/__init__.py +0 -0
  329. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/blame.py +0 -0
  330. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/clean_metadata.py +0 -0
  331. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/dl_icons.py +0 -0
  332. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/history_prompts.py +0 -0
  333. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/homepage.py +0 -0
  334. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/issues.py +0 -0
  335. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/jekyll_build.sh +0 -0
  336. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/jekyll_run.sh +0 -0
  337. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/logo_svg.py +0 -0
  338. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/my_models.py +0 -0
  339. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/pip-compile.sh +0 -0
  340. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/recording_audio.py +0 -0
  341. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/redact-cast.py +0 -0
  342. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/tmux_record.sh +0 -0
  343. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/tsl_pack_langs.py +0 -0
  344. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/update-blame.sh +0 -0
  345. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/update-docs.sh +0 -0
  346. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/update-history.py +0 -0
  347. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/versionbump.py +0 -0
  348. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/scripts/yank-old-versions.py +0 -0
  349. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/setup.cfg +0 -0
  350. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/__init__.py +0 -0
  351. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/__init__.py +0 -0
  352. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_analytics.py +0 -0
  353. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_aws_credentials.py +0 -0
  354. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_coder.py +0 -0
  355. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_commands.py +0 -0
  356. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_deprecated.py +0 -0
  357. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_editblock.py +0 -0
  358. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_editor.py +0 -0
  359. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_exceptions.py +0 -0
  360. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_find_or_blocks.py +0 -0
  361. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_history.py +0 -0
  362. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_linter.py +0 -0
  363. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_main.py +0 -0
  364. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_model_info_manager.py +0 -0
  365. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_models.py +0 -0
  366. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_onboarding.py +0 -0
  367. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_openrouter.py +0 -0
  368. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_reasoning.py +0 -0
  369. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_repo.py +0 -0
  370. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_repomap.py +0 -0
  371. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_run_cmd.py +0 -0
  372. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_sanity_check_repo.py +0 -0
  373. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_scripting.py +0 -0
  374. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_sendchat.py +0 -0
  375. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_special.py +0 -0
  376. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_ssl_verification.py +0 -0
  377. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_udiff.py +0 -0
  378. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_urls.py +0 -0
  379. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_voice.py +0 -0
  380. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_watch.py +0 -0
  381. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/basic/test_wholefile.py +0 -0
  382. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/browser/test_browser.py +0 -0
  383. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  384. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/chat-history.md +0 -0
  385. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/arduino/test.ino +0 -0
  386. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/c/test.c +0 -0
  387. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/chatito/test.chatito +0 -0
  388. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/clojure/test.clj +0 -0
  389. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  390. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/cpp/test.cpp +0 -0
  391. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/csharp/test.cs +0 -0
  392. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/d/test.d +0 -0
  393. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/dart/test.dart +0 -0
  394. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/elisp/test.el +0 -0
  395. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/elixir/test.ex +0 -0
  396. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/elm/test.elm +0 -0
  397. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/gleam/test.gleam +0 -0
  398. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/go/test.go +0 -0
  399. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/hcl/test.tf +0 -0
  400. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/java/test.java +0 -0
  401. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/javascript/test.js +0 -0
  402. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/kotlin/test.kt +0 -0
  403. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/lua/test.lua +0 -0
  404. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/matlab/test.m +0 -0
  405. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/ocaml/test.ml +0 -0
  406. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  407. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/php/test.php +0 -0
  408. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/pony/test.pony +0 -0
  409. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/properties/test.properties +0 -0
  410. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/python/test.py +0 -0
  411. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/ql/test.ql +0 -0
  412. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/r/test.r +0 -0
  413. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/racket/test.rkt +0 -0
  414. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/ruby/test.rb +0 -0
  415. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/rust/test.rs +0 -0
  416. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/scala/test.scala +0 -0
  417. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/solidity/test.sol +0 -0
  418. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/swift/test.swift +0 -0
  419. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/tsx/test.tsx +0 -0
  420. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/typescript/test.ts +0 -0
  421. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/languages/udev/test.rules +0 -0
  422. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/sample-code-base/sample.js +0 -0
  423. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/sample-code-base/sample.py +0 -0
  424. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  425. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/watch.js +0 -0
  426. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/watch.lisp +0 -0
  427. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/watch.py +0 -0
  428. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/fixtures/watch_question.js +0 -0
  429. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/help/test_help.py +0 -0
  430. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/tests/scrape/test_playwright_disable.py +0 -0
  431. {aider_ce-0.87.6.dev1 → aider_ce-0.87.7.dev11}/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.6.dev1
3
+ Version: 0.87.7.dev11
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,7 @@ 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)
111
113
 
112
114
  ### Other Notes
113
115
  * [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,7 @@ 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)
31
33
 
32
34
  ### Other Notes
33
35
  * [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.87.6.dev"
3
+ __version__ = "0.87.7.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -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.6.dev1'
32
- __version_tuple__ = version_tuple = (0, 87, 6, 'dev1')
31
+ __version__ = version = '0.87.7.dev11'
32
+ __version_tuple__ = version_tuple = (0, 87, 7, 'dev11')
33
33
 
34
- __commit_id__ = commit_id = 'g4d147dcf1'
34
+ __commit_id__ = commit_id = 'g8ec5d50ed'
@@ -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
- read_only_fnames=list(from_coder.abs_read_only_fnames),
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,
@@ -420,6 +428,7 @@ class Coder:
420
428
  self.abs_fnames = set()
421
429
  self.abs_read_only_fnames = set()
422
430
  self.add_gitignore_files = add_gitignore_files
431
+ self.abs_read_only_stubs_fnames = set()
423
432
 
424
433
  if cur_messages:
425
434
  self.cur_messages = cur_messages
@@ -513,6 +522,17 @@ class Coder:
513
522
  else:
514
523
  self.io.tool_warning(f"Error: Read-only file {fname} does not exist. Skipping.")
515
524
 
525
+ if read_only_stubs_fnames:
526
+ self.abs_read_only_stubs_fnames = set()
527
+ for fname in read_only_stubs_fnames:
528
+ abs_fname = self.abs_root_path(fname)
529
+ if os.path.exists(abs_fname):
530
+ self.abs_read_only_stubs_fnames.add(abs_fname)
531
+ else:
532
+ self.io.tool_warning(
533
+ f"Error: Read-only (stub) file {fname} does not exist. Skipping."
534
+ )
535
+
516
536
  if map_tokens is None:
517
537
  use_repo_map = main_model.use_repo_map
518
538
  map_tokens = 1024
@@ -647,6 +667,10 @@ class Coder:
647
667
  content = self.io.read_text(_fname)
648
668
  if content is not None:
649
669
  all_content += content + "\n"
670
+ for _fname in self.abs_read_only_stubs_fnames:
671
+ content = self.io.read_text(_fname)
672
+ if content is not None:
673
+ all_content += content + "\n"
650
674
 
651
675
  lines = all_content.splitlines()
652
676
  good = False
@@ -720,6 +744,7 @@ class Coder:
720
744
 
721
745
  def get_read_only_files_content(self):
722
746
  prompt = ""
747
+ # Handle regular read-only files
723
748
  for fname in self.abs_read_only_fnames:
724
749
  content = self.io.read_text(fname)
725
750
  if content is not None and not is_image_file(fname):
@@ -764,6 +789,17 @@ class Coder:
764
789
  prompt += content
765
790
 
766
791
  prompt += f"{self.fence[1]}\n"
792
+
793
+ # Handle stub files
794
+ for fname in self.abs_read_only_stubs_fnames:
795
+ if not is_image_file(fname):
796
+ relative_fname = self.get_rel_fname(fname)
797
+ prompt += "\n"
798
+ prompt += f"{relative_fname} (stub)"
799
+ prompt += f"\n{self.fence[0]}\n"
800
+ stub = self.get_file_stub(fname)
801
+ prompt += stub
802
+ prompt += f"{self.fence[1]}\n"
767
803
  return prompt
768
804
 
769
805
  def get_cur_message_text(self):
@@ -818,7 +854,10 @@ class Coder:
818
854
 
819
855
  all_abs_files = set(self.get_all_abs_files())
820
856
  repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files
821
- chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames
857
+ repo_abs_read_only_stubs_fnames = set(self.abs_read_only_stubs_fnames) & all_abs_files
858
+ chat_files = (
859
+ set(self.abs_fnames) | repo_abs_read_only_fnames | repo_abs_read_only_stubs_fnames
860
+ )
822
861
  other_files = all_abs_files - chat_files
823
862
 
824
863
  repo_content = self.repo_map.get_repo_map(
@@ -877,7 +916,9 @@ class Coder:
877
916
  ]
878
917
 
879
918
  # Handle image files
880
- images_message = self.get_images_message(self.abs_read_only_fnames)
919
+ images_message = self.get_images_message(
920
+ list(self.abs_read_only_fnames) + list(self.abs_read_only_stubs_fnames)
921
+ )
881
922
  if images_message is not None:
882
923
  readonly_messages += [
883
924
  images_message,
@@ -998,15 +1039,17 @@ class Coder:
998
1039
 
999
1040
  def get_input(self):
1000
1041
  inchat_files = self.get_inchat_relative_files()
1001
- read_only_files = [self.get_rel_fname(fname) for fname in self.abs_read_only_fnames]
1002
- all_files = sorted(set(inchat_files + read_only_files))
1042
+ all_read_only_fnames = self.abs_read_only_fnames | self.abs_read_only_stubs_fnames
1043
+ all_read_only_files = [self.get_rel_fname(fname) for fname in all_read_only_fnames]
1044
+ all_files = sorted(set(inchat_files + all_read_only_files))
1003
1045
  edit_format = "" if self.edit_format == self.main_model.edit_format else self.edit_format
1004
1046
  return self.io.get_input(
1005
1047
  self.root,
1006
1048
  all_files,
1007
1049
  self.get_addable_relative_files(),
1008
1050
  self.commands,
1009
- self.abs_read_only_fnames,
1051
+ abs_read_only_fnames=self.abs_read_only_fnames,
1052
+ abs_read_only_stubs_fnames=self.abs_read_only_stubs_fnames,
1010
1053
  edit_format=edit_format,
1011
1054
  )
1012
1055
 
@@ -2220,7 +2263,8 @@ class Coder:
2220
2263
 
2221
2264
  # Get basenames of files already in chat or read-only
2222
2265
  existing_basenames = {os.path.basename(f) for f in self.get_inchat_relative_files()} | {
2223
- os.path.basename(self.get_rel_fname(f)) for f in self.abs_read_only_fnames
2266
+ os.path.basename(self.get_rel_fname(f))
2267
+ for f in self.abs_read_only_fnames | self.abs_read_only_stubs_fnames
2224
2268
  }
2225
2269
 
2226
2270
  mentioned_rel_fnames = set()
@@ -2639,6 +2683,9 @@ class Coder:
2639
2683
 
2640
2684
  return cur + new
2641
2685
 
2686
+ def get_file_stub(self, fname):
2687
+ return RepoMap.get_file_stub(fname, self.io)
2688
+
2642
2689
  def get_rel_fname(self, fname):
2643
2690
  try:
2644
2691
  return os.path.relpath(fname, self.root)
@@ -2675,7 +2722,8 @@ class Coder:
2675
2722
  all_files = set(self.get_all_relative_files())
2676
2723
  inchat_files = set(self.get_inchat_relative_files())
2677
2724
  read_only_files = set(self.get_rel_fname(fname) for fname in self.abs_read_only_fnames)
2678
- return all_files - inchat_files - read_only_files
2725
+ stub_files = set(self.get_rel_fname(fname) for fname in self.abs_read_only_stubs_fnames)
2726
+ return all_files - inchat_files - read_only_files - stub_files
2679
2727
 
2680
2728
  def check_for_dirty_commit(self, path):
2681
2729
  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 = [self.coder.get_rel_fname(fn) for fn in self.coder.abs_read_only_fnames]
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 with substring matching and samefile check
1018
- read_only_matched = []
1019
- for f in self.coder.abs_read_only_fnames:
1020
- if expanded_word in f:
1021
- read_only_matched.append(f)
1022
- continue
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
- if not chat_files and not other_files and not read_only_files:
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
- if read_only_files:
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 cmd_read_only(self, args):
1534
- """Add files to the chat that are for reference only, or turn added files to read-only.
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
- if self.coder.repo:
1540
- all_files = self.coder.repo.get_tracked_files()
1541
- else:
1542
- all_files = self.coder.get_all_relative_files()
1543
-
1544
- if not all_files and not self.coder.abs_fnames:
1545
- self.io.tool_output("No files in the repo or chat to make read-only.")
1546
- return
1547
-
1548
- selected_files = []
1549
- if all_files:
1550
- selected_files = run_fzf(all_files, multi=True)
1551
-
1552
- if not selected_files:
1553
- # Fallback behavior: convert all editable files to read-only
1554
- if self.coder.abs_fnames:
1555
- for fname in list(self.coder.abs_fnames):
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(abs_path, path)
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(self, abs_path, original_name):
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 self.coder.abs_read_only_fnames:
1614
- self.io.tool_error(f"{original_name} is already in the chat as a read-only file")
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
- self.coder.abs_read_only_fnames.add(abs_path)
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 editable to read-only files in the chat"
1673
+ f"Moved {original_name} from {source_mode} to {target_mode} files in the chat"
1621
1674
  )
1622
1675
  else:
1623
- self.coder.abs_read_only_fnames.add(abs_path)
1624
- self.io.tool_output(f"Added {original_name} to read-only files.")
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(self, abs_path, original_name):
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 self.coder.abs_read_only_fnames
1688
+ and file_path not in target_set
1689
+ and (source_set is None or file_path not in source_set)
1634
1690
  ):
1635
- self.coder.abs_read_only_fnames.add(file_path)
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 read-only files."
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:
@@ -17,7 +17,7 @@ warnings.simplefilter("ignore", category=FutureWarning)
17
17
 
18
18
  def install_help_extra(io):
19
19
  pip_install_cmd = [
20
- "aider-chat[help]",
20
+ "aider-ce[help]",
21
21
  "--extra-index-url",
22
22
  "https://download.pytorch.org/whl/cpu",
23
23
  ]