chatmcp-cli 0.1.0__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.
Files changed (394) hide show
  1. chatmcp_cli-0.1.0/.dockerignore +10 -0
  2. chatmcp_cli-0.1.0/.env.example +8 -0
  3. chatmcp_cli-0.1.0/.flake8 +3 -0
  4. chatmcp_cli-0.1.0/.github/ISSUE_TEMPLATE/issue.yml +21 -0
  5. chatmcp_cli-0.1.0/.github/workflows/check_pypi_version.yml +86 -0
  6. chatmcp_cli-0.1.0/.github/workflows/docker-build-test.yml +85 -0
  7. chatmcp_cli-0.1.0/.github/workflows/docker-release.yml +52 -0
  8. chatmcp_cli-0.1.0/.github/workflows/issues.yml +29 -0
  9. chatmcp_cli-0.1.0/.github/workflows/pages.yml +87 -0
  10. chatmcp_cli-0.1.0/.github/workflows/pre-commit.yml +48 -0
  11. chatmcp_cli-0.1.0/.github/workflows/release.yml +34 -0
  12. chatmcp_cli-0.1.0/.github/workflows/ubuntu-tests.yml +61 -0
  13. chatmcp_cli-0.1.0/.github/workflows/windows-tests.yml +57 -0
  14. chatmcp_cli-0.1.0/.github/workflows/windows_check_pypi_version.yml +90 -0
  15. chatmcp_cli-0.1.0/.gitignore +21 -0
  16. chatmcp_cli-0.1.0/.pre-commit-config.yaml +23 -0
  17. chatmcp_cli-0.1.0/CNAME +1 -0
  18. chatmcp_cli-0.1.0/CONTRIBUTING.md +241 -0
  19. chatmcp_cli-0.1.0/HISTORY.md +1447 -0
  20. chatmcp_cli-0.1.0/LICENSE.txt +202 -0
  21. chatmcp_cli-0.1.0/MANIFEST.in +20 -0
  22. chatmcp_cli-0.1.0/PKG-INFO +502 -0
  23. chatmcp_cli-0.1.0/README.md +179 -0
  24. chatmcp_cli-0.1.0/aider/__init__.py +20 -0
  25. chatmcp_cli-0.1.0/aider/__main__.py +4 -0
  26. chatmcp_cli-0.1.0/aider/_version.py +21 -0
  27. chatmcp_cli-0.1.0/aider/analytics.py +250 -0
  28. chatmcp_cli-0.1.0/aider/args.py +926 -0
  29. chatmcp_cli-0.1.0/aider/args_formatter.py +228 -0
  30. chatmcp_cli-0.1.0/aider/coders/__init__.py +34 -0
  31. chatmcp_cli-0.1.0/aider/coders/architect_coder.py +48 -0
  32. chatmcp_cli-0.1.0/aider/coders/architect_prompts.py +40 -0
  33. chatmcp_cli-0.1.0/aider/coders/ask_coder.py +9 -0
  34. chatmcp_cli-0.1.0/aider/coders/ask_prompts.py +35 -0
  35. chatmcp_cli-0.1.0/aider/coders/base_coder.py +2483 -0
  36. chatmcp_cli-0.1.0/aider/coders/base_prompts.py +60 -0
  37. chatmcp_cli-0.1.0/aider/coders/chat_chunks.py +64 -0
  38. chatmcp_cli-0.1.0/aider/coders/context_coder.py +53 -0
  39. chatmcp_cli-0.1.0/aider/coders/context_prompts.py +75 -0
  40. chatmcp_cli-0.1.0/aider/coders/editblock_coder.py +657 -0
  41. chatmcp_cli-0.1.0/aider/coders/editblock_fenced_coder.py +10 -0
  42. chatmcp_cli-0.1.0/aider/coders/editblock_fenced_prompts.py +143 -0
  43. chatmcp_cli-0.1.0/aider/coders/editblock_func_coder.py +141 -0
  44. chatmcp_cli-0.1.0/aider/coders/editblock_func_prompts.py +27 -0
  45. chatmcp_cli-0.1.0/aider/coders/editblock_prompts.py +174 -0
  46. chatmcp_cli-0.1.0/aider/coders/editor_diff_fenced_coder.py +9 -0
  47. chatmcp_cli-0.1.0/aider/coders/editor_diff_fenced_prompts.py +11 -0
  48. chatmcp_cli-0.1.0/aider/coders/editor_editblock_coder.py +8 -0
  49. chatmcp_cli-0.1.0/aider/coders/editor_editblock_prompts.py +18 -0
  50. chatmcp_cli-0.1.0/aider/coders/editor_whole_coder.py +8 -0
  51. chatmcp_cli-0.1.0/aider/coders/editor_whole_prompts.py +10 -0
  52. chatmcp_cli-0.1.0/aider/coders/help_coder.py +16 -0
  53. chatmcp_cli-0.1.0/aider/coders/help_prompts.py +46 -0
  54. chatmcp_cli-0.1.0/aider/coders/patch_coder.py +706 -0
  55. chatmcp_cli-0.1.0/aider/coders/patch_prompts.py +161 -0
  56. chatmcp_cli-0.1.0/aider/coders/search_replace.py +757 -0
  57. chatmcp_cli-0.1.0/aider/coders/shell.py +37 -0
  58. chatmcp_cli-0.1.0/aider/coders/single_wholefile_func_coder.py +102 -0
  59. chatmcp_cli-0.1.0/aider/coders/single_wholefile_func_prompts.py +27 -0
  60. chatmcp_cli-0.1.0/aider/coders/udiff_coder.py +429 -0
  61. chatmcp_cli-0.1.0/aider/coders/udiff_prompts.py +115 -0
  62. chatmcp_cli-0.1.0/aider/coders/udiff_simple.py +14 -0
  63. chatmcp_cli-0.1.0/aider/coders/udiff_simple_prompts.py +25 -0
  64. chatmcp_cli-0.1.0/aider/coders/wholefile_coder.py +144 -0
  65. chatmcp_cli-0.1.0/aider/coders/wholefile_func_coder.py +134 -0
  66. chatmcp_cli-0.1.0/aider/coders/wholefile_func_prompts.py +27 -0
  67. chatmcp_cli-0.1.0/aider/coders/wholefile_prompts.py +67 -0
  68. chatmcp_cli-0.1.0/aider/commands.py +1665 -0
  69. chatmcp_cli-0.1.0/aider/copypaste.py +72 -0
  70. chatmcp_cli-0.1.0/aider/deprecated.py +126 -0
  71. chatmcp_cli-0.1.0/aider/diffs.py +128 -0
  72. chatmcp_cli-0.1.0/aider/dump.py +29 -0
  73. chatmcp_cli-0.1.0/aider/editor.py +147 -0
  74. chatmcp_cli-0.1.0/aider/exceptions.py +107 -0
  75. chatmcp_cli-0.1.0/aider/format_settings.py +26 -0
  76. chatmcp_cli-0.1.0/aider/gui.py +545 -0
  77. chatmcp_cli-0.1.0/aider/help.py +163 -0
  78. chatmcp_cli-0.1.0/aider/help_pats.py +19 -0
  79. chatmcp_cli-0.1.0/aider/history.py +143 -0
  80. chatmcp_cli-0.1.0/aider/io.py +1175 -0
  81. chatmcp_cli-0.1.0/aider/linter.py +304 -0
  82. chatmcp_cli-0.1.0/aider/llm.py +47 -0
  83. chatmcp_cli-0.1.0/aider/main.py +1267 -0
  84. chatmcp_cli-0.1.0/aider/mdstream.py +243 -0
  85. chatmcp_cli-0.1.0/aider/models.py +1286 -0
  86. chatmcp_cli-0.1.0/aider/onboarding.py +428 -0
  87. chatmcp_cli-0.1.0/aider/openrouter.py +128 -0
  88. chatmcp_cli-0.1.0/aider/prompts.py +64 -0
  89. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/README.md +7 -0
  90. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  91. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/c-tags.scm +9 -0
  92. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  93. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
  94. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
  95. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
  96. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  97. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
  98. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  99. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
  100. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
  101. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  102. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/go-tags.scm +42 -0
  103. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/java-tags.scm +20 -0
  104. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
  105. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
  106. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
  107. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +98 -0
  108. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  109. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  110. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/python-tags.scm +14 -0
  111. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/r-tags.scm +21 -0
  112. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  113. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
  114. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
  115. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  116. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
  117. chatmcp_cli-0.1.0/aider/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  118. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/README.md +23 -0
  119. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/c-tags.scm +9 -0
  120. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
  121. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/cpp-tags.scm +15 -0
  122. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/dart-tags.scm +91 -0
  123. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  124. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/elixir-tags.scm +54 -0
  125. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/elm-tags.scm +19 -0
  126. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/go-tags.scm +30 -0
  127. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  128. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/java-tags.scm +20 -0
  129. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/javascript-tags.scm +88 -0
  130. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
  131. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  132. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +98 -0
  133. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/php-tags.scm +26 -0
  134. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/python-tags.scm +12 -0
  135. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/ql-tags.scm +26 -0
  136. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/ruby-tags.scm +64 -0
  137. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/rust-tags.scm +60 -0
  138. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/scala-tags.scm +65 -0
  139. chatmcp_cli-0.1.0/aider/queries/tree-sitter-languages/typescript-tags.scm +41 -0
  140. chatmcp_cli-0.1.0/aider/reasoning_tags.py +82 -0
  141. chatmcp_cli-0.1.0/aider/repo.py +623 -0
  142. chatmcp_cli-0.1.0/aider/repomap.py +847 -0
  143. chatmcp_cli-0.1.0/aider/report.py +200 -0
  144. chatmcp_cli-0.1.0/aider/resources/__init__.py +3 -0
  145. chatmcp_cli-0.1.0/aider/resources/model-metadata.json +468 -0
  146. chatmcp_cli-0.1.0/aider/resources/model-settings.yml +1767 -0
  147. chatmcp_cli-0.1.0/aider/run_cmd.py +132 -0
  148. chatmcp_cli-0.1.0/aider/scrape.py +284 -0
  149. chatmcp_cli-0.1.0/aider/sendchat.py +61 -0
  150. chatmcp_cli-0.1.0/aider/special.py +203 -0
  151. chatmcp_cli-0.1.0/aider/urls.py +17 -0
  152. chatmcp_cli-0.1.0/aider/utils.py +338 -0
  153. chatmcp_cli-0.1.0/aider/versioncheck.py +113 -0
  154. chatmcp_cli-0.1.0/aider/voice.py +187 -0
  155. chatmcp_cli-0.1.0/aider/waiting.py +221 -0
  156. chatmcp_cli-0.1.0/aider/watch.py +318 -0
  157. chatmcp_cli-0.1.0/aider/watch_prompts.py +12 -0
  158. chatmcp_cli-0.1.0/aider/website/Gemfile +8 -0
  159. chatmcp_cli-0.1.0/aider/website/_includes/blame.md +162 -0
  160. chatmcp_cli-0.1.0/aider/website/_includes/get-started.md +22 -0
  161. chatmcp_cli-0.1.0/aider/website/_includes/help-tip.md +5 -0
  162. chatmcp_cli-0.1.0/aider/website/_includes/help.md +24 -0
  163. chatmcp_cli-0.1.0/aider/website/_includes/install.md +5 -0
  164. chatmcp_cli-0.1.0/aider/website/_includes/keys.md +4 -0
  165. chatmcp_cli-0.1.0/aider/website/_includes/model-warnings.md +67 -0
  166. chatmcp_cli-0.1.0/aider/website/_includes/multi-line.md +22 -0
  167. chatmcp_cli-0.1.0/aider/website/_includes/python-m-aider.md +5 -0
  168. chatmcp_cli-0.1.0/aider/website/_includes/recording.css +228 -0
  169. chatmcp_cli-0.1.0/aider/website/_includes/recording.md +34 -0
  170. chatmcp_cli-0.1.0/aider/website/_includes/replit-pipx.md +9 -0
  171. chatmcp_cli-0.1.0/aider/website/_includes/works-best.md +1 -0
  172. chatmcp_cli-0.1.0/aider/website/_sass/custom/custom.scss +103 -0
  173. chatmcp_cli-0.1.0/aider/website/docs/config/adv-model-settings.md +1881 -0
  174. chatmcp_cli-0.1.0/aider/website/docs/config/aider_conf.md +527 -0
  175. chatmcp_cli-0.1.0/aider/website/docs/config/api-keys.md +90 -0
  176. chatmcp_cli-0.1.0/aider/website/docs/config/dotenv.md +478 -0
  177. chatmcp_cli-0.1.0/aider/website/docs/config/editor.md +127 -0
  178. chatmcp_cli-0.1.0/aider/website/docs/config/model-aliases.md +103 -0
  179. chatmcp_cli-0.1.0/aider/website/docs/config/options.md +843 -0
  180. chatmcp_cli-0.1.0/aider/website/docs/config/reasoning.md +209 -0
  181. chatmcp_cli-0.1.0/aider/website/docs/config.md +44 -0
  182. chatmcp_cli-0.1.0/aider/website/docs/faq.md +378 -0
  183. chatmcp_cli-0.1.0/aider/website/docs/git.md +76 -0
  184. chatmcp_cli-0.1.0/aider/website/docs/index.md +47 -0
  185. chatmcp_cli-0.1.0/aider/website/docs/install/codespaces.md +39 -0
  186. chatmcp_cli-0.1.0/aider/website/docs/install/docker.md +57 -0
  187. chatmcp_cli-0.1.0/aider/website/docs/install/optional.md +100 -0
  188. chatmcp_cli-0.1.0/aider/website/docs/install/replit.md +8 -0
  189. chatmcp_cli-0.1.0/aider/website/docs/install.md +115 -0
  190. chatmcp_cli-0.1.0/aider/website/docs/languages.md +264 -0
  191. chatmcp_cli-0.1.0/aider/website/docs/legal/contributor-agreement.md +111 -0
  192. chatmcp_cli-0.1.0/aider/website/docs/legal/privacy.md +104 -0
  193. chatmcp_cli-0.1.0/aider/website/docs/llms/anthropic.md +77 -0
  194. chatmcp_cli-0.1.0/aider/website/docs/llms/azure.md +48 -0
  195. chatmcp_cli-0.1.0/aider/website/docs/llms/bedrock.md +132 -0
  196. chatmcp_cli-0.1.0/aider/website/docs/llms/cohere.md +34 -0
  197. chatmcp_cli-0.1.0/aider/website/docs/llms/deepseek.md +32 -0
  198. chatmcp_cli-0.1.0/aider/website/docs/llms/gemini.md +49 -0
  199. chatmcp_cli-0.1.0/aider/website/docs/llms/github.md +105 -0
  200. chatmcp_cli-0.1.0/aider/website/docs/llms/groq.md +36 -0
  201. chatmcp_cli-0.1.0/aider/website/docs/llms/lm-studio.md +39 -0
  202. chatmcp_cli-0.1.0/aider/website/docs/llms/ollama.md +75 -0
  203. chatmcp_cli-0.1.0/aider/website/docs/llms/openai-compat.md +39 -0
  204. chatmcp_cli-0.1.0/aider/website/docs/llms/openai.md +58 -0
  205. chatmcp_cli-0.1.0/aider/website/docs/llms/openrouter.md +78 -0
  206. chatmcp_cli-0.1.0/aider/website/docs/llms/other.md +103 -0
  207. chatmcp_cli-0.1.0/aider/website/docs/llms/vertex.md +50 -0
  208. chatmcp_cli-0.1.0/aider/website/docs/llms/warnings.md +10 -0
  209. chatmcp_cli-0.1.0/aider/website/docs/llms/xai.md +53 -0
  210. chatmcp_cli-0.1.0/aider/website/docs/llms.md +54 -0
  211. chatmcp_cli-0.1.0/aider/website/docs/more/analytics.md +122 -0
  212. chatmcp_cli-0.1.0/aider/website/docs/more/edit-formats.md +116 -0
  213. chatmcp_cli-0.1.0/aider/website/docs/more/infinite-output.md +137 -0
  214. chatmcp_cli-0.1.0/aider/website/docs/more-info.md +8 -0
  215. chatmcp_cli-0.1.0/aider/website/docs/recordings/auto-accept-architect.md +31 -0
  216. chatmcp_cli-0.1.0/aider/website/docs/recordings/dont-drop-original-read-files.md +35 -0
  217. chatmcp_cli-0.1.0/aider/website/docs/recordings/index.md +21 -0
  218. chatmcp_cli-0.1.0/aider/website/docs/recordings/model-accepts-settings.md +69 -0
  219. chatmcp_cli-0.1.0/aider/website/docs/recordings/tree-sitter-language-pack.md +80 -0
  220. chatmcp_cli-0.1.0/aider/website/docs/repomap.md +112 -0
  221. chatmcp_cli-0.1.0/aider/website/docs/scripting.md +100 -0
  222. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/aider-not-found.md +24 -0
  223. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/edit-errors.md +76 -0
  224. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/imports.md +62 -0
  225. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/models-and-keys.md +54 -0
  226. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/support.md +79 -0
  227. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/token-limits.md +96 -0
  228. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting/warnings.md +12 -0
  229. chatmcp_cli-0.1.0/aider/website/docs/troubleshooting.md +11 -0
  230. chatmcp_cli-0.1.0/aider/website/docs/usage/browser.md +57 -0
  231. chatmcp_cli-0.1.0/aider/website/docs/usage/caching.md +49 -0
  232. chatmcp_cli-0.1.0/aider/website/docs/usage/commands.md +132 -0
  233. chatmcp_cli-0.1.0/aider/website/docs/usage/conventions.md +119 -0
  234. chatmcp_cli-0.1.0/aider/website/docs/usage/copypaste.md +121 -0
  235. chatmcp_cli-0.1.0/aider/website/docs/usage/images-urls.md +48 -0
  236. chatmcp_cli-0.1.0/aider/website/docs/usage/lint-test.md +118 -0
  237. chatmcp_cli-0.1.0/aider/website/docs/usage/modes.md +211 -0
  238. chatmcp_cli-0.1.0/aider/website/docs/usage/not-code.md +179 -0
  239. chatmcp_cli-0.1.0/aider/website/docs/usage/notifications.md +87 -0
  240. chatmcp_cli-0.1.0/aider/website/docs/usage/tips.md +79 -0
  241. chatmcp_cli-0.1.0/aider/website/docs/usage/tutorials.md +30 -0
  242. chatmcp_cli-0.1.0/aider/website/docs/usage/voice.md +121 -0
  243. chatmcp_cli-0.1.0/aider/website/docs/usage/watch.md +294 -0
  244. chatmcp_cli-0.1.0/aider/website/docs/usage.md +92 -0
  245. chatmcp_cli-0.1.0/aider/website/share/index.md +101 -0
  246. chatmcp_cli-0.1.0/benchmark/Dockerfile +64 -0
  247. chatmcp_cli-0.1.0/benchmark/README.md +146 -0
  248. chatmcp_cli-0.1.0/benchmark/__init__.py +0 -0
  249. chatmcp_cli-0.1.0/benchmark/benchmark.py +1059 -0
  250. chatmcp_cli-0.1.0/benchmark/clone-exercism.sh +20 -0
  251. chatmcp_cli-0.1.0/benchmark/cpp-test.sh +11 -0
  252. chatmcp_cli-0.1.0/benchmark/docker.sh +19 -0
  253. chatmcp_cli-0.1.0/benchmark/docker_build.sh +8 -0
  254. chatmcp_cli-0.1.0/benchmark/install-docker-ubuntu.sh +63 -0
  255. chatmcp_cli-0.1.0/benchmark/npm-test.sh +13 -0
  256. chatmcp_cli-0.1.0/benchmark/over_time.py +168 -0
  257. chatmcp_cli-0.1.0/benchmark/plot.sh +29 -0
  258. chatmcp_cli-0.1.0/benchmark/plots.py +417 -0
  259. chatmcp_cli-0.1.0/benchmark/problem_stats.py +355 -0
  260. chatmcp_cli-0.1.0/benchmark/prompts.py +16 -0
  261. chatmcp_cli-0.1.0/benchmark/refactor_tools.py +209 -0
  262. chatmcp_cli-0.1.0/benchmark/rsync.sh +45 -0
  263. chatmcp_cli-0.1.0/benchmark/rungrid.py +61 -0
  264. chatmcp_cli-0.1.0/benchmark/swe-bench-lite.txt +7 -0
  265. chatmcp_cli-0.1.0/benchmark/swe-bench.txt +7 -0
  266. chatmcp_cli-0.1.0/benchmark/swe_bench.py +131 -0
  267. chatmcp_cli-0.1.0/benchmark/test_benchmark.py +47 -0
  268. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/PKG-INFO +502 -0
  269. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/SOURCES.txt +392 -0
  270. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/dependency_links.txt +1 -0
  271. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/entry_points.txt +3 -0
  272. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/requires.txt +309 -0
  273. chatmcp_cli-0.1.0/chatmcp_cli.egg-info/top_level.txt +1 -0
  274. chatmcp_cli-0.1.0/docker/Dockerfile +80 -0
  275. chatmcp_cli-0.1.0/project.json +75 -0
  276. chatmcp_cli-0.1.0/pyproject.toml +54 -0
  277. chatmcp_cli-0.1.0/pytest.ini +12 -0
  278. chatmcp_cli-0.1.0/requirements/common-constraints.txt +612 -0
  279. chatmcp_cli-0.1.0/requirements/requirements-browser.in +1 -0
  280. chatmcp_cli-0.1.0/requirements/requirements-browser.txt +155 -0
  281. chatmcp_cli-0.1.0/requirements/requirements-dev.in +14 -0
  282. chatmcp_cli-0.1.0/requirements/requirements-dev.txt +311 -0
  283. chatmcp_cli-0.1.0/requirements/requirements-help.in +11 -0
  284. chatmcp_cli-0.1.0/requirements/requirements-help.txt +327 -0
  285. chatmcp_cli-0.1.0/requirements/requirements-playwright.in +1 -0
  286. chatmcp_cli-0.1.0/requirements/requirements-playwright.txt +18 -0
  287. chatmcp_cli-0.1.0/requirements/requirements.in +51 -0
  288. chatmcp_cli-0.1.0/requirements/tree-sitter.in +3 -0
  289. chatmcp_cli-0.1.0/requirements.txt +528 -0
  290. chatmcp_cli-0.1.0/scripts/30k-image.py +235 -0
  291. chatmcp_cli-0.1.0/scripts/Dockerfile.jekyll +20 -0
  292. chatmcp_cli-0.1.0/scripts/__init__.py +0 -0
  293. chatmcp_cli-0.1.0/scripts/blame.py +291 -0
  294. chatmcp_cli-0.1.0/scripts/clean_metadata.py +258 -0
  295. chatmcp_cli-0.1.0/scripts/dl_icons.py +59 -0
  296. chatmcp_cli-0.1.0/scripts/history_prompts.py +26 -0
  297. chatmcp_cli-0.1.0/scripts/homepage.py +619 -0
  298. chatmcp_cli-0.1.0/scripts/issues.py +458 -0
  299. chatmcp_cli-0.1.0/scripts/jekyll_build.sh +4 -0
  300. chatmcp_cli-0.1.0/scripts/jekyll_run.sh +16 -0
  301. chatmcp_cli-0.1.0/scripts/logo_svg.py +174 -0
  302. chatmcp_cli-0.1.0/scripts/my_models.py +98 -0
  303. chatmcp_cli-0.1.0/scripts/pip-compile.sh +43 -0
  304. chatmcp_cli-0.1.0/scripts/recording_audio.py +338 -0
  305. chatmcp_cli-0.1.0/scripts/redact-cast.py +62 -0
  306. chatmcp_cli-0.1.0/scripts/tmux_record.sh +18 -0
  307. chatmcp_cli-0.1.0/scripts/tsl_pack_langs.py +145 -0
  308. chatmcp_cli-0.1.0/scripts/update-blame.sh +8 -0
  309. chatmcp_cli-0.1.0/scripts/update-docs.sh +34 -0
  310. chatmcp_cli-0.1.0/scripts/update-history.py +162 -0
  311. chatmcp_cli-0.1.0/scripts/versionbump.py +175 -0
  312. chatmcp_cli-0.1.0/scripts/yank-old-versions.py +51 -0
  313. chatmcp_cli-0.1.0/setup.cfg +4 -0
  314. chatmcp_cli-0.1.0/tests/__init__.py +0 -0
  315. chatmcp_cli-0.1.0/tests/basic/__init__.py +0 -0
  316. chatmcp_cli-0.1.0/tests/basic/test_analytics.py +136 -0
  317. chatmcp_cli-0.1.0/tests/basic/test_aws_credentials.py +169 -0
  318. chatmcp_cli-0.1.0/tests/basic/test_coder.py +1438 -0
  319. chatmcp_cli-0.1.0/tests/basic/test_commands.py +2199 -0
  320. chatmcp_cli-0.1.0/tests/basic/test_deprecated.py +140 -0
  321. chatmcp_cli-0.1.0/tests/basic/test_editblock.py +618 -0
  322. chatmcp_cli-0.1.0/tests/basic/test_editor.py +159 -0
  323. chatmcp_cli-0.1.0/tests/basic/test_exceptions.py +84 -0
  324. chatmcp_cli-0.1.0/tests/basic/test_find_or_blocks.py +115 -0
  325. chatmcp_cli-0.1.0/tests/basic/test_history.py +109 -0
  326. chatmcp_cli-0.1.0/tests/basic/test_io.py +610 -0
  327. chatmcp_cli-0.1.0/tests/basic/test_linter.py +84 -0
  328. chatmcp_cli-0.1.0/tests/basic/test_main.py +1375 -0
  329. chatmcp_cli-0.1.0/tests/basic/test_model_info_manager.py +80 -0
  330. chatmcp_cli-0.1.0/tests/basic/test_models.py +563 -0
  331. chatmcp_cli-0.1.0/tests/basic/test_onboarding.py +437 -0
  332. chatmcp_cli-0.1.0/tests/basic/test_openrouter.py +73 -0
  333. chatmcp_cli-0.1.0/tests/basic/test_reasoning.py +609 -0
  334. chatmcp_cli-0.1.0/tests/basic/test_repo.py +716 -0
  335. chatmcp_cli-0.1.0/tests/basic/test_repomap.py +495 -0
  336. chatmcp_cli-0.1.0/tests/basic/test_run_cmd.py +11 -0
  337. chatmcp_cli-0.1.0/tests/basic/test_sanity_check_repo.py +184 -0
  338. chatmcp_cli-0.1.0/tests/basic/test_scripting.py +39 -0
  339. chatmcp_cli-0.1.0/tests/basic/test_sendchat.py +171 -0
  340. chatmcp_cli-0.1.0/tests/basic/test_special.py +76 -0
  341. chatmcp_cli-0.1.0/tests/basic/test_ssl_verification.py +84 -0
  342. chatmcp_cli-0.1.0/tests/basic/test_udiff.py +119 -0
  343. chatmcp_cli-0.1.0/tests/basic/test_urls.py +15 -0
  344. chatmcp_cli-0.1.0/tests/basic/test_voice.py +98 -0
  345. chatmcp_cli-0.1.0/tests/basic/test_watch.py +166 -0
  346. chatmcp_cli-0.1.0/tests/basic/test_wholefile.py +359 -0
  347. chatmcp_cli-0.1.0/tests/browser/test_browser.py +39 -0
  348. chatmcp_cli-0.1.0/tests/fixtures/chat-history-search-replace-gold.txt +27810 -0
  349. chatmcp_cli-0.1.0/tests/fixtures/chat-history.md +99961 -0
  350. chatmcp_cli-0.1.0/tests/fixtures/languages/arduino/test.ino +21 -0
  351. chatmcp_cli-0.1.0/tests/fixtures/languages/c/test.c +21 -0
  352. chatmcp_cli-0.1.0/tests/fixtures/languages/chatito/test.chatito +20 -0
  353. chatmcp_cli-0.1.0/tests/fixtures/languages/commonlisp/test.lisp +17 -0
  354. chatmcp_cli-0.1.0/tests/fixtures/languages/cpp/test.cpp +6 -0
  355. chatmcp_cli-0.1.0/tests/fixtures/languages/csharp/test.cs +39 -0
  356. chatmcp_cli-0.1.0/tests/fixtures/languages/d/test.d +26 -0
  357. chatmcp_cli-0.1.0/tests/fixtures/languages/dart/test.dart +21 -0
  358. chatmcp_cli-0.1.0/tests/fixtures/languages/elisp/test.el +25 -0
  359. chatmcp_cli-0.1.0/tests/fixtures/languages/elixir/test.ex +5 -0
  360. chatmcp_cli-0.1.0/tests/fixtures/languages/elm/test.elm +59 -0
  361. chatmcp_cli-0.1.0/tests/fixtures/languages/gleam/test.gleam +10 -0
  362. chatmcp_cli-0.1.0/tests/fixtures/languages/go/test.go +42 -0
  363. chatmcp_cli-0.1.0/tests/fixtures/languages/hcl/test.tf +52 -0
  364. chatmcp_cli-0.1.0/tests/fixtures/languages/java/test.java +16 -0
  365. chatmcp_cli-0.1.0/tests/fixtures/languages/javascript/test.js +26 -0
  366. chatmcp_cli-0.1.0/tests/fixtures/languages/kotlin/test.kt +16 -0
  367. chatmcp_cli-0.1.0/tests/fixtures/languages/lua/test.lua +25 -0
  368. chatmcp_cli-0.1.0/tests/fixtures/languages/ocaml/test.ml +19 -0
  369. chatmcp_cli-0.1.0/tests/fixtures/languages/ocaml_interface/test.mli +14 -0
  370. chatmcp_cli-0.1.0/tests/fixtures/languages/php/test.php +5 -0
  371. chatmcp_cli-0.1.0/tests/fixtures/languages/pony/test.pony +8 -0
  372. chatmcp_cli-0.1.0/tests/fixtures/languages/properties/test.properties +14 -0
  373. chatmcp_cli-0.1.0/tests/fixtures/languages/python/test.py +28 -0
  374. chatmcp_cli-0.1.0/tests/fixtures/languages/ql/test.ql +3 -0
  375. chatmcp_cli-0.1.0/tests/fixtures/languages/r/test.r +17 -0
  376. chatmcp_cli-0.1.0/tests/fixtures/languages/racket/test.rkt +8 -0
  377. chatmcp_cli-0.1.0/tests/fixtures/languages/ruby/test.rb +3 -0
  378. chatmcp_cli-0.1.0/tests/fixtures/languages/rust/test.rs +33 -0
  379. chatmcp_cli-0.1.0/tests/fixtures/languages/scala/test.scala +61 -0
  380. chatmcp_cli-0.1.0/tests/fixtures/languages/solidity/test.sol +21 -0
  381. chatmcp_cli-0.1.0/tests/fixtures/languages/swift/test.swift +18 -0
  382. chatmcp_cli-0.1.0/tests/fixtures/languages/tsx/test.tsx +30 -0
  383. chatmcp_cli-0.1.0/tests/fixtures/languages/typescript/test.ts +3 -0
  384. chatmcp_cli-0.1.0/tests/fixtures/languages/udev/test.rules +22 -0
  385. chatmcp_cli-0.1.0/tests/fixtures/sample-code-base/sample.js +50 -0
  386. chatmcp_cli-0.1.0/tests/fixtures/sample-code-base/sample.py +68 -0
  387. chatmcp_cli-0.1.0/tests/fixtures/sample-code-base-repo-map.txt +55 -0
  388. chatmcp_cli-0.1.0/tests/fixtures/watch.js +38 -0
  389. chatmcp_cli-0.1.0/tests/fixtures/watch.lisp +19 -0
  390. chatmcp_cli-0.1.0/tests/fixtures/watch.py +21 -0
  391. chatmcp_cli-0.1.0/tests/fixtures/watch_question.js +11 -0
  392. chatmcp_cli-0.1.0/tests/help/test_help.py +170 -0
  393. chatmcp_cli-0.1.0/tests/scrape/test_playwright_disable.py +139 -0
  394. chatmcp_cli-0.1.0/tests/scrape/test_scrape.py +175 -0
