cecli-dev 0.96.4__tar.gz → 0.96.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/PKG-INFO +12 -12
  2. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/README.md +11 -11
  3. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/__init__.py +1 -1
  4. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/_version.py +3 -3
  5. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/agent_coder.py +1 -0
  6. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/architect_coder.py +8 -0
  7. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/base_coder.py +21 -6
  8. cecli_dev-0.96.6/cecli/helpers/command_parser.py +179 -0
  9. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/io.py +44 -15
  10. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/main.py +2 -0
  11. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/app.py +23 -6
  12. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/output.py +21 -18
  13. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/worker.py +1 -0
  14. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/PKG-INFO +12 -12
  15. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/SOURCES.txt +1 -0
  16. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.dockerignore +0 -0
  17. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.flake8 +0 -0
  18. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.gitattributes +0 -0
  19. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  20. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/check_pypi_version.yml +0 -0
  21. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/docker-build-test.yml +0 -0
  22. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/docker-release.yml +0 -0
  23. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/issues.yml +0 -0
  24. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/pages.yml +0 -0
  25. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/pre-commit.yml +0 -0
  26. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/release.yml +0 -0
  27. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/ubuntu-tests.yml +0 -0
  28. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/windows-tests.yml +0 -0
  29. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.github/workflows/windows_check_pypi_version.yml +0 -0
  30. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.gitignore +0 -0
  31. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/.pre-commit-config.yaml +0 -0
  32. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/CHANGELOG.md +0 -0
  33. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/CNAME +0 -0
  34. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/CONTRIBUTING.md +0 -0
  35. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/HISTORY.md +0 -0
  36. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/LICENSE.txt +0 -0
  37. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/MANIFEST.in +0 -0
  38. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/Dockerfile +0 -0
  39. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/README.md +0 -0
  40. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/__init__.py +0 -0
  41. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/benchmark.py +0 -0
  42. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/benchmark_classic.py +0 -0
  43. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/clone-exercism.sh +0 -0
  44. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/cpp-test.sh +0 -0
  45. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/docker.sh +0 -0
  46. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/docker_build.sh +0 -0
  47. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/install-docker-ubuntu.sh +0 -0
  48. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/npm-test.sh +0 -0
  49. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/over_time.py +0 -0
  50. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/plot.sh +0 -0
  51. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/plots.py +0 -0
  52. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/problem_stats.py +0 -0
  53. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/prompts.py +0 -0
  54. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/refactor_tools.py +0 -0
  55. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/rsync.sh +0 -0
  56. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/rungrid.py +0 -0
  57. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/swe-bench-lite.txt +0 -0
  58. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/swe-bench.txt +0 -0
  59. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/swe_bench.py +0 -0
  60. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/benchmark/test_benchmark.py +0 -0
  61. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/__main__.py +0 -0
  62. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/args.py +0 -0
  63. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/args_formatter.py +0 -0
  64. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/change_tracker.py +0 -0
  65. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/__init__.py +0 -0
  66. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/ask_coder.py +0 -0
  67. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/chat_chunks.py +0 -0
  68. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/context_coder.py +0 -0
  69. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/copypaste_coder.py +0 -0
  70. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editblock_coder.py +0 -0
  71. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editblock_fenced_coder.py +0 -0
  72. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editblock_func_coder.py +0 -0
  73. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  74. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editor_editblock_coder.py +0 -0
  75. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/editor_whole_coder.py +0 -0
  76. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/help_coder.py +0 -0
  77. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/patch_coder.py +0 -0
  78. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/search_replace.py +0 -0
  79. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/shell.py +0 -0
  80. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/single_wholefile_func_coder.py +0 -0
  81. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/udiff_coder.py +0 -0
  82. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/udiff_simple.py +0 -0
  83. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/wholefile_coder.py +0 -0
  84. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/coders/wholefile_func_coder.py +0 -0
  85. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/__init__.py +0 -0
  86. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/add.py +0 -0
  87. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/agent.py +0 -0
  88. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/architect.py +0 -0
  89. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/ask.py +0 -0
  90. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/chat_mode.py +0 -0
  91. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/clear.py +0 -0
  92. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/code.py +0 -0
  93. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/command_prefix.py +0 -0
  94. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/commit.py +0 -0
  95. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/compact.py +0 -0
  96. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/context.py +0 -0
  97. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/context_blocks.py +0 -0
  98. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/context_management.py +0 -0
  99. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/copy.py +0 -0
  100. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/copy_context.py +0 -0
  101. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/core.py +0 -0
  102. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/diff.py +0 -0
  103. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/drop.py +0 -0
  104. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/editor.py +0 -0
  105. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/editor_model.py +0 -0
  106. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/exit.py +0 -0
  107. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/git.py +0 -0
  108. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/help.py +0 -0
  109. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/history_search.py +0 -0
  110. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/lint.py +0 -0
  111. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/list_sessions.py +0 -0
  112. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/load.py +0 -0
  113. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/load_mcp.py +0 -0
  114. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/load_session.py +0 -0
  115. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/load_skill.py +0 -0
  116. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/ls.py +0 -0
  117. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/map.py +0 -0
  118. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/map_refresh.py +0 -0
  119. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/model.py +0 -0
  120. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/models.py +0 -0
  121. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/multiline_mode.py +0 -0
  122. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/paste.py +0 -0
  123. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/quit.py +0 -0
  124. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/read_only.py +0 -0
  125. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/read_only_stub.py +0 -0
  126. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/reasoning_effort.py +0 -0
  127. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/remove_mcp.py +0 -0
  128. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/remove_skill.py +0 -0
  129. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/report.py +0 -0
  130. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/reset.py +0 -0
  131. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/run.py +0 -0
  132. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/save.py +0 -0
  133. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/save_session.py +0 -0
  134. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/settings.py +0 -0
  135. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/terminal_data/linux.keytab +0 -0
  136. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/terminal_setup.py +0 -0
  137. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/test.py +0 -0
  138. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/think_tokens.py +0 -0
  139. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/tokens.py +0 -0
  140. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/undo.py +0 -0
  141. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/utils/__init__.py +0 -0
  142. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/utils/base_command.py +0 -0
  143. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/utils/helpers.py +0 -0
  144. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/utils/registry.py +0 -0
  145. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/utils/save_load_manager.py +0 -0
  146. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/voice.py +0 -0
  147. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/weak_model.py +0 -0
  148. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/commands/web.py +0 -0
  149. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/deprecated_args.py +0 -0
  150. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/diffs.py +0 -0
  151. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/dump.py +0 -0
  152. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/editor.py +0 -0
  153. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/exceptions.py +0 -0
  154. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/format_settings.py +0 -0
  155. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/help.py +0 -0
  156. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/help_pats.py +0 -0
  157. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/__init__.py +0 -0
  158. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/background_commands.py +0 -0
  159. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/__init__.py +0 -0
  160. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/base_message.py +0 -0
  161. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/files.py +0 -0
  162. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/integration.py +0 -0
  163. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/manager.py +0 -0
  164. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/tags.py +0 -0
  165. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/conversation/utils.py +0 -0
  166. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/copypaste.py +0 -0
  167. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/coroutines.py +0 -0
  168. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/file_searcher.py +0 -0
  169. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/model_providers.py +0 -0
  170. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/nested.py +0 -0
  171. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/plugin_manager.py +0 -0
  172. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/profiler.py +0 -0
  173. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/requests.py +0 -0
  174. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/similarity.py +0 -0
  175. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/helpers/skills.py +0 -0
  176. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/history.py +0 -0
  177. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/linter.py +0 -0
  178. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/llm.py +0 -0
  179. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mcp/__init__.py +0 -0
  180. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mcp/manager.py +0 -0
  181. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mcp/oauth.py +0 -0
  182. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mcp/server.py +0 -0
  183. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mcp/utils.py +0 -0
  184. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/mdstream.py +0 -0
  185. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/models.py +0 -0
  186. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/onboarding.py +0 -0
  187. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/__init__.py +0 -0
  188. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/agent.yml +0 -0
  189. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/architect.yml +0 -0
  190. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/ask.yml +0 -0
  191. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/base.yml +0 -0
  192. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/context.yml +0 -0
  193. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/copypaste.yml +0 -0
  194. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editblock.yml +0 -0
  195. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editblock_fenced.yml +0 -0
  196. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editblock_func.yml +0 -0
  197. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editor_diff_fenced.yml +0 -0
  198. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editor_editblock.yml +0 -0
  199. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/editor_whole.yml +0 -0
  200. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/help.yml +0 -0
  201. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/patch.yml +0 -0
  202. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/single_wholefile_func.yml +0 -0
  203. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/udiff.yml +0 -0
  204. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/udiff_simple.yml +0 -0
  205. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/utils/__init__.py +0 -0
  206. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/utils/registry.py +0 -0
  207. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/utils/system.py +0 -0
  208. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/wholefile.yml +0 -0
  209. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/prompts/wholefile_func.yml +0 -0
  210. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  211. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  212. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  213. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  214. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  215. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  216. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  217. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  218. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  219. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  220. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  221. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  222. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  223. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  224. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  225. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  226. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  227. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  228. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  229. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  230. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  231. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  232. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  233. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  234. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  235. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  236. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  237. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  238. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  239. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  240. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  241. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/README.md +0 -0
  242. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  243. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  244. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  245. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  246. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  247. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  248. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  249. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  250. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  251. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  252. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  253. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  254. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  255. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  256. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  257. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  258. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  259. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  260. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  261. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  262. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  263. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  264. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  265. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  266. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  267. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  268. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/reasoning_tags.py +0 -0
  269. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/repo.py +0 -0
  270. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/repomap.py +0 -0
  271. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/report.py +0 -0
  272. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/resources/__init__.py +0 -0
  273. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/resources/model-metadata.json +0 -0
  274. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/resources/model-settings.yml +0 -0
  275. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/resources/providers.json +0 -0
  276. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/run_cmd.py +0 -0
  277. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/scrape.py +0 -0
  278. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/sendchat.py +0 -0
  279. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/sessions.py +0 -0
  280. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/special.py +0 -0
  281. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/__init__.py +0 -0
  282. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/command.py +0 -0
  283. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/command_interactive.py +0 -0
  284. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/context_manager.py +0 -0
  285. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/delete_block.py +0 -0
  286. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/delete_line.py +0 -0
  287. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/delete_lines.py +0 -0
  288. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/extract_lines.py +0 -0
  289. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/finished.py +0 -0
  290. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_branch.py +0 -0
  291. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_diff.py +0 -0
  292. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_log.py +0 -0
  293. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_remote.py +0 -0
  294. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_show.py +0 -0
  295. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/git_status.py +0 -0
  296. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/grep.py +0 -0
  297. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/indent_lines.py +0 -0
  298. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/insert_block.py +0 -0
  299. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/list_changes.py +0 -0
  300. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/load_skill.py +0 -0
  301. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/ls.py +0 -0
  302. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/remove_skill.py +0 -0
  303. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/replace_text.py +0 -0
  304. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/show_numbered_context.py +0 -0
  305. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/thinking.py +0 -0
  306. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/undo_change.py +0 -0
  307. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/update_todo_list.py +0 -0
  308. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/utils/base_tool.py +0 -0
  309. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/utils/helpers.py +0 -0
  310. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/utils/output.py +0 -0
  311. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/utils/registry.py +0 -0
  312. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/view_files_matching.py +0 -0
  313. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tools/view_files_with_symbol.py +0 -0
  314. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/__init__.py +0 -0
  315. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/io.py +2 -2
  316. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/styles.tcss +0 -0
  317. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/__init__.py +0 -0
  318. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/completion_bar.py +0 -0
  319. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/file_list.py +0 -0
  320. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/footer.py +0 -0
  321. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/input_area.py +0 -0
  322. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/input_container.py +0 -0
  323. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/key_hints.py +0 -0
  324. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/tui/widgets/status_bar.py +0 -0
  325. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/urls.py +0 -0
  326. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/utils.py +0 -0
  327. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/versioncheck.py +0 -0
  328. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/voice.py +0 -0
  329. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/waiting.py +0 -0
  330. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/watch.py +0 -0
  331. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/watch_prompts.py +0 -0
  332. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/Gemfile +0 -0
  333. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/blame.md +0 -0
  334. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/get-started.md +0 -0
  335. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/help-tip.md +0 -0
  336. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/help.md +0 -0
  337. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/install.md +0 -0
  338. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/keys.md +0 -0
  339. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/model-warnings.md +0 -0
  340. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/multi-line.md +0 -0
  341. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/python-m-aider.md +0 -0
  342. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/recording.css +0 -0
  343. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/recording.md +0 -0
  344. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/replit-pipx.md +0 -0
  345. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_includes/works-best.md +0 -0
  346. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/_sass/custom/custom.scss +0 -0
  347. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/adv-model-settings.md +0 -0
  348. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/agent-mode.md +0 -0
  349. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/aider_conf.md +0 -0
  350. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/api-keys.md +0 -0
  351. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/custom-commands.md +0 -0
  352. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  353. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/dotenv.md +0 -0
  354. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/editor.md +0 -0
  355. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/mcp.md +0 -0
  356. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/model-aliases.md +0 -0
  357. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/options.md +0 -0
  358. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/reasoning.md +0 -0
  359. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/skills.md +0 -0
  360. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config/tui.md +0 -0
  361. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/config.md +0 -0
  362. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/faq.md +0 -0
  363. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/git.md +0 -0
  364. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/index.md +0 -0
  365. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/install/codespaces.md +0 -0
  366. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/install/docker.md +0 -0
  367. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/install/optional.md +0 -0
  368. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/install/replit.md +0 -0
  369. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/install.md +0 -0
  370. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/languages.md +0 -0
  371. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  372. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/legal/privacy.md +0 -0
  373. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/anthropic.md +0 -0
  374. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/azure.md +0 -0
  375. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/bedrock.md +0 -0
  376. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/cohere.md +0 -0
  377. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/deepseek.md +0 -0
  378. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/gemini.md +0 -0
  379. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/github.md +0 -0
  380. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/groq.md +0 -0
  381. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/lm-studio.md +0 -0
  382. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/ollama.md +0 -0
  383. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/openai-compat.md +0 -0
  384. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/openai.md +0 -0
  385. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/openrouter.md +0 -0
  386. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/other.md +0 -0
  387. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/vertex.md +0 -0
  388. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/warnings.md +0 -0
  389. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms/xai.md +0 -0
  390. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/llms.md +0 -0
  391. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/more/analytics.md +0 -0
  392. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/more/edit-formats.md +0 -0
  393. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/more/infinite-output.md +0 -0
  394. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/more-info.md +0 -0
  395. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/recordings/auto-accept-architect.md +0 -0
  396. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/recordings/dont-drop-original-read-files.md +0 -0
  397. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/recordings/index.md +0 -0
  398. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/recordings/model-accepts-settings.md +0 -0
  399. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/recordings/tree-sitter-language-pack.md +0 -0
  400. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/repomap.md +0 -0
  401. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/scripting.md +0 -0
  402. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/sessions.md +0 -0
  403. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/aider-not-found.md +0 -0
  404. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  405. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/imports.md +0 -0
  406. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  407. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/support.md +0 -0
  408. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  409. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  410. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/troubleshooting.md +0 -0
  411. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/browser.md +0 -0
  412. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/caching.md +0 -0
  413. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/commands.md +0 -0
  414. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/conventions.md +0 -0
  415. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/copypaste.md +0 -0
  416. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/images-urls.md +0 -0
  417. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/lint-test.md +0 -0
  418. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/modes.md +0 -0
  419. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/not-code.md +0 -0
  420. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/notifications.md +0 -0
  421. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/tips.md +0 -0
  422. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/tutorials.md +0 -0
  423. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/voice.md +0 -0
  424. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage/watch.md +0 -0
  425. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/docs/usage.md +0 -0
  426. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli/website/share/index.md +0 -0
  427. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/dependency_links.txt +0 -0
  428. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/entry_points.txt +0 -0
  429. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/requires.txt +0 -0
  430. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/cecli_dev.egg-info/top_level.txt +0 -0
  431. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/docker/Dockerfile +0 -0
  432. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  433. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/pyproject.toml +0 -0
  434. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/pytest.ini +0 -0
  435. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/common-constraints.txt +0 -0
  436. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-dev.in +0 -0
  437. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-dev.txt +0 -0
  438. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-help.in +0 -0
  439. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-help.txt +0 -0
  440. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-playwright.in +0 -0
  441. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements-playwright.txt +0 -0
  442. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/requirements.in +0 -0
  443. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements/tree-sitter.in +0 -0
  444. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/requirements.txt +0 -0
  445. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/30k-image.py +0 -0
  446. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/Dockerfile.jekyll +0 -0
  447. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/__init__.py +0 -0
  448. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/blame.py +0 -0
  449. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/clean_metadata.py +0 -0
  450. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/cost_analyzer.py +0 -0
  451. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/dl_icons.py +0 -0
  452. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/filter-chat-mode.js +0 -0
  453. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/generate_providers.py +0 -0
  454. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/get_contributor_list.js +0 -0
  455. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/history_prompts.py +0 -0
  456. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/homepage.py +0 -0
  457. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/issues.py +0 -0
  458. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/jekyll_build.sh +0 -0
  459. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/jekyll_run.sh +0 -0
  460. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/logo_svg.py +0 -0
  461. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/pip-compile.sh +0 -0
  462. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/recording_audio.py +0 -0
  463. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/redact-cast.py +0 -0
  464. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/rename_to_cecli.py +0 -0
  465. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/tmux_record.sh +0 -0
  466. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/tsl_pack_langs.py +0 -0
  467. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/update-blame.sh +0 -0
  468. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/update-docs.sh +0 -0
  469. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/update-history.py +0 -0
  470. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/versionbump.py +0 -0
  471. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/scripts/yank-old-versions.py +0 -0
  472. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/setup.cfg +0 -0
  473. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/shim.pyproject.toml +0 -0
  474. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/__init__.py +0 -0
  475. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/__init__.py +0 -0
  476. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_aws_credentials.py +0 -0
  477. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_background_commands.py +0 -0
  478. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_coder.py +0 -0
  479. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_commands.py +0 -0
  480. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_custom_commands.py +0 -0
  481. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_deprecated.py +0 -0
  482. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_editblock.py +0 -0
  483. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_editor.py +0 -0
  484. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_exceptions.py +0 -0
  485. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_find_or_blocks.py +0 -0
  486. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_history.py +0 -0
  487. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_io.py +0 -0
  488. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_linter.py +0 -0
  489. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_main.py +0 -0
  490. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_model_info_manager.py +0 -0
  491. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_model_provider_manager.py +0 -0
  492. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_models.py +0 -0
  493. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_onboarding.py +0 -0
  494. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_plugin_manager.py +0 -0
  495. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_prompts.py +0 -0
  496. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_reasoning.py +0 -0
  497. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_repo.py +0 -0
  498. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_repomap.py +0 -0
  499. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_run_cmd.py +0 -0
  500. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_sanity_check_repo.py +0 -0
  501. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_scripting.py +0 -0
  502. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_sendchat.py +0 -0
  503. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_sessions.py +0 -0
  504. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_skills.py +0 -0
  505. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_special.py +0 -0
  506. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_ssl_verification.py +0 -0
  507. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_udiff.py +0 -0
  508. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_urls.py +0 -0
  509. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_voice.py +0 -0
  510. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_watch.py +0 -0
  511. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/basic/test_wholefile.py +0 -0
  512. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/coders/test_copypaste_coder.py +0 -0
  513. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/conftest.py +0 -0
  514. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  515. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/chat-history.md +0 -0
  516. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/arduino/test.ino +0 -0
  517. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/c/test.c +0 -0
  518. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/chatito/test.chatito +0 -0
  519. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/clojure/test.clj +0 -0
  520. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  521. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/cpp/test.cpp +0 -0
  522. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/csharp/test.cs +0 -0
  523. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/d/test.d +0 -0
  524. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/dart/test.dart +0 -0
  525. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/elisp/test.el +0 -0
  526. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/elixir/test.ex +0 -0
  527. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/elm/test.elm +0 -0
  528. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/gleam/test.gleam +0 -0
  529. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/go/test.go +0 -0
  530. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/haskell/test.hs +0 -0
  531. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/hcl/test.tf +0 -0
  532. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/java/test.java +0 -0
  533. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/javascript/test.js +0 -0
  534. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/kotlin/test.kt +0 -0
  535. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/lua/test.lua +0 -0
  536. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/matlab/test.m +0 -0
  537. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/ocaml/test.ml +0 -0
  538. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  539. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/php/test.php +0 -0
  540. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/pony/test.pony +0 -0
  541. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/properties/test.properties +0 -0
  542. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/python/test.py +0 -0
  543. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/ql/test.ql +0 -0
  544. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/r/test.r +0 -0
  545. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/racket/test.rkt +0 -0
  546. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/ruby/test.rb +0 -0
  547. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/rust/test.rs +0 -0
  548. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/scala/test.scala +0 -0
  549. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/solidity/test.sol +0 -0
  550. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/swift/test.swift +0 -0
  551. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/tsx/test.tsx +0 -0
  552. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/typescript/test.ts +0 -0
  553. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/udev/test.rules +0 -0
  554. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/languages/zig/test.zig +0 -0
  555. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/sample-code-base/sample.js +0 -0
  556. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/sample-code-base/sample.py +0 -0
  557. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  558. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/watch.js +0 -0
  559. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/watch.lisp +0 -0
  560. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/watch.py +0 -0
  561. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/fixtures/watch_question.js +0 -0
  562. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/help/test_help.py +0 -0
  563. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/mcp/__init__.py +0 -0
  564. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/mcp/test_manager.py +0 -0
  565. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/scrape/test_playwright_disable.py +0 -0
  566. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/scrape/test_scrape.py +0 -0
  567. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/test_conversation_integration.py +0 -0
  568. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/test_conversation_system.py +0 -0
  569. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_git_branch.py +0 -0
  570. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_git_diff.py +0 -0
  571. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_grep.py +0 -0
  572. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_insert_block.py +0 -0
  573. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_registry.py +0 -0
  574. {cecli_dev-0.96.4 → cecli_dev-0.96.6}/tests/tools/test_show_numbered_context.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.96.4
