cecli-dev 0.96.6__tar.gz → 0.96.8__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 (582) hide show
  1. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/PKG-INFO +1 -1
  2. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/__init__.py +1 -1
  3. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/_version.py +3 -3
  4. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/args.py +1 -0
  5. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/agent_coder.py +1 -1
  6. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/base_coder.py +5 -0
  7. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/add.py +17 -8
  8. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/context_management.py +9 -0
  9. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/read_only.py +15 -42
  10. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/read_only_stub.py +15 -41
  11. cecli_dev-0.96.8/cecli/commands/utils/helpers.py +237 -0
  12. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/files.py +15 -10
  13. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/integration.py +7 -5
  14. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/main.py +3 -1
  15. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/command.py +1 -1
  16. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/command_interactive.py +1 -1
  17. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/context_manager.py +1 -1
  18. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/delete_block.py +1 -0
  19. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/delete_line.py +1 -1
  20. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/delete_lines.py +3 -1
  21. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/extract_lines.py +1 -0
  22. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/finished.py +1 -1
  23. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_branch.py +1 -0
  24. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_diff.py +1 -1
  25. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_log.py +1 -1
  26. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_remote.py +1 -1
  27. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_show.py +1 -1
  28. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/git_status.py +1 -1
  29. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/grep.py +1 -0
  30. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/indent_lines.py +1 -0
  31. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/insert_block.py +1 -0
  32. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/list_changes.py +1 -1
  33. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/load_skill.py +1 -1
  34. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/ls.py +1 -1
  35. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/remove_skill.py +1 -1
  36. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/replace_text.py +200 -109
  37. cecli_dev-0.96.8/cecli/tools/show_numbered_context.py +199 -0
  38. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/thinking.py +1 -1
  39. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/undo_change.py +1 -1
  40. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/update_todo_list.py +1 -1
  41. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/view_files_matching.py +1 -1
  42. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/view_files_with_symbol.py +1 -1
  43. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/app.py +16 -14
  44. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/footer.py +3 -1
  45. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/blame.md +4 -4
  46. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/get-started.md +5 -5
  47. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/help.md +3 -3
  48. cecli_dev-0.96.8/cecli/website/_includes/install.md +4 -0
  49. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/model-warnings.md +6 -6
  50. cecli_dev-0.96.8/cecli/website/_includes/python-m-aider.md +5 -0
  51. cecli_dev-0.96.8/cecli/website/_includes/works-best.md +1 -0
  52. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/adv-model-settings.md +15 -15
  53. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/agent-mode.md +2 -2
  54. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/aider_conf.md +23 -23
  55. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/api-keys.md +4 -4
  56. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/custom-commands.md +3 -3
  57. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/custom-system-prompts.md +8 -8
  58. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/dotenv.md +26 -26
  59. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/editor.md +6 -6
  60. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/mcp.md +9 -9
  61. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/model-aliases.md +17 -17
  62. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/options.md +19 -19
  63. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/reasoning.md +18 -18
  64. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config.md +5 -5
  65. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/faq.md +79 -79
  66. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/git.md +27 -27
  67. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/index.md +2 -2
  68. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/install/codespaces.md +2 -2
  69. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/install/docker.md +2 -2
  70. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/install/optional.md +20 -20
  71. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/install.md +25 -25
  72. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/languages.md +18 -18
  73. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/legal/contributor-agreement.md +19 -19
  74. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/legal/privacy.md +5 -5
  75. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/anthropic.md +8 -8
  76. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/azure.md +7 -7
  77. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/bedrock.md +11 -11
  78. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/cohere.md +5 -5
  79. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/deepseek.md +5 -5
  80. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/gemini.md +8 -8
  81. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/github.md +10 -10
  82. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/groq.md +5 -5
  83. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/lm-studio.md +5 -5
  84. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/ollama.md +8 -8
  85. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/openai-compat.md +5 -5
  86. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/openai.md +9 -9
  87. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/openrouter.md +7 -7
  88. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/other.md +8 -8
  89. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/vertex.md +7 -7
  90. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/xai.md +8 -8
  91. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms.md +12 -12
  92. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/more/analytics.md +24 -24
  93. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/more/edit-formats.md +4 -4
  94. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/more/infinite-output.md +7 -7
  95. cecli_dev-0.96.8/cecli/website/docs/more-info.md +8 -0
  96. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/recordings/auto-accept-architect.md +3 -3
  97. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/recordings/dont-drop-original-read-files.md +3 -3
  98. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/recordings/index.md +5 -5
  99. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/recordings/model-accepts-settings.md +14 -14
  100. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/recordings/tree-sitter-language-pack.md +19 -19
  101. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/repomap.md +17 -17
  102. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/scripting.md +12 -12
  103. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/sessions.md +5 -5
  104. cecli_dev-0.96.6/cecli/website/docs/troubleshooting/aider-not-found.md → cecli_dev-0.96.8/cecli/website/docs/troubleshooting/cecli-not-found.md +6 -6
  105. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/troubleshooting/edit-errors.md +10 -10
  106. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/troubleshooting/imports.md +16 -16
  107. cecli_dev-0.96.8/cecli/website/docs/troubleshooting/models-and-keys.md +54 -0
  108. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/troubleshooting/support.md +19 -19
  109. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/troubleshooting/token-limits.md +10 -10
  110. cecli_dev-0.96.8/cecli/website/docs/troubleshooting.md +11 -0
  111. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/browser.md +13 -13
  112. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/caching.md +8 -8
  113. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/commands.md +8 -8
  114. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/conventions.md +12 -12
  115. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/copypaste.md +30 -30
  116. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/images-urls.md +10 -10
  117. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/lint-test.md +13 -13
  118. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/modes.md +22 -22
  119. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/not-code.md +12 -12
  120. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/notifications.md +10 -10
  121. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/tips.md +18 -18
  122. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/tutorials.md +13 -13
  123. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/voice.md +9 -9
  124. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage/watch.md +30 -30
  125. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/usage.md +19 -19
  126. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/share/index.md +1 -1
  127. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/PKG-INFO +1 -1
  128. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/SOURCES.txt +1 -1
  129. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/homepage.py +10 -39
  130. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_show_numbered_context.py +25 -13
  131. cecli_dev-0.96.6/cecli/commands/utils/helpers.py +0 -142
  132. cecli_dev-0.96.6/cecli/tools/show_numbered_context.py +0 -137
  133. cecli_dev-0.96.6/cecli/website/_includes/install.md +0 -5
  134. cecli_dev-0.96.6/cecli/website/_includes/python-m-aider.md +0 -5
  135. cecli_dev-0.96.6/cecli/website/_includes/works-best.md +0 -1
  136. cecli_dev-0.96.6/cecli/website/docs/more-info.md +0 -8
  137. cecli_dev-0.96.6/cecli/website/docs/troubleshooting/models-and-keys.md +0 -54
  138. cecli_dev-0.96.6/cecli/website/docs/troubleshooting.md +0 -11
  139. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.dockerignore +0 -0
  140. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.flake8 +0 -0
  141. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.gitattributes +0 -0
  142. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  143. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/check_pypi_version.yml +0 -0
  144. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/docker-build-test.yml +0 -0
  145. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/docker-release.yml +0 -0
  146. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/issues.yml +0 -0
  147. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/pages.yml +0 -0
  148. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/pre-commit.yml +0 -0
  149. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/release.yml +0 -0
  150. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/ubuntu-tests.yml +0 -0
  151. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/windows-tests.yml +0 -0
  152. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.github/workflows/windows_check_pypi_version.yml +0 -0
  153. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.gitignore +0 -0
  154. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/.pre-commit-config.yaml +0 -0
  155. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/CHANGELOG.md +0 -0
  156. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/CNAME +0 -0
  157. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/CONTRIBUTING.md +0 -0
  158. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/HISTORY.md +0 -0
  159. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/LICENSE.txt +0 -0
  160. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/MANIFEST.in +0 -0
  161. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/README.md +0 -0
  162. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/Dockerfile +0 -0
  163. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/README.md +0 -0
  164. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/__init__.py +0 -0
  165. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/benchmark.py +0 -0
  166. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/benchmark_classic.py +0 -0
  167. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/clone-exercism.sh +0 -0
  168. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/cpp-test.sh +0 -0
  169. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/docker.sh +0 -0
  170. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/docker_build.sh +0 -0
  171. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/install-docker-ubuntu.sh +0 -0
  172. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/npm-test.sh +0 -0
  173. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/over_time.py +0 -0
  174. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/plot.sh +0 -0
  175. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/plots.py +0 -0
  176. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/problem_stats.py +0 -0
  177. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/prompts.py +0 -0
  178. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/refactor_tools.py +0 -0
  179. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/rsync.sh +0 -0
  180. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/rungrid.py +0 -0
  181. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/swe-bench-lite.txt +0 -0
  182. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/swe-bench.txt +0 -0
  183. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/swe_bench.py +0 -0
  184. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/benchmark/test_benchmark.py +0 -0
  185. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/__main__.py +0 -0
  186. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/args_formatter.py +0 -0
  187. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/change_tracker.py +0 -0
  188. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/__init__.py +0 -0
  189. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/architect_coder.py +0 -0
  190. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/ask_coder.py +0 -0
  191. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/chat_chunks.py +0 -0
  192. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/context_coder.py +0 -0
  193. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/copypaste_coder.py +0 -0
  194. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editblock_coder.py +0 -0
  195. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editblock_fenced_coder.py +0 -0
  196. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editblock_func_coder.py +0 -0
  197. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  198. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editor_editblock_coder.py +0 -0
  199. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/editor_whole_coder.py +0 -0
  200. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/help_coder.py +0 -0
  201. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/patch_coder.py +0 -0
  202. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/search_replace.py +0 -0
  203. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/shell.py +0 -0
  204. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/single_wholefile_func_coder.py +0 -0
  205. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/udiff_coder.py +0 -0
  206. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/udiff_simple.py +0 -0
  207. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/wholefile_coder.py +0 -0
  208. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/coders/wholefile_func_coder.py +0 -0
  209. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/__init__.py +0 -0
  210. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/agent.py +0 -0
  211. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/architect.py +0 -0
  212. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/ask.py +0 -0
  213. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/chat_mode.py +0 -0
  214. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/clear.py +0 -0
  215. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/code.py +0 -0
  216. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/command_prefix.py +0 -0
  217. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/commit.py +0 -0
  218. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/compact.py +0 -0
  219. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/context.py +0 -0
  220. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/context_blocks.py +0 -0
  221. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/copy.py +0 -0
  222. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/copy_context.py +0 -0
  223. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/core.py +0 -0
  224. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/diff.py +0 -0
  225. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/drop.py +0 -0
  226. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/editor.py +0 -0
  227. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/editor_model.py +0 -0
  228. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/exit.py +0 -0
  229. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/git.py +0 -0
  230. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/help.py +0 -0
  231. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/history_search.py +0 -0
  232. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/lint.py +0 -0
  233. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/list_sessions.py +0 -0
  234. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/load.py +0 -0
  235. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/load_mcp.py +0 -0
  236. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/load_session.py +0 -0
  237. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/load_skill.py +0 -0
  238. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/ls.py +0 -0
  239. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/map.py +0 -0
  240. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/map_refresh.py +0 -0
  241. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/model.py +0 -0
  242. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/models.py +0 -0
  243. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/multiline_mode.py +0 -0
  244. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/paste.py +0 -0
  245. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/quit.py +0 -0
  246. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/reasoning_effort.py +0 -0
  247. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/remove_mcp.py +0 -0
  248. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/remove_skill.py +0 -0
  249. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/report.py +0 -0
  250. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/reset.py +0 -0
  251. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/run.py +0 -0
  252. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/save.py +0 -0
  253. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/save_session.py +0 -0
  254. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/settings.py +0 -0
  255. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/terminal_data/linux.keytab +0 -0
  256. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/terminal_setup.py +0 -0
  257. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/test.py +0 -0
  258. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/think_tokens.py +0 -0
  259. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/tokens.py +0 -0
  260. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/undo.py +0 -0
  261. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/utils/__init__.py +0 -0
  262. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/utils/base_command.py +0 -0
  263. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/utils/registry.py +0 -0
  264. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/utils/save_load_manager.py +0 -0
  265. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/voice.py +0 -0
  266. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/weak_model.py +0 -0
  267. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/commands/web.py +0 -0
  268. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/deprecated_args.py +0 -0
  269. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/diffs.py +0 -0
  270. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/dump.py +0 -0
  271. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/editor.py +0 -0
  272. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/exceptions.py +0 -0
  273. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/format_settings.py +0 -0
  274. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/help.py +0 -0
  275. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/help_pats.py +0 -0
  276. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/__init__.py +0 -0
  277. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/background_commands.py +0 -0
  278. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/command_parser.py +0 -0
  279. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/__init__.py +0 -0
  280. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/base_message.py +0 -0
  281. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/manager.py +0 -0
  282. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/tags.py +0 -0
  283. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/conversation/utils.py +0 -0
  284. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/copypaste.py +0 -0
  285. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/coroutines.py +0 -0
  286. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/file_searcher.py +0 -0
  287. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/model_providers.py +0 -0
  288. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/nested.py +0 -0
  289. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/plugin_manager.py +0 -0
  290. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/profiler.py +0 -0
  291. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/requests.py +0 -0
  292. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/similarity.py +0 -0
  293. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/helpers/skills.py +0 -0
  294. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/history.py +0 -0
  295. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/io.py +0 -0
  296. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/linter.py +0 -0
  297. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/llm.py +0 -0
  298. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mcp/__init__.py +0 -0
  299. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mcp/manager.py +0 -0
  300. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mcp/oauth.py +0 -0
  301. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mcp/server.py +0 -0
  302. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mcp/utils.py +0 -0
  303. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/mdstream.py +0 -0
  304. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/models.py +0 -0
  305. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/onboarding.py +0 -0
  306. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/__init__.py +0 -0
  307. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/agent.yml +0 -0
  308. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/architect.yml +0 -0
  309. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/ask.yml +0 -0
  310. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/base.yml +0 -0
  311. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/context.yml +0 -0
  312. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/copypaste.yml +0 -0
  313. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editblock.yml +0 -0
  314. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editblock_fenced.yml +0 -0
  315. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editblock_func.yml +0 -0
  316. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editor_diff_fenced.yml +0 -0
  317. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editor_editblock.yml +0 -0
  318. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/editor_whole.yml +0 -0
  319. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/help.yml +0 -0
  320. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/patch.yml +0 -0
  321. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/single_wholefile_func.yml +0 -0
  322. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/udiff.yml +0 -0
  323. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/udiff_simple.yml +0 -0
  324. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/utils/__init__.py +0 -0
  325. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/utils/registry.py +0 -0
  326. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/utils/system.py +0 -0
  327. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/wholefile.yml +0 -0
  328. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/prompts/wholefile_func.yml +0 -0
  329. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  330. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  331. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  332. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  333. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  334. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  335. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  336. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  337. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  338. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  339. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  340. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  341. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  342. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  343. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  344. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  345. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  346. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  347. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  348. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  349. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  350. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  351. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  352. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  353. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  354. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  355. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  356. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  357. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  358. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  359. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  360. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/README.md +0 -0
  361. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  362. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  363. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  364. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  365. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  366. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  367. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  368. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  369. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  370. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  371. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  372. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  373. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  374. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  375. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  376. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  377. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  378. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  379. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  380. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  381. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  382. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  383. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  384. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  385. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  386. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  387. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/reasoning_tags.py +0 -0
  388. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/repo.py +0 -0
  389. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/repomap.py +0 -0
  390. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/report.py +0 -0
  391. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/resources/__init__.py +0 -0
  392. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/resources/model-metadata.json +0 -0
  393. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/resources/model-settings.yml +0 -0
  394. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/resources/providers.json +0 -0
  395. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/run_cmd.py +0 -0
  396. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/scrape.py +0 -0
  397. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/sendchat.py +0 -0
  398. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/sessions.py +0 -0
  399. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/special.py +0 -0
  400. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/__init__.py +0 -0
  401. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/utils/base_tool.py +0 -0
  402. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/utils/helpers.py +0 -0
  403. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/utils/output.py +0 -0
  404. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tools/utils/registry.py +0 -0
  405. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/__init__.py +0 -0
  406. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/io.py +0 -0
  407. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/styles.tcss +0 -0
  408. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/__init__.py +0 -0
  409. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/completion_bar.py +0 -0
  410. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/file_list.py +0 -0
  411. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/input_area.py +0 -0
  412. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/input_container.py +0 -0
  413. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/key_hints.py +0 -0
  414. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/output.py +0 -0
  415. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/widgets/status_bar.py +0 -0
  416. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/tui/worker.py +0 -0
  417. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/urls.py +0 -0
  418. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/utils.py +0 -0
  419. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/versioncheck.py +0 -0
  420. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/voice.py +0 -0
  421. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/waiting.py +0 -0
  422. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/watch.py +0 -0
  423. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/watch_prompts.py +0 -0
  424. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/Gemfile +0 -0
  425. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/help-tip.md +0 -0
  426. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/keys.md +0 -0
  427. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/multi-line.md +0 -0
  428. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/recording.css +0 -0
  429. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/recording.md +0 -0
  430. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_includes/replit-pipx.md +0 -0
  431. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/_sass/custom/custom.scss +0 -0
  432. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/skills.md +0 -0
  433. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/config/tui.md +0 -0
  434. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/install/replit.md +0 -0
  435. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/llms/warnings.md +0 -0
  436. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  437. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/dependency_links.txt +0 -0
  438. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/entry_points.txt +0 -0
  439. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/requires.txt +0 -0
  440. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/cecli_dev.egg-info/top_level.txt +0 -0
  441. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/docker/Dockerfile +0 -0
  442. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  443. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/pyproject.toml +0 -0
  444. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/pytest.ini +0 -0
  445. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/common-constraints.txt +0 -0
  446. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-dev.in +0 -0
  447. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-dev.txt +0 -0
  448. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-help.in +0 -0
  449. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-help.txt +0 -0
  450. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-playwright.in +0 -0
  451. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements-playwright.txt +0 -0
  452. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/requirements.in +0 -0
  453. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements/tree-sitter.in +0 -0
  454. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/requirements.txt +0 -0
  455. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/30k-image.py +0 -0
  456. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/Dockerfile.jekyll +0 -0
  457. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/__init__.py +0 -0
  458. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/blame.py +0 -0
  459. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/clean_metadata.py +0 -0
  460. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/cost_analyzer.py +0 -0
  461. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/dl_icons.py +0 -0
  462. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/filter-chat-mode.js +0 -0
  463. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/generate_providers.py +0 -0
  464. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/get_contributor_list.js +0 -0
  465. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/history_prompts.py +0 -0
  466. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/issues.py +0 -0
  467. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/jekyll_build.sh +0 -0
  468. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/jekyll_run.sh +0 -0
  469. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/logo_svg.py +0 -0
  470. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/pip-compile.sh +0 -0
  471. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/recording_audio.py +0 -0
  472. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/redact-cast.py +0 -0
  473. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/rename_to_cecli.py +0 -0
  474. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/tmux_record.sh +0 -0
  475. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/tsl_pack_langs.py +0 -0
  476. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/update-blame.sh +0 -0
  477. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/update-docs.sh +0 -0
  478. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/update-history.py +0 -0
  479. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/versionbump.py +0 -0
  480. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/scripts/yank-old-versions.py +0 -0
  481. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/setup.cfg +0 -0
  482. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/shim.pyproject.toml +0 -0
  483. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/__init__.py +0 -0
  484. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/__init__.py +0 -0
  485. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_aws_credentials.py +0 -0
  486. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_background_commands.py +0 -0
  487. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_coder.py +0 -0
  488. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_commands.py +0 -0
  489. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_custom_commands.py +0 -0
  490. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_deprecated.py +0 -0
  491. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_editblock.py +0 -0
  492. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_editor.py +0 -0
  493. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_exceptions.py +0 -0
  494. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_find_or_blocks.py +0 -0
  495. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_history.py +0 -0
  496. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_io.py +0 -0
  497. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_linter.py +0 -0
  498. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_main.py +0 -0
  499. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_model_info_manager.py +0 -0
  500. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_model_provider_manager.py +0 -0
  501. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_models.py +0 -0
  502. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_onboarding.py +0 -0
  503. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_plugin_manager.py +0 -0
  504. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_prompts.py +0 -0
  505. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_reasoning.py +0 -0
  506. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_repo.py +0 -0
  507. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_repomap.py +0 -0
  508. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_run_cmd.py +0 -0
  509. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_sanity_check_repo.py +0 -0
  510. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_scripting.py +0 -0
  511. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_sendchat.py +0 -0
  512. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_sessions.py +0 -0
  513. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_skills.py +0 -0
  514. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_special.py +0 -0
  515. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_ssl_verification.py +0 -0
  516. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_udiff.py +0 -0
  517. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_urls.py +0 -0
  518. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_voice.py +0 -0
  519. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_watch.py +0 -0
  520. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/basic/test_wholefile.py +0 -0
  521. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/coders/test_copypaste_coder.py +0 -0
  522. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/conftest.py +0 -0
  523. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  524. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/chat-history.md +0 -0
  525. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/arduino/test.ino +0 -0
  526. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/c/test.c +0 -0
  527. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/chatito/test.chatito +0 -0
  528. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/clojure/test.clj +0 -0
  529. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  530. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/cpp/test.cpp +0 -0
  531. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/csharp/test.cs +0 -0
  532. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/d/test.d +0 -0
  533. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/dart/test.dart +0 -0
  534. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/elisp/test.el +0 -0
  535. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/elixir/test.ex +0 -0
  536. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/elm/test.elm +0 -0
  537. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/gleam/test.gleam +0 -0
  538. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/go/test.go +0 -0
  539. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/haskell/test.hs +0 -0
  540. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/hcl/test.tf +0 -0
  541. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/java/test.java +0 -0
  542. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/javascript/test.js +0 -0
  543. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/kotlin/test.kt +0 -0
  544. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/lua/test.lua +0 -0
  545. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/matlab/test.m +0 -0
  546. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/ocaml/test.ml +0 -0
  547. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  548. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/php/test.php +0 -0
  549. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/pony/test.pony +0 -0
  550. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/properties/test.properties +0 -0
  551. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/python/test.py +0 -0
  552. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/ql/test.ql +0 -0
  553. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/r/test.r +0 -0
  554. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/racket/test.rkt +0 -0
  555. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/ruby/test.rb +0 -0
  556. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/rust/test.rs +0 -0
  557. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/scala/test.scala +0 -0
  558. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/solidity/test.sol +0 -0
  559. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/swift/test.swift +0 -0
  560. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/tsx/test.tsx +0 -0
  561. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/typescript/test.ts +0 -0
  562. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/udev/test.rules +0 -0
  563. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/languages/zig/test.zig +0 -0
  564. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/sample-code-base/sample.js +0 -0
  565. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/sample-code-base/sample.py +0 -0
  566. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  567. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/watch.js +0 -0
  568. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/watch.lisp +0 -0
  569. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/watch.py +0 -0
  570. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/fixtures/watch_question.js +0 -0
  571. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/help/test_help.py +0 -0
  572. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/mcp/__init__.py +0 -0
  573. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/mcp/test_manager.py +0 -0
  574. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/scrape/test_playwright_disable.py +0 -0
  575. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/scrape/test_scrape.py +0 -0
  576. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/test_conversation_integration.py +0 -0
  577. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/test_conversation_system.py +0 -0
  578. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_git_branch.py +0 -0
  579. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_git_diff.py +0 -0
  580. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_grep.py +0 -0
  581. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_insert_block.py +0 -0
  582. {cecli_dev-0.96.6 → cecli_dev-0.96.8}/tests/tools/test_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.96.6
3
+ Version: 0.96.8
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
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.96.6.dev"
3
+ __version__ = "0.96.8.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.6'
32
- __version_tuple__ = version_tuple = (0, 96, 6)
31
+ __version__ = version = '0.96.8'
32
+ __version_tuple__ = version_tuple = (0, 96, 8)
33
33
 
34
- __commit_id__ = commit_id = 'g275cf49cc'
34
+ __commit_id__ = commit_id = 'gd43775efe'
@@ -957,6 +957,7 @@ def get_parser(default_config_files, git_root):
957
957
  "-c",
958
958
  "--config",
959
959
  is_config_file=True,
960
+ env_var="CECLI_CONFIG_FILE",
960
961
  metavar="CONFIG_FILE",
961
962
  help=(
962
963
  "Specify the config file (default: search for .cecli.conf.yml in git root, cwd"
@@ -41,6 +41,7 @@ class AgentCoder(Coder):
41
41
 
42
42
  edit_format = "agent"
43
43
  prompt_format = "agent"
44
+ context_management_enabled = True
44
45
 
45
46
  def __init__(self, *args, **kwargs):
46
47
  self.recently_removed = {}
@@ -71,7 +72,6 @@ class AgentCoder(Coder):
71
72
  }
72
73
  self.max_tool_calls = 10000