@@ -0,0 +1,10 @@
1
+ .BC.*
2
+ tmp*
3
+ *~
4
+ OLD*
5
+ *.pyc
6
+ .DS_Store
7
+ .env
8
+ .venv
9
+ .aider.*
10
+ build
@@ -0,0 +1,8 @@
1
+ # Gemini API Key for Aider
2
+ # Get your API key from: https://makersuite.google.com/app/apikey
3
+ GEMINI_API_KEY=your_gemini_api_key_here
4
+
5
+ # Optional: Other LLM API keys
6
+ # OPENAI_API_KEY=your_openai_api_key_here
7
+ # ANTHROPIC_API_KEY=your_anthropic_api_key_here
8
+ # OPENROUTER_API_KEY=your_openrouter_api_key_here
@@ -0,0 +1,3 @@
1
+ [flake8]
2
+ ignore = E203,W503
3
+ max-line-length = 100
@@ -0,0 +1,21 @@
1
+ name: Question or bug report
2
+ description: Submit a question or bug report to help us improve aider
3
+ labels: []
4
+ body:
5
+ - type: textarea
6
+ attributes:
7
+ label: Issue
8
+ description: Please describe your problem or question.
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ attributes:
13
+ label: Version and model info
14
+ description: Please include aider version, model being used (`gpt-4-xxx`, etc) and any other switches or config settings that are active.
15
+ placeholder: |
16
+ Aider v0.XX.Y
17
+ Model: gpt-N-... using ???? edit format
18
+ Git repo: .git with ### files
19
+ Repo-map: using #### tokens
20
+ validations:
21
+ required: false
@@ -0,0 +1,86 @@
1
+ name: Check PyPI Version
2
+
3
+ # Check to be sure `pip install aider-chat` installs the most recently published version.
4
+ # If dependencies get yanked, it may render the latest version uninstallable.
5
+ # See https://github.com/Aider-AI/aider/issues/3699 for example.
6
+
7
+ on:
8
+ schedule:
9
+ # Run once a day at midnight UTC
10
+ - cron: '0 0 * * *'
11
+ workflow_dispatch: # Allows manual triggering
12
+
13
+ jobs:
14
+ check_version:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ python-version: ["3.10", "3.11", "3.12"]
19
+
20
+ steps:
21
+ - name: Set up Python ${{ matrix.python-version }}
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - name: Install aider-chat
27
+ run: pip install aider-chat
28
+
29
+ - name: Get installed aider version
30
+ id: installed_version
31
+ run: |
32
+ set -x # Enable debugging output
33
+ aider_version_output=$(aider --version)
34
+ if [ $? -ne 0 ]; then
35
+ echo "Error: 'aider --version' command failed."
36
+ exit 1
37
+ fi
38
+ echo "Raw aider --version output: $aider_version_output"
39
+
40
+ # Extract version number (format X.Y.Z)
41
+ version_num=$(echo "$aider_version_output" | grep -oP '\d+\.\d+\.\d+')
42
+
43
+ # Check if grep found anything
44
+ if [ -z "$version_num" ]; then
45
+ echo "Error: Could not extract version number using grep -oP '\d+\.\d+\.\d+' from output: $aider_version_output"
46
+ exit 1
47
+ fi
48
+
49
+ echo "Extracted version number: $version_num"
50
+ echo "version=$version_num" >> $GITHUB_OUTPUT
51
+
52
+ - name: Check out code
53
+ uses: actions/checkout@v4
54
+ with:
55
+ fetch-depth: 0 # Fetch all history for all tags
56
+
57
+ - name: Get latest tag
58
+ id: latest_tag
59
+ run: |
60
+ set -x # Enable debugging output
61
+ # Fetch all tags from remote just in case
62
+ git fetch --tags origin main
63
+ # Get the latest tag that strictly matches vX.Y.Z (no suffixes like .dev)
64
+ # List all tags, sort by version descending, filter for exact pattern, take the first one
65
+ latest_tag=$(git tag --sort=-v:refname | grep -P '^v\d+\.\d+\.\d+$' | head -n 1)
66
+
67
+ if [ -z "$latest_tag" ]; then
68
+ echo "Error: Could not find any tags matching the pattern '^v\d+\.\d+\.\d+$'"
69
+ exit 1
70
+ fi
71
+
72
+ echo "Latest non-dev tag: $latest_tag"
73
+ # Remove 'v' prefix for comparison
74
+ tag_num=${latest_tag#v}
75
+ echo "Extracted tag number: $tag_num"
76
+ echo "tag=$tag_num" >> $GITHUB_OUTPUT
77
+
78
+ - name: Compare versions
79
+ run: |
80
+ echo "Installed version: ${{ steps.installed_version.outputs.version }}"
81
+ echo "Latest tag version: ${{ steps.latest_tag.outputs.tag }}"
82
+ if [ "${{ steps.installed_version.outputs.version }}" != "${{ steps.latest_tag.outputs.tag }}" ]; then
83
+ echo "Error: Installed aider version (${{ steps.installed_version.outputs.version }}) does not match the latest tag (${{ steps.latest_tag.outputs.tag }})."
84
+ exit 1
85
+ fi
86
+ echo "Versions match."
@@ -0,0 +1,85 @@
1
+ name: Docker Build Test
2
+
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - 'aider/website/**'
7
+ - 'README.md'
8
+ - 'HISTORY.md'
9
+ - '.github/workflows/*'
10
+ - '!.github/workflows/docker-build-test.yml'
11
+ branches:
12
+ - main
13
+ pull_request:
14
+ paths-ignore:
15
+ - 'aider/website/**'
16
+ - 'README.md'
17
+ - 'HISTORY.md'
18
+ - '.github/workflows/*'
19
+ - '!.github/workflows/docker-build-test.yml'
20
+ branches:
21
+ - main
22
+
23
+ jobs:
24
+ docker_build_and_push:
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Checkout code
28
+ uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - name: Set up QEMU
33
+ uses: docker/setup-qemu-action@v3
34
+
35
+ - name: Set up Docker Buildx
36
+ uses: docker/setup-buildx-action@v3
37
+
38
+ - name: Login to DockerHub
39
+ if: ${{ github.event_name != 'pull_request' }}
40
+ uses: docker/login-action@v3
41
+ with:
42
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
43
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
44
+
45
+ - name: Build Docker images (PR)
46
+ if: ${{ github.event_name == 'pull_request' }}
47
+ uses: docker/build-push-action@v5
48
+ with:
49
+ context: .
50
+ file: ./docker/Dockerfile
51
+ platforms: linux/amd64,linux/arm64
52
+ push: false
53
+ target: aider
54
+
55
+ - name: Build Docker images (Push)
56
+ if: ${{ github.event_name != 'pull_request' }}
57
+ uses: docker/build-push-action@v5
58
+ with:
59
+ context: .
60
+ file: ./docker/Dockerfile
61
+ platforms: linux/amd64,linux/arm64
62
+ push: true
63
+ tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:dev
64
+ target: aider
65
+
66
+ - name: Build Docker full image (PR)
67
+ if: ${{ github.event_name == 'pull_request' }}
68
+ uses: docker/build-push-action@v5
69
+ with:
70
+ context: .
71
+ file: ./docker/Dockerfile
72
+ platforms: linux/amd64,linux/arm64
73
+ push: false
74
+ target: aider-full
75
+
76
+ - name: Build Docker full image (Push)
77
+ if: ${{ github.event_name != 'pull_request' }}
78
+ uses: docker/build-push-action@v5
79
+ with:
80
+ context: .
81
+ file: ./docker/Dockerfile
82
+ platforms: linux/amd64,linux/arm64
83
+ push: true
84
+ tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:dev
85
+ target: aider-full
@@ -0,0 +1,52 @@
1
+ name: Docker Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - 'v[0-9]+.[0-9]+.[0-9]+'
8
+
9
+ jobs:
10
+ docker_build_and_push:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Set up QEMU
19
+ uses: docker/setup-qemu-action@v3
20
+
21
+ - name: Set up Docker Buildx
22
+ uses: docker/setup-buildx-action@v3
23
+
24
+ - name: Login to DockerHub
25
+ uses: docker/login-action@v3
26
+ with:
27
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
28
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
29
+
30
+ - name: Build and push Docker images
31
+ uses: docker/build-push-action@v5
32
+ with:
33
+ context: .
34
+ file: ./docker/Dockerfile
35
+ platforms: linux/amd64,linux/arm64
36
+ push: true
37
+ tags: |
38
+ ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }}
39
+ ${{ secrets.DOCKERHUB_USERNAME }}/aider:latest
40
+ target: aider
41
+
42
+ - name: Build and push Docker full image
43
+ uses: docker/build-push-action@v5
44
+ with:
45
+ context: .
46
+ file: ./docker/Dockerfile
47
+ platforms: linux/amd64,linux/arm64
48
+ push: true
49
+ tags: |
50
+ ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:${{ github.ref_name }}
51
+ ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:latest
52
+ target: aider-full
@@ -0,0 +1,29 @@
1
+ name: Process GitHub Issues
2
+ on:
3
+ schedule:
4
+ - cron: '0 */12 * * *' # Run every 12 hours
5
+ workflow_dispatch: # Allow manual triggers
6
+
7
+ jobs:
8
+ process-issues:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ issues: write # Required to modify issues
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v4
18
+ with:
19
+ python-version: '3.x'
20
+
21
+ - name: Install dependencies
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ pip install requests python-dotenv tqdm
25
+
26
+ - name: Run issues script
27
+ env:
28
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29
+ run: python scripts/issues.py --yes
@@ -0,0 +1,87 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+
6
+ # Sample workflow for building and deploying a Jekyll site to GitHub Pages
7
+ name: Deploy Jekyll site to Pages
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - "main"
13
+ paths:
14
+ - "aider/website/**"
15
+ - ".github/workflows/pages.yml"
16
+
17
+ # Allows you to run this workflow manually from the Actions tab
18
+ workflow_dispatch:
19
+
20
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
21
+ permissions:
22
+ contents: read
23
+ pages: write
24
+ id-token: write
25
+
26
+ # Allow one concurrent deployment
27
+ concurrency:
28
+ group: "pages"
29
+ cancel-in-progress: true
30
+
31
+ jobs:
32
+ # Build job
33
+ build:
34
+ runs-on: ubuntu-latest
35
+ defaults:
36
+ run:
37
+ working-directory: aider/website
38
+ steps:
39
+ - name: Checkout
40
+ uses: actions/checkout@v4
41
+ with:
42
+ fetch-depth: 0
43
+ - name: Setup Ruby
44
+ uses: ruby/setup-ruby@v1
45
+ with:
46
+ ruby-version: '3.3' # Not needed with a .ruby-version file
47
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
48
+ cache-version: 0 # Increment this number if you need to re-download cached gems
49
+ working-directory: '${{ github.workspace }}/aider/website'
50
+ - name: Setup Pages
51
+ id: pages
52
+ uses: actions/configure-pages@v3
53
+ - name: Build with Jekyll
54
+ # Outputs to the './_site' directory by default
55
+ run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
56
+ env:
57
+ JEKYLL_ENV: production
58
+ - name: Upload artifact
59
+ uses: actions/upload-pages-artifact@v3
60
+ with:
61
+ path: "aider/website/_site"
62
+
63
+ # Deployment job
64
+ deploy:
65
+ environment:
66
+ name: github-pages
67
+ url: ${{ steps.deployment.outputs.page_url }}
68
+ runs-on: ubuntu-latest
69
+ needs: build
70
+ steps:
71
+ - name: Deploy to GitHub Pages
72
+ id: deployment
73
+ uses: actions/deploy-pages@v4
74
+
75
+ - name: Set up Python 3.12
76
+ uses: actions/setup-python@v5
77
+ with:
78
+ python-version: '3.12'
79
+
80
+ - name: Install linkchecker
81
+ run: |
82
+ python -m pip install --upgrade pip
83
+ python -m pip install linkchecker
84
+
85
+ - name: Run linkchecker
86
+ run: |
87
+ linkchecker --ignore-url='.+\.(mp4|mov|avi)' https://aider.chat
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: pre-commit
3
+ on:
4
+ pull_request:
5
+ push:
6
+ workflow_dispatch:
7
+ jobs:
8
+ pre-commit:
9
+ runs-on: ubuntu-latest
10
+ env:
11
+ RAW_LOG: pre-commit.log
12
+ CS_XML: pre-commit.xml
13
+ steps:
14
+ - run: sudo apt-get update && sudo apt-get install cppcheck uncrustify
15
+ if: false
16
+ - uses: actions/checkout@v4
17
+ - run: python -m pip install pre-commit
18
+ - uses: actions/cache/restore@v4
19
+ with:
20
+ path: ~/.cache/pre-commit/
21
+ key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
22
+ - name: Run pre-commit hooks
23
+ env:
24
+ SKIP: no-commit-to-branch
25
+ run: |
26
+ set -o pipefail
27
+ pre-commit gc
28
+ pre-commit run --show-diff-on-failure --color=always --all-files | tee ${RAW_LOG}
29
+ - name: Convert Raw Log to Checkstyle format (launch action)
30
+ uses: mdeweerd/logToCheckStyle@v2025.1.1
31
+ if: ${{ failure() }}
32
+ with:
33
+ in: ${{ env.RAW_LOG }}
34
+ # out: ${{ env.CS_XML }}
35
+ - uses: actions/cache/save@v4
36
+ if: ${{ ! cancelled() }}
37
+ with:
38
+ path: ~/.cache/pre-commit/
39
+ key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
40
+ - name: Provide log as artifact
41
+ uses: actions/upload-artifact@v4
42
+ if: ${{ ! cancelled() }}
43
+ with:
44
+ name: precommit-logs
45
+ path: |
46
+ ${{ env.RAW_LOG }}
47
+ ${{ env.CS_XML }}
48
+ retention-days: 2
@@ -0,0 +1,34 @@
1
+ name: PyPI Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - 'v[0-9]+.[0-9]+.[0-9]+'
8
+
9
+ jobs:
10
+ build_and_publish:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: 3.x
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install build setuptools wheel twine importlib-metadata==7.2.1
27
+
28
+ - name: Build and publish
29
+ env:
30
+ TWINE_USERNAME: __token__
31
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
32
+ run: |
33
+ python -m build
34
+ twine upload dist/*
@@ -0,0 +1,61 @@
1
+ name: Ubuntu Python Tests
2
+
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - 'aider/website/**'
7
+ - 'README.md'
8
+ - 'HISTORY.md'
9
+ - '.github/workflows/*'
10
+ - '!.github/workflows/ubuntu-tests.yml'
11
+ branches:
12
+ - main
13
+ pull_request:
14
+ paths-ignore:
15
+ - 'aider/website/**'
16
+ - 'README.md'
17
+ - 'HISTORY.md'
18
+ - '.github/workflows/*'
19
+ - '!.github/workflows/ubuntu-tests.yml'
20
+ branches:
21
+ - main
22
+
23
+ jobs:
24
+ build:
25
+ runs-on: ubuntu-latest
26
+ strategy:
27
+ matrix:
28
+ python-version: ["3.10", "3.11", "3.12"]
29
+
30
+ steps:
31
+ - name: Check out repository
32
+ uses: actions/checkout@v4
33
+ with:
34
+ fetch-depth: 0
35
+
36
+ - name: Set up Python ${{ matrix.python-version }}
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: ${{ matrix.python-version }}
40
+
41
+ - name: Install system dependencies
42
+ run: |
43
+ sudo apt-get update
44
+ sudo apt-get install -y libportaudio2
45
+
46
+ - name: Install dependencies
47
+ run: |
48
+ python -m pip install --upgrade pip
49
+ pip install pytest
50
+ export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_AIDER_CHAT=0.1.0
51
+ pip install -e .[dev,playwright]
52
+
53
+ - name: Install playwright browsers
54
+ run: |
55
+ python -m playwright install --with-deps chromium
56
+
57
+ - name: Run tests
58
+ env:
59
+ AIDER_ANALYTICS: false
60
+ run: |
61
+ pytest
@@ -0,0 +1,57 @@
1
+ name: Windows Python Tests
2
+
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - 'aider/website/**'
7
+ - 'README.md'
8
+ - 'HISTORY.md'
9
+ - '.github/workflows/*'
10
+ - '!.github/workflows/windows-tests.yml'
11
+ branches:
12
+ - main
13
+ pull_request:
14
+ paths-ignore:
15
+ - 'aider/website/**'
16
+ - 'README.md'
17
+ - 'HISTORY.md'
18
+ - '.github/workflows/*'
19
+ - '!.github/workflows/windows-tests.yml'
20
+ branches:
21
+ - main
22
+
23
+ jobs:
24
+ build:
25
+ runs-on: windows-latest
26
+ strategy:
27
+ matrix:
28
+ python-version: ["3.10", "3.11", "3.12"]
29
+
30
+ steps:
31
+ - name: Check out repository
32
+ uses: actions/checkout@v4
33
+ with:
34
+ fetch-depth: 0
35
+
36
+ - name: Set up Python ${{ matrix.python-version }}
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: ${{ matrix.python-version }}
40
+
41
+ - name: Install dependencies
42
+ run: |
43
+ python -m pip install --upgrade pip
44
+ pip install pytest
45
+ $env:SETUPTOOLS_SCM_PRETEND_VERSION_FOR_AIDER_CHAT="0.1.0"
46
+ pip install -e .[dev,playwright]
47
+
48
+ - name: Install playwright browsers
49
+ run: |
50
+ python -m playwright install --with-deps chromium
51
+
52
+ - name: Run tests
53
+ env:
54
+ AIDER_ANALYTICS: false
55
+ run: |
56
+ pytest
57
+
@@ -0,0 +1,90 @@
1
+ name: Windows Check PyPI Version
2
+
3
+ # Check to be sure `pip install aider-chat` installs the most recently published version on Windows.
4
+ # If dependencies get yanked, it may render the latest version uninstallable.
5
+ # See https://github.com/Aider-AI/aider/issues/3699 for example.
6
+
7
+ on:
8
+ schedule:
9
+ # Run once a day at 1 AM UTC (offset from Ubuntu check)
10
+ - cron: '0 1 * * *'
11
+ workflow_dispatch: # Allows manual triggering
12
+
13
+ jobs:
14
+ check_version:
15
+ runs-on: windows-latest
16
+ strategy:
17
+ matrix:
18
+ python-version: ["3.10", "3.11", "3.12"]
19
+ defaults:
20
+ run:
21
+ shell: pwsh # Use PowerShell for all run steps
22
+
23
+ steps:
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install aider-chat
30
+ run: pip install aider-chat
31
+
32
+ - name: Get installed aider version
33
+ id: installed_version
34
+ run: |
35
+ Write-Host "Running 'aider --version'..."
36
+ $aider_version_output = aider --version
37
+ if ($LASTEXITCODE -ne 0) {
38
+ Write-Error "Error: 'aider --version' command failed."
39
+ exit 1
40
+ }
41
+ Write-Host "Raw aider --version output: $aider_version_output"
42
+
43
+ # Extract version number (format X.Y.Z) using PowerShell regex
44
+ $match = [regex]::Match($aider_version_output, '\d+\.\d+\.\d+')
45
+
46
+ if (-not $match.Success) {
47
+ Write-Error "Error: Could not extract version number using regex '\d+\.\d+\.\d+' from output: $aider_version_output"
48
+ exit 1
49
+ }
50
+ $version_num = $match.Value
51
+
52
+ Write-Host "Extracted version number: $version_num"
53
+ echo "version=$version_num" >> $env:GITHUB_OUTPUT
54
+
55
+ - name: Check out code
56
+ uses: actions/checkout@v4
57
+ with:
58
+ fetch-depth: 0 # Fetch all history for all tags
59
+
60
+ - name: Get latest tag
61
+ id: latest_tag
62
+ run: |
63
+ Write-Host "Fetching tags..."
64
+ # Fetch all tags from remote just in case
65
+ git fetch --tags origin main
66
+ Write-Host "Getting latest non-dev tag..."
67
+ # Get the latest tag that strictly matches vX.Y.Z (no suffixes like .dev)
68
+ # List all tags, sort by version descending, filter for exact pattern, take the first one
69
+ $latest_tag = (git tag --sort=-v:refname | Select-String -Pattern '^v\d+\.\d+\.\d+$' | Select-Object -First 1).Line
70
+
71
+ if (-not $latest_tag) {
72
+ Write-Error "Error: Could not find any tags matching the pattern '^v\d+\.\d+\.\d+$'"
73
+ exit 1
74
+ }
75
+
76
+ Write-Host "Latest non-dev tag: $latest_tag"
77
+ # Remove 'v' prefix for comparison
78
+ $tag_num = $latest_tag.Substring(1)
79
+ Write-Host "Extracted tag number: $tag_num"
80
+ echo "tag=$tag_num" >> $env:GITHUB_OUTPUT
81
+
82
+ - name: Compare versions
83
+ run: |
84
+ Write-Host "Installed version: ${{ steps.installed_version.outputs.version }}"
85
+ Write-Host "Latest tag version: ${{ steps.latest_tag.outputs.tag }}"
86
+ if ("${{ steps.installed_version.outputs.version }}" -ne "${{ steps.latest_tag.outputs.tag }}") {
87
+ Write-Error "Error: Installed aider version (${{ steps.installed_version.outputs.version }}) does not match the latest tag (${{ steps.latest_tag.outputs.tag }})."
88
+ exit 1
89
+ }
90
+ Write-Host "Versions match."