cecli-dev 0.99.7__tar.gz → 0.99.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 (621) hide show
  1. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/PKG-INFO +1 -1
  2. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/_version.py +3 -3
  3. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/change_tracker.py +1 -1
  4. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/agent_coder.py +5 -5
  5. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/main.py +22 -126
  6. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/models.py +187 -9
  7. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/agent.yml +3 -9
  8. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/repo.py +8 -1
  9. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/__init__.py +4 -8
  10. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/command.py +8 -4
  11. cecli_dev-0.99.7/cecli/tools/replace_text.py → cecli_dev-0.99.8/cecli/tools/edit_text.py +174 -74
  12. cecli_dev-0.99.7/cecli/tools/show_context.py → cecli_dev-0.99.8/cecli/tools/get_lines.py +5 -5
  13. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/registry.py +1 -1
  14. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/watch.py +5 -2
  15. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/agent-mode.md +9 -18
  16. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/model-aliases.md +40 -1
  17. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/PKG-INFO +1 -1
  18. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/SOURCES.txt +4 -6
  19. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_main.py +25 -17
  20. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_models.py +7 -7
  21. cecli_dev-0.99.7/tests/tools/test_show_context.py → cecli_dev-0.99.8/tests/tools/test_get_lines.py +5 -5
  22. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_insert_block.py +59 -29
  23. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_registry.py +14 -14
  24. cecli_dev-0.99.7/cecli/tools/delete_text.py +0 -139
  25. cecli_dev-0.99.7/cecli/tools/insert_text.py +0 -150
  26. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.dockerignore +0 -0
  27. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.flake8 +0 -0
  28. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.gitattributes +0 -0
  29. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  30. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/check_pypi_version.yml +0 -0
  31. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/docker-build-test.yml +0 -0
  32. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/docker-release.yml +0 -0
  33. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/issues.yml +0 -0
  34. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/pages.yml +0 -0
  35. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/pre-commit.yml +0 -0
  36. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/release.yml +0 -0
  37. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/ubuntu-tests.yml +0 -0
  38. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/windows-tests.yml +0 -0
  39. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/windows_check_pypi_version.yml +0 -0
  40. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.gitignore +0 -0
  41. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.pre-commit-config.yaml +0 -0
  42. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CHANGELOG.md +0 -0
  43. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CNAME +0 -0
  44. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CONTRIBUTING.md +0 -0
  45. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/HISTORY.md +0 -0
  46. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/LICENSE.txt +0 -0
  47. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/MANIFEST.in +0 -0
  48. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/README.md +0 -0
  49. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/Dockerfile +0 -0
  50. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/README.md +0 -0
  51. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/__init__.py +0 -0
  52. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/benchmark.py +0 -0
  53. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/benchmark_classic.py +0 -0
  54. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/clone-exercism.sh +0 -0
  55. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/cpp-test.sh +0 -0
  56. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/docker.sh +0 -0
  57. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/docker_build.sh +0 -0
  58. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/install-docker-ubuntu.sh +0 -0
  59. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/npm-test.sh +0 -0
  60. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/over_time.py +0 -0
  61. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/plot.sh +0 -0
  62. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/plots.py +0 -0
  63. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/problem_stats.py +0 -0
  64. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/prompts.py +0 -0
  65. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/refactor_tools.py +0 -0
  66. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/rsync.sh +0 -0
  67. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/rungrid.py +0 -0
  68. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe-bench-lite.txt +0 -0
  69. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe-bench.txt +0 -0
  70. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe_bench.py +0 -0
  71. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/test_benchmark.py +0 -0
  72. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.1.sh +0 -0
  73. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.2.sh +0 -0
  74. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.3.sh +0 -0
  75. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.4.sh +0 -0
  76. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/__init__.py +0 -0
  77. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/__main__.py +0 -0
  78. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/args.py +0 -0
  79. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/args_formatter.py +0 -0
  80. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/__init__.py +0 -0
  81. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/architect_coder.py +0 -0
  82. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/ask_coder.py +0 -0
  83. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/base_coder.py +0 -0
  84. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/chat_chunks.py +0 -0
  85. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/context_coder.py +0 -0
  86. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/copypaste_coder.py +0 -0
  87. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_coder.py +0 -0
  88. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_fenced_coder.py +0 -0
  89. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_func_coder.py +0 -0
  90. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  91. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_editblock_coder.py +0 -0
  92. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_whole_coder.py +0 -0
  93. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/hashline_coder.py +0 -0
  94. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/help_coder.py +0 -0
  95. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/patch_coder.py +0 -0
  96. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/search_replace.py +0 -0
  97. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/shell.py +0 -0
  98. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/single_wholefile_func_coder.py +0 -0
  99. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/udiff_coder.py +0 -0
  100. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/udiff_simple.py +0 -0
  101. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/wholefile_coder.py +0 -0
  102. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/wholefile_func_coder.py +0 -0
  103. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/__init__.py +0 -0
  104. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/add.py +0 -0
  105. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/agent.py +0 -0
  106. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/agent_model.py +0 -0
  107. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/architect.py +0 -0
  108. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/ask.py +0 -0
  109. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/chat_mode.py +0 -0
  110. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/clear.py +0 -0
  111. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/code.py +0 -0
  112. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/command_prefix.py +0 -0
  113. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/commit.py +0 -0
  114. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/compact.py +0 -0
  115. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context.py +0 -0
  116. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context_blocks.py +0 -0
  117. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context_management.py +0 -0
  118. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/copy.py +0 -0
  119. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/copy_context.py +0 -0
  120. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/core.py +0 -0
  121. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/diff.py +0 -0
  122. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/drop.py +0 -0
  123. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/editor.py +0 -0
  124. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/editor_model.py +0 -0
  125. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/exit.py +0 -0
  126. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/git.py +0 -0
  127. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/hashline.py +0 -0
  128. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/help.py +0 -0
  129. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/history_search.py +0 -0
  130. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/hooks.py +0 -0
  131. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/lint.py +0 -0
  132. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/list_sessions.py +0 -0
  133. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load.py +0 -0
  134. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_hook.py +0 -0
  135. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_mcp.py +0 -0
  136. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_session.py +0 -0
  137. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_skill.py +0 -0
  138. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/ls.py +0 -0
  139. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/map.py +0 -0
  140. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/map_refresh.py +0 -0
  141. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/model.py +0 -0
  142. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/models.py +0 -0
  143. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/multiline_mode.py +0 -0
  144. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/paste.py +0 -0
  145. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/quit.py +0 -0
  146. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/read_only.py +0 -0
  147. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/read_only_stub.py +0 -0
  148. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/reasoning_effort.py +0 -0
  149. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_hook.py +0 -0
  150. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_mcp.py +0 -0
  151. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_skill.py +0 -0
  152. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/report.py +0 -0
  153. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/reset.py +0 -0
  154. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/rules.py +0 -0
  155. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/run.py +0 -0
  156. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/save.py +0 -0
  157. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/save_session.py +0 -0
  158. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/settings.py +0 -0
  159. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/terminal_data/linux.keytab +0 -0
  160. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/terminal_setup.py +0 -0
  161. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/test.py +0 -0
  162. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/think_tokens.py +0 -0
  163. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/tokens.py +0 -0
  164. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/undo.py +0 -0
  165. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/__init__.py +0 -0
  166. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/base_command.py +0 -0
  167. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/helpers.py +0 -0
  168. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/registry.py +0 -0
  169. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/save_load_manager.py +0 -0
  170. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/voice.py +0 -0
  171. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/weak_model.py +0 -0
  172. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/web.py +0 -0
  173. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/workspace.py +0 -0
  174. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/deprecated_args.py +0 -0
  175. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/diffs.py +0 -0
  176. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/dump.py +0 -0
  177. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/editor.py +0 -0
  178. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/exceptions.py +0 -0
  179. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/format_settings.py +0 -0
  180. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/help.py +0 -0
  181. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/help_pats.py +0 -0
  182. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/__init__.py +0 -0
  183. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/background_commands.py +0 -0
  184. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/command_parser.py +0 -0
  185. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/__init__.py +0 -0
  186. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/base_message.py +0 -0
  187. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/files.py +0 -0
  188. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/integration.py +0 -0
  189. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/manager.py +0 -0
  190. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/service.py +0 -0
  191. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/tags.py +0 -0
  192. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/utils.py +0 -0
  193. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/copypaste.py +0 -0
  194. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/coroutines.py +0 -0
  195. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/file_searcher.py +0 -0
  196. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/__init__.py +0 -0
  197. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/dump.py +0 -0
  198. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  199. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/main.py +0 -0
  200. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/parsers.py +0 -0
  201. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/tsl.py +0 -0
  202. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashline.py +0 -0
  203. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashpos/__init__.py +0 -0
  204. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashpos/hashpos.py +0 -0
  205. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/leak_detect.py +0 -0
  206. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/model_providers.py +0 -0
  207. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/__init__.py +0 -0
  208. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/config.py +0 -0
  209. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/project.py +0 -0
  210. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/workspace.py +0 -0
  211. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/worktree.py +0 -0
  212. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/nested.py +0 -0
  213. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/observations/__init__.py +0 -0
  214. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/observations/manager.py +0 -0
  215. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/plugin_manager.py +0 -0
  216. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/profiler.py +0 -0
  217. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/requests.py +0 -0
  218. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/responses.py +0 -0
  219. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/similarity.py +0 -0
  220. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/skills.py +0 -0
  221. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/history.py +0 -0
  222. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/__init__.py +0 -0
  223. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/base.py +0 -0
  224. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/integration.py +0 -0
  225. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/manager.py +0 -0
  226. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/registry.py +0 -0
  227. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/types.py +0 -0
  228. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/interruptible_input.py +0 -0
  229. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/io.py +0 -0
  230. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/linter.py +0 -0
  231. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/llm.py +0 -0
  232. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/__init__.py +0 -0
  233. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/manager.py +0 -0
  234. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/oauth.py +0 -0
  235. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/server.py +0 -0
  236. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/utils.py +0 -0
  237. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mdstream.py +0 -0
  238. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/onboarding.py +0 -0
  239. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/__init__.py +0 -0
  240. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/architect.yml +0 -0
  241. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/ask.yml +0 -0
  242. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/base.yml +0 -0
  243. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/context.yml +0 -0
  244. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/copypaste.yml +0 -0
  245. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock.yml +0 -0
  246. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock_fenced.yml +0 -0
  247. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock_func.yml +0 -0
  248. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_diff_fenced.yml +0 -0
  249. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_editblock.yml +0 -0
  250. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_whole.yml +0 -0
  251. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/hashline.yml +0 -0
  252. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/help.yml +0 -0
  253. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/patch.yml +0 -0
  254. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/single_wholefile_func.yml +0 -0
  255. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/udiff.yml +0 -0
  256. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/udiff_simple.yml +0 -0
  257. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/__init__.py +0 -0
  258. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/registry.py +0 -0
  259. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/system.py +0 -0
  260. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/wholefile.yml +0 -0
  261. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/wholefile_func.yml +0 -0
  262. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  263. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  264. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  265. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  266. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  267. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  268. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  269. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  270. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  271. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  272. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  273. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  274. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  275. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  276. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  277. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  278. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  279. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  280. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  281. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  282. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  283. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  284. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  285. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  286. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  287. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  288. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  289. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  290. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  291. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  292. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  293. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/README.md +0 -0
  294. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  295. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  296. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  297. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  298. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  299. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  300. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  301. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  302. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  303. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  304. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  305. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  306. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  307. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  308. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  309. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  310. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  311. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  312. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  313. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  314. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  315. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  316. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  317. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  318. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  319. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  320. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/reasoning_tags.py +0 -0
  321. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/repomap.py +0 -0
  322. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/report.py +0 -0
  323. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/__init__.py +0 -0
  324. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/model-metadata.json +0 -0
  325. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/model-settings.yml +0 -0
  326. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/providers.json +0 -0
  327. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/run_cmd.py +0 -0
  328. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/scrape.py +0 -0
  329. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/sendchat.py +0 -0
  330. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/sessions.py +0 -0
  331. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/special.py +0 -0
  332. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/command_interactive.py +0 -0
  333. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/context_manager.py +0 -0
  334. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/explore_code.py +0 -0
  335. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/finished.py +0 -0
  336. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_branch.py +0 -0
  337. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_diff.py +0 -0
  338. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_log.py +0 -0
  339. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_remote.py +0 -0
  340. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_show.py +0 -0
  341. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_status.py +0 -0
  342. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/grep.py +0 -0
  343. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/load_skill.py +0 -0
  344. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/ls.py +0 -0
  345. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/remove_skill.py +0 -0
  346. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/thinking.py +0 -0
  347. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/undo_change.py +0 -0
  348. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/update_todo_list.py +0 -0
  349. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/base_tool.py +0 -0
  350. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/helpers.py +0 -0
  351. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/output.py +0 -0
  352. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/__init__.py +0 -0
  353. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/app.py +0 -0
  354. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/io.py +0 -0
  355. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/styles.tcss +0 -0
  356. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/__init__.py +0 -0
  357. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/completion_bar.py +0 -0
  358. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/file_list.py +0 -0
  359. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/footer.py +0 -0
  360. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/input_area.py +0 -0
  361. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/input_container.py +0 -0
  362. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/key_hints.py +0 -0
  363. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/output.py +0 -0
  364. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/status_bar.py +0 -0
  365. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/worker.py +0 -0
  366. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/urls.py +0 -0
  367. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/utils.py +0 -0
  368. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/versioncheck.py +0 -0
  369. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/voice.py +0 -0
  370. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/waiting.py +0 -0
  371. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/watch_prompts.py +0 -0
  372. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/Gemfile +0 -0
  373. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/blame.md +0 -0
  374. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/get-started.md +0 -0
  375. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/help-tip.md +0 -0
  376. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/help.md +0 -0
  377. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/install.md +0 -0
  378. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/keys.md +0 -0
  379. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/model-warnings.md +0 -0
  380. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/multi-line.md +0 -0
  381. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/python-m-aider.md +0 -0
  382. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/recording.css +0 -0
  383. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/recording.md +0 -0
  384. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/works-best.md +0 -0
  385. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_features.scss +0 -0
  386. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_footer.scss +0 -0
  387. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_hero.scss +0 -0
  388. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_info.scss +0 -0
  389. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_layout.scss +0 -0
  390. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_reset.scss +0 -0
  391. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_testimonials.scss +0 -0
  392. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_typography.scss +0 -0
  393. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_variables.scss +0 -0
  394. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/custom/custom.scss +0 -0
  395. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/global-overrides.scss +0 -0
  396. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/adv-model-settings.md +0 -0
  397. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/aider_conf.md +0 -0
  398. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/api-keys.md +0 -0
  399. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/custom-commands.md +0 -0
  400. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  401. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/dotenv.md +0 -0
  402. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/editor.md +0 -0
  403. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/hooks.md +0 -0
  404. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/mcp.md +0 -0
  405. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/options.md +0 -0
  406. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/reasoning.md +0 -0
  407. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/security.md +0 -0
  408. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/skills.md +0 -0
  409. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/tui.md +0 -0
  410. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/workspaces.md +0 -0
  411. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config.md +0 -0
  412. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/faq.md +0 -0
  413. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/git.md +0 -0
  414. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/index.md +0 -0
  415. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install/docker.md +0 -0
  416. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install/optional.md +0 -0
  417. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install.md +0 -0
  418. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/languages.md +0 -0
  419. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  420. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/legal/privacy.md +0 -0
  421. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/anthropic.md +0 -0
  422. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/azure.md +0 -0
  423. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/bedrock.md +0 -0
  424. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/cohere.md +0 -0
  425. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/deepseek.md +0 -0
  426. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/gemini.md +0 -0
  427. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/github.md +0 -0
  428. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/groq.md +0 -0
  429. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/lm-studio.md +0 -0
  430. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/ollama.md +0 -0
  431. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openai-compat.md +0 -0
  432. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openai.md +0 -0
  433. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openrouter.md +0 -0
  434. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/other.md +0 -0
  435. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/vertex.md +0 -0
  436. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/warnings.md +0 -0
  437. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/xai.md +0 -0
  438. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms.md +0 -0
  439. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/analytics.md +0 -0
  440. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/edit-formats.md +0 -0
  441. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/infinite-output.md +0 -0
  442. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more-info.md +0 -0
  443. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/repomap.md +0 -0
  444. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/scripting.md +0 -0
  445. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  446. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  447. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/imports.md +0 -0
  448. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  449. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/support.md +0 -0
  450. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  451. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  452. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting.md +0 -0
  453. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/commands.md +0 -0
  454. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/conventions.md +0 -0
  455. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/copypaste.md +0 -0
  456. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/images-urls.md +0 -0
  457. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/lint-test.md +0 -0
  458. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/modes.md +0 -0
  459. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/not-code.md +0 -0
  460. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/notifications.md +0 -0
  461. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/sessions.md +0 -0
  462. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/tips.md +0 -0
  463. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/voice.md +0 -0
  464. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/watch.md +0 -0
  465. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage.md +0 -0
  466. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/share/index.md +0 -0
  467. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/dependency_links.txt +0 -0
  468. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/entry_points.txt +0 -0
  469. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/requires.txt +0 -0
  470. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/top_level.txt +0 -0
  471. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/docker/Dockerfile +0 -0
  472. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  473. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/pyproject.toml +0 -0
  474. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/pytest.ini +0 -0
  475. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/common-constraints.txt +0 -0
  476. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-dev.in +0 -0
  477. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-dev.txt +0 -0
  478. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-help.in +0 -0
  479. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-help.txt +0 -0
  480. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-playwright.in +0 -0
  481. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-playwright.txt +0 -0
  482. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements.in +0 -0
  483. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/tree-sitter.in +0 -0
  484. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements.txt +0 -0
  485. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/30k-image.py +0 -0
  486. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/Dockerfile.jekyll +0 -0
  487. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/__init__.py +0 -0
  488. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/blame.py +0 -0
  489. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/clean_metadata.py +0 -0
  490. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/cost_analyzer.py +0 -0
  491. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/dl_icons.py +0 -0
  492. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/filter-chat-mode.js +0 -0
  493. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/generate_providers.py +0 -0
  494. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/get_contributor_list.js +0 -0
  495. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/get_hashline.py +0 -0
  496. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/history_prompts.py +0 -0
  497. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/homepage.py +0 -0
  498. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/issues.py +0 -0
  499. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/jekyll_build.sh +0 -0
  500. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/jekyll_run.sh +0 -0
  501. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/logo_svg.py +0 -0
  502. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/pip-compile.sh +0 -0
  503. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/recording_audio.py +0 -0
  504. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/redact-cast.py +0 -0
  505. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/rename_to_cecli.py +0 -0
  506. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/tmux_record.sh +0 -0
  507. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/tsl_pack_langs.py +0 -0
  508. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-blame.sh +0 -0
  509. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-docs.sh +0 -0
  510. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-history.py +0 -0
  511. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/versionbump.py +0 -0
  512. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/yank-old-versions.py +0 -0
  513. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/setup.cfg +0 -0
  514. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/shim.pyproject.toml +0 -0
  515. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/__init__.py +0 -0
  516. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/__init__.py +0 -0
  517. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_aws_credentials.py +0 -0
  518. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_background_commands.py +0 -0
  519. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_coder.py +0 -0
  520. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_commands.py +0 -0
  521. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_custom_commands.py +0 -0
  522. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_deprecated.py +0 -0
  523. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_editblock.py +0 -0
  524. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_editor.py +0 -0
  525. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_exceptions.py +0 -0
  526. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_find_or_blocks.py +0 -0
  527. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_hashline.py +0 -0
  528. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_history.py +0 -0
  529. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_io.py +0 -0
  530. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_linter.py +0 -0
  531. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_model_info_manager.py +0 -0
  532. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_model_provider_manager.py +0 -0
  533. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_onboarding.py +0 -0
  534. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_plugin_manager.py +0 -0
  535. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_prompts.py +0 -0
  536. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_reasoning.py +0 -0
  537. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_repo.py +0 -0
  538. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_repomap.py +0 -0
  539. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_run_cmd.py +0 -0
  540. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sanity_check_repo.py +0 -0
  541. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_scripting.py +0 -0
  542. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sendchat.py +0 -0
  543. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sessions.py +0 -0
  544. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_skills.py +0 -0
  545. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_special.py +0 -0
  546. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_ssl_verification.py +0 -0
  547. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_udiff.py +0 -0
  548. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_urls.py +0 -0
  549. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_voice.py +0 -0
  550. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_watch.py +0 -0
  551. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_wholefile.py +0 -0
  552. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/coders/test_copypaste_coder.py +0 -0
  553. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conftest.py +0 -0
  554. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conversations/test_conversation_integration.py +0 -0
  555. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conversations/test_conversation_system.py +0 -0
  556. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  557. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/chat-history.md +0 -0
  558. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/arduino/test.ino +0 -0
  559. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/c/test.c +0 -0
  560. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/chatito/test.chatito +0 -0
  561. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/clojure/test.clj +0 -0
  562. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  563. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/cpp/test.cpp +0 -0
  564. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/csharp/test.cs +0 -0
  565. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/d/test.d +0 -0
  566. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/dart/test.dart +0 -0
  567. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elisp/test.el +0 -0
  568. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elixir/test.ex +0 -0
  569. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elm/test.elm +0 -0
  570. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/gleam/test.gleam +0 -0
  571. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/go/test.go +0 -0
  572. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/haskell/test.hs +0 -0
  573. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/hcl/test.tf +0 -0
  574. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/java/test.java +0 -0
  575. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/javascript/test.js +0 -0
  576. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/kotlin/test.kt +0 -0
  577. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/lua/test.lua +0 -0
  578. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/matlab/test.m +0 -0
  579. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ocaml/test.ml +0 -0
  580. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  581. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/php/test.php +0 -0
  582. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/pony/test.pony +0 -0
  583. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/properties/test.properties +0 -0
  584. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/python/test.py +0 -0
  585. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ql/test.ql +0 -0
  586. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/r/test.r +0 -0
  587. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/racket/test.rkt +0 -0
  588. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ruby/test.rb +0 -0
  589. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/rust/test.rs +0 -0
  590. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/scala/test.scala +0 -0
  591. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/solidity/test.sol +0 -0
  592. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/swift/test.swift +0 -0
  593. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/tsx/test.tsx +0 -0
  594. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/typescript/test.ts +0 -0
  595. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/udev/test.rules +0 -0
  596. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/zig/test.zig +0 -0
  597. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base/sample.js +0 -0
  598. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base/sample.py +0 -0
  599. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  600. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.js +0 -0
  601. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.lisp +0 -0
  602. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.py +0 -0
  603. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch_question.js +0 -0
  604. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/help/test_help.py +0 -0
  605. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_config.py +0 -0
  606. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_config_active.py +0 -0
  607. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  608. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  609. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_workspace.py +0 -0
  610. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/observations/test_observation_manager.py +0 -0
  611. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/__init__.py +0 -0
  612. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_base.py +0 -0
  613. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_manager.py +0 -0
  614. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_registry.py +0 -0
  615. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/mcp/__init__.py +0 -0
  616. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/mcp/test_manager.py +0 -0
  617. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/scrape/test_playwright_disable.py +0 -0
  618. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/scrape/test_scrape.py +0 -0
  619. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_git_branch.py +0 -0
  620. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_git_diff.py +0 -0
  621. {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_grep.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.99.7
3
+ Version: 0.99.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
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.99.7'
22
- __version_tuple__ = version_tuple = (0, 99, 7)
21
+ __version__ = version = '0.99.8'
22
+ __version_tuple__ = version_tuple = (0, 99, 8)
23
23
 
24
- __commit_id__ = commit_id = 'gf217080c8'
24
+ __commit_id__ = commit_id = 'g2e022d0e6'
@@ -21,7 +21,7 @@ class ChangeTracker:
21
21
 
22
22
  Parameters:
23
23
  - file_path: Path to the file that was changed
24
- - change_type: Type of change (e.g., 'replacetext', 'insertlines')
24
+ - change_type: Type of change (e.g., 'edittext', 'insertlines')
25
25
  - original_content: Original content before the change
26
26
  - new_content: New content after the change
27
27
  - metadata: Additional information about the change (line numbers, positions, etc.)
@@ -55,15 +55,15 @@ class AgentCoder(Coder):
55
55
  "commandinteractive",
56
56
  "explorecode",
57
57
  "ls",
58
+ "getlines",
58
59
  "grep",
59
- "showcontext",
60
60
  "thinking",
61
61
  "updatetodolist",
62
62
  }