73
74
  self.large_file_token_threshold = 8192
74
- self.context_management_enabled = True
75
75
  self.skills_manager = None
76
76
  self.change_tracker = ChangeTracker()
77
77
  self.args = kwargs.get("args")
@@ -262,6 +262,7 @@ class Coder:
262
262
 
263
263
  # Transfer TUI app weak reference
264
264
  res.tui = from_coder.tui
265
+ res.context_management_enabled = from_coder.context_management_enabled
265
266
 
266
267
  await res.initialize_mcp_tools()
267
268
 
@@ -2095,6 +2096,10 @@ class Coder:
2095
2096
  self.io.llm_started()
2096
2097
 
2097
2098
  if inp:
2099
+ # Make sure current coder actually has control of conversation system
2100
+ ConversationChunks.initialize_conversation_system(self)
2101
+ self.format_chat_chunks()
2102
+
2098
2103
  # Always add user message to conversation manager
2099
2104
  ConversationManager.add_message(
2100
2105
  message_dict=dict(role="user", content=inp),
@@ -6,6 +6,7 @@ from typing import List
6
6
  from cecli.commands.utils.base_command import BaseCommand
7
7
  from cecli.commands.utils.helpers import (
8
8
  format_command_result,
9
+ get_file_completions,
9
10
  parse_quoted_filenames,
10
11
  quote_filename,
11
12
  )
@@ -82,10 +83,6 @@ class AddCommand(BaseCommand):
82
83
  for matched_file in sorted(all_matched_files):
83
84
  abs_file_path = coder.abs_root_path(matched_file)
84
85
 
85
- if not abs_file_path.startswith(coder.root) and not is_image_file(matched_file):
86
- io.tool_error(f"Can not add {abs_file_path}, which is not within {coder.root}")
87
- continue
88
-
89
86
  if (
90
87
  coder.repo
91
88
  and coder.repo.git_ignored_file(matched_file)
@@ -205,10 +202,22 @@ class AddCommand(BaseCommand):
205
202
  @classmethod
206
203
  def get_completions(cls, io, coder, args) -> List[str]:
207
204
  """Get completion options for add command."""
208
- files = set(coder.get_all_relative_files())
209
- files = files - set(coder.get_inchat_relative_files())
210
- files = [quote_filename(fn) for fn in files]
211
- return files
205
+ # Get both directory-based completions and filtered "all" completions
206
+ directory_completions = get_file_completions(
207
+ coder,
208
+ args=args,
209
+ completion_type="directory",
210
+ include_directories=True,
211
+ filter_in_chat=False,
212
+ )
213
+
214
+ all_completions = get_file_completions(
215
+ coder, args=args, completion_type="all", include_directories=False, filter_in_chat=True
216
+ )
217
+
218
+ # Return the joint set (union) of both completion types
219
+ joint_set = set(directory_completions) | set(all_completions)
220
+ return sorted(joint_set)
212
221
 
213
222
  @classmethod
214
223
  def get_help(cls) -> str:
@@ -2,6 +2,11 @@ from typing import List
2
2
 
3
3
  from cecli.commands.utils.base_command import BaseCommand
4
4
  from cecli.commands.utils.helpers import format_command_result
5
+ from cecli.helpers.conversation import (
6
+ ConversationFiles,
7
+ ConversationManager,
8
+ MessageTag,
9
+ )
5
10
 
6
11
 
7
12
  class ContextManagementCommand(BaseCommand):
@@ -19,6 +24,10 @@ class ContextManagementCommand(BaseCommand):
19
24
 
20
25
  # Toggle the setting
21
26
  coder.context_management_enabled = not coder.context_management_enabled
27
+ ConversationManager.clear_tag(MessageTag.READONLY_FILES)
28
+ ConversationManager.clear_tag(MessageTag.EDIT_FILES)
29
+ ConversationManager.clear_tag(MessageTag.CHAT_FILES)
30
+ ConversationFiles.clear_file_cache()
22
31
 
23
32
  # Report the new state
24
33
  if coder.context_management_enabled:
@@ -7,6 +7,7 @@ from typing import List
7
7
  from cecli.commands.utils.base_command import BaseCommand
8
8
  from cecli.commands.utils.helpers import (
9
9
  format_command_result,
10
+ get_file_completions,
10
11
  parse_quoted_filenames,
11
12
  quote_filename,
12
13
  )
@@ -207,50 +208,22 @@ class ReadOnlyCommand(BaseCommand):
207
208
  @classmethod
208
209
  def get_completions(cls, io, coder, args) -> List[str]:
209
210
  """Get completion options for read-only command."""
210
- from pathlib import Path
211
-
212
- root = Path(coder.root) if hasattr(coder, "root") else Path.cwd()
213
-
214
- # Handle the prefix - could be partial path like "src/ma" or just "ma"
215
- if "/" in args:
216
- # Has directory component
217
- dir_part, file_part = args.rsplit("/", 1)
218
- if dir_part == "":
219
- search_dir = Path("/")
220
- path_prefix = "/"
221
- else:
222
- # Use os.path.expanduser for ~ support if needed, but Path handles it mostly
223
- search_dir = (root / dir_part).resolve()
224
- path_prefix = dir_part + "/"
225
- search_prefix = file_part.lower()
226
- else:
227
- search_dir = root
228
- search_prefix = args.lower()
229
- path_prefix = ""
230
-
231
- completions = []
232
- try:
233
- if search_dir.exists() and search_dir.is_dir():
234
- for entry in search_dir.iterdir():
235
- name = entry.name
236
- if search_prefix and not name.lower().startswith(search_prefix):
237
- continue
238
-
239
- # Add trailing slash for directories
240
- if entry.is_dir():
241
- completions.append(path_prefix + name + "/")
242
- else:
243
- completions.append(path_prefix + name)
244
- except (PermissionError, OSError):
245
- pass
211
+ # Get both directory-based completions and filtered "all" completions
212
+ directory_completions = get_file_completions(
213
+ coder,
214
+ args=args,
215
+ completion_type="directory",
216
+ include_directories=True,
217
+ filter_in_chat=False,
218
+ )
246
219
 
247
- # Also include files already in the chat that match
248
- add_completions = coder.commands.get_completions("/add")
249
- for c in add_completions:
250
- if args.lower() in str(c).lower() and str(c) not in completions:
251
- completions.append(str(c))
220
+ all_completions = get_file_completions(
221
+ coder, args=args, completion_type="all", include_directories=False, filter_in_chat=True
222
+ )
252
223
 
253
- return sorted(completions)
224
+ # Return the joint set (union) of both completion types
225
+ joint_set = set(directory_completions) | set(all_completions)
226
+ return sorted(joint_set)
254
227
 
255
228
  @classmethod
256
229
  def get_help(cls) -> str:
@@ -7,6 +7,7 @@ from typing import List
7
7
  from cecli.commands.utils.base_command import BaseCommand
8
8
  from cecli.commands.utils.helpers import (
9
9
  format_command_result,
10
+ get_file_completions,
10
11
  parse_quoted_filenames,
11
12
  quote_filename,
12
13
  )
@@ -207,49 +208,22 @@ class ReadOnlyStubCommand(BaseCommand):
207
208
  @classmethod
208
209
  def get_completions(cls, io, coder, args) -> List[str]:
209
210
  """Get completion options for read-only-stub command."""
210
- from pathlib import Path
211
-
212
- root = Path(coder.root) if hasattr(coder, "root") else Path.cwd()
213
-
214
- # Handle the prefix - could be partial path like "src/ma" or just "ma"
215
- if "/" in args:
216
- # Has directory component
217
- dir_part, file_part = args.rsplit("/", 1)
218
- if dir_part == "":
219
- search_dir = Path("/")
220
- path_prefix = "/"
221
- else:
222
- search_dir = (root / dir_part).resolve()
223
- path_prefix = dir_part + "/"
224
- search_prefix = file_part.lower()
225
- else:
226
- search_dir = root
227
- search_prefix = args.lower()
228
- path_prefix = ""
229
-
230
- completions = []
231
- try:
232
- if search_dir.exists() and search_dir.is_dir():
233
- for entry in search_dir.iterdir():
234
- name = entry.name
235
- if search_prefix and not name.lower().startswith(search_prefix):
236
- continue
237
-
238
- # Add trailing slash for directories
239
- if entry.is_dir():
240
- completions.append(path_prefix + name + "/")
241
- else:
242
- completions.append(path_prefix + name)
243
- except (PermissionError, OSError):
244
- pass
211
+ # Get both directory-based completions and filtered "all" completions
212
+ directory_completions = get_file_completions(
213
+ coder,
214
+ args=args,
215
+ completion_type="directory",
216
+ include_directories=True,
217
+ filter_in_chat=False,
218
+ )
245
219
 
246
- # Also include files already in the chat that match
247
- add_completions = coder.commands.get_completions("/add")
248
- for c in add_completions:
249
- if args.lower() in str(c).lower() and str(c) not in completions:
250
- completions.append(str(c))
220
+ all_completions = get_file_completions(
221
+ coder, args=args, completion_type="all", include_directories=False, filter_in_chat=True
222
+ )
251
223
 
252
- return sorted(completions)
224
+ # Return the joint set (union) of both completion types
225
+ joint_set = set(directory_completions) | set(all_completions)
226
+ return sorted(joint_set)
253
227
 
254
228
  @classmethod
255
229
  def get_help(cls) -> str:
@@ -0,0 +1,237 @@
1
+ import os
2
+ import re
3
+ from pathlib import Path
4
+ from typing import List
5
+
6
+
7
+ class CommandError(Exception):
8
+ """Custom exception for command-specific errors."""
9
+
10
+ pass
11
+
12
+
13
+ def quote_filename(fname: str) -> str:
14
+ """Quote filename if it contains spaces."""
15
+ if " " in fname and '"' not in fname:
16
+ fname = f'"{fname}"'
17
+ return fname
18
+
19
+
20
+ def parse_quoted_filenames(args: str) -> List[str]:
21
+ """Parse filenames from command arguments, handling quoted names."""
22
+ filenames = re.findall(r"\"(.+?)\"|(\S+)", args)
23
+ filenames = [name for sublist in filenames for name in sublist if name]
24
+ return filenames
25
+
26
+
27
+ def glob_filtered_to_repo(pattern: str, root: str, repo) -> List[Path]:
28
+ """
29
+ Glob pattern and filter results to repository files.
30
+
31
+ Args:
32
+ pattern: Glob pattern to match
33
+ root: Project root directory
34
+ repo: GitRepo instance (may be None)
35
+
36
+ Returns:
37
+ List of Path objects matching pattern
38
+ """
39
+ if not pattern.strip():
40
+ return []
41
+
42
+ try:
43
+ if os.path.isabs(pattern):
44
+ # Handle absolute paths
45
+ raw_matched_files = [Path(pattern)]
46
+ else:
47
+ try:
48
+ raw_matched_files = list(Path(root).glob(pattern))
49
+ except (IndexError, AttributeError, ValueError):
50
+ # Handle patterns like "**/*.py" that might fail on empty dirs
51
+ raw_matched_files = []
52
+
53
+ # Expand directories and filter
54
+ matched_files = []
55
+ for f in raw_matched_files:
56
+ matched_files.extend(expand_subdir(f))
57
+
58
+ # Filter to repository files
59
+ matched_files = [fn.relative_to(root) for fn in matched_files if fn.is_relative_to(root)]
60
+
61
+ # if repo, filter against it
62
+ if repo:
63
+ git_files = repo.get_tracked_files()
64
+ matched_files = [fn for fn in matched_files if str(fn) in git_files]
65
+
66
+ return matched_files
67
+ except Exception as e:
68
+ raise CommandError(f"Error processing pattern '{pattern}': {e}")
69
+
70
+
71
+ def get_file_completions(
72
+ coder,
73
+ args: str = "",
74
+ completion_type: str = "all",
75
+ include_directories: bool = False,
76
+ filter_in_chat: bool = False,
77
+ ) -> List[str]:
78
+ """
79
+ Get file completions for command line arguments.
80
+
81
+ This function provides unified file completion logic that can be used by
82
+ multiple commands (add, read-only, read-only-stub, etc.).
83
+
84
+ Args:
85
+ coder: Coder instance
86
+ args: Command arguments to complete
87
+ completion_type: Type of completion to perform:
88
+ - "all": Return all available files (default)
89
+ - "glob": Treat args as glob pattern and expand
90
+ - "directory": Perform directory-based prefix matching
91
+ include_directories: Whether to include directories in results
92
+ filter_in_chat: Whether to filter out files already in chat
93
+
94
+ Returns:
95
+ List of completion strings (quoted if needed)
96
+ """
97
+ from pathlib import Path
98
+
99
+ root = Path(coder.root) if hasattr(coder, "root") else Path.cwd()
100
+
101
+ if completion_type == "glob":
102
+ # Handle glob pattern completion
103
+ if not args.strip():
104
+ return []
105
+
106
+ try:
107
+ matched_files = glob_filtered_to_repo(args, str(root), coder.repo)
108
+ completions = [str(fn) for fn in matched_files]
109
+ except CommandError:
110
+ completions = []
111
+
112
+ elif completion_type == "directory":
113
+ # Handle directory-based prefix matching (like read-only commands)
114
+ if "/" in args:
115
+ # Has directory component
116
+ dir_part, file_part = args.rsplit("/", 1)
117
+ if dir_part == "":
118
+ search_dir = Path("/")
119
+ path_prefix = "/"
120
+ else:
121
+ search_dir = (root / dir_part).resolve()
122
+ path_prefix = dir_part + "/"
123
+ search_prefix = file_part.lower()
124
+ else:
125
+ search_dir = root
126
+ search_prefix = args.lower()
127
+ path_prefix = ""
128
+
129
+ completions = []
130
+ try:
131
+ if search_dir.exists() and search_dir.is_dir():
132
+ for entry in search_dir.iterdir():
133
+ name = entry.name
134
+ if search_prefix and not name.lower().startswith(search_prefix):
135
+ continue
136
+
137
+ # Add trailing slash for directories if requested
138
+ if entry.is_dir() and include_directories:
139
+ completions.append(path_prefix + name + "/")
140
+ elif entry.is_file():
141
+ completions.append(path_prefix + name)
142
+ except (PermissionError, OSError):
143
+ pass
144
+
145
+ else: # "all" completion type
146
+ # Get all available files
147
+ if filter_in_chat:
148
+ files = set(coder.get_all_relative_files())
149
+ files = files - set(coder.get_inchat_relative_files())
150
+ completions = list(files)
151
+ else:
152
+ completions = coder.get_all_relative_files()
153
+
154
+ # Quote filenames with spaces
155
+ completions = [quote_filename(fn) for fn in completions]
156
+ return sorted(completions)
157
+
158
+
159
+ def validate_file_access(io, coder, file_path: str, require_in_chat: bool = False) -> bool:
160
+ """
161
+ Validate file access permissions and state.
162
+
163
+ Args:
164
+ io: InputOutput instance
165
+ coder: Coder instance
166
+ file_path: File path to validate
167
+ require_in_chat: Whether file must be in chat context
168
+
169
+ Returns:
170
+ True if file is accessible
171
+ """
172
+ abs_path = coder.abs_root_path(file_path)
173
+
174
+ if not os.path.isfile(abs_path):
175
+ io.tool_error(f"File not found: {file_path}")
176
+ return False
177
+
178
+ if require_in_chat and abs_path not in coder.abs_fnames:
179
+ io.tool_error(f"File not in chat: {file_path}")
180
+ return False
181
+
182
+ return True
183
+
184
+
185
+ def format_command_result(
186
+ io, command_name: str, success_message: str, error: Exception | str = None
187
+ ):
188
+ """
189
+ Format command execution result consistently.
190
+
191
+ Args:
192
+ io: InputOutput instance
193
+ command_name: Name of the command
194
+ success_message: Message for successful execution
195
+ error: Exception if command failed
196
+
197
+ Returns:
198
+ Formatted result string
199
+ """
200
+ if error:
201
+ io.tool_error(f"\nError in {command_name}: {str(error)}")
202
+ return f"Error: {str(error)}"
203
+ else:
204
+ io.tool_output(f"\n✅ {success_message}")
205
+ return f"Successfully executed {command_name}."
206
+
207
+
208
+ def get_available_files(coder, in_chat: bool = False) -> List[str]:
209
+ """
210
+ Get list of available files (either all files or files in chat).
211
+
212
+ Args:
213
+ coder: Coder instance
214
+ in_chat: If True, return files in chat context
215
+
216
+ Returns:
217
+ List of relative file paths
218
+ """
219
+ if in_chat:
220
+ return coder.get_inchat_relative_files()
221
+ else:
222
+ return coder.get_all_relative_files()
223
+
224
+
225
+ def expand_subdir(file_path: Path) -> List[Path]:
226
+ """Expand a directory path to all files within it."""
227
+ if file_path.is_file():
228
+ return [file_path]
229
+
230
+ if file_path.is_dir():
231
+ files = []
232
+ for file in file_path.rglob("*"):
233
+ if file.is_file():
234
+ files.append(file)
235
+ return files
236
+
237
+ return []
@@ -93,7 +93,7 @@ class ConversationFiles:
93
93
  fname: str,
94
94
  generate_stub: bool = False,
95
95
  context_management_enabled: bool = False,
96
- large_file_token_threshold: int = 1000,
96
+ large_file_token_threshold: int = 8192,
97
97
  ) -> Optional[str]:
98
98
  """
99
99
  Get file content with optional stub generation for large files.
@@ -111,7 +111,6 @@ class ConversationFiles:
111
111
  File content, stub for large files, or None if file cannot be read
112
112
  """
113
113
  abs_fname = os.path.abspath(fname)
114
-
115
114
  # First, ensure file is in cache (read-through cache)
116
115
  if abs_fname not in cls._file_contents_original:
117
116
  cls.add_file(fname)
@@ -129,14 +128,14 @@ class ConversationFiles:
129
128
  if not context_management_enabled:
130
129
  return content
131
130
 
131
+ coder = cls.get_coder()
132
+
132
133
  # Check if file is large
133
- content_length = len(content)
134
+ content_length = coder.main_model.token_count(content)
134
135
 
135
136
  if content_length <= large_file_token_threshold:
136
137
  return content
137
138
 
138
- # File is large, generate stub
139
- coder = cls.get_coder()
140
139
  # Use RepoMap to generate file stub
141
140
  return RepoMap.get_file_stub(fname, coder.io, line_numbers=True)
142
141
 
@@ -181,6 +180,7 @@ class ConversationFiles:
181
180
 
182
181
  # Read current content using coder.io.read_text()
183
182
  coder = cls.get_coder()
183
+ rel_fname = coder.get_rel_fname(fname)
184
184
  try:
185
185
  current_content = coder.io.read_text(abs_fname)
186
186
  except Exception:
@@ -199,8 +199,8 @@ class ConversationFiles:
199
199
  diff_lines = difflib.unified_diff(
200
200
  snapshot_content.splitlines(),
201
201
  current_content.splitlines(),
202
- fromfile=f"{abs_fname} (snapshot)",
203
- tofile=f"{abs_fname} (current)",
202
+ fromfile=f"{rel_fname} (snapshot)",
203
+ tofile=f"{rel_fname} (current)",
204
204
  lineterm="",
205
205
  n=3,
206
206
  )
@@ -224,20 +224,25 @@ class ConversationFiles:
224
224
  Returns:
225
225
  Diff string or None if no changes
226
226
  """
227
+ coder = cls.get_coder()
227
228
  diff = cls.generate_diff(fname)
229
+
228
230
  if diff:
229
231
  # Store diff
230
232
  abs_fname = os.path.abspath(fname)
231
233
  cls._file_diffs[abs_fname] = diff
232
234
 
235
+ rel_fname = fname
236
+
237
+ if coder:
238
+ rel_fname = coder.get_rel_fname(fname)
239
+
233
240
  # Add diff message to conversation
234
241
  diff_message = {
235
242
  "role": "user",
236
- "content": f"File {fname} has changed:\n\n{diff}",
243
+ "content": f"File {rel_fname} has changed:\n\n{diff}",
237
244
  }
238
245
 
239
- # Determine tag based on file type
240
- coder = cls.get_coder()
241
246
  if coder and hasattr(coder, "abs_fnames"):
242
247
  tag = (
243
248
  MessageTag.EDIT_FILES
@@ -373,9 +373,11 @@ class ConversationChunks:
373
373
  content = ConversationFiles.get_file_stub(fname)
374
374
  if content:
375
375
  # Add user message with file path as hash_key
376
+ rel_fname = coder.get_rel_fname(fname)
377
+
376
378
  user_msg = {
377
379
  "role": "user",
378
- "content": f"File Contents {fname}:\n\n{content}",
380
+ "content": f"File Contents {rel_fname}:\n\n{content}",
379
381
  }
380
382
  ConversationManager.add_message(
381
383
  message_dict=user_msg,
@@ -423,7 +425,6 @@ class ConversationChunks:
423
425
  message_dict=assistant_msg,
424
426
  tag=MessageTag.READONLY_FILES,
425
427
  hash_key=("image_assistant", fname),
426
- force=True,
427
428
  )
428
429
 
429
430
  return messages
@@ -469,16 +470,18 @@ class ConversationChunks:
469
470
  if not content:
470
471
  continue
471
472
 
473
+ rel_fname = coder.get_rel_fname(fname)
474
+
472
475
  # Create user message
473
476
  user_msg = {
474
477
  "role": "user",
475
- "content": f"File Contents {fname}:\n\n{content}",
478
+ "content": f"File Contents {rel_fname}:\n\n{content}",
476
479
  }
477
480
 
478
481
  # Create assistant message
479
482
  assistant_msg = {
480
483
  "role": "assistant",
481
- "content": "Ok, I will view and/or modify this file as is necessary.",
484
+ "content": "Ok, I will modify this file as is necessary.",
482
485
  }
483
486
 
484
487
  # Determine tag based on editability
@@ -526,7 +529,6 @@ class ConversationChunks:
526
529
  message_dict=assistant_msg,
527
530
  tag=MessageTag.CHAT_FILES,
528
531
  hash_key=("image_assistant", fname),
529
- force=True,
530
532
  )
531
533
 
532
534
  return result
@@ -181,7 +181,9 @@ async def setup_git(git_root, io):
181
181
  )
182
182
  return
183
183
  elif cwd and await io.confirm_ask(
184
- "No git repo found, create one to track cecli's changes (recommended)?", acknowledge=True
184
+ "No git repo found, create one to track cecli's changes (recommended)?",
185
+ acknowledge=True,
186
+ explicit_yes_required=True,
185
187
  ):
186
188
  git_root = str(cwd.resolve())
187
189
  repo = await make_new_repo(git_root, io)
@@ -34,7 +34,7 @@ class Tool(BaseTool):
34
34
  }
35
35
 
36
36
  @classmethod
37
- async def execute(cls, coder, command_string, background=False, stop_background=None):
37
+ async def execute(cls, coder, command_string, background=False, stop_background=None, **kwargs):
38
38
  """
39
39
  Execute a shell command, optionally in background.
40
40
  """