aider-ce 0.88.4__tar.gz → 0.88.6__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 (441) hide show
  1. {aider_ce-0.88.4/aider_ce.egg-info → aider_ce-0.88.6}/PKG-INFO +3 -1
  2. {aider_ce-0.88.4 → aider_ce-0.88.6}/README.md +2 -0
  3. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/__init__.py +1 -1
  4. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/_version.py +3 -3
  5. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/args.py +14 -2
  6. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/base_coder.py +74 -4
  7. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/commands.py +248 -47
  8. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/exceptions.py +3 -0
  9. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/io.py +27 -43
  10. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/main.py +3 -0
  11. aider_ce-0.88.6/aider/queries/tree-sitter-languages/haskell-tags.scm +3 -0
  12. aider_ce-0.88.6/aider/queries/tree-sitter-languages/zig-tags.scm +3 -0
  13. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/repo.py +1 -1
  14. aider_ce-0.88.6/aider/website/docs/sessions.md +182 -0
  15. {aider_ce-0.88.4 → aider_ce-0.88.6/aider_ce.egg-info}/PKG-INFO +3 -1
  16. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider_ce.egg-info/SOURCES.txt +6 -0
  17. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_deprecated.py +2 -2
  18. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_repomap.py +6 -0
  19. aider_ce-0.88.6/tests/basic/test_sessions.py +234 -0
  20. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_ssl_verification.py +5 -5
  21. aider_ce-0.88.6/tests/fixtures/languages/haskell/test.hs +7 -0
  22. aider_ce-0.88.6/tests/fixtures/languages/zig/test.zig +10 -0
  23. {aider_ce-0.88.4 → aider_ce-0.88.6}/.dockerignore +0 -0
  24. {aider_ce-0.88.4 → aider_ce-0.88.6}/.flake8 +0 -0
  25. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  26. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/check_pypi_version.yml +0 -0
  27. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/docker-build-test.yml +0 -0
  28. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/docker-release.yml +0 -0
  29. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/issues.yml +0 -0
  30. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/pages.yml +0 -0
  31. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/pre-commit.yml +0 -0
  32. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/release.yml +0 -0
  33. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/ubuntu-tests.yml +0 -0
  34. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/windows-tests.yml +0 -0
  35. {aider_ce-0.88.4 → aider_ce-0.88.6}/.github/workflows/windows_check_pypi_version.yml +0 -0
  36. {aider_ce-0.88.4 → aider_ce-0.88.6}/.gitignore +0 -0
  37. {aider_ce-0.88.4 → aider_ce-0.88.6}/.pre-commit-config.yaml +0 -0
  38. {aider_ce-0.88.4 → aider_ce-0.88.6}/CNAME +0 -0
  39. {aider_ce-0.88.4 → aider_ce-0.88.6}/CONTRIBUTING.md +0 -0
  40. {aider_ce-0.88.4 → aider_ce-0.88.6}/HISTORY.md +0 -0
  41. {aider_ce-0.88.4 → aider_ce-0.88.6}/LICENSE.txt +0 -0
  42. {aider_ce-0.88.4 → aider_ce-0.88.6}/MANIFEST.in +0 -0
  43. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/__main__.py +0 -0
  44. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/analytics.py +0 -0
  45. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/args_formatter.py +0 -0
  46. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/change_tracker.py +0 -0
  47. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/__init__.py +0 -0
  48. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/architect_coder.py +0 -0
  49. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/architect_prompts.py +0 -0
  50. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/ask_coder.py +0 -0
  51. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/ask_prompts.py +0 -0
  52. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/base_prompts.py +0 -0
  53. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/chat_chunks.py +0 -0
  54. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/context_coder.py +0 -0
  55. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/context_prompts.py +0 -0
  56. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_coder.py +0 -0
  57. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_fenced_coder.py +0 -0
  58. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_fenced_prompts.py +0 -0
  59. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_func_coder.py +0 -0
  60. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_func_prompts.py +0 -0
  61. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editblock_prompts.py +0 -0
  62. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_diff_fenced_coder.py +0 -0
  63. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_diff_fenced_prompts.py +0 -0
  64. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_editblock_coder.py +0 -0
  65. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_editblock_prompts.py +0 -0
  66. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_whole_coder.py +0 -0
  67. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/editor_whole_prompts.py +0 -0
  68. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/help_coder.py +0 -0
  69. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/help_prompts.py +0 -0
  70. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/navigator_coder.py +0 -0
  71. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/navigator_legacy_prompts.py +0 -0
  72. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/navigator_prompts.py +0 -0
  73. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/patch_coder.py +0 -0
  74. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/patch_prompts.py +0 -0
  75. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/search_replace.py +0 -0
  76. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/shell.py +0 -0
  77. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/single_wholefile_func_coder.py +0 -0
  78. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/single_wholefile_func_prompts.py +0 -0
  79. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/udiff_coder.py +0 -0
  80. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/udiff_prompts.py +0 -0
  81. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/udiff_simple.py +0 -0
  82. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/udiff_simple_prompts.py +0 -0
  83. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/wholefile_coder.py +0 -0
  84. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/wholefile_func_coder.py +0 -0
  85. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/wholefile_func_prompts.py +0 -0
  86. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/coders/wholefile_prompts.py +0 -0
  87. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/copypaste.py +0 -0
  88. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/deprecated.py +0 -0
  89. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/diffs.py +0 -0
  90. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/dump.py +0 -0
  91. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/editor.py +0 -0
  92. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/format_settings.py +0 -0
  93. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/gui.py +0 -0
  94. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/help.py +0 -0
  95. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/help_pats.py +0 -0
  96. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/history.py +0 -0
  97. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/linter.py +0 -0
  98. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/llm.py +0 -0
  99. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/mcp/__init__.py +0 -0
  100. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/mcp/server.py +0 -0
  101. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/mdstream.py +0 -0
  102. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/models.py +0 -0
  103. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/onboarding.py +0 -0
  104. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/openrouter.py +0 -0
  105. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/prompts.py +0 -0
  106. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/README.md +0 -0
  107. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  108. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  109. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  110. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  111. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  112. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  113. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  114. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  115. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  116. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  117. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  118. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  119. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  120. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  121. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  122. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  123. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  124. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  125. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  126. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  127. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  128. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  129. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  130. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  131. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  132. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  133. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  134. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  135. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  136. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  137. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/README.md +0 -0
  138. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
  139. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  140. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  141. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
  142. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  143. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  144. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
  145. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  146. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
  147. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  148. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
  149. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  150. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/julia-tags.scm +0 -0
  151. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  152. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  153. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  154. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  155. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
  156. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
  157. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
  158. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  159. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
  160. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
  161. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  162. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/reasoning_tags.py +0 -0
  163. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/repomap.py +0 -0
  164. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/report.py +0 -0
  165. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/resources/__init__.py +0 -0
  166. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/resources/model-metadata.json +0 -0
  167. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/resources/model-settings.yml +0 -0
  168. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/run_cmd.py +0 -0
  169. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/scrape.py +0 -0
  170. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/sendchat.py +0 -0
  171. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/special.py +0 -0
  172. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/__init__.py +0 -0
  173. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/command.py +0 -0
  174. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/command_interactive.py +0 -0
  175. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/delete_block.py +0 -0
  176. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/delete_line.py +0 -0
  177. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/delete_lines.py +0 -0
  178. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/extract_lines.py +0 -0
  179. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/git.py +0 -0
  180. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/grep.py +0 -0
  181. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/indent_lines.py +0 -0
  182. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/insert_block.py +0 -0
  183. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/list_changes.py +0 -0
  184. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/ls.py +0 -0
  185. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/make_editable.py +0 -0
  186. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/make_readonly.py +0 -0
  187. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/remove.py +0 -0
  188. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/replace_all.py +0 -0
  189. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/replace_line.py +0 -0
  190. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/replace_lines.py +0 -0
  191. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/replace_text.py +0 -0
  192. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/show_numbered_context.py +0 -0
  193. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/tool_utils.py +0 -0
  194. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/undo_change.py +0 -0
  195. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/update_todo_list.py +0 -0
  196. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/view.py +0 -0
  197. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/view_files_at_glob.py +0 -0
  198. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/view_files_matching.py +0 -0
  199. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/view_files_with_symbol.py +0 -0
  200. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/tools/view_todo_list.py +0 -0
  201. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/urls.py +0 -0
  202. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/utils.py +0 -0
  203. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/versioncheck.py +0 -0
  204. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/voice.py +0 -0
  205. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/waiting.py +0 -0
  206. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/watch.py +0 -0
  207. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/watch_prompts.py +0 -0
  208. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/Gemfile +0 -0
  209. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/blame.md +0 -0
  210. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/get-started.md +0 -0
  211. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/help-tip.md +0 -0
  212. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/help.md +0 -0
  213. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/install.md +0 -0
  214. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/keys.md +0 -0
  215. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/model-warnings.md +0 -0
  216. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/multi-line.md +0 -0
  217. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/python-m-aider.md +0 -0
  218. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/recording.css +0 -0
  219. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/recording.md +0 -0
  220. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/replit-pipx.md +0 -0
  221. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_includes/works-best.md +0 -0
  222. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/_sass/custom/custom.scss +0 -0
  223. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/adv-model-settings.md +0 -0
  224. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/aider_conf.md +0 -0
  225. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/api-keys.md +0 -0
  226. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/dotenv.md +0 -0
  227. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/editor.md +0 -0
  228. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/mcp.md +0 -0
  229. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/model-aliases.md +0 -0
  230. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/options.md +0 -0
  231. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config/reasoning.md +0 -0
  232. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/config.md +0 -0
  233. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/faq.md +0 -0
  234. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/git.md +0 -0
  235. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/index.md +0 -0
  236. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/install/codespaces.md +0 -0
  237. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/install/docker.md +0 -0
  238. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/install/optional.md +0 -0
  239. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/install/replit.md +0 -0
  240. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/install.md +0 -0
  241. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/languages.md +0 -0
  242. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/legal/contributor-agreement.md +0 -0
  243. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/legal/privacy.md +0 -0
  244. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/anthropic.md +0 -0
  245. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/azure.md +0 -0
  246. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/bedrock.md +0 -0
  247. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/cohere.md +0 -0
  248. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/deepseek.md +0 -0
  249. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/gemini.md +0 -0
  250. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/github.md +0 -0
  251. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/groq.md +0 -0
  252. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/lm-studio.md +0 -0
  253. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/ollama.md +0 -0
  254. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/openai-compat.md +0 -0
  255. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/openai.md +0 -0
  256. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/openrouter.md +0 -0
  257. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/other.md +0 -0
  258. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/vertex.md +0 -0
  259. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/warnings.md +0 -0
  260. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms/xai.md +0 -0
  261. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/llms.md +0 -0
  262. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/more/analytics.md +0 -0
  263. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/more/edit-formats.md +0 -0
  264. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/more/infinite-output.md +0 -0
  265. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/more-info.md +0 -0
  266. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
  267. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
  268. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/recordings/index.md +0 -0
  269. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
  270. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
  271. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/repomap.md +0 -0
  272. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/scripting.md +0 -0
  273. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
  274. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
  275. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/imports.md +0 -0
  276. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
  277. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/support.md +0 -0
  278. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/token-limits.md +0 -0
  279. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting/warnings.md +0 -0
  280. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/troubleshooting.md +0 -0
  281. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/browser.md +0 -0
  282. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/caching.md +0 -0
  283. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/commands.md +0 -0
  284. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/conventions.md +0 -0
  285. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/copypaste.md +0 -0
  286. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/images-urls.md +0 -0
  287. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/lint-test.md +0 -0
  288. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/modes.md +0 -0
  289. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/not-code.md +0 -0
  290. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/notifications.md +0 -0
  291. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/tips.md +0 -0
  292. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/tutorials.md +0 -0
  293. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/voice.md +0 -0
  294. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage/watch.md +0 -0
  295. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/docs/usage.md +0 -0
  296. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider/website/share/index.md +0 -0
  297. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider_ce.egg-info/dependency_links.txt +0 -0
  298. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider_ce.egg-info/entry_points.txt +0 -0
  299. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider_ce.egg-info/requires.txt +0 -0
  300. {aider_ce-0.88.4 → aider_ce-0.88.6}/aider_ce.egg-info/top_level.txt +0 -0
  301. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/Dockerfile +0 -0
  302. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/README.md +0 -0
  303. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/__init__.py +0 -0
  304. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/benchmark.py +0 -0
  305. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/clone-exercism.sh +0 -0
  306. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/cpp-test.sh +0 -0
  307. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/docker.sh +0 -0
  308. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/docker_build.sh +0 -0
  309. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/install-docker-ubuntu.sh +0 -0
  310. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/npm-test.sh +0 -0
  311. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/over_time.py +0 -0
  312. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/plot.sh +0 -0
  313. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/plots.py +0 -0
  314. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/problem_stats.py +0 -0
  315. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/prompts.py +0 -0
  316. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/refactor_tools.py +0 -0
  317. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/rsync.sh +0 -0
  318. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/rungrid.py +0 -0
  319. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/swe-bench-lite.txt +0 -0
  320. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/swe-bench.txt +0 -0
  321. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/swe_bench.py +0 -0
  322. {aider_ce-0.88.4 → aider_ce-0.88.6}/benchmark/test_benchmark.py +0 -0
  323. {aider_ce-0.88.4 → aider_ce-0.88.6}/docker/Dockerfile +0 -0
  324. {aider_ce-0.88.4 → aider_ce-0.88.6}/pyproject.toml +0 -0
  325. {aider_ce-0.88.4 → aider_ce-0.88.6}/pytest.ini +0 -0
  326. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/common-constraints.txt +0 -0
  327. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-browser.in +0 -0
  328. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-browser.txt +0 -0
  329. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-dev.in +0 -0
  330. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-dev.txt +0 -0
  331. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-help.in +0 -0
  332. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-help.txt +0 -0
  333. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-playwright.in +0 -0
  334. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements-playwright.txt +0 -0
  335. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/requirements.in +0 -0
  336. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements/tree-sitter.in +0 -0
  337. {aider_ce-0.88.4 → aider_ce-0.88.6}/requirements.txt +0 -0
  338. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/30k-image.py +0 -0
  339. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/Dockerfile.jekyll +0 -0
  340. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/__init__.py +0 -0
  341. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/blame.py +0 -0
  342. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/clean_metadata.py +0 -0
  343. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/dl_icons.py +0 -0
  344. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/history_prompts.py +0 -0
  345. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/homepage.py +0 -0
  346. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/issues.py +0 -0
  347. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/jekyll_build.sh +0 -0
  348. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/jekyll_run.sh +0 -0
  349. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/logo_svg.py +0 -0
  350. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/my_models.py +0 -0
  351. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/pip-compile.sh +0 -0
  352. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/recording_audio.py +0 -0
  353. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/redact-cast.py +0 -0
  354. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/tmux_record.sh +0 -0
  355. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/tsl_pack_langs.py +0 -0
  356. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/update-blame.sh +0 -0
  357. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/update-docs.sh +0 -0
  358. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/update-history.py +0 -0
  359. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/versionbump.py +0 -0
  360. {aider_ce-0.88.4 → aider_ce-0.88.6}/scripts/yank-old-versions.py +0 -0
  361. {aider_ce-0.88.4 → aider_ce-0.88.6}/setup.cfg +0 -0
  362. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/__init__.py +0 -0
  363. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/__init__.py +0 -0
  364. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_analytics.py +0 -0
  365. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_aws_credentials.py +0 -0
  366. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_coder.py +0 -0
  367. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_commands.py +0 -0
  368. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_editblock.py +0 -0
  369. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_editor.py +0 -0
  370. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_exceptions.py +0 -0
  371. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_find_or_blocks.py +0 -0
  372. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_history.py +0 -0
  373. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_io.py +0 -0
  374. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_linter.py +0 -0
  375. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_main.py +0 -0
  376. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_model_info_manager.py +0 -0
  377. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_models.py +0 -0
  378. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_onboarding.py +0 -0
  379. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_openrouter.py +0 -0
  380. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_reasoning.py +0 -0
  381. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_repo.py +0 -0
  382. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_run_cmd.py +0 -0
  383. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_sanity_check_repo.py +0 -0
  384. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_scripting.py +0 -0
  385. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_sendchat.py +0 -0
  386. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_special.py +0 -0
  387. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_udiff.py +0 -0
  388. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_urls.py +0 -0
  389. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_voice.py +0 -0
  390. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_watch.py +0 -0
  391. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/basic/test_wholefile.py +0 -0
  392. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/browser/test_browser.py +0 -0
  393. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  394. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/chat-history.md +0 -0
  395. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/arduino/test.ino +0 -0
  396. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/c/test.c +0 -0
  397. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/chatito/test.chatito +0 -0
  398. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/clojure/test.clj +0 -0
  399. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  400. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/cpp/test.cpp +0 -0
  401. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/csharp/test.cs +0 -0
  402. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/d/test.d +0 -0
  403. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/dart/test.dart +0 -0
  404. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/elisp/test.el +0 -0
  405. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/elixir/test.ex +0 -0
  406. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/elm/test.elm +0 -0
  407. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/gleam/test.gleam +0 -0
  408. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/go/test.go +0 -0
  409. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/hcl/test.tf +0 -0
  410. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/java/test.java +0 -0
  411. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/javascript/test.js +0 -0
  412. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/kotlin/test.kt +0 -0
  413. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/lua/test.lua +0 -0
  414. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/matlab/test.m +0 -0
  415. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/ocaml/test.ml +0 -0
  416. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  417. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/php/test.php +0 -0
  418. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/pony/test.pony +0 -0
  419. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/properties/test.properties +0 -0
  420. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/python/test.py +0 -0
  421. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/ql/test.ql +0 -0
  422. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/r/test.r +0 -0
  423. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/racket/test.rkt +0 -0
  424. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/ruby/test.rb +0 -0
  425. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/rust/test.rs +0 -0
  426. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/scala/test.scala +0 -0
  427. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/solidity/test.sol +0 -0
  428. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/swift/test.swift +0 -0
  429. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/tsx/test.tsx +0 -0
  430. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/typescript/test.ts +0 -0
  431. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/languages/udev/test.rules +0 -0
  432. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/sample-code-base/sample.js +0 -0
  433. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/sample-code-base/sample.py +0 -0
  434. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  435. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/watch.js +0 -0
  436. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/watch.lisp +0 -0
  437. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/watch.py +0 -0
  438. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/fixtures/watch_question.js +0 -0
  439. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/help/test_help.py +0 -0
  440. {aider_ce-0.88.4 → aider_ce-0.88.6}/tests/scrape/test_playwright_disable.py +0 -0
  441. {aider_ce-0.88.4 → aider_ce-0.88.6}/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.88.4
3
+ Version: 0.88.6
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
@@ -146,6 +146,8 @@ This project aims to be compatible with upstream Aider, but with priority commit
146
146
 
147
147
  ### Other Notes
148
148
  * [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
149
+ * [Session Management](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/sessions.md)
150
+
149
151
 
150
152
  ### Installation Instructions
151
153
  This project can be installed using several methods:
@@ -65,6 +65,8 @@ This project aims to be compatible with upstream Aider, but with priority commit
65
65
 
66
66
  ### Other Notes
67
67
  * [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
68
+ * [Session Management](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/sessions.md)
69
+
68
70
 
69
71
  ### Installation Instructions
70
72
  This project can be installed using several methods:
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.88.4.dev"
3
+ __version__ = "0.88.6.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.88.4'
32
- __version_tuple__ = version_tuple = (0, 88, 4)
31
+ __version__ = version = '0.88.6'
32
+ __version_tuple__ = version_tuple = (0, 88, 6)
33
33
 
34
- __commit_id__ = commit_id = 'g6752d1123'
34
+ __commit_id__ = commit_id = 'g732c383a4'
@@ -315,7 +315,12 @@ def get_parser(default_config_files, git_root):
315
315
  " (default: current directory)"
316
316
  ),
317
317
  )
318
-
318
+ group.add_argument(
319
+ "--map-memory-cache",
320
+ action="store_true",
321
+ help="Store repo map in memory (default: False)",
322
+ default=False,
323
+ )
319
324
  ##########