63
63
  self.write_tools = {
64
- "deletetext",
65
- "inserttext",
66
- "replacetext",
64
+ "command",
65
+ "commandinteractive",
66
+ "edittext",
67
67
  "undochange",
68
68
  }
69
69
  self.edit_allowed = False
@@ -999,7 +999,7 @@ I will proceed based on the tool results and updated context.""")
999
999
  context_parts.append("\n\n")
1000
1000
  context_parts.append("## File Editing Tools Disabled")
1001
1001
  context_parts.append(
1002
- "File editing tools are currently disabled.Use `ShowContext` to determine the"
1002
+ "File editing tools are currently disabled.Use `GetLines` to determine the"
1003
1003
  " current hashline prefixes needed to perform an edit and activate them when you"
1004
1004
  " are ready to edit a file."
1005
1005
  )
@@ -361,64 +361,12 @@ def register_litellm_models(git_root, model_metadata_fname, io, verbose=False):
361
361
 
362
362
  def load_model_overrides(git_root, model_overrides_fname, io, verbose=False):
363
363
  """Load model tag overrides from a YAML file."""
364
- from pathlib import Path
365
-
366
- import yaml
367
-
368
- model_overrides_files = generate_search_path_list(
369
- ".cecli.model.overrides.yml", git_root, model_overrides_fname
370
- )
371
- overrides = {}
372
- files_loaded = []
373
- for fname in model_overrides_files:
374
- try:
375
- if Path(fname).exists():
376
- with open(fname, "r") as f:
377
- content = yaml.safe_load(f)
378
- if content:
379
- for model_name, tags in content.items():
380
- if model_name not in overrides:
381
- overrides[model_name] = {}
382
- overrides[model_name].update(tags)
383
- files_loaded.append(fname)
384
- except Exception as e:
385
- io.tool_error(f"Error loading model overrides from {fname}: {e}")
386
- if len(files_loaded) > 0 and verbose:
387
- io.tool_output("Loaded model overrides from:")
388
- for file_loaded in files_loaded:
389
- io.tool_output(f" - {file_loaded}")
390
- if (
391
- model_overrides_fname
392
- and model_overrides_fname not in files_loaded
393
- and model_overrides_fname != ".cecli.model.overrides.yml"
394
- ):
395
- io.tool_warning(f"Model Overrides File Not Found: {model_overrides_fname}")
396
- return overrides
364
+ models.ModelOverrides.load_from_file(git_root, model_overrides_fname, io, verbose=verbose)
397
365
 
398
366
 
399
367
  def load_model_overrides_from_string(model_overrides_str, io):
400
368
  """Load model tag overrides from a JSON/YAML string."""
401
- import json
402
-
403
- import yaml
404
-
405
- overrides = {}
406
- if not model_overrides_str:
407
- return overrides
408
- try:
409
- try:
410
- content = json.loads(model_overrides_str)
411
- except json.JSONDecodeError:
412
- content = yaml.safe_load(model_overrides_str)
413
- if content and isinstance(content, dict):
414
- for model_name, tags in content.items():
415
- if model_name not in overrides:
416
- overrides[model_name] = {}
417
- overrides[model_name].update(tags)
418
- return overrides
419
- except Exception as e:
420
- io.tool_error(f"Error parsing model overrides string: {e}")
421
- return {}
369
+ models.ModelOverrides.load_from_string(model_overrides_str, io)
422
370
 
423
371
 
424
372
  async def sanity_check_repo(repo, io):
@@ -847,105 +795,52 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
847
795
  if not selected_model_name:
848
796
  return await graceful_exit(None, 1)
849
797
  args.model = selected_model_name
850
- model_overrides = {}
798
+
799
+ # Load model tag overrides (stored in ModelOverrides class-level state)
851
800
  if args.model_overrides_file:
852
- model_overrides = load_model_overrides(
801
+ models.ModelOverrides.load_from_file(
853
802
  git_root, args.model_overrides_file, io, verbose=args.verbose
854
803
  )
804
+
855
805
  if args.model_overrides:
856
- direct_overrides = load_model_overrides_from_string(args.model_overrides, io)
857
- for model_name, tags in direct_overrides.items():
858
- if model_name not in model_overrides:
859
- model_overrides[model_name] = {}
860
- model_overrides[model_name].update(tags)
861
- override_index = {}
862
- for base_model, suffixes in model_overrides.items():
863
- if not isinstance(suffixes, dict):
864
- continue
865
- for suffix, cfg in suffixes.items():
866
- if not isinstance(cfg, dict):
867
- continue
868
- full_name = f"{base_model}:{suffix}"
869
- override_index[full_name] = base_model, cfg
870
-
871
- def apply_model_overrides(model_name):
872
- """Return (effective_model_name, override_kwargs) for a given model_name.
873
-
874
- If model_name ends with ":suffix" where suffix is configured for the
875
- prefix (everything before the last colon), we switch to the prefix model
876
- and apply that override dict. Otherwise we leave the name unchanged
877
- and return empty overrides.
878
- """
879
- if not model_name:
880
- return model_name, {}
881
- prefix = ""
882
- if model_name.startswith(models.COPY_PASTE_PREFIX):
883
- prefix = models.COPY_PASTE_PREFIX
884
- model_name = model_name[len(prefix) :]
885
-
886
- # Try to find a matching override by checking all possible suffix matches.
887
- # We iterate from right to left splitting on colons to handle cases where
888
- # the base model name itself contains colons (e.g. "provider/model:tag:alias")
889
- parts = model_name.split(":")
890
- # We need at least one split to have a base and a suffix
891
- for i in range(len(parts) - 1, 0, -1):
892
- potential_base = ":".join(parts[:i])
893
- potential_suffix = ":".join(parts[i:])
894
-
895
- # Check if this base has the suffix configured
896
- if potential_base in model_overrides:
897
- suffixes = model_overrides[potential_base]
898
- if isinstance(suffixes, dict) and potential_suffix in suffixes:
899
- cfg = suffixes[potential_suffix]
900
- if isinstance(cfg, dict):
901
- model_name = prefix + potential_base
902
- return model_name, cfg.copy()
903
-
904
- # No match found
905
- model_name = prefix + model_name
906
- return model_name, {}
907
-
908
- main_model_name, main_model_overrides = apply_model_overrides(args.model)
909
- weak_model_name, weak_model_overrides = apply_model_overrides(args.weak_model)
910
- editor_model_name, editor_model_overrides = apply_model_overrides(args.editor_model)
911
- agent_model_name, agent_model_overrides = apply_model_overrides(args.agent_model)
806
+ models.ModelOverrides.load_from_string(args.model_overrides, io)
807
+
912
808
  weak_model_obj = None
913
- if weak_model_name:
809
+ if args.weak_model:
914
810
  weak_model_obj = models.Model(
915
- weak_model_name,
811
+ args.weak_model,
916
812
  weak_model=False,
917
813
  verbose=args.verbose,
918
814
  io=io,
919
- override_kwargs=weak_model_overrides,
920
815
  retries=args.retries,
921
816
  debug=args.debug,
922
817
  )
818
+
923
819
  editor_model_obj = None
924
- if editor_model_name:
820
+ if args.editor_model:
925
821
  editor_model_obj = models.Model(
926
- editor_model_name,
822
+ args.editor_model,
927
823
  editor_model=False,
928
824
  verbose=args.verbose,
929
825
  io=io,
930
- override_kwargs=editor_model_overrides,
931
826
  retries=args.retries,
932
827
  debug=args.debug,
933
828
  )
829
+
934
830
  agent_model_obj = None
935
- if agent_model_name:
831
+ if args.agent_model:
936
832
  agent_model_obj = models.Model(
937
- agent_model_name,
833
+ args.agent_model,
938
834
  agent_model=False,
939
835
  verbose=args.verbose,
940
836
  io=io,
941
- override_kwargs=agent_model_overrides,
942
837
  retries=args.retries,
943
838
  debug=args.debug,
944
839
  )
945
840
 
946
- if main_model_name.startswith("openrouter/") and not os.environ.get("OPENROUTER_API_KEY"):
841
+ if args.model.startswith("openrouter/") and not os.environ.get("OPENROUTER_API_KEY"):
947
842
  io.tool_warning(
948
- f"The specified model '{main_model_name}' requires an OpenRouter API key, which was not"
843
+ f"The specified model '{args.model}' requires an OpenRouter API key, which was not"
949
844
  " found."
950
845
  )
951
846
  if await offer_openrouter_oauth(io):
@@ -958,24 +853,25 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
958
853
  return await graceful_exit(None, 1)
959
854
  else:
960
855
  io.tool_error(
961
- f"Unable to proceed without an OpenRouter API key for model '{main_model_name}'."
856
+ f"Unable to proceed without an OpenRouter API key for model '{args.model}'."
962
857
  )
963
858
  await io.offer_url(
964
859
  urls.models_and_keys, "Open documentation URL for more info?", acknowledge=True
965
860
  )
966
861
  return await graceful_exit(None, 1)
862
+
967
863
  main_model = models.Model(
968
- main_model_name,
864
+ args.model,
969
865
  weak_model=weak_model_obj,
970
866
  editor_model=editor_model_obj,
971
867
  agent_model=agent_model_obj,
972
868
  editor_edit_format=args.editor_edit_format,
973
869
  verbose=args.verbose,
974
870
  io=io,
975
- override_kwargs=main_model_overrides,
976
871
  retries=args.retries,
977
872
  debug=args.debug,
978
873
  )
874
+
979
875
  if args.copy_paste and main_model.copy_paste_transport == "api":
980
876
  main_model.enable_copy_paste_mode()
981
877
  if main_model.remove_reasoning is not None:
@@ -20,7 +20,7 @@ from cecli import __version__
20
20
  from cecli.dump import dump
21
21
  from cecli.exceptions import LiteLLMExceptions
22
22
  from cecli.helpers import nested
23
- from cecli.helpers.file_searcher import handle_core_files
23
+ from cecli.helpers.file_searcher import generate_search_path_list, handle_core_files
24
24
  from cecli.helpers.model_providers import ModelProviderManager
25
25
  from cecli.helpers.nested import deep_merge
26
26
  from cecli.helpers.requests import model_request_parser
@@ -310,6 +310,152 @@ class ModelInfoManager:
310
310
  model_info_manager = ModelInfoManager()
311
311
 
312
312
 
313
+ class ModelOverrides:
314
+ """Class-level manager for model tag overrides (suffix-based model name resolution).
315
+
316
+ Allows users to define model tag overrides like "model:suffix" that map to
317
+ a base model name with specific configuration overrides.
318
+
319
+ State is stored at the class level so it can be loaded once (e.g. from a YAML file
320
+ in the entry point) and automatically applied when Model is instantiated.
321
+ """
322
+
323
+ _overrides: dict = {}
324
+ _defaults_overrides: dict = {}
325
+
326
+ @classmethod
327
+ def load_from_file(cls, git_root, model_overrides_fname, io, verbose=False):
328
+ """Load model tag overrides from a YAML file."""
329
+ from pathlib import Path
330
+
331
+ import yaml
332
+
333
+ model_overrides_files = generate_search_path_list(
334
+ ".cecli.model.overrides.yml", git_root, model_overrides_fname
335
+ )
336
+ overrides = {}
337
+ files_loaded = []
338
+ for fname in model_overrides_files:
339
+ try:
340
+ if Path(fname).exists():
341
+ with open(fname, "r") as f:
342
+ content = yaml.safe_load(f)
343
+ if content:
344
+ for model_name, tags in content.items():
345
+ if model_name not in overrides:
346
+ overrides[model_name] = {}
347
+ overrides[model_name].update(tags)
348
+ files_loaded.append(fname)
349
+ except Exception as e:
350
+ io.tool_error(f"Error loading model overrides from {fname}: {e}")
351
+ if len(files_loaded) > 0 and verbose:
352
+ io.tool_output("Loaded model overrides from:")
353
+ for file_loaded in files_loaded:
354
+ io.tool_output(f" - {file_loaded}")
355
+ if (
356
+ model_overrides_fname
357
+ and model_overrides_fname not in files_loaded
358
+ and model_overrides_fname != ".cecli.model.overrides.yml"
359
+ ):
360
+ io.tool_warning(f"Model Overrides File Not Found: {model_overrides_fname}")
361
+ cls._from_file_or_string(overrides)
362
+
363
+ @classmethod
364
+ def load_from_string(cls, model_overrides_str, io):
365
+ """Load model tag overrides from a JSON/YAML string."""
366
+ import json
367
+
368
+ import yaml
369
+
370
+ overrides = {}
371
+ if not model_overrides_str:
372
+ return
373
+ try:
374
+ try:
375
+ content = json.loads(model_overrides_str)
376
+ except json.JSONDecodeError:
377
+ content = yaml.safe_load(model_overrides_str)
378
+ if content and isinstance(content, dict):
379
+ for model_name, tags in content.items():
380
+ if model_name not in overrides:
381
+ overrides[model_name] = {}
382
+ overrides[model_name].update(tags)
383
+ except Exception as e:
384
+ io.tool_error(f"Error parsing model overrides string: {e}")
385
+ return
386
+ cls._from_file_or_string(overrides)
387
+
388
+ @classmethod
389
+ def _from_file_or_string(cls, overrides):
390
+ """Internal: process raw overrides dict into class-level state."""
391
+ # Extract 'defaults' key for direct model name matching
392
+ defaults_overrides = {}
393
+ if "defaults" in overrides:
394
+ defaults_overrides = overrides.pop("defaults")
395
+ if not isinstance(defaults_overrides, dict):
396
+ defaults_overrides = {}
397
+
398
+ # Merge into class-level state
399
+ for model_name, tags in overrides.items():
400
+ if model_name not in cls._overrides:
401
+ cls._overrides[model_name] = {}
402
+ if isinstance(tags, dict):
403
+ cls._overrides[model_name].update(tags)
404
+
405
+ # Merge defaults
406
+ for model_name, tags in defaults_overrides.items():
407
+ if model_name not in cls._defaults_overrides:
408
+ cls._defaults_overrides[model_name] = {}
409
+ if isinstance(tags, dict):
410
+ cls._defaults_overrides[model_name].update(tags)
411
+
412
+ @classmethod
413
+ def apply(cls, model_name):
414
+ """Return (effective_model_name, override_kwargs) for a given model_name.
415
+
416
+ If model_name ends with ":suffix" where suffix is configured for the
417
+ prefix (everything before the last colon), we return the prefix model
418
+ and the associated override dict. Otherwise we leave the name unchanged
419
+ and return empty overrides.
420
+
421
+ NOTE: COPY_PASTE_PREFIX handling is done by Model.__init__ before this
422
+ method is called, so we only work with the clean model name here.
423
+ """
424
+ if not model_name:
425
+ return model_name, {}
426
+
427
+ # Try to find a matching override by checking all possible suffix matches.
428
+ # We iterate from right to left splitting on colons to handle cases where
429
+ # the base model name itself contains colons (e.g. "provider/model:tag:alias")
430
+ parts = model_name.split(":")
431
+ for i in range(len(parts) - 1, 0, -1):
432
+ potential_base = ":".join(parts[:i])
433
+ potential_suffix = ":".join(parts[i:])
434
+
435
+ # Check if this base has the suffix configured
436
+ if potential_base in cls._overrides:
437
+ suffixes = cls._overrides[potential_base]
438
+ if isinstance(suffixes, dict) and potential_suffix in suffixes:
439
+ cfg = suffixes[potential_suffix]
440
+ if isinstance(cfg, dict):
441
+ return potential_base, cfg.copy()
442
+
443
+ # Check for direct match in defaults overrides
444
+ if model_name in cls._defaults_overrides:
445
+ cfg = cls._defaults_overrides[model_name]
446
+ if isinstance(cfg, dict):
447
+ return model_name, cfg.copy()
448
+
449
+ # No match found
450
+ return model_name, {}
451
+
452
+ @classmethod
453
+ def clear(cls):
454
+ """Reset all model overrides."""
455
+ cls._overrides = {}
456
+ cls._defaults_overrides = {}
457
+
458
+
313
459
  class Model(ModelSettings):
314
460
  def __init__(
315
461
  self,
@@ -325,9 +471,7 @@ class Model(ModelSettings):
325
471
 
326
472
  io = kwargs.get("io", nested.getter(from_model, "io", None))
327
473
  verbose = kwargs.get("verbose", nested.getter(from_model, "verbose", False))
328
- override_kwargs = kwargs.get(
329
- "override_kwargs", nested.getter(from_model, "override_kwargs", None)
330
- )
474
+ override_kwargs = kwargs.get("override_kwargs", None)
331
475
  retries = kwargs.get("retries", nested.getter(from_model, "retries", None))
332
476
  debug = kwargs.get("debug", nested.getter(from_model, "debug", False))
333
477
 
@@ -357,6 +501,20 @@ class Model(ModelSettings):
357
501
  else:
358
502
  model = provided_model
359
503
  model = MODEL_ALIASES.get(model, model)
504
+
505
+ # Resolve model tag overrides (suffix-based model name resolution)
506
+ resolved_model, resolved_overrides = ModelOverrides.apply(model)
507
+
508
+ if resolved_overrides:
509
+ model = resolved_model
510
+ merged = resolved_overrides.copy()
511
+
512
+ if override_kwargs:
513
+ merged.update(override_kwargs)
514
+
515
+ override_kwargs = merged
516
+ self.override_kwargs = override_kwargs
517
+
360
518
  self.name = model
361
519
  self.max_chat_history_tokens = 1024
362
520
  self.weak_model = None
@@ -435,7 +593,7 @@ class Model(ModelSettings):
435
593
  valid_model_settings_fields = {f.name for f in fields(ModelSettings)}
436
594
 
437
595
  for key, value in self.override_kwargs.items():
438
- if key == "model_settings":
596
+ if key == "model_settings" or key == "model-settings":
439
597
  if not isinstance(value, dict):
440
598
  raise ValueError(
441
599
  f"override_kwargs 'model_settings' must be a dict, got {type(value)}"
@@ -1005,13 +1163,16 @@ class Model(ModelSettings):
1005
1163
  override_kwargs.pop("temperature", None)
1006
1164
 
1007
1165
  effective_tools = tools
1166
+
1008
1167
  if effective_tools is None and functions:
1009
1168
  effective_tools = [dict(type="function", function=f) for f in functions]
1169
+
1010
1170
  if effective_tools:
1011
1171
  sorted_tools = sorted(
1012
1172
  effective_tools, key=lambda x: x.get("function", {}).get("name", "Invalid Name")
1013
1173
  )
1014
1174
  kwargs["tools"] = sorted_tools
1175
+
1015
1176
  if functions and len(functions) == 1:
1016
1177
  function = functions[0]
1017
1178
  if "name" in function:
@@ -1055,9 +1216,17 @@ class Model(ModelSettings):
1055
1216
  }
1056
1217
 
1057
1218
  if kwargs.get("headers", None):
1058
- kwargs["headers"].update({"Connection": "close"})
1219
+ kwargs["headers"].update(
1220
+ {
1221
+ "User-Agent": f"cecli/{__version__}",
1222
+ "Connection": "close",
1223
+ }
1224
+ )
1059
1225
  else:
1060
- kwargs["headers"] = {"Connection": "close"}
1226
+ kwargs["headers"] = {
1227
+ "User-Agent": f"cecli/{__version__}",
1228
+ "Connection": "close",
1229
+ }
1061
1230
 
1062
1231
  litellm_ex = LiteLLMExceptions()
1063
1232
  retry_delay = 0.125
@@ -1124,7 +1293,12 @@ class Model(ModelSettings):
1124
1293
  await asyncio.sleep(retry_delay)
1125
1294
  continue
1126
1295
 
1127
- async def simple_send_with_retries(self, messages, max_tokens=None):
1296
+ async def simple_send_with_retries(
1297
+ self,
1298
+ messages,
1299
+ max_tokens=None,
1300
+ override_kwargs={},
1301
+ ):
1128
1302
  from cecli.exceptions import LiteLLMExceptions
1129
1303
 
1130
1304
  litellm_ex = LiteLLMExceptions()
@@ -1134,7 +1308,11 @@ class Model(ModelSettings):
1134
1308
  while True:
1135
1309
  try:
1136
1310
  _hash, response = await self.send_completion(
1137
- messages=messages, functions=None, stream=False, max_tokens=max_tokens
1311
+ messages=messages,
1312
+ functions=None,
1313
+ stream=False,
1314
+ max_tokens=max_tokens,
1315
+ override_kwargs=override_kwargs,
1138
1316
  )
1139
1317
  if (
1140
1318
  not response
@@ -19,7 +19,7 @@ main_system: |
19
19
  ## Core Directives
20
20
  **Act Proactively**: Autonomously use discovery and management tools to fulfill the request. Chain tool calls across multiple turns for continuous exploration.
21
21
  **Be Decisive**: Trust your findings. Do not repeat identical searches or ask redundant questions.
22
- **Be Efficient**: You may use multiple tools each turn. Batch tool calls when tools allow you to. Respect usage limits while maximizing the utility of each turn.
22
+ **Be Efficient**: Use multiple tools each turn when possible. Batch tool calls when tools allow you to. Respect usage limits while maximizing the utility of each turn.
23
23
  **Be Persistent**: Do not take short cuts. Work through your task until completion. No task takes too long as long as you are making progress towards the goal.
24
24
  </context>
25
25
 
@@ -46,14 +46,8 @@ main_system: |
46
46
 
47
47
  ## Todo List Management
48
48
  - Use `UpdateTodoList` to keep the state synchronized as you complete subtasks.
49
- - Break complex tasks and long edits into granular steps so they remain tractable and context-efficient
49
+ - Break complex tasks and long edits into smaller steps so they remain tractable and context-efficient
50
50
 
51
- ### Editing Tool Protocol
52
-
53
- **MANDATORY Two-Phase Safety Protocol**:
54
- 1. **Phase 1**: Use `ShowContext` to gather the hashline-prefixed content of the section to modify. Capture entire functions, logical blocks and closures.
55
- 2. **Phase 2**: Execute the edit (`ReplaceText`, `InsertText`, `DeleteText`) using the verified hashlines prefixes from the `ShowContext` tool.
56
-
57
51
  **Atomic Scope:** Include the **entire function or logical block**. Never return partial syntax or broken closures. Do not attempt to replace just the beginning or end of a closure.
58
52
  **Indentation**: Preserve all necessary whitespace (spaces, tabs, and newlines) and stylistic indentation.
59
53
  </context>
@@ -66,7 +60,7 @@ system_reminder: |
66
60
  ## Operational Rules
67
61
  - **Scope**: No unrequested refactors. Edit files incrementally; avoid full-file rewrites.
68
62
  - **Hygiene**: Use `ContextManager`/`RemoveSkill` to evict unneeded files/skills immediately after use.
69
- - **Verification**: You MUST use `ShowContext` to verify hashline ranges before every edit.
63
+ - **Preparation**: Use `GetLines` to verify hashline ranges before every edit. Capture entire functions, logical blocks and closures.
70
64
  - **Outputs**: Tool calls trigger turns. Never include tool syntax in final user summaries.
71
65
  - **Sandbox**: Perform all verification and temp logic in `.cecli/temp`.
72
66
  - **Vibe**: Zero conversational filler. Do not confirm instructions or state "I understand." Provide status updates only when you have new information.
@@ -428,7 +428,14 @@ class GitRepo:
428
428
  if max_tokens and num_tokens > max_tokens:
429
429
  continue
430
430
 
431
- commit_message = await model.simple_send_with_retries(messages)
431
+ commit_message = await model.simple_send_with_retries(
432
+ messages,
433
+ override_kwargs={
434
+ "reasoning_effort": None,
435
+ "thinking": None,
436
+ "drop_params": True,
437
+ },
438
+ )
432
439
  if commit_message:
433
440
  break # Found a model that could generate the message
434
441
 
@@ -6,9 +6,10 @@ from . import (
6
6
  command,
7
7
  command_interactive,
8
8
  context_manager,
9
- delete_text,
9
+ edit_text,
10
10
  explore_code,
11
11
  finished,
12
+ get_lines,
12
13
  git_branch,
13
14
  git_diff,
14
15
  git_log,
@@ -16,12 +17,9 @@ from . import (
16
17
  git_show,
17
18
  git_status,
18
19
  grep,
19
- insert_text,
20
20
  load_skill,
21
21
  ls,
22
22
  remove_skill,
23
- replace_text,
24
- show_context,
25
23
  thinking,
26
24
  undo_change,
27
25
  update_todo_list,
@@ -32,9 +30,10 @@ TOOL_MODULES = [
32
30
  command,
33
31
  command_interactive,
34
32
  context_manager,
35
- delete_text,
33
+ edit_text,
36
34
  explore_code,
37
35
  finished,
36
+ get_lines,
38
37
  git_branch,
39
38
  git_diff,
40
39
  git_log,
@@ -42,12 +41,9 @@ TOOL_MODULES = [
42
41
  git_show,
43
42
  git_status,
44
43
  grep,
45
- insert_text,
46
44
  load_skill,
47
45
  ls,
48
46
  remove_skill,
49
- replace_text,
50
- show_context,
51
47
  thinking,
52
48
  undo_change,
53
49
  update_todo_list,
@@ -255,8 +255,10 @@ class Tool(BaseTool):
255
255
  f"[Large Response ({total_size} characters). "
256
256
  "Output saved to paginated files.]\n"
257
257
  f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
258
- "Use the `ContextManager` tool to view these files and to remove them "
259
- "when done reading. Do not use standard cli tools to view these files."
258
+ "Use the `ContextManager` tool to view these files."
259
+ "Do not use standard cli tools to view these files."
260
+ "Remove them from context after taking note of the relevant information "
261
+ "in the output to prevent overfilling stale context."
260
262
  )
261
263
 
262
264
  # Remove from background tracking since it's done
@@ -339,8 +341,10 @@ class Tool(BaseTool):
339
341
  f"[Large Response ({total_size} characters). "
340
342
  "Output saved to paginated files.]\n"
341
343
  f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
342
- "Use the `ContextManager` tool to view these files and to remove them "
343
- "when done reading. Do not use standard cli tools to view these files."
344
+ "Use the `ContextManager` tool to view these files."
345
+ "Do not use standard cli tools to view these files."
346
+ "Remove them from context after taking note of the relevant information "
347
+ "in the output to prevent overfilling stale context."
344
348
  )
345
349
 
346
350
  if tui: