cecli-dev 0.95.5__py3-none-any.whl

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 (366) hide show
  1. cecli/__init__.py +20 -0
  2. cecli/__main__.py +4 -0
  3. cecli/_version.py +34 -0
  4. cecli/args.py +1092 -0
  5. cecli/args_formatter.py +228 -0
  6. cecli/change_tracker.py +133 -0
  7. cecli/coders/__init__.py +38 -0
  8. cecli/coders/agent_coder.py +1872 -0
  9. cecli/coders/architect_coder.py +63 -0
  10. cecli/coders/ask_coder.py +8 -0
  11. cecli/coders/base_coder.py +3993 -0
  12. cecli/coders/chat_chunks.py +116 -0
  13. cecli/coders/context_coder.py +52 -0
  14. cecli/coders/copypaste_coder.py +269 -0
  15. cecli/coders/editblock_coder.py +656 -0
  16. cecli/coders/editblock_fenced_coder.py +9 -0
  17. cecli/coders/editblock_func_coder.py +140 -0
  18. cecli/coders/editor_diff_fenced_coder.py +8 -0
  19. cecli/coders/editor_editblock_coder.py +8 -0
  20. cecli/coders/editor_whole_coder.py +8 -0
  21. cecli/coders/help_coder.py +15 -0
  22. cecli/coders/patch_coder.py +705 -0
  23. cecli/coders/search_replace.py +757 -0
  24. cecli/coders/shell.py +37 -0
  25. cecli/coders/single_wholefile_func_coder.py +101 -0
  26. cecli/coders/udiff_coder.py +428 -0
  27. cecli/coders/udiff_simple.py +12 -0
  28. cecli/coders/wholefile_coder.py +143 -0
  29. cecli/coders/wholefile_func_coder.py +133 -0
  30. cecli/commands/__init__.py +192 -0
  31. cecli/commands/add.py +226 -0
  32. cecli/commands/agent.py +51 -0
  33. cecli/commands/architect.py +46 -0
  34. cecli/commands/ask.py +44 -0
  35. cecli/commands/chat_mode.py +0 -0
  36. cecli/commands/clear.py +37 -0
  37. cecli/commands/code.py +46 -0
  38. cecli/commands/command_prefix.py +44 -0
  39. cecli/commands/commit.py +52 -0
  40. cecli/commands/context.py +47 -0
  41. cecli/commands/context_blocks.py +124 -0
  42. cecli/commands/context_management.py +51 -0
  43. cecli/commands/copy.py +62 -0
  44. cecli/commands/copy_context.py +81 -0
  45. cecli/commands/core.py +287 -0
  46. cecli/commands/diff.py +68 -0
  47. cecli/commands/drop.py +217 -0
  48. cecli/commands/editor.py +78 -0
  49. cecli/commands/exit.py +55 -0
  50. cecli/commands/git.py +57 -0
  51. cecli/commands/help.py +140 -0
  52. cecli/commands/history_search.py +40 -0
  53. cecli/commands/lint.py +109 -0
  54. cecli/commands/list_sessions.py +56 -0
  55. cecli/commands/load.py +85 -0
  56. cecli/commands/load_session.py +48 -0
  57. cecli/commands/load_skill.py +68 -0
  58. cecli/commands/ls.py +75 -0
  59. cecli/commands/map.py +37 -0
  60. cecli/commands/map_refresh.py +35 -0
  61. cecli/commands/model.py +118 -0
  62. cecli/commands/models.py +41 -0
  63. cecli/commands/multiline_mode.py +38 -0
  64. cecli/commands/paste.py +91 -0
  65. cecli/commands/quit.py +32 -0
  66. cecli/commands/read_only.py +267 -0
  67. cecli/commands/read_only_stub.py +270 -0
  68. cecli/commands/reasoning_effort.py +70 -0
  69. cecli/commands/remove_skill.py +68 -0
  70. cecli/commands/report.py +40 -0
  71. cecli/commands/reset.py +88 -0
  72. cecli/commands/run.py +99 -0
  73. cecli/commands/save.py +49 -0
  74. cecli/commands/save_session.py +43 -0
  75. cecli/commands/settings.py +69 -0
  76. cecli/commands/test.py +58 -0
  77. cecli/commands/think_tokens.py +74 -0
  78. cecli/commands/tokens.py +207 -0
  79. cecli/commands/undo.py +145 -0
  80. cecli/commands/utils/__init__.py +0 -0
  81. cecli/commands/utils/base_command.py +131 -0
  82. cecli/commands/utils/helpers.py +142 -0
  83. cecli/commands/utils/registry.py +53 -0
  84. cecli/commands/utils/save_load_manager.py +98 -0
  85. cecli/commands/voice.py +78 -0
  86. cecli/commands/weak_model.py +123 -0
  87. cecli/commands/web.py +87 -0
  88. cecli/deprecated_args.py +185 -0
  89. cecli/diffs.py +129 -0
  90. cecli/dump.py +29 -0
  91. cecli/editor.py +147 -0
  92. cecli/exceptions.py +115 -0
  93. cecli/format_settings.py +26 -0
  94. cecli/help.py +119 -0
  95. cecli/help_pats.py +19 -0
  96. cecli/helpers/__init__.py +9 -0
  97. cecli/helpers/copypaste.py +123 -0
  98. cecli/helpers/coroutines.py +8 -0
  99. cecli/helpers/file_searcher.py +142 -0
  100. cecli/helpers/model_providers.py +552 -0
  101. cecli/helpers/plugin_manager.py +81 -0
  102. cecli/helpers/profiler.py +162 -0
  103. cecli/helpers/requests.py +77 -0
  104. cecli/helpers/similarity.py +98 -0
  105. cecli/helpers/skills.py +577 -0
  106. cecli/history.py +186 -0
  107. cecli/io.py +1782 -0
  108. cecli/linter.py +304 -0
  109. cecli/llm.py +101 -0
  110. cecli/main.py +1280 -0
  111. cecli/mcp/__init__.py +154 -0
  112. cecli/mcp/oauth.py +250 -0
  113. cecli/mcp/server.py +278 -0
  114. cecli/mdstream.py +243 -0
  115. cecli/models.py +1255 -0
  116. cecli/onboarding.py +301 -0
  117. cecli/prompts/__init__.py +0 -0
  118. cecli/prompts/agent.yml +71 -0
  119. cecli/prompts/architect.yml +35 -0
  120. cecli/prompts/ask.yml +31 -0
  121. cecli/prompts/base.yml +99 -0
  122. cecli/prompts/context.yml +60 -0
  123. cecli/prompts/copypaste.yml +5 -0
  124. cecli/prompts/editblock.yml +143 -0
  125. cecli/prompts/editblock_fenced.yml +106 -0
  126. cecli/prompts/editblock_func.yml +25 -0
  127. cecli/prompts/editor_diff_fenced.yml +115 -0
  128. cecli/prompts/editor_editblock.yml +121 -0
  129. cecli/prompts/editor_whole.yml +46 -0
  130. cecli/prompts/help.yml +37 -0
  131. cecli/prompts/patch.yml +110 -0
  132. cecli/prompts/single_wholefile_func.yml +24 -0
  133. cecli/prompts/udiff.yml +106 -0
  134. cecli/prompts/udiff_simple.yml +13 -0
  135. cecli/prompts/utils/__init__.py +0 -0
  136. cecli/prompts/utils/prompt_registry.py +167 -0
  137. cecli/prompts/utils/system.py +56 -0
  138. cecli/prompts/wholefile.yml +50 -0
  139. cecli/prompts/wholefile_func.yml +24 -0
  140. cecli/queries/tree-sitter-language-pack/README.md +7 -0
  141. cecli/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  142. cecli/queries/tree-sitter-language-pack/c-tags.scm +12 -0
  143. cecli/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  144. cecli/queries/tree-sitter-language-pack/clojure-tags.scm +12 -0
  145. cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +127 -0
  146. cecli/queries/tree-sitter-language-pack/cpp-tags.scm +18 -0
  147. cecli/queries/tree-sitter-language-pack/csharp-tags.scm +32 -0
  148. cecli/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  149. cecli/queries/tree-sitter-language-pack/dart-tags.scm +97 -0
  150. cecli/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  151. cecli/queries/tree-sitter-language-pack/elixir-tags.scm +59 -0
  152. cecli/queries/tree-sitter-language-pack/elm-tags.scm +22 -0
  153. cecli/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  154. cecli/queries/tree-sitter-language-pack/go-tags.scm +49 -0
  155. cecli/queries/tree-sitter-language-pack/java-tags.scm +26 -0
  156. cecli/queries/tree-sitter-language-pack/javascript-tags.scm +96 -0
  157. cecli/queries/tree-sitter-language-pack/lua-tags.scm +39 -0
  158. cecli/queries/tree-sitter-language-pack/matlab-tags.scm +10 -0
  159. cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
  160. cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +101 -0
  161. cecli/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  162. cecli/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  163. cecli/queries/tree-sitter-language-pack/python-tags.scm +24 -0
  164. cecli/queries/tree-sitter-language-pack/r-tags.scm +27 -0
  165. cecli/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  166. cecli/queries/tree-sitter-language-pack/ruby-tags.scm +69 -0
  167. cecli/queries/tree-sitter-language-pack/rust-tags.scm +63 -0
  168. cecli/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  169. cecli/queries/tree-sitter-language-pack/swift-tags.scm +54 -0
  170. cecli/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  171. cecli/queries/tree-sitter-languages/README.md +24 -0
  172. cecli/queries/tree-sitter-languages/c-tags.scm +12 -0
  173. cecli/queries/tree-sitter-languages/c_sharp-tags.scm +52 -0
  174. cecli/queries/tree-sitter-languages/cpp-tags.scm +18 -0
  175. cecli/queries/tree-sitter-languages/dart-tags.scm +92 -0
  176. cecli/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  177. cecli/queries/tree-sitter-languages/elixir-tags.scm +59 -0
  178. cecli/queries/tree-sitter-languages/elm-tags.scm +22 -0
  179. cecli/queries/tree-sitter-languages/fortran-tags.scm +18 -0
  180. cecli/queries/tree-sitter-languages/go-tags.scm +36 -0
  181. cecli/queries/tree-sitter-languages/haskell-tags.scm +5 -0
  182. cecli/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  183. cecli/queries/tree-sitter-languages/java-tags.scm +26 -0
  184. cecli/queries/tree-sitter-languages/javascript-tags.scm +96 -0
  185. cecli/queries/tree-sitter-languages/julia-tags.scm +60 -0
  186. cecli/queries/tree-sitter-languages/kotlin-tags.scm +30 -0
  187. cecli/queries/tree-sitter-languages/matlab-tags.scm +10 -0
  188. cecli/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  189. cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +104 -0
  190. cecli/queries/tree-sitter-languages/php-tags.scm +32 -0
  191. cecli/queries/tree-sitter-languages/python-tags.scm +22 -0
  192. cecli/queries/tree-sitter-languages/ql-tags.scm +26 -0
  193. cecli/queries/tree-sitter-languages/ruby-tags.scm +69 -0
  194. cecli/queries/tree-sitter-languages/rust-tags.scm +63 -0
  195. cecli/queries/tree-sitter-languages/scala-tags.scm +64 -0
  196. cecli/queries/tree-sitter-languages/typescript-tags.scm +44 -0
  197. cecli/queries/tree-sitter-languages/zig-tags.scm +20 -0
  198. cecli/reasoning_tags.py +82 -0
  199. cecli/repo.py +626 -0
  200. cecli/repomap.py +1368 -0
  201. cecli/report.py +260 -0
  202. cecli/resources/__init__.py +3 -0
  203. cecli/resources/model-metadata.json +25751 -0
  204. cecli/resources/model-settings.yml +2394 -0
  205. cecli/resources/providers.json +67 -0
  206. cecli/run_cmd.py +143 -0
  207. cecli/scrape.py +295 -0
  208. cecli/sendchat.py +250 -0
  209. cecli/sessions.py +281 -0
  210. cecli/special.py +203 -0
  211. cecli/tools/__init__.py +72 -0
  212. cecli/tools/command.py +103 -0
  213. cecli/tools/command_interactive.py +113 -0
  214. cecli/tools/context_manager.py +175 -0
  215. cecli/tools/delete_block.py +154 -0
  216. cecli/tools/delete_line.py +120 -0
  217. cecli/tools/delete_lines.py +144 -0
  218. cecli/tools/extract_lines.py +281 -0
  219. cecli/tools/finished.py +35 -0
  220. cecli/tools/git_branch.py +132 -0
  221. cecli/tools/git_diff.py +49 -0
  222. cecli/tools/git_log.py +43 -0
  223. cecli/tools/git_remote.py +39 -0
  224. cecli/tools/git_show.py +37 -0
  225. cecli/tools/git_status.py +32 -0
  226. cecli/tools/grep.py +242 -0
  227. cecli/tools/indent_lines.py +195 -0
  228. cecli/tools/insert_block.py +263 -0
  229. cecli/tools/list_changes.py +71 -0
  230. cecli/tools/load_skill.py +51 -0
  231. cecli/tools/ls.py +77 -0
  232. cecli/tools/remove_skill.py +51 -0
  233. cecli/tools/replace_all.py +113 -0
  234. cecli/tools/replace_line.py +135 -0
  235. cecli/tools/replace_lines.py +180 -0
  236. cecli/tools/replace_text.py +186 -0
  237. cecli/tools/show_numbered_context.py +137 -0
  238. cecli/tools/thinking.py +52 -0
  239. cecli/tools/undo_change.py +82 -0
  240. cecli/tools/update_todo_list.py +148 -0
  241. cecli/tools/utils/base_tool.py +64 -0
  242. cecli/tools/utils/helpers.py +359 -0
  243. cecli/tools/utils/output.py +119 -0
  244. cecli/tools/utils/registry.py +145 -0
  245. cecli/tools/view_files_matching.py +138 -0
  246. cecli/tools/view_files_with_symbol.py +117 -0
  247. cecli/tui/__init__.py +83 -0
  248. cecli/tui/app.py +971 -0
  249. cecli/tui/io.py +566 -0
  250. cecli/tui/styles.tcss +117 -0
  251. cecli/tui/widgets/__init__.py +19 -0
  252. cecli/tui/widgets/completion_bar.py +331 -0
  253. cecli/tui/widgets/file_list.py +76 -0
  254. cecli/tui/widgets/footer.py +165 -0
  255. cecli/tui/widgets/input_area.py +320 -0
  256. cecli/tui/widgets/key_hints.py +16 -0
  257. cecli/tui/widgets/output.py +354 -0
  258. cecli/tui/widgets/status_bar.py +279 -0
  259. cecli/tui/worker.py +160 -0
  260. cecli/urls.py +16 -0
  261. cecli/utils.py +499 -0
  262. cecli/versioncheck.py +90 -0
  263. cecli/voice.py +90 -0
  264. cecli/waiting.py +38 -0
  265. cecli/watch.py +316 -0
  266. cecli/watch_prompts.py +12 -0
  267. cecli/website/Gemfile +8 -0
  268. cecli/website/_includes/blame.md +162 -0
  269. cecli/website/_includes/get-started.md +22 -0
  270. cecli/website/_includes/help-tip.md +5 -0
  271. cecli/website/_includes/help.md +24 -0
  272. cecli/website/_includes/install.md +5 -0
  273. cecli/website/_includes/keys.md +4 -0
  274. cecli/website/_includes/model-warnings.md +67 -0
  275. cecli/website/_includes/multi-line.md +22 -0
  276. cecli/website/_includes/python-m-aider.md +5 -0
  277. cecli/website/_includes/recording.css +228 -0
  278. cecli/website/_includes/recording.md +34 -0
  279. cecli/website/_includes/replit-pipx.md +9 -0
  280. cecli/website/_includes/works-best.md +1 -0
  281. cecli/website/_sass/custom/custom.scss +103 -0
  282. cecli/website/docs/config/adv-model-settings.md +2498 -0
  283. cecli/website/docs/config/agent-mode.md +320 -0
  284. cecli/website/docs/config/aider_conf.md +548 -0
  285. cecli/website/docs/config/api-keys.md +90 -0
  286. cecli/website/docs/config/custom-commands.md +187 -0
  287. cecli/website/docs/config/dotenv.md +493 -0
  288. cecli/website/docs/config/editor.md +127 -0
  289. cecli/website/docs/config/mcp.md +210 -0
  290. cecli/website/docs/config/model-aliases.md +173 -0
  291. cecli/website/docs/config/options.md +890 -0
  292. cecli/website/docs/config/reasoning.md +210 -0
  293. cecli/website/docs/config/skills.md +172 -0
  294. cecli/website/docs/config/tui.md +126 -0
  295. cecli/website/docs/config.md +44 -0
  296. cecli/website/docs/faq.md +379 -0
  297. cecli/website/docs/git.md +76 -0
  298. cecli/website/docs/index.md +47 -0
  299. cecli/website/docs/install/codespaces.md +39 -0
  300. cecli/website/docs/install/docker.md +48 -0
  301. cecli/website/docs/install/optional.md +100 -0
  302. cecli/website/docs/install/replit.md +8 -0
  303. cecli/website/docs/install.md +115 -0
  304. cecli/website/docs/languages.md +264 -0
  305. cecli/website/docs/legal/contributor-agreement.md +111 -0
  306. cecli/website/docs/legal/privacy.md +104 -0
  307. cecli/website/docs/llms/anthropic.md +77 -0
  308. cecli/website/docs/llms/azure.md +48 -0
  309. cecli/website/docs/llms/bedrock.md +132 -0
  310. cecli/website/docs/llms/cohere.md +34 -0
  311. cecli/website/docs/llms/deepseek.md +32 -0
  312. cecli/website/docs/llms/gemini.md +49 -0
  313. cecli/website/docs/llms/github.md +111 -0
  314. cecli/website/docs/llms/groq.md +36 -0
  315. cecli/website/docs/llms/lm-studio.md +39 -0
  316. cecli/website/docs/llms/ollama.md +75 -0
  317. cecli/website/docs/llms/openai-compat.md +39 -0
  318. cecli/website/docs/llms/openai.md +58 -0
  319. cecli/website/docs/llms/openrouter.md +78 -0
  320. cecli/website/docs/llms/other.md +117 -0
  321. cecli/website/docs/llms/vertex.md +50 -0
  322. cecli/website/docs/llms/warnings.md +10 -0
  323. cecli/website/docs/llms/xai.md +53 -0
  324. cecli/website/docs/llms.md +54 -0
  325. cecli/website/docs/more/analytics.md +127 -0
  326. cecli/website/docs/more/edit-formats.md +116 -0
  327. cecli/website/docs/more/infinite-output.md +192 -0
  328. cecli/website/docs/more-info.md +8 -0
  329. cecli/website/docs/recordings/auto-accept-architect.md +31 -0
  330. cecli/website/docs/recordings/dont-drop-original-read-files.md +35 -0
  331. cecli/website/docs/recordings/index.md +21 -0
  332. cecli/website/docs/recordings/model-accepts-settings.md +69 -0
  333. cecli/website/docs/recordings/tree-sitter-language-pack.md +80 -0
  334. cecli/website/docs/repomap.md +112 -0
  335. cecli/website/docs/scripting.md +100 -0
  336. cecli/website/docs/sessions.md +213 -0
  337. cecli/website/docs/troubleshooting/aider-not-found.md +24 -0
  338. cecli/website/docs/troubleshooting/edit-errors.md +76 -0
  339. cecli/website/docs/troubleshooting/imports.md +62 -0
  340. cecli/website/docs/troubleshooting/models-and-keys.md +54 -0
  341. cecli/website/docs/troubleshooting/support.md +79 -0
  342. cecli/website/docs/troubleshooting/token-limits.md +96 -0
  343. cecli/website/docs/troubleshooting/warnings.md +12 -0
  344. cecli/website/docs/troubleshooting.md +11 -0
  345. cecli/website/docs/usage/browser.md +57 -0
  346. cecli/website/docs/usage/caching.md +49 -0
  347. cecli/website/docs/usage/commands.md +133 -0
  348. cecli/website/docs/usage/conventions.md +119 -0
  349. cecli/website/docs/usage/copypaste.md +136 -0
  350. cecli/website/docs/usage/images-urls.md +48 -0
  351. cecli/website/docs/usage/lint-test.md +118 -0
  352. cecli/website/docs/usage/modes.md +211 -0
  353. cecli/website/docs/usage/not-code.md +179 -0
  354. cecli/website/docs/usage/notifications.md +87 -0
  355. cecli/website/docs/usage/tips.md +79 -0
  356. cecli/website/docs/usage/tutorials.md +30 -0
  357. cecli/website/docs/usage/voice.md +121 -0
  358. cecli/website/docs/usage/watch.md +294 -0
  359. cecli/website/docs/usage.md +102 -0
  360. cecli/website/share/index.md +101 -0
  361. cecli_dev-0.95.5.dist-info/METADATA +549 -0
  362. cecli_dev-0.95.5.dist-info/RECORD +366 -0
  363. cecli_dev-0.95.5.dist-info/WHEEL +5 -0
  364. cecli_dev-0.95.5.dist-info/entry_points.txt +4 -0
  365. cecli_dev-0.95.5.dist-info/licenses/LICENSE.txt +202 -0
  366. cecli_dev-0.95.5.dist-info/top_level.txt +1 -0
@@ -0,0 +1,192 @@
1
+ ---
2
+ parent: More info
3
+ nav_order: 480
4
+ description: Aider can handle "infinite output" from models that support prefill.
5
+ ---
6
+
7
+ # Infinite output
8
+
9
+ LLM providers limit how much output a model can generate from a single request.
10
+ This is usually called the output token limit.
11
+
12
+ Aider is able to work around this limit with models that support
13
+ "prefilling" the assistant response.
14
+ When you use aider with a model that supports prefill, you will see
15
+ "infinite output" noted in the announcement lines displayed at launch:
16
+
17
+ ```
18
+ Aider v0.58.0
19
+ Main model: claude-3-5-sonnet-20240620 with diff edit format, prompt cache, infinite output
20
+ ```
21
+
22
+ Models that support prefill can be primed to think they started their response
23
+ with a specific piece of text.
24
+ You can put words in their mouth, and they will continue generating
25
+ text from that point forward.
26
+
27
+ When aider is collecting code edits from a model and
28
+ it hits the output token limit,
29
+ aider simply initiates another LLM request with the partial
30
+ response prefilled.
31
+ This prompts the model to continue where it left off,
32
+ generating more of the desired response.
33
+ This prefilling of the partially completed response can be repeated,
34
+ allowing for very long outputs.
35
+ Joining the text across these output limit boundaries
36
+ requires some heuristics, but is typically fairly reliable.
37
+
38
+ Aider supports "infinite output" for models that support "prefill",
39
+ such as:
40
+
41
+ <!--[[[cog
42
+ import requests
43
+ import json
44
+
45
+ # Fetch the JSON data
46
+ url = "https://raw.githubusercontent.com/BerriAI/litellm/refs/heads/main/model_prices_and_context_window.json"
47
+ response = requests.get(url)
48
+ data = json.loads(response.text)
49
+
50
+ # Process the JSON to find models with supports_assistant_prefill=true
51
+ prefill_models = [model for model, info in data.items() if info.get('supports_assistant_prefill') == True]
52
+
53
+ # Generate the list of models
54
+ model_list = "\n".join(f"- {model}" for model in sorted(prefill_models))
55
+
56
+ cog.out(model_list)
57
+ ]]]-->
58
+ - anthropic.claude-3-5-haiku-20241022-v1:0
59
+ - anthropic.claude-3-5-sonnet-20241022-v2:0
60
+ - anthropic.claude-3-7-sonnet-20240620-v1:0
61
+ - anthropic.claude-3-7-sonnet-20250219-v1:0
62
+ - anthropic.claude-haiku-4-5-20251001-v1:0
63
+ - anthropic.claude-haiku-4-5@20251001
64
+ - anthropic.claude-opus-4-1-20250805-v1:0
65
+ - anthropic.claude-opus-4-20250514-v1:0
66
+ - anthropic.claude-sonnet-4-20250514-v1:0
67
+ - apac.anthropic.claude-3-5-sonnet-20241022-v2:0
68
+ - apac.anthropic.claude-haiku-4-5-20251001-v1:0
69
+ - apac.anthropic.claude-sonnet-4-20250514-v1:0
70
+ - au.anthropic.claude-haiku-4-5-20251001-v1:0
71
+ - au.anthropic.claude-sonnet-4-5-20250929-v1:0
72
+ - azure_ai/mistral-medium-2505
73
+ - bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0
74
+ - bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0
75
+ - claude-3-5-haiku-20241022
76
+ - claude-3-5-haiku-latest
77
+ - claude-3-5-sonnet-20240620
78
+ - claude-3-5-sonnet-20241022
79
+ - claude-3-5-sonnet-latest
80
+ - claude-3-7-sonnet-20250219
81
+ - claude-3-7-sonnet-latest
82
+ - claude-3-haiku-20240307
83
+ - claude-3-opus-20240229
84
+ - claude-3-opus-latest
85
+ - claude-4-opus-20250514
86
+ - claude-4-sonnet-20250514
87
+ - claude-haiku-4-5
88
+ - claude-haiku-4-5-20251001
89
+ - claude-opus-4-1
90
+ - claude-opus-4-1-20250805
91
+ - claude-opus-4-20250514
92
+ - claude-sonnet-4-20250514
93
+ - claude-sonnet-4-5
94
+ - claude-sonnet-4-5-20250929
95
+ - codestral/codestral-2405
96
+ - codestral/codestral-latest
97
+ - databricks/databricks-claude-3-7-sonnet
98
+ - deepseek/deepseek-chat
99
+ - deepseek/deepseek-coder
100
+ - deepseek/deepseek-r1
101
+ - deepseek/deepseek-reasoner
102
+ - deepseek/deepseek-v3
103
+ - eu.anthropic.claude-3-5-haiku-20241022-v1:0
104
+ - eu.anthropic.claude-3-5-sonnet-20241022-v2:0
105
+ - eu.anthropic.claude-3-7-sonnet-20250219-v1:0
106
+ - eu.anthropic.claude-haiku-4-5-20251001-v1:0
107
+ - eu.anthropic.claude-opus-4-1-20250805-v1:0
108
+ - eu.anthropic.claude-opus-4-20250514-v1:0
109
+ - eu.anthropic.claude-sonnet-4-20250514-v1:0
110
+ - eu.anthropic.claude-sonnet-4-5-20250929-v1:0
111
+ - global.anthropic.claude-haiku-4-5-20251001-v1:0
112
+ - global.anthropic.claude-sonnet-4-20250514-v1:0
113
+ - global.anthropic.claude-sonnet-4-5-20250929-v1:0
114
+ - jp.anthropic.claude-haiku-4-5-20251001-v1:0
115
+ - jp.anthropic.claude-sonnet-4-5-20250929-v1:0
116
+ - mistral/codestral-2405
117
+ - mistral/codestral-latest
118
+ - mistral/codestral-mamba-latest
119
+ - mistral/devstral-medium-2507
120
+ - mistral/devstral-small-2505
121
+ - mistral/devstral-small-2507
122
+ - mistral/magistral-medium-2506
123
+ - mistral/magistral-medium-2509
124
+ - mistral/magistral-medium-latest
125
+ - mistral/magistral-small-2506
126
+ - mistral/magistral-small-latest
127
+ - mistral/mistral-large-2402
128
+ - mistral/mistral-large-2407
129
+ - mistral/mistral-large-2411
130
+ - mistral/mistral-large-latest
131
+ - mistral/mistral-medium
132
+ - mistral/mistral-medium-2312
133
+ - mistral/mistral-medium-2505
134
+ - mistral/mistral-medium-latest
135
+ - mistral/mistral-small
136
+ - mistral/mistral-small-latest
137
+ - mistral/mistral-tiny
138
+ - mistral/open-codestral-mamba
139
+ - mistral/open-mistral-7b
140
+ - mistral/open-mistral-nemo
141
+ - mistral/open-mistral-nemo-2407
142
+ - mistral/open-mixtral-8x22b
143
+ - mistral/open-mixtral-8x7b
144
+ - mistral/pixtral-12b-2409
145
+ - mistral/pixtral-large-2411
146
+ - mistral/pixtral-large-latest
147
+ - openrouter/anthropic/claude-3.5-sonnet
148
+ - openrouter/anthropic/claude-3.7-sonnet
149
+ - openrouter/anthropic/claude-haiku-4.5
150
+ - openrouter/anthropic/claude-opus-4
151
+ - openrouter/anthropic/claude-opus-4.1
152
+ - openrouter/anthropic/claude-sonnet-4
153
+ - openrouter/anthropic/claude-sonnet-4.5
154
+ - openrouter/deepseek/deepseek-chat-v3.1
155
+ - openrouter/deepseek/deepseek-r1
156
+ - openrouter/deepseek/deepseek-r1-0528
157
+ - openrouter/deepseek/deepseek-v3.2-exp
158
+ - us.anthropic.claude-3-5-haiku-20241022-v1:0
159
+ - us.anthropic.claude-3-5-sonnet-20241022-v2:0
160
+ - us.anthropic.claude-3-7-sonnet-20250219-v1:0
161
+ - us.anthropic.claude-haiku-4-5-20251001-v1:0
162
+ - us.anthropic.claude-opus-4-1-20250805-v1:0
163
+ - us.anthropic.claude-opus-4-20250514-v1:0
164
+ - us.anthropic.claude-sonnet-4-20250514-v1:0
165
+ - us.anthropic.claude-sonnet-4-5-20250929-v1:0
166
+ - vertex_ai/claude-3-5-haiku
167
+ - vertex_ai/claude-3-5-haiku@20241022
168
+ - vertex_ai/claude-3-5-sonnet
169
+ - vertex_ai/claude-3-5-sonnet-v2
170
+ - vertex_ai/claude-3-5-sonnet-v2@20241022
171
+ - vertex_ai/claude-3-5-sonnet@20240620
172
+ - vertex_ai/claude-3-7-sonnet@20250219
173
+ - vertex_ai/claude-3-haiku
174
+ - vertex_ai/claude-3-haiku@20240307
175
+ - vertex_ai/claude-3-opus
176
+ - vertex_ai/claude-3-opus@20240229
177
+ - vertex_ai/claude-3-sonnet
178
+ - vertex_ai/claude-3-sonnet@20240229
179
+ - vertex_ai/claude-haiku-4-5@20251001
180
+ - vertex_ai/claude-opus-4
181
+ - vertex_ai/claude-opus-4-1
182
+ - vertex_ai/claude-opus-4-1@20250805
183
+ - vertex_ai/claude-opus-4@20250514
184
+ - vertex_ai/claude-sonnet-4
185
+ - vertex_ai/claude-sonnet-4-5
186
+ - vertex_ai/claude-sonnet-4-5@20250929
187
+ - vertex_ai/claude-sonnet-4@20250514
188
+ - vertex_ai/deepseek-ai/deepseek-r1-0528-maas
189
+ - vertex_ai/deepseek-ai/deepseek-v3.1-maas
190
+ <!--[[[end]]]-->
191
+
192
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ has_children: true
3
+ nav_order: 85
4
+ ---
5
+
6
+ # More info
7
+
8
+ See below for more info about aider, including some advanced topics.
@@ -0,0 +1,31 @@
1
+ ---
2
+ parent: Screen recordings
3
+ nav_order: 1
4
+ layout: minimal
5
+ highlight_image: /assets/recordings.jpg
6
+ description: See how a new command-line option is added to automatically accept edits proposed by the architect model, with implementation. Aider also updates the project's HISTORY file.
7
+ ---
8
+
9
+ # Add --auto-accept-architect feature
10
+
11
+ <script>
12
+ const recording_id = "auto-accept-architect";
13
+ const recording_url = "https://gist.githubusercontent.com/paul-gauthier/e7383fbc29c9bb343ee6fb7ee5d77e15/raw/c2194334085304bb1c6bb80814d791704d9719b6/707774.cast";
14
+ </script>
15
+
16
+ {% include recording.md %}
17
+
18
+ ## Commentary
19
+
20
+ - 0:01 We're going to add a new feature to automatically accept edits proposed by the architect model.
21
+ - 0:11 First, let's add the new switch.
22
+ - 0:40 Aider figured out that it should be passed to the Coder class.
23
+ - 0:48 Now we need to implement the functionality.
24
+ - 1:00 Let's do some manual testing.
25
+ - 1:28 That worked. Let's make sure we can turn it off too.
26
+ - 1:42 That worked too. Let's have aider update the HISTORY file to document the new feature.
27
+ - 2:00 Let's quickly tidy up the changes to HISTORY.
28
+ - 2:05 All done!
29
+
30
+
31
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ parent: Screen recordings
3
+ nav_order: 1
4
+ layout: minimal
5
+ highlight_image: /assets/recordings.jpg
6
+ description: Follow along as aider is modified to preserve read-only files specified at launch when using the /drop command. Aider does this implementation and adds test coverage.
7
+ ---
8
+
9
+ # Don't /drop read-only files added at launch
10
+
11
+ <script>
12
+ const recording_id = "dont-drop-original-read-files";
13
+ const recording_url = "https://gist.githubusercontent.com/paul-gauthier/c2e7b2751925fb7bb47036cdd37ec40d/raw/08e62ab539e2b5d4b52c15c31d9a0d241377c17c/707583.cast";
14
+ </script>
15
+
16
+ {% include recording.md %}
17
+
18
+ ## Commentary
19
+
20
+ - 0:01 We're going to update the /drop command to keep any read only files that were originally specified at launch.
21
+ - 0:10 We've added files that handle the main CLI and in-chat slash commands like /drop.
22
+ - 0:20 Let's explain the needed change to aider.
23
+ - 1:20 Ok, let's look at the code.
24
+ - 1:30 I'd prefer not to use "hasattr()", let's ask for improvements.
25
+ - 1:45 Let's try some manual testing.
26
+ - 2:10 Looks good. Let's check the existing test suite to ensure we didn't break anything.
27
+ - 2:19 Let's ask aider to add tests for this.
28
+ - 2:50 Tests look reasonable, we're done!
29
+
30
+
31
+
32
+
33
+
34
+
35
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Screen recordings
3
+ has_children: true
4
+ nav_order: 75
5
+ has_toc: false
6
+ description: Screen recordings of aider building aider.
7
+ highlight_image: /assets/recordings.jpg
8
+ ---
9
+
10
+ # Screen recordings
11
+
12
+ Below are a series of screen recordings of the aider developer using aider
13
+ to enhance aider.
14
+ They contain commentary that describes how aider is being used,
15
+ and might provide some inspiration for your own use of aider.
16
+
17
+ {% assign sorted_pages = site.pages | where: "parent", "Screen recordings" | sort: "nav_order" %}
18
+ {% for page in sorted_pages %}
19
+ - [{{ page.title }}]({{ page.url | relative_url }}) - {{ page.description }}
20
+ {% endfor %}
21
+
@@ -0,0 +1,69 @@
1
+ ---
2
+ parent: Screen recordings
3
+ nav_order: 1
4
+ layout: minimal
5
+ highlight_image: /assets/recordings.jpg
6
+ description: Watch the implementation of a warning system that alerts users when they try to apply reasoning settings to models that don't support them. Includes adding model metadata, confirmation dialogs, refactoring, and comprehensive test coverage.
7
+ ---
8
+
9
+ # Warn when users apply unsupported reasoning settings
10
+
11
+ <script>
12
+ const recording_id = "model-accepts-settings";
13
+ const recording_url = "https://gist.githubusercontent.com/paul-gauthier/66b1b5aa7136147702c98afc4987c0d4/raw/4b5c7ddf7e80db1ff4dfa78fe158bc000fc42e0e/accepts-settings.cast";
14
+ </script>
15
+
16
+ {% include recording.md %}
17
+
18
+ ## Commentary
19
+
20
+ - 0:01 Users sometimes run aider with "reasoning" settings that aren't supported by the model they're using. This can cause LLM API calls to completely fail, with non-specific error messages from the API provider. We're going to warn users up front to prevent this.
21
+ - 0:25 Ok, let's ask aider to add a new model setting where we can note which reasoning settings it supports. And then print a warning if the user tries to apply an unsupported setting.
22
+ - 1:30 Looks like it's including some extra changes we don't want.
23
+ - 1:45 Let's have a look at the models code and clean up some stray lines.
24
+ - 2:00 It also made the warning logic too conservative. We want to warn unless the setting is explicitly known to be supported.
25
+ - 3:00 Ok, good. Now lets add a setting to silence these warnings for power users who are doing something intentional.
26
+ - 3:45 Now we need to update the database of model settings to annotate which models support which reasoning settings. We'll start with the code that handles "fallback" settings for known models on unknown providers.
27
+ - 4:45 Oh, we forgot to give aider the actual file with that code! Aider asks to see it.
28
+ - 5:00 Ok, we've confused aider by asking it to change code it couldn't see.
29
+ - 5:10 Let's clear the chat and refine the prompt and try again.
30
+ - 6:00 Ok, looks good. Let's move on and update the full model settings database YAML file. Each main model like "o1" appears here from many providers, like OpenAI, OpenRouter, etc. We want to update them all.
31
+ - 7:43 Let's interrupt and refine the prompt to be more clear about which models to update.
32
+ - 9:20 Looks good. Let's review the YAML file and eyeball all the relevant models.
33
+ - 10:20 Now let's do some manual testing.
34
+ - 10:41 Ok, it should not be warning us about using "thinking tokens" with Sonnet 3.7.
35
+ - 10:55 Let's see if aider can spot the problem?
36
+ - 11:28 That doesn't sound like a promising solution. Let's add more of the relevant code, clear history and try again.
37
+ - 12:00 Ok, let's try aider's proposed solution.
38
+ - 12:32 And see if it worked... Nope! Still getting the unneeded warning. Undo that change!
39
+ - 12:48 Time for some manual print debugging.
40
+ - 13:00 It seems like the "accept_settings" value is not being set?
41
+ - 14:30 Aha! I have a local model settings file for Sonnet which overrides aider's built in settings. And we did not update it. Let's add "accepts_settings" there.
42
+ - 14:45 That was the problem, it wasn't a bug.
43
+ - 14:59 Ok, let's add test coverage for all this stuff.
44
+ - 15:09 And while aider writes tests, let's use "git diff" to review all the changes we've made.
45
+ - 15:34 Aider is done writing tests, let's try them.
46
+ - 15:44 One passed, one failed. Let's eyeball the passing test first.
47
+ - 16:04 And let's see if aider can fix the failing test.
48
+ - 16:14 Aider needs to see another file, which makes sense.
49
+ - 16:29 It's found the problem, but is trying to "fix" the code. We want it to fix the test.
50
+ - 16:47 Ok, tests are passing.
51
+ - 16:55 We should stop and ask the user "are you sure?", not just flash a warning if they're about to break their API calls.
52
+ - 17:59 Ok, that confirmation dialog looks good.
53
+ - 18:35 This code is a little bit repetitive. Let's do a bit of refactoring.
54
+ - 19:44 Sonnet is messing up the code editing instructions, so aider is retrying.
55
+ - 19:54 Let's clear the chat history and try again.
56
+ - 20:25 Are tests still passing after the refactor?
57
+ - 20:55 Tests passed, good. Let's tweak the warning text.
58
+ - 21:10 And now let's have aider update the docs to explain these changes.
59
+ - 22:32 Let's proofread and edit the updated docs.
60
+ - 24:25 And a "git diff" of all the docs changes to do a final check.
61
+ - 24:56 Let's have aider update the project's HISTORY file.
62
+ - 25:35 We can refine the HISTORY entries a bit.
63
+ - 26:20 All done!
64
+
65
+
66
+
67
+
68
+
69
+
@@ -0,0 +1,80 @@
1
+ ---
2
+ parent: Screen recordings
3
+ nav_order: 0
4
+ layout: minimal
5
+ highlight_image: /assets/recordings.jpg
6
+ description: Watch how aider adds support for tons of new programming languages by integrating with tree-sitter-language-pack. Demonstrates using aider to script downloading a collection of files, and using ad-hoc bash scripts to have aider modify a collection of files.
7
+ ---
8
+
9
+ # Add language support via tree-sitter-language-pack
10
+
11
+ <script>
12
+ const recording_id = "tree-sitter-language-pack";
13
+ const recording_url = "https://gist.githubusercontent.com/paul-gauthier/a990333449b09e2793088a45eb1587f4/raw/364124781cca282907ccdc7567cdfc588a9b438b/tmp.redacted.cast";
14
+ </script>
15
+
16
+ {% include recording.md %}
17
+
18
+
19
+ ## Commentary
20
+
21
+ - 0:01 We're going to add a ton of new languages to aider via tree-sitter-language-pack.
22
+ - 0:10 First, lets try and find which languages it supports.
23
+ - 1:00 Ok, there's a language definitions json file
24
+ - 1:10 Does it have the github repos for each language?
25
+ - 1:29 Ok, this is what we need.
26
+ - 1:45 We need to get all the tags files from each repository for aider's repo-map. Let's have aider write a script to fetch them all.
27
+ - 2:05 We'll show aider the language definitions json file.
28
+ - 3:37 Looks like it can't find most of the tags.scm files.
29
+ - 4:19 Maybe we should have it try other branches besides master?
30
+ - 5:02 Ok, it seems to be downloading them now.
31
+ - 5:55 Let's make it so we can re-run the script and only download files we haven't fetched yet.
32
+ - 6:12 I see lots of tags files, so it's working.
33
+ - 6:30 Ok, restart to run with latest code. This will take awhile to fetch them all.
34
+ - 9:02 The Grep-AST module needs to know about all the new languages.
35
+ - 9:45 Let's have aider add them all, and register each using their commonly used file extensions.
36
+ - 10:15 Some of the languages need to be recognized by their base name, not by their extension.
37
+ - 11:15 Let's sanity check if Grep-AST can handle PowerShell, one of the new languages.
38
+ - 12:00 Looks like it's parsing PowerShell fine.
39
+ - 13:00 Ok, let's download all the tags files into the right spot in the aider repo.
40
+ - 14:00 This will take a minute...
41
+ - 16:07 Delete some no-op or empty tags files.
42
+ - 16:16 Let's commit all the unmodified tags files.
43
+ - 16:33 We need to update each tag file, so that aider can identify names of functions, classes, etc in all these languages.
44
+ - 17:01 Let's use a bash loop to script aider to modify each tags file.
45
+ - 17:12 I'm giving aider a read-only example of an already modified tags file, as an example to follow.
46
+ - 19:04 Looks like it correctly updated the first couple of tags files.
47
+ - 19:28 Let's grep to watch aider's progress working through the list of files.
48
+ - 20:20 It's working on the Dart language now...
49
+ - 20:50 E-lisp is up next...
50
+ - 21:30 This is going to take a little while...
51
+ - 24:39 Let's add a README file with attribution for these tags files.
52
+ - 26:55 Ok, all the files are updated with tags for definitions and references to named code objects.
53
+ - 27:10 Let's add test coverage to be sure these languages work with the repo-map.
54
+ - 27:19 Each language needs a "fixture" with some sample code to parse during the test. Let's show aider the layout of the fixtures directory.
55
+ - 27:50 We can use a bash loop to ask aider to add test coverage for each new tags file.
56
+ - 28:12 We'll pass the fixtures directory listing to aider.
57
+ - 28:52 Just need to fix the bash to correctly iterate through the list of tags files.
58
+ - 29:27 I forgot to ask aider to actually generate a sample code fixture for each language.
59
+ - 30:25 Lets run the repo-map tests to see if the first new test works.
60
+ - 30:37 Tests for the Arduino language failed, with an empty repo-map? That's not good.
61
+ - 31:52 Can aider figure out what's wrong?
62
+ - 32:27 Well, aider made the test pass by basically skipping Arduino.
63
+ - 32:36 Let me see if I can use Grep-AST on the new Arduino fixture code.
64
+ - 32:42 Oh! I'm not using the updated Grep-AST that knows about all the new languages.
65
+ - 32:54 Ok, now we're parsing Arduino code properly. Undo aider's bogus test fix.
66
+ - 33:05 Ok, arduino passes now but there seems to be a regression with tsx?
67
+ - 33:20 Can aider figure out why?
68
+ - 34:10 Let's check the parsers map.
69
+ - 35:00 Well, that's all for this recording. The tsx problem was due to a bad mapping from ".tsx" to "typescript" in the map that aider generated earlier.
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
@@ -0,0 +1,112 @@
1
+ ---
2
+ parent: More info
3
+ highlight_image: /assets/robot-ast.png
4
+ nav_order: 300
5
+ description: Aider uses a map of your git repository to provide code context to LLMs.
6
+ ---
7
+
8
+ # Repository map
9
+
10
+ ![robot flowchat](/assets/robot-ast.png)
11
+
12
+ Aider
13
+ uses a **concise map of your whole git repository**
14
+ that includes
15
+ the most important classes and functions along with their types and call signatures.
16
+ This helps aider understand the code it's editing
17
+ and how it relates to the other parts of the codebase.
18
+ The repo map also helps aider write new code
19
+ that respects and utilizes existing libraries, modules and abstractions
20
+ found elsewhere in the codebase.
21
+
22
+ ## Using a repo map to provide context
23
+
24
+ Aider sends a **repo map** to the LLM along with
25
+ each change request from the user.
26
+ The repo map contains a list of the files in the
27
+ repo, along with the key symbols which are defined in each file.
28
+ It shows how each of these symbols are defined, by including the critical lines of code for each definition.
29
+
30
+ Here's a part of
31
+ the repo map of aider's repo, for
32
+ [base_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/base_coder.py)
33
+ and
34
+ [commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)
35
+ :
36
+
37
+ ```
38
+ aider/coders/base_coder.py:
39
+ ⋮...
40
+ │class Coder:
41
+ │ abs_fnames = None
42
+ ⋮...
43
+ │ @classmethod
44
+ │ def create(
45
+ │ self,
46
+ │ main_model,
47
+ │ edit_format,
48
+ │ io,
49
+ │ skip_model_availabily_check=False,
50
+ │ **kwargs,
51
+ ⋮...
52
+ │ def abs_root_path(self, path):
53
+ ⋮...
54
+ │ def run(self, with_message=None):
55
+ ⋮...
56
+
57
+ aider/commands.py:
58
+ ⋮...
59
+ │class Commands:
60
+ │ voice = None
61
+
62
+ ⋮...
63
+ │ def get_commands(self):
64
+ ⋮...
65
+ │ def get_command_completions(self, cmd_name, partial):
66
+ ⋮...
67
+ │ def run(self, inp):
68
+ ⋮...
69
+ ```
70
+
71
+ Mapping out the repo like this provides some key benefits:
72
+
73
+ - The LLM can see classes, methods and function signatures from everywhere in the repo. This alone may give it enough context to solve many tasks. For example, it can probably figure out how to use the API exported from a module just based on the details shown in the map.
74
+ - If it needs to see more code, the LLM can use the map to figure out which files it needs to look at. The LLM can ask to see these specific files, and aider will offer to add them to the chat context.
75
+
76
+ ## Optimizing the map
77
+
78
+ Of course, for large repositories even just the repo map might be too large
79
+ for the LLM's context window.
80
+ Aider solves this problem by sending just the **most relevant**
81
+ portions of the repo map.
82
+ It does this by analyzing the full repo map using
83
+ a graph ranking algorithm, computed on a graph
84
+ where each source file is a node and edges connect
85
+ files which have dependencies.
86
+ Aider optimizes the repo map by
87
+ selecting the most important parts of the codebase
88
+ which will
89
+ fit into the active token budget.
90
+ The optimization identifies and maps the portions of the code base
91
+ which are most relevant to the current state of the chat.
92
+
93
+ The token budget is
94
+ influenced by the `--map-tokens` switch, which defaults to 1k tokens.
95
+ Aider adjusts the size of the repo map dynamically based on the state of the chat. It will usually stay within that setting's value. But it does expand the repo map
96
+ significantly at times, especially when no files have been added to the chat and aider needs to understand the entire repo as best as possible.
97
+
98
+
99
+ The sample map shown above doesn't contain *every* class, method and function from those
100
+ files.
101
+ It only includes the most important identifiers,
102
+ the ones which are most often referenced by other portions of the code.
103
+ These are the key pieces of context that the LLM needs to know to understand
104
+ the overall codebase.
105
+
106
+
107
+ ## More info
108
+
109
+ Please check the
110
+ [repo map article on aider's blog](https://aider.chat/2023/10/22/repomap.html)
111
+ for more information on aider's repository map
112
+ and how it is constructed.
@@ -0,0 +1,100 @@
1
+ ---
2
+ parent: More info
3
+ nav_order: 400
4
+ description: You can script aider via the command line or python.
5
+ ---
6
+
7
+ # Scripting aider
8
+
9
+ You can script aider via the command line or python.
10
+
11
+ ## Command line
12
+
13
+ Aider takes a `--message` argument, where you can give it a natural language instruction.
14
+ It will do that one thing, apply the edits to the files and then exit.
15
+ So you could do:
16
+
17
+ ```bash
18
+ aider --message "make a script that prints hello" hello.js
19
+ ```
20
+
21
+ Or you can write simple shell scripts to apply the same instruction to many files:
22
+
23
+ ```bash
24
+ for FILE in *.py ; do
25
+ aider --message "add descriptive docstrings to all the functions" $FILE
26
+ done
27
+ ```
28
+
29
+ Use `aider --help` to see all the
30
+ [command line options](/docs/config/options.html),
31
+ but these are useful for scripting:
32
+
33
+ ```
34
+ --stream, --no-stream
35
+ Enable/disable streaming responses (default: True) [env var:
36
+ CECLI_STREAM]
37
+ --message COMMAND, --msg COMMAND, -m COMMAND
38
+ Specify a single message to send GPT, process reply then exit
39
+ (disables chat mode) [env var: CECLI_MESSAGE]
40
+ --message-file MESSAGE_FILE, -f MESSAGE_FILE
41
+ Specify a file containing the message to send GPT, process reply,
42
+ then exit (disables chat mode) [env var: CECLI_MESSAGE_FILE]
43
+ --yes Always say yes to every confirmation [env var: CECLI_YES]
44
+ --auto-commits, --no-auto-commits
45
+ Enable/disable auto commit of GPT changes (default: True) [env var:
46
+ CECLI_AUTO_COMMITS]
47
+ --dirty-commits, --no-dirty-commits
48
+ Enable/disable commits when repo is found dirty (default: True) [env
49
+ var: CECLI_DIRTY_COMMITS]
50
+ --dry-run, --no-dry-run
51
+ Perform a dry run without modifying files (default: False) [env var:
52
+ CECLI_DRY_RUN]
53
+ --commit Commit all pending changes with a suitable commit message, then exit
54
+ [env var: CECLI_COMMIT]
55
+ ```
56
+
57
+
58
+ ## Python
59
+
60
+ You can also script aider from python:
61
+
62
+ ```python
63
+ from aider.coders import Coder
64
+ from aider.models import Model
65
+
66
+ # This is a list of files to add to the chat
67
+ fnames = ["greeting.py"]
68
+
69
+ model = Model("gpt-4-turbo")
70
+
71
+ # Create a coder object
72
+ coder = Coder.create(main_model=model, fnames=fnames)
73
+
74
+ # This will execute one instruction on those files and then return
75
+ coder.run("make a script that prints hello world")
76
+
77
+ # Send another instruction
78
+ coder.run("make it say goodbye")
79
+
80
+ # You can run in-chat "/" commands too
81
+ coder.run("/tokens")
82
+
83
+ ```
84
+
85
+ See the
86
+ [Coder.create() and Coder.__init__() methods](https://github.com/Aider-AI/aider/blob/main/aider/coders/base_coder.py)
87
+ for all the supported arguments.
88
+
89
+ It can also be helpful to set the equivalent of `--yes` by doing this:
90
+
91
+ ```python
92
+ from aider.io import InputOutput
93
+ io = InputOutput(yes=True)
94
+ # ...
95
+ coder = Coder.create(model=model, fnames=fnames, io=io)
96
+ ```
97
+
98
+ {: .note }
99
+ The python scripting API is not officially supported or documented,
100
+ and could change in future releases without providing backwards compatibility.