320
325
  group = parser.add_argument_group("History Files")
321
326
  default_input_history_file = (
@@ -745,7 +750,14 @@ def get_parser(default_config_files, git_root):
745
750
  help="Print the system prompts and exit (debug)",
746
751
  default=False,
747
752
  )
748
-
753
+ group.add_argument(
754
+ "--linear-output",
755
+ action="store_true",
756
+ help=(
757
+ "Run input and output sequentially instead of us simultaneous streams (default: False)"
758
+ ),
759
+ default=False,
760
+ )
749
761
  ##########
750
762
  group = parser.add_argument_group("Voice settings")
751
763
  group.add_argument(
@@ -381,6 +381,7 @@ class Coder:
381
381
  map_cache_dir=".",
382
382
  repomap_in_memory=False,
383
383
  preserve_todo_list=False,
384
+ linear_output=False,
384
385
  ):
385
386
  # initialize from args.map_cache_dir
386
387
  self.map_cache_dir = map_cache_dir
@@ -469,6 +470,7 @@ class Coder:
469
470
 
470
471
  self.dry_run = dry_run
471
472
  self.pretty = self.io.pretty
473
+ self.linear_output = linear_output
472
474
 
473
475
  self.main_model = main_model
474
476
 
@@ -1058,12 +1060,67 @@ class Coder:
1058
1060
  while self.io.confirmation_in_progress:
1059
1061
  await asyncio.sleep(0.1) # Yield control and wait briefly
1060
1062
 
1063
+ if self.linear_output:
1064
+ return await self._run_linear(with_message, preproc)
1065
+
1061
1066
  if self.io.prompt_session:
1062
1067
  with patch_stdout(raw=True):
1063
1068
  return await self._run_patched(with_message, preproc)
1064
1069
  else:
1065
1070
  return await self._run_patched(with_message, preproc)
1066
1071
 
1072
+ async def _run_linear(self, with_message=None, preproc=True):
1073
+ try:
1074
+ if with_message:
1075
+ self.io.user_input(with_message)
1076
+ await self.run_one(with_message, preproc)
1077
+ return self.partial_response_content
1078
+
1079
+ user_message = None
1080
+ await self.io.cancel_input_task()
1081
+ await self.io.cancel_processing_task()
1082
+
1083
+ while True:
1084
+ try:
1085
+ if self.commands.cmd_running:
1086
+ await asyncio.sleep(0.1)
1087
+ continue
1088
+
1089
+ if not self.suppress_announcements_for_next_prompt:
1090
+ self.show_announcements()
1091
+ self.suppress_announcements_for_next_prompt = True
1092
+
1093
+ self.io.input_task = asyncio.create_task(self.get_input())
1094
+ await asyncio.sleep(0)
1095
+ await self.io.input_task
1096
+ user_message = self.io.input_task.result()
1097
+
1098
+ self.io.processing_task = asyncio.create_task(
1099
+ self._processing_logic(user_message, preproc)
1100
+ )
1101
+
1102
+ await self.io.processing_task
1103
+
1104
+ self.io.ring_bell()
1105
+ user_message = None
1106
+ except KeyboardInterrupt:
1107
+ if self.io.input_task:
1108
+ self.io.set_placeholder("")
1109
+ await self.io.cancel_input_task()
1110
+
1111
+ if self.io.processing_task:
1112
+ await self.io.cancel_processing_task()
1113
+ self.io.stop_spinner()
1114
+
1115
+ self.keyboard_interrupt()
1116
+ except (asyncio.CancelledError, IndexError):
1117
+ pass
1118
+ except EOFError:
1119
+ return
1120
+ finally:
1121
+ await self.io.cancel_input_task()
1122
+ await self.io.cancel_processing_task()
1123
+
1067
1124
  async def _run_patched(self, with_message=None, preproc=True):
1068
1125
  try:
1069
1126
  if with_message:
@@ -1077,6 +1134,10 @@ class Coder:
1077
1134
 
1078
1135
  while True:
1079
1136
  try:
1137
+ if self.commands.cmd_running:
1138
+ await asyncio.sleep(0.1)
1139
+ continue
1140
+
1080
1141
  if (
1081
1142
  not self.io.confirmation_in_progress
1082
1143
  and not user_message
@@ -1134,6 +1195,10 @@ class Coder:
1134
1195
  try:
1135
1196
  user_message = self.io.input_task.result()
1136
1197
  await self.io.cancel_input_task()
1198
+
1199
+ if self.commands.is_run_command(user_message):
1200
+ self.commands.cmd_running = True
1201
+
1137
1202
  except (asyncio.CancelledError, KeyboardInterrupt):
1138
1203
  user_message = None
1139
1204
 
@@ -1170,7 +1235,6 @@ class Coder:
1170
1235
  user_message = None
1171
1236
 
1172
1237
  except (asyncio.CancelledError, KeyboardInterrupt):
1173
- print("error of some sort")
1174
1238
  pass
1175
1239
 
1176
1240
  # Stop spinner when processing task completes
@@ -1180,6 +1244,7 @@ class Coder:
1180
1244
  self.io.processing_task = asyncio.create_task(
1181
1245
  self._processing_logic(user_message, preproc)
1182
1246
  )
1247
+
1183
1248
  # Start spinner for processing task
1184
1249
  self.io.start_spinner("Processing...")
1185
1250
 
@@ -1243,6 +1308,12 @@ class Coder:
1243
1308
  return
1244
1309
 
1245
1310
  if self.commands.is_command(inp):
1311
+ if inp[0] in "!":
1312
+ inp = f"/run {inp[1:]}"
1313
+
1314
+ if self.commands.is_run_command(inp):
1315
+ self.commands.cmd_running = True
1316
+
1246
1317
  return await self.commands.run(inp)
1247
1318
 
1248
1319
  await self.check_for_file_mentions(inp)
@@ -1254,8 +1325,6 @@ class Coder:
1254
1325
  self.init_before_message()
1255
1326
 
1256
1327
  if preproc:
1257
- if user_message[0] in "!":
1258
- user_message = f"/run {user_message[1:]}"
1259
1328
  message = await self.preproc_user_input(user_message)
1260
1329
  else:
1261
1330
  message = user_message
@@ -1859,6 +1928,7 @@ class Coder:
1859
1928
  self.usage_report = None
1860
1929
  exhausted = False
1861
1930
  interrupted = False
1931
+
1862
1932
  try:
1863
1933
  while True:
1864
1934
  try:
@@ -2392,7 +2462,7 @@ class Coder:
2392
2462
  return (server.name, server_tools)
2393
2463
  except Exception as e:
2394
2464
  if server.name != "unnamed-server":
2395
- self.io.tool_warning(f"Error initializing MCP server {server.name}:\n{e}")
2465
+ self.io.tool_warning(f"Error initializing MCP server {server.name}: {e}")
2396
2466
  return None
2397
2467
 
2398
2468
  async def get_all_server_tools():
@@ -1,11 +1,14 @@
1
1
  import asyncio
2
2
  import glob
3
+ import json
3
4
  import os
4
5
  import re
5
6
  import subprocess
6
7
  import sys
7
8
  import tempfile
9
+ import time
8
10
  from collections import OrderedDict
11
+ from datetime import datetime
9
12
  from os.path import expanduser
10
13
  from pathlib import Path
11
14
 
@@ -84,6 +87,7 @@ class Commands:
84
87
 
85
88
  # Store the original read-only filenames provided via args.read
86
89
  self.original_read_only_fnames = set(original_read_only_fnames or [])
90
+ self.cmd_running = False
87
91
 
88
92
  def cmd_model(self, args):
89
93
  "Switch the Main Model to a new LLM"
@@ -256,6 +260,9 @@ class Commands:
256
260
  def is_command(self, inp):
257
261
  return inp[0] in "/!"
258
262
 
263
+ def is_run_command(self, inp):
264
+ return inp and (inp[0] in "!" or inp[:5] == "/test" or inp[:4] == "/run")
265
+
259
266
  def get_raw_completions(self, cmd):
260
267
  assert cmd.startswith("/")
261
268
  cmd = cmd[1:]
@@ -1151,51 +1158,61 @@ class Commands:
1151
1158
 
1152
1159
  async def cmd_run(self, args, add_on_nonzero_exit=False):
1153
1160
  "Run a shell command and optionally add the output to the chat (alias: !)"
1154
- exit_status, combined_output = await asyncio.to_thread(
1155
- run_cmd,
1156
- args,
1157
- verbose=self.verbose,
1158
- error_print=self.io.tool_error,
1159
- cwd=self.coder.root,
1160
- )
1161
+ try:
1162
+ self.cmd_running = True
1163
+ exit_status, combined_output = await asyncio.to_thread(
1164
+ run_cmd,
1165
+ args,
1166
+ verbose=self.verbose,
1167
+ error_print=self.io.tool_error,
1168
+ cwd=self.coder.root,
1169
+ )
1170
+ self.cmd_running = False
1161
1171
 
1162
- if combined_output is None:
1163
- return
1172
+ # This print statement, for whatever reason,
1173
+ # allows the thread to properly yield control of the terminal
1174
+ # to the main program
1175
+ print("")
1164
1176
 
1165
- # Calculate token count of output
1166
- token_count = self.coder.main_model.token_count(combined_output)
1167
- k_tokens = token_count / 1000
1177
+ if combined_output is None:
1178
+ return
1168
1179
 
1169
- if add_on_nonzero_exit:
1170
- add = exit_status != 0
1171
- else:
1172
- add = await self.io.confirm_ask(
1173
- f"Add {k_tokens:.1f}k tokens of command output to the chat?"
1174
- )
1180
+ # Calculate token count of output
1181
+ token_count = self.coder.main_model.token_count(combined_output)
1182
+ k_tokens = token_count / 1000
1175
1183
 
1176
- if add:
1177
- num_lines = len(combined_output.strip().splitlines())
1178
- line_plural = "line" if num_lines == 1 else "lines"
1179
- self.io.tool_output(f"Added {num_lines} {line_plural} of output to the chat.")
1184
+ if add_on_nonzero_exit:
1185
+ add = exit_status != 0
1186
+ else:
1187
+ add = await self.io.confirm_ask(
1188
+ f"Add {k_tokens:.1f}k tokens of command output to the chat?"
1189
+ )
1180
1190
 
1181
- msg = prompts.run_output.format(
1182
- command=args,
1183
- output=combined_output,
1184
- )
1191
+ if add:
1192
+ num_lines = len(combined_output.strip().splitlines())
1193
+ line_plural = "line" if num_lines == 1 else "lines"
1194
+ self.io.tool_output(f"Added {num_lines} {line_plural} of output to the chat.")
1185
1195
 
1186
- self.coder.cur_messages += [
1187
- dict(role="user", content=msg),
1188
- dict(role="assistant", content="Ok."),
1189
- ]
1196
+ msg = prompts.run_output.format(
1197
+ command=args,
1198
+ output=combined_output,
1199
+ )
1190
1200
 
1191
- if add_on_nonzero_exit and exit_status != 0:
1192
- # Return the formatted output message for test failures
1193
- return msg
1194
- elif add and exit_status != 0:
1195
- self.io.placeholder = "What's wrong? Fix"
1201
+ self.coder.cur_messages += [
1202
+ dict(role="user", content=msg),
1203
+ dict(role="assistant", content="Ok."),
1204
+ ]
1196
1205
 
1197
- # Return None if output wasn't added or command succeeded
1198
- return None
1206
+ if add_on_nonzero_exit and exit_status != 0:
1207
+ # Return the formatted output message for test failures
1208
+ return msg
1209
+ elif add and exit_status != 0:
1210
+ self.io.placeholder = "What's wrong? Fix"
1211
+
1212
+ # Return None if output wasn't added or command succeeded
1213
+ return None
1214
+ finally:
1215
+ self.cmd_running = False
1199
1216
 
1200
1217
  def cmd_exit(self, args):
1201
1218
  "Exit the application"
@@ -1476,19 +1493,12 @@ class Commands:
1476
1493
  edit_format=edit_format,
1477
1494
  summarize_from_coder=False,
1478
1495
  num_cache_warming_pings=0,
1496
+ aider_commit_hashes=self.coder.aider_commit_hashes,
1479
1497
  )
1480
1498
 
1481
1499
  user_msg = args
1482
- await coder.run(user_msg)
1483
-
1484
- # Use the provided placeholder if any
1485
- raise SwitchCoder(
1486
- edit_format=self.coder.edit_format,
1487
- summarize_from_coder=False,
1488
- from_coder=coder,
1489
- show_announcements=False,
1490
- placeholder=placeholder,
1491
- )
1500
+ await coder.run(user_msg, False)
1501
+ self.coder.aider_commit_hashes = coder.aider_commit_hashes
1492
1502
 
1493
1503
  def get_help_md(self):
1494
1504
  "Show help about all commands in markdown"
@@ -2021,6 +2031,197 @@ class Commands:
2021
2031
  announcements = "\n".join(self.coder.get_announcements())
2022
2032
  self.io.tool_output(announcements)
2023
2033
 
2034
+ def _get_session_directory(self):
2035
+ """Get the session storage directory, creating it if needed"""
2036
+ session_dir = Path(self.coder.root) / ".aider" / "sessions"
2037
+ session_dir.mkdir(parents=True, exist_ok=True)
2038
+ return session_dir
2039
+
2040
+ def _get_session_file_path(self, session_name):
2041
+ """Get the full path for a session file"""
2042
+ session_dir = self._get_session_directory()
2043
+ # Sanitize the session name to be filesystem-safe
2044
+ safe_name = re.sub(r"[^a-zA-Z0-9_.-]", "_", session_name)
2045
+ return session_dir / f"{safe_name}.json"
2046
+
2047
+ def _find_session_file(self, session_name):
2048
+ """Find a session file by name, checking both name-based and full path"""
2049
+ # First check if it's a full path
2050
+ if Path(session_name).exists():
2051
+ return Path(session_name)
2052
+
2053
+ # Then check in the sessions directory
2054
+ session_file = self._get_session_file_path(session_name)
2055
+ if session_file.exists():
2056
+ return session_file
2057
+
2058
+ return None
2059
+
2060
+ def cmd_save_session(self, args):
2061
+ """Save the current chat session to a named file in .aider/sessions/"""
2062
+ if not args.strip():
2063
+ self.io.tool_error("Please provide a session name.")
2064
+ return
2065
+
2066
+ session_name = args.strip()
2067
+ session_file = self._get_session_file_path(session_name)
2068
+
2069
+ # Collect session data
2070
+ session_data = {
2071
+ "version": "1.0",
2072
+ "timestamp": time.time(),
2073
+ "session_name": session_name,
2074
+ "model": self.coder.main_model.name,
2075
+ "edit_format": self.coder.edit_format,
2076
+ "chat_history": {
2077
+ "done_messages": self.coder.done_messages,
2078
+ "cur_messages": self.coder.cur_messages,
2079
+ },
2080
+ "files": {
2081
+ "editable": [self.coder.get_rel_fname(f) for f in self.coder.abs_fnames],
2082
+ "read_only": [self.coder.get_rel_fname(f) for f in self.coder.abs_read_only_fnames],
2083
+ "read_only_stubs": [
2084
+ self.coder.get_rel_fname(f) for f in self.coder.abs_read_only_stubs_fnames
2085
+ ],
2086
+ },
2087
+ "settings": {
2088
+ "root": self.coder.root,
2089
+ "auto_commits": self.coder.auto_commits,
2090
+ "auto_lint": self.coder.auto_lint,
2091
+ "auto_test": self.coder.auto_test,
2092
+ },
2093
+ }
2094
+
2095
+ try:
2096
+ with open(session_file, "w", encoding="utf-8") as f:
2097
+ json.dump(session_data, f, indent=2, ensure_ascii=False)
2098
+ self.io.tool_output(f"Session saved to: {session_file}")
2099
+ except Exception as e:
2100
+ self.io.tool_error(f"Error saving session: {e}")
2101
+
2102
+ def cmd_list_sessions(self, args):
2103
+ """List all saved sessions in .aider/sessions/"""
2104
+ session_dir = self._get_session_directory()
2105
+ session_files = list(session_dir.glob("*.json"))
2106
+
2107
+ if not session_files:
2108
+ self.io.tool_output("No saved sessions found.")
2109
+ return
2110
+
2111
+ self.io.tool_output("Saved sessions:")
2112
+ for session_file in sorted(session_files):
2113
+ try:
2114
+ with open(session_file, "r", encoding="utf-8") as f:
2115
+ session_data = json.load(f)
2116
+ session_name = session_data.get("session_name", session_file.stem)
2117
+ timestamp = session_data.get("timestamp", 0)
2118
+ model = session_data.get("model", "unknown")
2119
+ edit_format = session_data.get("edit_format", "unknown")
2120
+
2121
+ # Format timestamp
2122
+ if timestamp:
2123
+ date_str = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M")
2124
+ else:
2125
+ date_str = "unknown date"
2126
+
2127
+ self.io.tool_output(
2128
+ f" {session_name} (model: {model}, format: {edit_format}, {date_str})"
2129
+ )
2130
+ except Exception as e:
2131
+ self.io.tool_output(f" {session_file.stem} [error reading: {e}]")
2132
+
2133
+ def cmd_load_session(self, args):
2134
+ """Load a saved session by name or file path"""
2135
+ if not args.strip():
2136
+ self.io.tool_error("Please provide a session name or file path.")
2137
+ return
2138
+
2139
+ session_name = args.strip()
2140
+ session_file = self._find_session_file(session_name)
2141
+
2142
+ if not session_file:
2143
+ self.io.tool_error(f"Session not found: {session_name}")
2144
+ self.io.tool_output("Use /list-sessions to see available sessions.")
2145
+ return
2146
+
2147
+ try:
2148
+ with open(session_file, "r", encoding="utf-8") as f:
2149
+ session_data = json.load(f)
2150
+ except Exception as e:
2151
+ self.io.tool_error(f"Error loading session: {e}")
2152
+ return
2153
+
2154
+ # Verify session format
2155
+ if not isinstance(session_data, dict) or "version" not in session_data:
2156
+ self.io.tool_error("Invalid session format.")
2157
+ return
2158
+
2159
+ # Load session data
2160
+ try:
2161
+ # Clear current state
2162
+ self.coder.abs_fnames = set()
2163
+ self.coder.abs_read_only_fnames = set()
2164
+ self.coder.abs_read_only_stubs_fnames = set()
2165
+ self.coder.done_messages = []
2166
+ self.coder.cur_messages = []
2167
+
2168
+ # Load chat history
2169
+ chat_history = session_data.get("chat_history", {})
2170
+ self.coder.done_messages = chat_history.get("done_messages", [])
2171
+ self.coder.cur_messages = chat_history.get("cur_messages", [])
2172
+
2173
+ # Load files
2174
+ files = session_data.get("files", {})
2175
+ for rel_fname in files.get("editable", []):
2176
+ abs_fname = self.coder.abs_root_path(rel_fname)
2177
+ if os.path.exists(abs_fname):
2178
+ self.coder.abs_fnames.add(abs_fname)
2179
+ else:
2180
+ self.io.tool_warning(f"File not found, skipping: {rel_fname}")
2181
+
2182
+ for rel_fname in files.get("read_only", []):
2183
+ abs_fname = self.coder.abs_root_path(rel_fname)
2184
+ if os.path.exists(abs_fname):
2185
+ self.coder.abs_read_only_fnames.add(abs_fname)
2186
+ else:
2187
+ self.io.tool_warning(f"File not found, skipping: {rel_fname}")
2188
+
2189
+ for rel_fname in files.get("read_only_stubs", []):
2190
+ abs_fname = self.coder.abs_root_path(rel_fname)
2191
+ if os.path.exists(abs_fname):
2192
+ self.coder.abs_read_only_stubs_fnames.add(abs_fname)
2193
+ else:
2194
+ self.io.tool_warning(f"File not found, skipping: {rel_fname}")
2195
+
2196
+ # Load settings
2197
+ settings = session_data.get("settings", {})
2198
+ if "auto_commits" in settings:
2199
+ self.coder.auto_commits = settings["auto_commits"]
2200
+ if "auto_lint" in settings:
2201
+ self.coder.auto_lint = settings["auto_lint"]
2202
+ if "auto_test" in settings:
2203
+ self.coder.auto_test = settings["auto_test"]
2204
+
2205
+ self.io.tool_output(
2206
+ f"Session loaded: {session_data.get('session_name', session_file.stem)}"
2207
+ )
2208
+ self.io.tool_output(
2209
+ f"Model: {session_data.get('model', 'unknown')}, Edit format:"
2210
+ f" {session_data.get('edit_format', 'unknown')}"
2211
+ )
2212
+
2213
+ # Show summary
2214
+ num_messages = len(self.coder.done_messages) + len(self.coder.cur_messages)
2215
+ num_files = (
2216
+ len(self.coder.abs_fnames)
2217
+ + len(self.coder.abs_read_only_fnames)
2218
+ + len(self.coder.abs_read_only_stubs_fnames)
2219
+ )
2220
+ self.io.tool_output(f"Loaded {num_messages} messages and {num_files} files")
2221
+
2222
+ except Exception as e:
2223
+ self.io.tool_error(f"Error applying session data: {e}")
2224
+
2024
2225
  def cmd_copy_context(self, args=None):
2025
2226
  """Copy the current chat context as markdown, suitable to paste into a web UI"""
2026
2227
 
@@ -71,6 +71,9 @@ class LiteLLMExceptions:
71
71
  ex = getattr(litellm, var, "default")
72
72
 
73
73
  if ex != "default":
74
+ if not issubclass(ex, BaseException):
75
+ continue
76
+
74
77
  self.exceptions[ex] = self.exception_info[var]
75
78
 
76
79
  def exceptions_tuple(self):