cecli-dev 0.93.1__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.93.1.dist-info/METADATA +549 -0
  362. cecli_dev-0.93.1.dist-info/RECORD +366 -0
  363. cecli_dev-0.93.1.dist-info/WHEEL +5 -0
  364. cecli_dev-0.93.1.dist-info/entry_points.txt +4 -0
  365. cecli_dev-0.93.1.dist-info/licenses/LICENSE.txt +202 -0
  366. cecli_dev-0.93.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,211 @@
1
+ ---
2
+ parent: Usage
3
+ nav_order: 60
4
+ description: Using the code, architect, ask and help chat modes.
5
+ ---
6
+
7
+ # Chat modes
8
+
9
+ Aider has a few different chat modes:
10
+
11
+ - `code` - Aider will make changes to your code to satisfy your requests.
12
+ - `ask` - Aider will discuss your code and answer questions about it, but never make changes.
13
+ - `architect` - Like code mode, aider will change your files. An architect model will propose changes and an editor model will translate that proposal into specific file edits.
14
+ - `help` - Aider will answer questions about aider: usage, configuration, troubleshooting, etc.
15
+
16
+ By default, aider starts in "code" mode. As you are talking, you can
17
+ send individual messages in a specific mode using
18
+ `/code`, `/architect`, `/ask`, and `/help` commands:
19
+ Using these `/`-commands applies just to that particular message.
20
+ Your next message will go back to the active mode (usually "code" mode by default).
21
+
22
+ You can switch the active mode in a sticky way
23
+ with the `/chat-mode <mode>` command:
24
+
25
+ ```
26
+ /chat-mode code
27
+ /chat-mode architect
28
+ /chat-mode ask
29
+ /chat-mode help
30
+ ```
31
+
32
+ Or you can switch between coding modes using these commands without arguments:
33
+
34
+ ```
35
+ /code
36
+ /architect
37
+ /ask
38
+ ```
39
+
40
+ Or you can launch aider in one of the modes with the `--chat-mode <mode>` switch.
41
+ There is also a special shortcut `--architect` to launch in `--chat-mode architect`.
42
+
43
+ The aider prompt will indicate the active mode:
44
+
45
+ ```
46
+ > This is code mode.
47
+ ask> This is ask mode.
48
+ architect> This is architect mode.
49
+ ```
50
+
51
+
52
+ ## Ask/code workflow
53
+
54
+ A recommended workflow is to bounce back and forth between `/ask` and `/code` modes.
55
+
56
+ Use ask mode to discuss what you want to do, get suggestions or options from aider
57
+ and provide feedback on the approach.
58
+ Once aider understands the mission, switch to code mode to have it start editing
59
+ your files.
60
+ All the conversation and decision making from ask mode will
61
+ help ensure that the correct code changes are performed.
62
+
63
+ You can be very terse when you finally switch from ask to code mode.
64
+ Saying something as simple as "go ahead" in code mode will
65
+ have aider execute on the plan you've been discussing.
66
+
67
+ Here's an example with two ask mode messages to agree on the plan,
68
+ followed by two terse code mode messages to edit the code.
69
+
70
+ ````
71
+ ─────────────────────────────────────────────────────────────────────────────────────
72
+ Aider v0.79.0
73
+ Model: gemini/gemini-2.5-pro-exp-03-25 with diff-fenced edit format
74
+
75
+ > /ask What's the best thing to print if we're making a quick little demo program?
76
+
77
+ It sounds like you'd like to write a "Hello, world!" program. That's a very
78
+ popular phrase to use for small demo programs.
79
+
80
+ > /ask Yes, that's the idea. What are some more creative options?
81
+
82
+ 1. "Greetings, Earthlings!"
83
+ 2. "Beep boop, I am a computer!"
84
+ 3. "To code, or not to code, that is the question."
85
+ 4. "I think, therefore I print."
86
+ 5. "01001000 01101001!" (Binary for "Hi!")
87
+
88
+ > do 4
89
+
90
+ hello.py
91
+ >>>>>>> SEARCH
92
+ =======
93
+ def main():
94
+ print("I think, therefore I print.")
95
+ <<<<<<< REPLACE
96
+
97
+ > ALL CAPS!
98
+
99
+ hello.py
100
+ >>>>>>> SEARCH
101
+ print("I think, therefore I print.")
102
+ =======
103
+ print("I THINK, THEREFORE I PRINT!")
104
+ <<<<<<< REPLACE
105
+
106
+ ````
107
+
108
+ You can think of this ask/code workflow as a more fluid version of
109
+ architect mode, but working just with one model the whole time.
110
+
111
+ ## Architect mode and the editor model
112
+
113
+ When you are in architect mode, aider sends your requests to two models:
114
+
115
+ 1. First, it sends your request to the main model which will act as an architect
116
+ to propose how to solve your coding request.
117
+ The main model is configured with `/model` or `--model`.
118
+
119
+ 2. Aider then sends another request to an "editor model",
120
+ asking it to turn the architect's proposal into specific file editing instructions.
121
+ Aider has built in defaults to select an editor model based on your main model.
122
+ Or, you can choose a specific editor model with `--editor-model <model>`.
123
+
124
+ Certain LLMs aren't able to propose coding solutions *and*
125
+ specify detailed file edits all in one go.
126
+ For these models, architect mode can produce better results than code mode
127
+ by pairing them
128
+ with an editor model that is responsible for generating the file editing instructions.
129
+ But this uses two LLM requests,
130
+ which can take longer and increase costs.
131
+
132
+ Architect mode is especially useful with OpenAI's o1 models, which are strong at
133
+ reasoning but less capable at editing files.
134
+ Pairing an o1 architect with an editor model like GPT-4o or Sonnet will
135
+ give the best results.
136
+
137
+ But architect mode can also be helpful when you use the same model
138
+ as both the architect and the editor.
139
+ Allowing the model two requests to solve the problem and edit the files
140
+ can sometimes provide better results.
141
+
142
+ The editor model uses one of aider's edit formats to let the LLM
143
+ edit source files.
144
+ Aider will pick a suitable edit format by default,
145
+ but you can customize it with `--editor-edit-format <format>`.
146
+ The
147
+ ["editor-diff" and "editor-whole" edit formats](/docs/more/edit-formats.html#editor-diff-and-editor-whole)
148
+ are the recommended edit formats when using architect mode.
149
+ See this article on
150
+ [aider's architect/editor mode](/2024/09/26/architect.html)
151
+ for more details.
152
+
153
+
154
+ ## Examples
155
+
156
+ <div class="chat-transcript" markdown="1">
157
+
158
+
159
+ > Aider v0.47.1-dev
160
+ > Models: claude-3-5-sonnet-20240620 with diff edit format
161
+ > Git repo: .git with 298 files
162
+ > Repo-map: using 1024 tokens
163
+ > Use /help to see in-chat commands, run with --help to see cmd line args
164
+
165
+ #### /ask What is this repo?
166
+
167
+ This is collection of python functions that compute various math functions.
168
+
169
+ #### /help How do I use aider with ollama?
170
+
171
+ Run `aider --model ollama/<ollama-model>`.
172
+ See these docs for more info: https://aider.chat/docs/llms/ollama.html
173
+
174
+ #### /code Add a function to calculate the factorial of a number
175
+
176
+ Certainly! I'll add a function to calculate the factorial of a number. Here's the change:
177
+
178
+ ```python
179
+ def factorial(n):
180
+ if n == 0 or n == 1:
181
+ return 1
182
+ else:
183
+ return n * factorial(n - 1)
184
+
185
+ # Example usage
186
+ print(factorial(5)) # Output: 120
187
+ ```
188
+
189
+ This function uses recursion to calculate the factorial. It's been added to your code.
190
+
191
+ #### /architect Can we make this simpler?
192
+
193
+ Yes, you could replace the `factorial()` function with a call to the `math.factorial()`
194
+ builtin.
195
+ This way you don't have to maintain a custom factorial implementation,
196
+ and the builtin function is well optimized.
197
+
198
+ ```python
199
+ <<<<<<< SEARCH
200
+ def factorial(n):
201
+ if n == 0 or n == 1:
202
+ return 1
203
+ else:
204
+ return n * factorial(n - 1)
205
+ =======
206
+ from math import factorial
207
+ >>>>>>> REPLACE
208
+ ```
209
+
210
+ </div>
211
+
@@ -0,0 +1,179 @@
1
+ ---
2
+ parent: Usage
3
+ nav_order: 901
4
+ description: Use aider to edit configuration files, documentation, and other text-based formats.
5
+ ---
6
+
7
+
8
+ # Editing config & text files
9
+
10
+ Aider isn't just for code, it can be very helpful when editing
11
+ almost any text file.
12
+ You can use aider to make changes to your shell & ssh settings,
13
+ Dockerfiles
14
+ or pretty much any configuration or documentation file.
15
+
16
+ Here are some practical examples of modifying common config/text files:
17
+
18
+ ## Shell Configuration
19
+
20
+ <div class="chat-transcript" markdown="1">
21
+ $ aider .bashrc
22
+
23
+ Added .bashrc to the chat.
24
+
25
+
26
+ #### Add an alias 'll' that lists all files, with all details in human readable format. And update PATH to include uv installed tools.
27
+
28
+ ```
29
+ + alias ll='ls -alh'
30
+ + export PATH="$PATH:$HOME/.local/bin:$PATH"
31
+ ```
32
+ </div>
33
+
34
+ ## SSH Configurations
35
+
36
+ <div class="chat-transcript" markdown="1">
37
+ $ aider ~/.ssh/config
38
+
39
+ Added config to the chat.
40
+
41
+ #### Create a Host entry 'my-server' using bastion.example.com as JumpHost
42
+
43
+ ```
44
+ + Host my-server
45
+ + HostName 192.168.1.100
46
+ + User deploy
47
+ + Port 2222
48
+ + IdentityFile ~/.ssh/deploy_key
49
+ + ProxyJump bastion.example.com
50
+ ```
51
+ </div>
52
+
53
+ ## Docker Setup
54
+
55
+ <div class="chat-transcript" markdown="1">
56
+ $ aider Dockerfile docker-compose.yml
57
+
58
+ Added Dockerfile and docker-compose.yml to the chat.
59
+
60
+ #### Set non-root user and enable healthchecks
61
+
62
+ ```
63
+ + USER appuser
64
+ + HEALTHCHECK --interval=30s --timeout=3s \
65
+ + CMD curl -f http://localhost:8000/health || exit 1
66
+ ```
67
+
68
+ #### Expose port 5432 and add volume for postgres data
69
+
70
+ ```
71
+ services:
72
+ postgres:
73
+ image: postgres:15
74
+ + ports:
75
+ + - "5432:5432"
76
+ + volumes:
77
+ + - pgdata:/var/lib/postgresql/data
78
+ ```
79
+ </div>
80
+
81
+ ## Git Configuration
82
+
83
+ <div class="chat-transcript" markdown="1">
84
+ $ aider .gitconfig
85
+
86
+ Added .gitconfig to the chat.
87
+
88
+ #### Set default push behavior to current branch and enable color UI
89
+
90
+ ```
91
+ + [push]
92
+ + default = current
93
+ + [color]
94
+ + ui = auto
95
+ ```
96
+ </div>
97
+
98
+ ## System Configuration
99
+ <div class="chat-transcript" markdown="1">
100
+ $ aider /etc/hosts # May need sudo
101
+
102
+ Added hosts to the chat.
103
+
104
+ #### Block tracking domains by pointing them to 127.0.0.1
105
+
106
+ ```
107
+ + 127.0.0.1 ads.example.com
108
+ + 127.0.0.1 track.analytics.co
109
+ ```
110
+ </div>
111
+
112
+
113
+ ## Editor Configs
114
+ <div class="chat-transcript" markdown="1">
115
+ $ aider .vimrc
116
+
117
+ Added .vimrc to the chat.
118
+
119
+ #### Enable line numbers and set 4-space tabs for Python
120
+
121
+ ```
122
+ + set number
123
+ + autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
124
+ ```
125
+ </div>
126
+
127
+ ## VSCode Configuration
128
+ <div class="chat-transcript" markdown="1">
129
+ $ aider settings.json
130
+
131
+ Added settings.json to the chat.
132
+
133
+ #### Enable auto-format on save and set default formatter
134
+
135
+ ```
136
+ + "editor.formatOnSave": true,
137
+ + "editor.defaultFormatter": "esbenp.prettier-vscode"
138
+ ```
139
+ </div>
140
+
141
+ ## Markdown Documentation
142
+ <div class="chat-transcript" markdown="1">
143
+ $ aider README.md
144
+
145
+ Added README.md to the chat.
146
+
147
+
148
+ #### Add installation section with brew and pip options
149
+
150
+ ```
151
+ + ## Installation
152
+ + ```
153
+ + # Homebrew
154
+ + brew install cool-app-10k
155
+ +
156
+ + # PyPI
157
+ + pipx install cool-app-10k
158
+ + ```
159
+ ```
160
+ </div>
161
+
162
+ ## XML Configuration
163
+ <div class="chat-transcript" markdown="1">
164
+ $ aider pom.xml
165
+
166
+ Added pom.xml to the chat.
167
+ #### Add JUnit 5 dependency with test scope
168
+
169
+ ```
170
+ + <dependency>
171
+ + <groupId>org.junit.jupiter</groupId>
172
+ + <artifactId>junit-jupiter-api</artifactId>
173
+ + <version>5.9.2</version>
174
+ + <scope>test</scope>
175
+ + </dependency>
176
+ ```
177
+ </div>
178
+
179
+
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Notifications
3
+ highlight_image: /assets/notifications.jpg
4
+ parent: Usage
5
+ nav_order: 760
6
+ description: Aider can notify you when it's waiting for your input.
7
+ ---
8
+
9
+ # Notifications
10
+
11
+ Aider can notify you when it's done working and is
12
+ waiting for your input.
13
+ This is especially useful for long-running operations or when you're multitasking.
14
+
15
+ ## Usage
16
+
17
+ Enable notifications with the `--notifications` flag:
18
+
19
+ ```bash
20
+ aider --notifications
21
+ ```
22
+
23
+ When enabled, aider will notify you when the LLM has finished generating a response and is waiting for your input.
24
+
25
+ ## OS-Specific Notifications
26
+
27
+ Aider automatically detects your operating system and uses an appropriate notification method:
28
+
29
+ - **macOS**: Uses `terminal-notifier` if available, falling back to AppleScript notifications
30
+ - **Linux**: Uses `notify-send` or `zenity` if available
31
+ - **Windows**: Uses PowerShell to display a message box
32
+
33
+ ## Custom Notification Commands
34
+
35
+ You can specify a custom notification command with `--notifications-command`:
36
+
37
+ ```bash
38
+ aider --notifications-command "your-custom-command"
39
+ ```
40
+
41
+ For example, on macOS you might use:
42
+
43
+ ```bash
44
+ aider --notifications-command "say 'Aider is ready'"
45
+ ```
46
+
47
+ ### Remote Notifications
48
+
49
+ For remote notifications you could use [Apprise](https://github.com/caronc/apprise),
50
+ which is a cross-platform Python library for sending notifications to various services.
51
+
52
+ We can use Apprise to send notifications to Slack
53
+
54
+ ```bash
55
+ aider --notifications-command "apprise -b 'Aider is ready' 'slack://your-slack-webhook-token'"
56
+ ```
57
+
58
+ or Discord
59
+ ```bash
60
+ aider --notifications-command "apprise -b 'Aider is ready' 'discord://your-discord-webhook-token'"
61
+ ```
62
+
63
+ or even to your phone via Pushbullet
64
+ ```bash
65
+ aider --notifications-command "apprise -b 'Aider is ready' 'pbul://your-pushbullet-access-token'"
66
+ ```
67
+
68
+ Check more how to use and configure Apprise on their GitHub page.
69
+
70
+ ## Configuration
71
+
72
+ You can add these settings to your configuration file:
73
+
74
+ ```yaml
75
+ # Enable notifications
76
+ notifications: true
77
+
78
+ # Optional custom notification command
79
+ notifications_command: "your-custom-command"
80
+ ```
81
+
82
+ Or in your `.env` file:
83
+
84
+ ```
85
+ CECLI_NOTIFICATIONS=true
86
+ CECLI_NOTIFICATIONS_COMMAND=your-custom-command
87
+ ```
@@ -0,0 +1,79 @@
1
+ ---
2
+ parent: Usage
3
+ nav_order: 25
4
+ description: Tips for AI pair programming with aider.
5
+ ---
6
+
7
+ # Tips
8
+
9
+ ## Just add the files that need to be changed to the chat
10
+
11
+ Take a moment and think about which files will need to be changed.
12
+ Aider can often figure out which files to edit all by itself, but the most efficient approach is for you to add the files to the chat.
13
+
14
+ ## Don't add lots of files to the chat
15
+
16
+ Just add the files you think need to be edited.
17
+ Too much irrelevant code will distract and confuse the LLM.
18
+ Aider uses a [map of your entire git repo](https://aider.chat/docs/repomap.html)
19
+ so is usually aware of relevant classes/functions/methods elsewhere in your code base.
20
+ It's ok to add 1-2 highly relevant files that don't need to be edited,
21
+ but be selective.
22
+
23
+ ## Break your goal down into bite sized steps
24
+
25
+ Do them one at a time.
26
+ Adjust the files added to the chat as you go: `/drop` files that don't need any more changes, `/add` files that need changes for the next step.
27
+
28
+ ## For complex changes, discuss a plan first
29
+
30
+ Use the [`/ask` command](modes.html) to make a plan with aider.
31
+ Once you are happy with the approach, just say "go ahead" without the `/ask` prefix.
32
+
33
+ ## If aider gets stuck
34
+
35
+ - Use `/clear` to discard the chat history and make a fresh start.
36
+ - Can you `/drop` any extra files?
37
+ - Use `/ask` to discuss a plan before aider starts editing code.
38
+ - Use the [`/model` command](commands.html) to switch to a different model and try again. Switching between GPT-4o and Sonnet will often get past problems.
39
+ - If aider is hopelessly stuck,
40
+ just code the next step yourself and try having aider code some more after that.
41
+ Take turns and pair program with aider.
42
+
43
+ ## Creating new files
44
+
45
+ If you want aider to create a new file, add it to the repository first with `/add <file>`.
46
+ This way aider knows this file exists and will write to it.
47
+ Otherwise, aider might write the changes to an existing file.
48
+ This can happen even if you ask for a new file, as LLMs tend to focus a lot
49
+ on the existing information in their contexts.
50
+
51
+ ## Fixing bugs and errors
52
+
53
+ If your code is throwing an error,
54
+ use the [`/run` command](commands.html)
55
+ to share the error output with the aider.
56
+ Or just paste the errors into the chat. Let the aider figure out how to fix the bug.
57
+
58
+ If test are failing, use the [`/test` command](lint-test.html)
59
+ to run tests and
60
+ share the error output with the aider.
61
+
62
+ ## Providing docs
63
+
64
+ LLMs know about a lot of standard tools and libraries, but may get some of the fine details wrong about API versions and function arguments.
65
+
66
+ You can provide up-to-date documentation in a few ways:
67
+
68
+ - Paste doc snippets into the chat.
69
+ - Include a URL to docs in your chat message
70
+ and aider will scrape and read it. For example: `Add a submit button like this https://ui.shadcn.com/docs/components/button`.
71
+ - Use the [`/read` command](commands.html) to read doc files into the chat from anywhere on your filesystem.
72
+ - If you have coding conventions or standing instructions you want aider to follow, consider using a [conventions file](conventions.html).
73
+
74
+ ## Interrupting & inputting
75
+
76
+ Use Control-C to interrupt aider if it isn't providing a useful response. The partial response remains in the conversation, so you can refer to it when you reply with more information or direction.
77
+
78
+ {% include multi-line.md %}
79
+
@@ -0,0 +1,30 @@
1
+ ---
2
+ parent: Usage
3
+ nav_order: 75
4
+ description: Intro and tutorial videos made by aider users.
5
+ ---
6
+
7
+ # Tutorial videos
8
+
9
+ Here are some tutorial videos made by aider users:
10
+
11
+ - [Using Architect/Editor mode](https://www.youtube.com/watch?v=OPXslklVBZc) -- AICodeKing
12
+ - [Using aider to incrementally build a non-trivial app](https://youtu.be/QlUt06XLbJE) -- IndyDevDan
13
+ - [Aider and Replit on mobile with your voice](https://x.com/itsPaulAi/status/1830987090617831810) -- Paul Couvert
14
+ - [Aider is the OG AI Coding King (Mermaid Diagram AI Agent)](https://www.youtube.com/watch?v=ag-KxYS8Vuw) -- IndyDevDan
15
+ - [Installing aider in replit and making a Trello clone](https://x.com/itspaulai/status/1828834199597633724) -- Paul Couvert
16
+ - [Step-by-Step Development Environment Setup for AI-Assisted Coding](https://www.youtube.com/watch?v=DnBVgfe6ZQM) -- Coding the Future With AI
17
+ - [Generate FULL-STACK Apps with Claude 3.5 Sonnet](https://youtu.be/sKeIZGW8xzg) -- AICodeKing
18
+ - [Creating Games with AI from Start-To-End](https://youtu.be/sOd2YYZFMUs) -- AICodeKing
19
+ - [Claude 3.5 and aider: Use AI Assistants to Build AI Apps](https://youtu.be/0hIisJ3xAdU) -- Coding the Future With AI
20
+ - [Develop a Full-stack App Without Writing ANY Code](https://youtu.be/dzOWn8TI738) -- WorldofAI
21
+ - [Generate Games with AI (w/ Local LLMs)](https://youtu.be/DjVJpGzQbSA) -- AICodeKing
22
+ - [Aider tips and Example use](https://www.youtube.com/watch?v=OsChkvGGDgw) -- techfren
23
+ - [Aider and Claude 3.5: Develop a Full-stack App Without Writing ANY Code!](https://www.youtube.com/watch?v=BtAqHsySdSY) -- Coding the Future With AI
24
+ - [Generate application with just one prompt using Aider](https://www.youtube.com/watch?v=Y-_0VkMUiPc&t=78s) -- AICodeKing
25
+ - [Aider : the production ready AI coding assistant you've been waiting for](https://www.youtube.com/watch?v=zddJofosJuM) -- Learn Code With JV
26
+ - [Holy Grail: FREE Coding Assistant That Can Build From EXISTING CODE BASE](https://www.youtube.com/watch?v=df8afeb1FY8) -- Matthew Berman
27
+ - [Aider: This AI Coder Can Create AND Update Git Codebases](https://www.youtube.com/watch?v=EqLyFT78Sig) -- Ian Wootten
28
+
29
+ Thanks to all these great creators for taking the time
30
+ to share their experiences coding with aider!
@@ -0,0 +1,121 @@
1
+ ---
2
+ parent: Usage
3
+ nav_order: 100
4
+ description: Speak with aider about your code!
5
+ ---
6
+
7
+ # Voice-to-code with aider
8
+
9
+ Speak with aider about your code! Request new features, test cases or bug fixes using your voice and let aider do the work of editing the files in your local git repo. As with all of aider's capabilities, you can use voice-to-code with an existing repo or to start a new project.
10
+
11
+ Voice support fits quite naturally into aider's AI pair programming
12
+ chat interface. Now you can fluidly switch between voice and text chat
13
+ when you ask aider to edit your code.
14
+
15
+ ## How to use voice-to-code
16
+
17
+ Use the in-chat `/voice` command to start recording,
18
+ and press `ENTER` when you're done speaking.
19
+ Your voice coding instructions will be transcribed,
20
+ as if you had typed them into
21
+ the aider chat session.
22
+
23
+ See the [installation instructions](https://aider.chat/docs/install/optional.html#enable-voice-coding) for
24
+ information on how to enable the `/voice` command.
25
+
26
+ <br/>
27
+ <div class="chat-transcript" markdown="1">
28
+
29
+ > Aider v0.11.2-dev
30
+ > Added app.py to the chat.
31
+
32
+ #### /voice
33
+
34
+ <blockquote>
35
+ <div class="recording-line">
36
+ <p style="display: inline;">Recording, press ENTER when done... <span id="timer">3.5</span>sec</p>
37
+ <div id="progress-bar">
38
+ <div id="progress"></div>
39
+ </div>
40
+ </div>
41
+ </blockquote>
42
+
43
+ <style>
44
+ .recording-line > * {
45
+ display: inline-block;
46
+ vertical-align: middle;
47
+ }
48
+ #progress-bar {
49
+ width: 100px;
50
+ height: 20px;
51
+ background-color: #333;
52
+ margin-left: 10px;
53
+ }
54
+ #progress {
55
+ height: 100%;
56
+ background-color: #f0f0f0;
57
+ animation: progress 3s infinite;
58
+ }
59
+ @keyframes progress {
60
+ 0% { width: 10%; }
61
+ 20% { width: 90%; }
62
+ 50% { width: 30%; }
63
+ 60% { width: 90%; }
64
+ 80% { width: 20%; }
65
+ 100% { width: 10%; }
66
+
67
+ }
68
+ </style>
69
+
70
+ <script>
71
+ window.onload = function() {
72
+ var counter = 0;
73
+ var timer = document.getElementById('timer');
74
+ setInterval(function() {
75
+ counter = (counter + 0.1) % 9;
76
+ timer.textContent = counter.toFixed(1);
77
+ }, 100);
78
+ }
79
+ </script>
80
+
81
+ <div style="display: inline-block; position: relative; width: 200px; background-color: #f0f0f0; border-radius: 10px; padding: 10px; color: #333; font-family: 'Comic Sans MS', 'Comic Sans', 'Marker Felt', sans-serif;">
82
+ <span style="position: absolute; top: 0; left: 50%; transform: translate(-50%, -100%); width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-bottom: 10px solid #f0f0f0;"></span>
83
+ “&nbsp;add a factorial endpoint that uses math factorial&nbsp;”
84
+ </div>
85
+
86
+ #### Add a factorial endpoint that uses math.factorial.
87
+
88
+ To add a factorial endpoint to the Flask application, we need to modify the `app.py` file.
89
+
90
+ Here are the steps:
91
+
92
+ 1. Add a new route `/fact/<int:x>` to the Flask application.
93
+ 2. In the function for this route, call `math.factorial(x)` and return the result as a string.
94
+
95
+ Here is the *edit block* for these changes:
96
+
97
+ ```python
98
+ app.py
99
+ <<<<<<< HEAD
100
+ if __name__ == '__main__':
101
+ print("Starting...")
102
+ app.run()
103
+ =======
104
+ @app.route('/fact/<int:x>')
105
+ def factorial(x):
106
+ result = math.factorial(x)
107
+ return str(result)
108
+
109
+ if __name__ == '__main__':
110
+ print("Starting...")
111
+ app.run()
112
+ >>>>>>> updated
113
+ ```
114
+
115
+ > Applied edit to app.py
116
+ > Commit ef9e3e7 aider: Add a factorial endpoint that uses math.factorial.
117
+
118
+ </div>
119
+ <br/>
120
+ <br/>
121
+ <br/>