3
+ Version: 0.96.6
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -131,14 +131,14 @@ or
131
131
  uv pip install --native-tls cecli-dev
132
132
  ```
133
133
 
134
- The package exports a `cecli` command that accepts all of Aider's configuration options
134
+ The package exports a `cecli` command that accepts all of Aider's configuration options (and a few more!)
135
135
 
136
136
  ### Tool Installation
137
137
  ```bash
138
138
  uv tool install --native-tls --python python3.12 cecli-dev
139
139
  ```
140
140
 
141
- Use the tool installation so aider doesn't interfere with your development environment
141
+ Use the tool installation so cecli doesn't interfere with your development environment
142
142
 
143
143
  ## Configuration
144
144
 
@@ -155,15 +155,15 @@ cache-prompts: true
155
155
  check-update: true
156
156
  debug: false
157
157
  enable-context-compaction: true
158
- context-compaction-max-tokens: 64000
159
- env-file: .aider.env
158
+ context-compaction-max-tokens: 0.8
159
+ env-file: .cecli.env
160
160
  show-model-warnings: true
161
- use-enhanced-map: true
161
+ use-enhanced-map: true.p
162
162
  watch-files: false
163
163
  tui: true
164
164
 
165
165
  agent-config:
166
- large_file_token_threshold: 12500
166
+ large_file_token_threshold: 8192
167
167
  skip_cli_confirmations: false
168
168
 
169
169
  mcp-servers:
@@ -173,7 +173,7 @@ mcp-servers:
173
173
  url: https://mcp.context7.com/mcp
174
174
  ```
175
175
 
176
- Use the adjacent .aider.env file to store model api keys as environment variables, e.g:
176
+ Use the adjacent .cecli.env file to store model api keys as environment variables, e.g:
177
177
 
178
178
  ```
179
179
  ANTHROPIC_API_KEY="..."
@@ -185,7 +185,7 @@ DEEPSEEK_API_KEY="..."
185
185
 
186
186
  ### Run Program
187
187
 
188
- If you are in the directory with your .aider.conf.yml file, then simply running `cecli` or `aider-ce` will start the agent with your configuration. For best results, since terminal emulators can be finicky, we highly suggest running:
188
+ If you are in the directory with your .cecli.conf.yml file, then simply running `cecli` or `aider-ce` will start the agent with your configuration. For best results, since terminal emulators can be finicky, we highly suggest running:
189
189
 
190
190
  ```bash
191
191
  cecli --terminal-setup
@@ -210,7 +210,7 @@ This command will make sure all commands ran by the coding agent happen in conte
210
210
 
211
211
  ## Project Roadmap/Goals
212
212
 
213
- The current priorities are to improve core capabilities and user experience of the Aider project
213
+ The current priorities are to improve core capabilities and user experience of the `cecli` project
214
214
 
215
215
  1. **Base Asynchronicity (cecli coroutine-experiment branch)**
216
216
  * [x] Refactor codebase to have the main loop run asynchronously
@@ -223,14 +223,14 @@ The current priorities are to improve core capabilities and user experience of t
223
223
 
224
224
  3. **Context Discovery** - [Discussion](https://github.com/dwash96/cecli/issues/46)
225
225
  * [ ] Develop AST-based search capabilities
226
- * [ ] Enhance file search with ripgrep integration
226
+ * [x] Enhance file search with ripgrep integration
227
227
  * [ ] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
228
228
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
229
229
 
230
230
  4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
231
231
  * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
232
232
  * [ ] Add support for partial files and code snippets in model completion messages
233
- * [ ] Update message request structure for optimal caching
233
+ * [x] Update message request structure for optimal caching
234
234
 
235
235
  5. **TUI Experience** - [Discussion](https://github.com/dwash96/cecli/issues/48)
236
236
  * [x] Add a full TUI (probably using textual) to have a visual interface competitive with the other coding agent terminal programs
@@ -47,14 +47,14 @@ or
47
47
  uv pip install --native-tls cecli-dev
48
48
  ```
49
49
 
50
- The package exports a `cecli` command that accepts all of Aider's configuration options
50
+ The package exports a `cecli` command that accepts all of Aider's configuration options (and a few more!)
51
51
 
52
52
  ### Tool Installation
53
53
  ```bash
54
54
  uv tool install --native-tls --python python3.12 cecli-dev
55
55
  ```
56
56
 
57
- Use the tool installation so aider doesn't interfere with your development environment
57
+ Use the tool installation so cecli doesn't interfere with your development environment
58
58
 
59
59
  ## Configuration
60
60
 
@@ -71,15 +71,15 @@ cache-prompts: true
71
71
  check-update: true
72
72
  debug: false
73
73
  enable-context-compaction: true
74
- context-compaction-max-tokens: 64000
75
- env-file: .aider.env
74
+ context-compaction-max-tokens: 0.8
75
+ env-file: .cecli.env
76
76
  show-model-warnings: true
77
- use-enhanced-map: true
77
+ use-enhanced-map: true.p
78
78
  watch-files: false
79
79
  tui: true
80
80
 
81
81
  agent-config:
82
- large_file_token_threshold: 12500
82
+ large_file_token_threshold: 8192
83
83
  skip_cli_confirmations: false
84
84
 
85
85
  mcp-servers:
@@ -89,7 +89,7 @@ mcp-servers:
89
89
  url: https://mcp.context7.com/mcp
90
90
  ```
91
91
 
92
- Use the adjacent .aider.env file to store model api keys as environment variables, e.g:
92
+ Use the adjacent .cecli.env file to store model api keys as environment variables, e.g:
93
93
 
94
94
  ```
95
95
  ANTHROPIC_API_KEY="..."
@@ -101,7 +101,7 @@ DEEPSEEK_API_KEY="..."
101
101
 
102
102
  ### Run Program
103
103
 
104
- If you are in the directory with your .aider.conf.yml file, then simply running `cecli` or `aider-ce` will start the agent with your configuration. For best results, since terminal emulators can be finicky, we highly suggest running:
104
+ If you are in the directory with your .cecli.conf.yml file, then simply running `cecli` or `aider-ce` will start the agent with your configuration. For best results, since terminal emulators can be finicky, we highly suggest running:
105
105
 
106
106
  ```bash
107
107
  cecli --terminal-setup
@@ -126,7 +126,7 @@ This command will make sure all commands ran by the coding agent happen in conte
126
126
 
127
127
  ## Project Roadmap/Goals
128
128
 
129
- The current priorities are to improve core capabilities and user experience of the Aider project
129
+ The current priorities are to improve core capabilities and user experience of the `cecli` project
130
130
 
131
131
  1. **Base Asynchronicity (cecli coroutine-experiment branch)**
132
132
  * [x] Refactor codebase to have the main loop run asynchronously
@@ -139,14 +139,14 @@ The current priorities are to improve core capabilities and user experience of t
139
139
 
140
140
  3. **Context Discovery** - [Discussion](https://github.com/dwash96/cecli/issues/46)
141
141
  * [ ] Develop AST-based search capabilities
142
- * [ ] Enhance file search with ripgrep integration
142
+ * [x] Enhance file search with ripgrep integration
143
143
  * [ ] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
144
144
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
145
145
 
146
146
  4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
147
147
  * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
148
148
  * [ ] Add support for partial files and code snippets in model completion messages
149
- * [ ] Update message request structure for optimal caching
149
+ * [x] Update message request structure for optimal caching
150
150
 
151
151
  5. **TUI Experience** - [Discussion](https://github.com/dwash96/cecli/issues/48)
152
152
  * [x] Add a full TUI (probably using textual) to have a visual interface competitive with the other coding agent terminal programs
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.96.4.dev"
3
+ __version__ = "0.96.6.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.96.4'
32
- __version_tuple__ = version_tuple = (0, 96, 4)
31
+ __version__ = version = '0.96.6'
32
+ __version_tuple__ = version_tuple = (0, 96, 6)
33
33
 
34
- __commit_id__ = commit_id = 'gd0299f30a'
34
+ __commit_id__ = commit_id = 'g275cf49cc'
@@ -724,6 +724,7 @@ class AgentCoder(Coder):
724
724
  ) = await self._process_tool_commands(content)
725
725
  if self.agent_finished:
726
726
  self.tool_usage_history = []
727
+ self.reflected_message = None
727
728
  if self.files_edited_by_tools:
728
729
  _ = await self.auto_commit(self.files_edited_by_tools)
729
730
  return False
@@ -61,6 +61,14 @@ class ArchitectCoder(AskCoder):
61
61
  if self.verbose:
62
62
  editor_coder.show_announcements()
63
63
 
64
+ postamble = """
65
+ The above changes are proposed changes.
66
+ You must repeat SEARCH/REPLACE blocks in order to apply edits.
67
+ Shell commands must also be duplicated in order to run them.
68
+ """
69
+
70
+ content = f"Please implement all requested changes from:\n{content}\n{postamble}"
71
+
64
72
  try:
65
73
  await editor_coder.generate(user_message=content, preproc=False)
66
74
 
@@ -38,7 +38,7 @@ import cecli.prompts.utils.system as prompts
38
38
  from cecli import __version__, models, urls, utils
39
39
  from cecli.commands import Commands, SwitchCoderSignal
40
40
  from cecli.exceptions import LiteLLMExceptions
41
- from cecli.helpers import coroutines, nested
41
+ from cecli.helpers import command_parser, coroutines, nested
42
42
  from cecli.helpers.conversation import (
43
43
  ConversationChunks,
44
44
  ConversationManager,
@@ -1584,6 +1584,7 @@ class Coder:
1584
1584
  pass
1585
1585
 
1586
1586
  if not self.reflected_message:
1587
+ await self.auto_save_session(force=True)
1587
1588
  break
1588
1589
 
1589
1590
  if self.num_reflections >= self.max_reflections:
@@ -1603,6 +1604,8 @@ class Coder:
1603
1604
  if self.enable_context_compaction:
1604
1605
  await self.compact_context_if_needed()
1605
1606
 
1607
+ await self.auto_save_session(force=True)
1608
+
1606
1609
  async def check_and_open_urls(self, exc, friendly_msg=None):
1607
1610
  """Check exception for URLs, offer to open in a browser, with user-friendly error msgs."""
1608
1611
  text = str(exc)
@@ -2862,7 +2865,13 @@ class Coder:
2862
2865
  if self.args.tui:
2863
2866
  message = f"Add file to the chat? ({rel_fname})"
2864
2867
 
2865
- if await self.io.confirm_ask(message, subject=rel_fname, group=group, allow_never=True):
2868
+ if await self.io.confirm_ask(
2869
+ message,
2870
+ subject=rel_fname,
2871
+ group=group,
2872
+ group_response=str(new_mentions),
2873
+ allow_never=True,
2874
+ ):
2866
2875
  self.add_rel_fname(rel_fname)
2867
2876
  added_fnames.append(rel_fname)
2868
2877
  else:
@@ -3776,7 +3785,7 @@ class Coder:
3776
3785
  def apply_edits_dry_run(self, edits):
3777
3786
  return edits
3778
3787
 
3779
- async def auto_save_session(self):
3788
+ async def auto_save_session(self, force=False):
3780
3789
  """Automatically save the current session to {auto-save-session-name}.json."""
3781
3790
  if not getattr(self.args, "auto_save", False):
3782
3791
  return
@@ -3789,11 +3798,17 @@ class Coder:
3789
3798
  self._autosave_future = None
3790
3799
 
3791
3800
  if self._autosave_future and not self._autosave_future.done():
3792
- return
3801
+ if force:
3802
+ try:
3803
+ await self._autosave_future
3804
+ except Exception:
3805
+ pass
3806
+ else:
3807
+ return
3793
3808
 
3794
3809
  # Throttle autosave to run at most once every 15 seconds
3795
3810
  current_time = time.time()
3796
- if current_time - self._last_autosave_time >= 15.0:
3811
+ if current_time - self._last_autosave_time >= 15.0 or force:
3797
3812
  try:
3798
3813
  self._last_autosave_time = current_time
3799
3814
  session_manager = SessionManager(self, self.io)
@@ -3832,7 +3847,7 @@ class Coder:
3832
3847
  self.commands.cmd_running_event.set() # Command finished
3833
3848
 
3834
3849
  async def handle_shell_commands(self, commands_str, group):
3835
- commands = commands_str.strip().split(";")
3850
+ commands = command_parser.split_shell_commands(commands_str)
3836
3851
  command_count = sum(
3837
3852
  1 for cmd in commands if cmd.strip() and not cmd.strip().startswith("#")
3838
3853
  )
@@ -0,0 +1,179 @@
1
+ from typing import List
2
+
3
+
4
+ def split_shell_commands(commands_str: str) -> List[str]:
5
+ """
6
+ Split shell commands on semicolons, respecting quoted strings and heredoc boundaries.
7
+
8
+ Args:
9
+ commands_str: String containing shell commands separated by semicolons
10
+
11
+ Returns:
12
+ List of command strings split at semicolons outside quotes/heredocs
13
+ """
14
+ if not commands_str:
15
+ return []
16
+
17
+ commands: List[str] = []
18
+ current_command = []
19
+
20
+ # State tracking
21
+ in_single_quote = False
22
+ in_double_quote = False
23
+ in_heredoc = False
24
+ heredoc_delimiter = ""
25
+ heredoc_ignore_tabs = False # True for <<-EOF (dash before delimiter)
26
+ heredoc_seen_newline = False # Have we seen a newline since entering heredoc?
27
+ escaped = False
28
+
29
+ i = 0
30
+ n = len(commands_str)
31
+
32
+ while i < n:
33
+ char = commands_str[i]
34
+
35
+ if escaped:
36
+ # Current character is escaped, treat it as literal
37
+ current_command.append(char)
38
+ escaped = False
39
+ i += 1
40
+ continue
41
+
42
+ if char == "\\":
43
+ # Escape character
44
+ escaped = True
45
+ current_command.append(char)
46
+ i += 1
47
+ continue
48
+
49
+ if not in_heredoc:
50
+ # Not in heredoc, handle quotes and semicolons
51
+ if char == "'" and not in_double_quote:
52
+ in_single_quote = not in_single_quote
53
+ current_command.append(char)
54
+ elif char == '"' and not in_single_quote:
55
+ in_double_quote = not in_double_quote
56
+ current_command.append(char)
57
+ elif char == ";" and not in_single_quote and not in_double_quote:
58
+ # Split at semicolon outside quotes
59
+ command = "".join(current_command).strip()
60
+ if command:
61
+ commands.append(command)
62
+ current_command = []
63
+ else:
64
+ # Check for heredoc start (<<)
65
+ if char == "<" and i + 1 < n and commands_str[i + 1] == "<":
66
+ # Remember position for capturing the heredoc start
67
+ heredoc_start_pos = i
68
+ i += 2 # Skip "<<"
69
+
70
+ # Check for dash (<<-)
71
+ if i < n and commands_str[i] == "-":
72
+ heredoc_ignore_tabs = True
73
+ i += 1
74
+
75
+ # Skip whitespace before delimiter
76
+ while i < n and commands_str[i] in (" ", "\t"):
77
+ i += 1
78
+
79
+ # Parse delimiter (can be quoted or unquoted)
80
+ delimiter_start = i
81
+
82
+ # Check for quotes
83
+ if i < n and commands_str[i] in ("'", '"'):
84
+ quote_char = commands_str[i]
85
+ i += 1
86
+ delimiter_start = i
87
+
88
+ # Find closing quote
89
+ while i < n and commands_str[i] != quote_char:
90
+ i += 1
91
+
92
+ heredoc_delimiter = commands_str[delimiter_start:i]
93
+ if i < n:
94
+ i += 1 # Skip closing quote
95
+ else:
96
+ # Unquoted delimiter - alphanumeric and underscore only
97
+ while i < n and (commands_str[i].isalnum() or commands_str[i] == "_"):
98
+ i += 1
99
+ heredoc_delimiter = commands_str[delimiter_start:i]
100
+
101
+ if heredoc_delimiter:
102
+ # Valid heredoc found - capture the entire heredoc start
103
+ heredoc_start_text = commands_str[heredoc_start_pos:i]
104
+ current_command.append(heredoc_start_text)
105
+
106
+ # Enter heredoc mode
107
+ in_heredoc = True
108
+ heredoc_seen_newline = False
109
+ continue
110
+ else:
111
+ # Not a valid heredoc, treat as normal "<<"
112
+ current_command.append("<<")
113
+ continue
114
+ else:
115
+ current_command.append(char)
116
+ else:
117
+ # Inside heredoc
118
+ current_command.append(char)
119
+
120
+ # Track if we've seen a newline (heredoc content starts after newline)
121
+ if char == "\n":
122
+ heredoc_seen_newline = True
123
+
124
+ # Look ahead to see if next line starts with delimiter
125
+ j = i + 1
126
+
127
+ # Skip leading whitespace (tabs if heredoc_ignore_tabs)
128
+ while j < n and commands_str[j] in (" ", "\t"):
129
+ if heredoc_ignore_tabs and commands_str[j] == "\t":
130
+ j += 1
131
+ elif not heredoc_ignore_tabs:
132
+ j += 1
133
+ else:
134
+ break
135
+
136
+ # Check if we have the delimiter at this position
137
+ if (
138
+ j + len(heredoc_delimiter) <= n
139
+ and commands_str[j : j + len(heredoc_delimiter)] == heredoc_delimiter
140
+ ):
141
+ # Check what comes after delimiter
142
+ k = j + len(heredoc_delimiter)
143
+ if k >= n or commands_str[k] in (" ", "\t", "\n", "\r", ";"):
144
+ # Found heredoc end
145
+ in_heredoc = False
146
+ heredoc_delimiter = ""
147
+ heredoc_ignore_tabs = False
148
+ heredoc_seen_newline = False
149
+ elif char == ";" and not heredoc_seen_newline:
150
+ # Semicolon before seeing a newline in heredoc mode
151
+ # This means heredoc start was immediately followed by semicolon
152
+ # Not a real heredoc - split at this semicolon
153
+ in_heredoc = False
154
+ heredoc_delimiter = ""
155
+ heredoc_ignore_tabs = False
156
+ heredoc_seen_newline = False
157
+
158
+ # Remove the semicolon from current_command
159
+ current_command.pop()
160
+
161
+ # Split at this semicolon
162
+ command = "".join(current_command).strip()
163
+ if command:
164
+ commands.append(command)
165
+ current_command = []
166
+ continue
167
+
168
+ i += 1
169
+
170
+ # Add the last command if any
171
+ if escaped:
172
+ # Handle trailing escape character
173
+ current_command.append("\\")
174
+
175
+ command = "".join(current_command).strip()
176
+ if command:
177
+ commands.append(command)
178
+
179
+ return commands
@@ -148,7 +148,6 @@ class AutoCompleter(Completer):
148
148
  self.rel_fnames = rel_fnames
149
149
  self.encoding = encoding
150
150
  self.abs_read_only_fnames = abs_read_only_fnames or []
151
- self.post_filter_commands = ["/add"]
152
151
 
153
152
  fname_to_rel_fnames = defaultdict(list)
154
153
  for rel_fname in addable_rel_fnames:
@@ -214,22 +213,48 @@ class AutoCompleter(Completer):
214
213
 
215
214
  def get_command_completions(self, document, complete_event, text, words):
216
215
  if len(words) == 1 and not text[-1].isspace():
216
+ # Handle command completion (e.g., typing "/ad" should complete to "/add")
217
217
  partial = words[0].lower()
218
- candidates = [cmd for cmd in self.command_names if cmd.startswith(partial)]
218
+ # Strip leading '/' if present for comparison with command names
219
+ if partial.startswith("/"):
220
+ partial = partial[1:]
221
+ # Compare with command names without leading '/'
222
+ candidates = [cmd for cmd in self.command_names if cmd[1:].startswith(partial)]
219
223
  for candidate in sorted(candidates):
224
+ # Add back the leading '/' for the completion
220
225
  yield Completion(candidate, start_position=-len(words[-1]))
221
226
  return
222
227
 
223
- if len(words) <= 1 or text[-1].isspace():
224
- return
228
+ # Handle command followed by space: trigger auto-completion with empty partial
229
+ if text[-1].isspace():
230
+ # We have a command followed by space, trigger auto-completion with empty string
231
+ if len(words) == 1:
232
+ # Command with no arguments yet, just a trailing space
233
+ partial = ""
234
+ # We need to get the command name without the trailing space
235
+ # The command is words[0] but might have leading '/'
236
+ cmd_text = words[0]
237
+ else:
238
+ # Command with arguments and trailing space
239
+ partial = ""
240
+ cmd_text = text.rstrip() # Remove trailing space for matching
241
+ else:
242
+ # No trailing space
243
+ if len(words) <= 1:
244
+ return
245
+ partial = words[-1].lower()
246
+ cmd_text = text
225
247
 
226
- cmd = words[0]
227
- partial = words[-1].lower()
248
+ # Pass the text (without trailing space if present) to matching_commands
249
+ matches, matched_cmd, _ = self.commands.matching_commands(cmd_text.rstrip())
250
+ if not matches:
251
+ return
228
252
 
229
- matches, _, _ = self.commands.matching_commands(cmd)
230
253
  if len(matches) == 1:
231
254
  cmd = matches[0]
232
- elif cmd not in matches:
255
+ elif matched_cmd in matches:
256
+ cmd = matched_cmd
257
+ else:
233
258
  return
234
259
 
235
260
  raw_completer = self.commands.get_raw_completions(cmd)
@@ -242,11 +267,14 @@ class AutoCompleter(Completer):
242
267
  if candidates is None:
243
268
  return
244
269
 
245
- if cmd in self.post_filter_commands:
246
- candidates = [word for word in candidates if partial in word.lower()]
270
+ candidates = [word for word in candidates if partial in word.lower()]
247
271
 
248
272
  for candidate in sorted(candidates):
249
- yield Completion(candidate, start_position=-len(words[-1]))
273
+ # Calculate start position based on partial, not words[-1]
274
+ # When partial is empty (trailing space), start_position should be 0
275
+ # When partial is not empty, replace that many characters
276
+ start_position = -len(partial) if partial else 0
277
+ yield Completion(candidate, start_position=start_position)
250
278
 
251
279
  def get_completions(self, document, complete_event):
252
280
  self.tokenize()
@@ -256,8 +284,9 @@ class AutoCompleter(Completer):
256
284
  if not words:
257
285
  return
258
286
 
259
- if text and text[-1].isspace():
260
- # don't keep completing after a space
287
+ if text and text[-1].isspace() and not text.startswith("/"):
288
+ # don't keep completing after a space for non-commands
289
+ # For commands, we want to allow completion with empty string partial
261
290
  return
262
291
 
263
292
  if text[0] == "/":
@@ -1235,11 +1264,11 @@ class InputOutput:
1235
1264
 
1236
1265
  if self.yes is True and not explicit_yes_required:
1237
1266
  res = "y"
1267
+ elif group_response and group_response in self.group_responses:
1268
+ return self.group_responses[group_response]
1238
1269
  elif group and group.preference:
1239
1270
  res = group.preference
1240
1271
  self.user_input(f"{question} - {res}", log_only=False)
1241
- elif group_response and group_response in self.group_responses:
1242
- return self.group_responses[group_response]
1243
1272
  else:
1244
1273
  # Ring the bell if needed
1245
1274
  self.ring_bell()
@@ -1202,6 +1202,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
1202
1202
  return await graceful_exit(coder)
1203
1203
  except SwitchCoderSignal as switch:
1204
1204
  coder.ok_to_warm_cache = False
1205
+ await coder.auto_save_session(force=True)
1205
1206
 
1206
1207
  if hasattr(switch, "placeholder") and switch.placeholder is not None:
1207
1208
  io.placeholder = switch.placeholder
@@ -1229,6 +1230,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
1229
1230
 
1230
1231
  except SystemExit:
1231
1232
  sys.settrace(None)
1233
+ await coder.auto_save_session(force=True)
1232
1234
  return await graceful_exit(coder)
1233
1235
 
1234
1236
 
@@ -884,7 +884,9 @@ class TUI(App):
884
884
  suggestions = []
885
885
  commands = self.worker.coder.commands
886
886
 
887
- if len(text) and text[-1] == " ":
887
+ # Only return early for non-commands ending with space
888
+ # For commands, we want to allow completion with empty string partial
889
+ if len(text) and text[-1] == " " and not text.startswith("/"):
888
890
  return
889
891
 
890
892
  if "@" in text:
@@ -905,12 +907,21 @@ class TUI(App):
905
907
  suggestions = all_commands
906
908
  else:
907
909
  suggestions = [c for c in all_commands if c.startswith(cmd_part)]
908
- elif len(parts) > 1:
910
+ else:
909
911
  # Complete command argument
912
+ # This handles both:
913
+ # 1. len(parts) > 1: command with arguments
914
+ # 2. len(parts) == 1 and text.endswith(" "): command with trailing space
910
915
  cmd_name = cmd_part
911
- end_lookup = text.rsplit(maxsplit=1)
912
916
 
913
- arg_prefix = end_lookup[-1]
917
+ if text.endswith(" "):
918
+ # Command with trailing space, empty argument prefix
919
+ arg_prefix = ""
920
+ else:
921
+ # Get the last word as argument prefix
922
+ end_lookup = text.rsplit(maxsplit=1)
923
+ arg_prefix = end_lookup[-1]
924
+
914
925
  arg_prefix_lower = arg_prefix.lower()
915
926
 
916
927
  # Check if this command needs path-based completion
@@ -955,8 +966,14 @@ class TUI(App):
955
966
  """Calculate the new text after applying completion."""
956
967
  if current_text.startswith("/"):
957
968
  parts = current_text.rsplit(maxsplit=1)
958
- if len(parts) == 1:
959
- # Replace entire command
969
+
970
+ # Check if we have a command with trailing space
971
+ # This is when we want to insert argument completions after the space
972
+ if len(parts) == 1 and current_text.endswith(" "):
973
+ # Command with trailing space, insert completion after space
974
+ return current_text + completion
975
+ elif len(parts) == 1:
976
+ # Replace entire command (command name completion)
960
977
  # Only add space if command takes arguments
961
978
  commands = self.worker.coder.commands
962
979
  try: