cecli-dev 0.97.5__tar.gz → 0.98.0__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 (614) hide show
  1. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/CONTRIBUTING.md +1 -1
  2. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/PKG-INFO +7 -5
  3. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/README.md +3 -3
  4. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/benchmark.py +3 -4
  5. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/__init__.py +1 -1
  6. cecli_dev-0.98.0/cecli/_version.py +24 -0
  7. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/args.py +15 -5
  8. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/agent_coder.py +93 -79
  9. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/architect_coder.py +6 -7
  10. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/base_coder.py +195 -124
  11. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/hashline_coder.py +8 -3
  12. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/search_replace.py +2 -2
  13. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/single_wholefile_func_coder.py +3 -3
  14. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/wholefile_func_coder.py +3 -4
  15. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/__init__.py +3 -0
  16. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/agent_model.py +4 -10
  17. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/clear.py +8 -12
  18. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/context_management.py +5 -9
  19. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/copy.py +2 -2
  20. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/core.py +0 -6
  21. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/drop.py +10 -3
  22. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/editor_model.py +4 -10
  23. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/ls.py +13 -1
  24. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/map.py +2 -2
  25. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/map_refresh.py +2 -2
  26. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/model.py +4 -10
  27. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/reset.py +6 -6
  28. cecli_dev-0.98.0/cecli/commands/rules.py +148 -0
  29. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/run.py +7 -3
  30. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/tokens.py +19 -10
  31. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/undo.py +4 -8
  32. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/utils/base_command.py +5 -5
  33. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/utils/helpers.py +59 -4
  34. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/weak_model.py +4 -9
  35. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/web.py +7 -3
  36. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/deprecated_args.py +11 -0
  37. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/__init__.py +4 -9
  38. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/base_message.py +13 -0
  39. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/files.py +140 -137
  40. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/integration.py +228 -198
  41. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/manager.py +189 -183
  42. cecli_dev-0.98.0/cecli/helpers/conversation/service.py +40 -0
  43. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/tags.py +4 -1
  44. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/hashline.py +11 -7
  45. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/hashpos/hashpos.py +27 -21
  46. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/requests.py +28 -44
  47. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/main.py +27 -11
  48. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mcp/manager.py +1 -1
  49. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mcp/utils.py +10 -5
  50. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/models.py +53 -36
  51. cecli_dev-0.98.0/cecli/prompts/agent.yml +79 -0
  52. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/hashline.yml +6 -6
  53. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/repo.py +12 -4
  54. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/sessions.py +15 -14
  55. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/__init__.py +2 -4
  56. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/command.py +2 -2
  57. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/command_interactive.py +1 -1
  58. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/context_manager.py +1 -0
  59. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/delete_text.py +11 -2
  60. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/insert_text.py +11 -2
  61. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/replace_text.py +38 -53
  62. cecli_dev-0.98.0/cecli/tools/show_context.py +256 -0
  63. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/undo_change.py +2 -0
  64. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/update_todo_list.py +4 -1
  65. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/__init__.py +10 -7
  66. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/app.py +28 -10
  67. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/io.py +1 -1
  68. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/footer.py +1 -1
  69. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/worker.py +6 -4
  70. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/watch.py +2 -1
  71. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/recording.css +0 -1
  72. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_hero.scss +0 -1
  73. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_testimonials.scss +1 -4
  74. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/global-overrides.scss +12 -0
  75. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/aider_conf.md +0 -3
  76. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/dotenv.md +0 -3
  77. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/hooks.md +4 -4
  78. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/options.md +0 -10
  79. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/index.md +2 -2
  80. cecli_dev-0.98.0/cecli/website/docs/usage/conventions.md +42 -0
  81. {cecli_dev-0.97.5/cecli/website/docs → cecli_dev-0.98.0/cecli/website/docs/usage}/sessions.md +6 -0
  82. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/PKG-INFO +7 -5
  83. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/SOURCES.txt +5 -11
  84. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/requires.txt +3 -1
  85. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/common-constraints.txt +14 -1
  86. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-dev.in +2 -0
  87. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-dev.txt +41 -1
  88. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-help.txt +2 -0
  89. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements.in +1 -1
  90. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements.txt +4 -0
  91. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_coder.py +15 -8
  92. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_hashline.py +36 -44
  93. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_main.py +41 -1
  94. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_repomap.py +2 -2
  95. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_wholefile.py +4 -4
  96. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/hooks/test_base.py +14 -14
  97. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/hooks/test_manager.py +21 -21
  98. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/hooks/test_registry.py +4 -4
  99. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/test_conversation_integration.py +27 -20
  100. cecli_dev-0.98.0/tests/test_conversation_system.py +330 -0
  101. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/tools/test_insert_block.py +25 -26
  102. cecli_dev-0.97.5/tests/tools/test_show_numbered_context.py → cecli_dev-0.98.0/tests/tools/test_show_context.py +19 -16
  103. cecli_dev-0.97.5/cecli/_version.py +0 -34
  104. cecli_dev-0.97.5/cecli/prompts/agent.yml +0 -65
  105. cecli_dev-0.97.5/cecli/tools/indent_text.py +0 -224
  106. cecli_dev-0.97.5/cecli/tools/show_numbered_context.py +0 -217
  107. cecli_dev-0.97.5/cecli/website/docs/recordings/auto-accept-architect.md +0 -31
  108. cecli_dev-0.97.5/cecli/website/docs/recordings/dont-drop-original-read-files.md +0 -35
  109. cecli_dev-0.97.5/cecli/website/docs/recordings/index.md +0 -21
  110. cecli_dev-0.97.5/cecli/website/docs/recordings/model-accepts-settings.md +0 -69
  111. cecli_dev-0.97.5/cecli/website/docs/recordings/tree-sitter-language-pack.md +0 -80
  112. cecli_dev-0.97.5/cecli/website/docs/usage/browser.md +0 -57
  113. cecli_dev-0.97.5/cecli/website/docs/usage/caching.md +0 -49
  114. cecli_dev-0.97.5/cecli/website/docs/usage/conventions.md +0 -119
  115. cecli_dev-0.97.5/tests/test_conversation_system.py +0 -710
  116. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.dockerignore +0 -0
  117. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.flake8 +0 -0
  118. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.gitattributes +0 -0
  119. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  120. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/check_pypi_version.yml +0 -0
  121. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/docker-build-test.yml +0 -0
  122. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/docker-release.yml +0 -0
  123. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/issues.yml +0 -0
  124. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/pages.yml +0 -0
  125. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/pre-commit.yml +0 -0
  126. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/release.yml +0 -0
  127. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/ubuntu-tests.yml +0 -0
  128. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/windows-tests.yml +0 -0
  129. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  130. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.gitignore +0 -0
  131. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/.pre-commit-config.yaml +0 -0
  132. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/CHANGELOG.md +0 -0
  133. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/CNAME +0 -0
  134. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/HISTORY.md +0 -0
  135. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/LICENSE.txt +0 -0
  136. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/MANIFEST.in +0 -0
  137. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/Dockerfile +0 -0
  138. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/README.md +0 -0
  139. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/__init__.py +0 -0
  140. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/benchmark_classic.py +0 -0
  141. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/clone-exercism.sh +0 -0
  142. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/cpp-test.sh +0 -0
  143. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/docker.sh +0 -0
  144. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/docker_build.sh +0 -0
  145. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/install-docker-ubuntu.sh +0 -0
  146. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/npm-test.sh +0 -0
  147. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/over_time.py +0 -0
  148. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/plot.sh +0 -0
  149. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/plots.py +0 -0
  150. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/problem_stats.py +0 -0
  151. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/prompts.py +0 -0
  152. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/refactor_tools.py +0 -0
  153. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/rsync.sh +0 -0
  154. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/rungrid.py +0 -0
  155. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/swe-bench-lite.txt +0 -0
  156. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/swe-bench.txt +0 -0
  157. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/swe_bench.py +0 -0
  158. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/test_benchmark.py +0 -0
  159. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/variations.1.sh +0 -0
  160. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/variations.2.sh +0 -0
  161. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/variations.3.sh +0 -0
  162. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/benchmark/variations.4.sh +0 -0
  163. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/__main__.py +0 -0
  164. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/args_formatter.py +0 -0
  165. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/change_tracker.py +0 -0
  166. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/__init__.py +0 -0
  167. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/ask_coder.py +0 -0
  168. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/chat_chunks.py +0 -0
  169. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/context_coder.py +0 -0
  170. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/copypaste_coder.py +0 -0
  171. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editblock_coder.py +0 -0
  172. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  173. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editblock_func_coder.py +0 -0
  174. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  175. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editor_editblock_coder.py +0 -0
  176. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/editor_whole_coder.py +0 -0
  177. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/help_coder.py +0 -0
  178. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/patch_coder.py +0 -0
  179. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/shell.py +0 -0
  180. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/udiff_coder.py +0 -0
  181. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/udiff_simple.py +0 -0
  182. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/coders/wholefile_coder.py +0 -0
  183. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/add.py +0 -0
  184. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/agent.py +0 -0
  185. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/architect.py +0 -0
  186. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/ask.py +0 -0
  187. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/chat_mode.py +0 -0
  188. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/code.py +0 -0
  189. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/command_prefix.py +0 -0
  190. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/commit.py +0 -0
  191. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/compact.py +0 -0
  192. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/context.py +0 -0
  193. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/context_blocks.py +0 -0
  194. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/copy_context.py +0 -0
  195. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/diff.py +0 -0
  196. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/editor.py +0 -0
  197. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/exit.py +0 -0
  198. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/git.py +0 -0
  199. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/hashline.py +0 -0
  200. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/help.py +0 -0
  201. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/history_search.py +0 -0
  202. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/hooks.py +0 -0
  203. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/lint.py +0 -0
  204. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/list_sessions.py +0 -0
  205. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/load.py +0 -0
  206. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/load_hook.py +0 -0
  207. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/load_mcp.py +0 -0
  208. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/load_session.py +0 -0
  209. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/load_skill.py +0 -0
  210. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/models.py +0 -0
  211. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/multiline_mode.py +0 -0
  212. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/paste.py +0 -0
  213. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/quit.py +0 -0
  214. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/read_only.py +0 -0
  215. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/read_only_stub.py +0 -0
  216. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/reasoning_effort.py +0 -0
  217. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/remove_hook.py +0 -0
  218. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/remove_mcp.py +0 -0
  219. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/remove_skill.py +0 -0
  220. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/report.py +0 -0
  221. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/save.py +0 -0
  222. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/save_session.py +0 -0
  223. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/settings.py +0 -0
  224. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  225. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/terminal_setup.py +0 -0
  226. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/test.py +0 -0
  227. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/think_tokens.py +0 -0
  228. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/utils/__init__.py +0 -0
  229. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/utils/registry.py +0 -0
  230. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/utils/save_load_manager.py +0 -0
  231. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/commands/voice.py +0 -0
  232. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/diffs.py +0 -0
  233. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/dump.py +0 -0
  234. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/editor.py +0 -0
  235. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/exceptions.py +0 -0
  236. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/format_settings.py +0 -0
  237. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/help.py +0 -0
  238. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/help_pats.py +0 -0
  239. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/__init__.py +0 -0
  240. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/background_commands.py +0 -0
  241. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/command_parser.py +0 -0
  242. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/conversation/utils.py +0 -0
  243. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/copypaste.py +0 -0
  244. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/coroutines.py +0 -0
  245. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/file_searcher.py +0 -0
  246. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/hashpos/__init__.py +0 -0
  247. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/model_providers.py +0 -0
  248. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/nested.py +0 -0
  249. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/plugin_manager.py +0 -0
  250. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/profiler.py +0 -0
  251. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/responses.py +0 -0
  252. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/similarity.py +0 -0
  253. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/helpers/skills.py +0 -0
  254. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/history.py +0 -0
  255. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/__init__.py +0 -0
  256. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/base.py +0 -0
  257. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/integration.py +0 -0
  258. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/manager.py +0 -0
  259. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/registry.py +0 -0
  260. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/hooks/types.py +0 -0
  261. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/interruptible_input.py +0 -0
  262. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/io.py +0 -0
  263. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/linter.py +0 -0
  264. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/llm.py +0 -0
  265. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mcp/__init__.py +0 -0
  266. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mcp/oauth.py +0 -0
  267. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mcp/server.py +0 -0
  268. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/mdstream.py +0 -0
  269. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/onboarding.py +0 -0
  270. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/__init__.py +0 -0
  271. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/architect.yml +0 -0
  272. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/ask.yml +0 -0
  273. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/base.yml +0 -0
  274. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/context.yml +0 -0
  275. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/copypaste.yml +0 -0
  276. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editblock.yml +0 -0
  277. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editblock_fenced.yml +0 -0
  278. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editblock_func.yml +0 -0
  279. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  280. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editor_editblock.yml +0 -0
  281. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/editor_whole.yml +0 -0
  282. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/help.yml +0 -0
  283. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/patch.yml +0 -0
  284. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  285. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/udiff.yml +0 -0
  286. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/udiff_simple.yml +0 -0
  287. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/utils/__init__.py +0 -0
  288. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/utils/registry.py +0 -0
  289. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/utils/system.py +0 -0
  290. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/wholefile.yml +0 -0
  291. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/prompts/wholefile_func.yml +0 -0
  292. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  293. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  294. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  295. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  296. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  297. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  298. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  299. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  300. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  301. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  302. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  303. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  304. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  305. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  306. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  307. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  308. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  309. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  310. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  311. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  312. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  313. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  314. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  315. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  316. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  317. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  318. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  319. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  320. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  321. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  322. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  323. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  324. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  325. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  326. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  327. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  328. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  329. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  330. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  331. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  332. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  333. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  334. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  335. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  336. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  337. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  338. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  339. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  340. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  341. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  342. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  343. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  344. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  345. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  346. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  347. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  348. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  349. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  350. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/reasoning_tags.py +0 -0
  351. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/repomap.py +0 -0
  352. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/report.py +0 -0
  353. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/resources/__init__.py +0 -0
  354. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/resources/model-metadata.json +0 -0
  355. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/resources/model-settings.yml +0 -0
  356. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/resources/providers.json +0 -0
  357. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/run_cmd.py +0 -0
  358. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/scrape.py +0 -0
  359. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/sendchat.py +0 -0
  360. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/special.py +0 -0
  361. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/finished.py +0 -0
  362. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_branch.py +0 -0
  363. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_diff.py +0 -0
  364. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_log.py +0 -0
  365. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_remote.py +0 -0
  366. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_show.py +0 -0
  367. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/git_status.py +0 -0
  368. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/grep.py +0 -0
  369. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/list_changes.py +0 -0
  370. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/load_skill.py +0 -0
  371. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/ls.py +0 -0
  372. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/remove_skill.py +0 -0
  373. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/thinking.py +0 -0
  374. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/utils/base_tool.py +0 -0
  375. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/utils/helpers.py +0 -0
  376. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/utils/output.py +0 -0
  377. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/utils/registry.py +0 -0
  378. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/view_files_matching.py +0 -0
  379. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tools/view_files_with_symbol.py +0 -0
  380. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/styles.tcss +0 -0
  381. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/__init__.py +0 -0
  382. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/completion_bar.py +0 -0
  383. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/file_list.py +0 -0
  384. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/input_area.py +0 -0
  385. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/input_container.py +0 -0
  386. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/key_hints.py +0 -0
  387. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/output.py +0 -0
  388. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/tui/widgets/status_bar.py +0 -0
  389. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/urls.py +0 -0
  390. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/utils.py +0 -0
  391. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/versioncheck.py +0 -0
  392. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/voice.py +0 -0
  393. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/waiting.py +0 -0
  394. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/watch_prompts.py +0 -0
  395. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/Gemfile +0 -0
  396. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/blame.md +0 -0
  397. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/get-started.md +0 -0
  398. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/help-tip.md +0 -0
  399. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/help.md +0 -0
  400. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/install.md +0 -0
  401. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/keys.md +0 -0
  402. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/model-warnings.md +0 -0
  403. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/multi-line.md +0 -0
  404. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/python-m-aider.md +0 -0
  405. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/recording.md +0 -0
  406. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_includes/works-best.md +0 -0
  407. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_features.scss +0 -0
  408. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_footer.scss +0 -0
  409. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_info.scss +0 -0
  410. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_layout.scss +0 -0
  411. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_reset.scss +0 -0
  412. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_typography.scss +0 -0
  413. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/_variables.scss +0 -0
  414. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/_sass/custom/custom.scss +0 -0
  415. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  416. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/agent-mode.md +0 -0
  417. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/api-keys.md +0 -0
  418. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/custom-commands.md +0 -0
  419. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  420. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/editor.md +0 -0
  421. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/mcp.md +0 -0
  422. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/model-aliases.md +0 -0
  423. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/reasoning.md +0 -0
  424. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/security.md +0 -0
  425. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/skills.md +0 -0
  426. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config/tui.md +0 -0
  427. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/config.md +0 -0
  428. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/faq.md +0 -0
  429. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/git.md +0 -0
  430. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/install/docker.md +0 -0
  431. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/install/optional.md +0 -0
  432. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/install.md +0 -0
  433. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/languages.md +0 -0
  434. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  435. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/legal/privacy.md +0 -0
  436. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/anthropic.md +0 -0
  437. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/azure.md +0 -0
  438. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/bedrock.md +0 -0
  439. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/cohere.md +0 -0
  440. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/deepseek.md +0 -0
  441. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/gemini.md +0 -0
  442. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/github.md +0 -0
  443. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/groq.md +0 -0
  444. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  445. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/ollama.md +0 -0
  446. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  447. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/openai.md +0 -0
  448. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/openrouter.md +0 -0
  449. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/other.md +0 -0
  450. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/vertex.md +0 -0
  451. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/warnings.md +0 -0
  452. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms/xai.md +0 -0
  453. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/llms.md +0 -0
  454. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/more/analytics.md +0 -0
  455. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/more/edit-formats.md +0 -0
  456. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/more/infinite-output.md +0 -0
  457. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/more-info.md +0 -0
  458. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/repomap.md +0 -0
  459. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/scripting.md +0 -0
  460. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  461. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  462. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  463. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  464. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  465. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  466. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  467. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting.md +0 -0
  468. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/commands.md +0 -0
  469. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/copypaste.md +0 -0
  470. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/images-urls.md +0 -0
  471. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/lint-test.md +0 -0
  472. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/modes.md +0 -0
  473. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/not-code.md +0 -0
  474. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/notifications.md +0 -0
  475. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/tips.md +0 -0
  476. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/voice.md +0 -0
  477. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage/watch.md +0 -0
  478. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/docs/usage.md +0 -0
  479. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli/website/share/index.md +0 -0
  480. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  481. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  482. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/cecli_dev.egg-info/top_level.txt +0 -0
  483. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/docker/Dockerfile +0 -0
  484. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  485. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/pyproject.toml +0 -0
  486. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/pytest.ini +0 -0
  487. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-help.in +0 -0
  488. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-playwright.in +0 -0
  489. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/requirements-playwright.txt +0 -0
  490. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/requirements/tree-sitter.in +0 -0
  491. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/30k-image.py +0 -0
  492. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/Dockerfile.jekyll +0 -0
  493. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/__init__.py +0 -0
  494. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/blame.py +0 -0
  495. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/clean_metadata.py +0 -0
  496. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/cost_analyzer.py +0 -0
  497. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/dl_icons.py +0 -0
  498. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/filter-chat-mode.js +0 -0
  499. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/generate_providers.py +0 -0
  500. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/get_contributor_list.js +0 -0
  501. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/get_hashline.py +0 -0
  502. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/history_prompts.py +0 -0
  503. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/homepage.py +0 -0
  504. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/issues.py +0 -0
  505. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/jekyll_build.sh +0 -0
  506. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/jekyll_run.sh +0 -0
  507. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/logo_svg.py +0 -0
  508. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/pip-compile.sh +0 -0
  509. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/recording_audio.py +0 -0
  510. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/redact-cast.py +0 -0
  511. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/rename_to_cecli.py +0 -0
  512. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/tmux_record.sh +0 -0
  513. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/tsl_pack_langs.py +0 -0
  514. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/update-blame.sh +0 -0
  515. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/update-docs.sh +0 -0
  516. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/update-history.py +0 -0
  517. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/versionbump.py +0 -0
  518. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/scripts/yank-old-versions.py +0 -0
  519. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/setup.cfg +0 -0
  520. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/shim.pyproject.toml +0 -0
  521. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/__init__.py +0 -0
  522. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/__init__.py +0 -0
  523. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_aws_credentials.py +0 -0
  524. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_background_commands.py +0 -0
  525. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_commands.py +0 -0
  526. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_custom_commands.py +0 -0
  527. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_deprecated.py +0 -0
  528. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_editblock.py +0 -0
  529. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_editor.py +0 -0
  530. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_exceptions.py +0 -0
  531. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_find_or_blocks.py +0 -0
  532. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_history.py +0 -0
  533. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_io.py +0 -0
  534. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_linter.py +0 -0
  535. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_model_info_manager.py +0 -0
  536. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_model_provider_manager.py +0 -0
  537. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_models.py +0 -0
  538. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_onboarding.py +0 -0
  539. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_plugin_manager.py +0 -0
  540. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_prompts.py +0 -0
  541. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_reasoning.py +0 -0
  542. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_repo.py +0 -0
  543. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_run_cmd.py +0 -0
  544. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_sanity_check_repo.py +0 -0
  545. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_scripting.py +0 -0
  546. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_sendchat.py +0 -0
  547. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_sessions.py +0 -0
  548. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_skills.py +0 -0
  549. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_special.py +0 -0
  550. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_ssl_verification.py +0 -0
  551. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_udiff.py +0 -0
  552. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_urls.py +0 -0
  553. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_voice.py +0 -0
  554. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/basic/test_watch.py +0 -0
  555. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/coders/test_copypaste_coder.py +0 -0
  556. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/conftest.py +0 -0
  557. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  558. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/chat-history.md +0 -0
  559. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  560. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/c/test.c +0 -0
  561. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  562. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  563. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  564. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  565. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  566. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/d/test.d +0 -0
  567. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/dart/test.dart +0 -0
  568. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/elisp/test.el +0 -0
  569. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  570. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/elm/test.elm +0 -0
  571. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  572. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/go/test.go +0 -0
  573. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  574. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  575. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/java/test.java +0 -0
  576. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/javascript/test.js +0 -0
  577. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  578. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/lua/test.lua +0 -0
  579. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/matlab/test.m +0 -0
  580. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  581. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  582. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/php/test.php +0 -0
  583. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/pony/test.pony +0 -0
  584. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/properties/test.properties +0 -0
  585. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/python/test.py +0 -0
  586. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/ql/test.ql +0 -0
  587. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/r/test.r +0 -0
  588. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  589. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  590. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/rust/test.rs +0 -0
  591. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/scala/test.scala +0 -0
  592. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  593. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/swift/test.swift +0 -0
  594. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  595. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  596. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/udev/test.rules +0 -0
  597. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/languages/zig/test.zig +0 -0
  598. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  599. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  600. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  601. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/watch.js +0 -0
  602. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/watch.lisp +0 -0
  603. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/watch.py +0 -0
  604. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/fixtures/watch_question.js +0 -0
  605. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/help/test_help.py +0 -0
  606. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/hooks/__init__.py +0 -0
  607. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/mcp/__init__.py +0 -0
  608. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/mcp/test_manager.py +0 -0
  609. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/scrape/test_playwright_disable.py +0 -0
  610. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/scrape/test_scrape.py +0 -0
  611. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/tools/test_git_branch.py +0 -0
  612. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/tools/test_git_diff.py +0 -0
  613. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/tools/test_grep.py +0 -0
  614. {cecli_dev-0.97.5 → cecli_dev-0.98.0}/tests/tools/test_registry.py +0 -0
@@ -159,4 +159,4 @@ The project's documentation is built using Jekyll and hosted on GitHub Pages. To
159
159
  bundle exec jekyll serve
160
160
  ```
161
161
 
162
- The built documentation will be available in the `aider/website/_site` directory.
162
+ The built documentation will be available in the `cecli/website/_site` directory.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.97.5
3
+ Version: 0.98.0
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
@@ -35,7 +35,7 @@ Requires-Dist: beautifulsoup4>=4.13.4
35
35
  Requires-Dist: PyYAML>=6.0.2
36
36
  Requires-Dist: diff-match-patch>=20241021
37
37
  Requires-Dist: pypandoc>=1.15
38
- Requires-Dist: litellm>=1.80.11
38
+ Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.80.11
39
39
  Requires-Dist: flake8>=7.3.0
40
40
  Requires-Dist: importlib_resources
41
41
  Requires-Dist: pyperclip>=1.9.0
@@ -74,6 +74,8 @@ Requires-Dist: cogapp; extra == "dev"
74
74
  Requires-Dist: semver; extra == "dev"
75
75
  Requires-Dist: codespell; extra == "dev"
76
76
  Requires-Dist: uv; extra == "dev"
77
+ Requires-Dist: memray; extra == "dev"
78
+ Requires-Dist: objgraph; extra == "dev"
77
79
  Provides-Extra: help
78
80
  Requires-Dist: llama-index-embeddings-huggingface; extra == "help"
79
81
  Requires-Dist: numpy>=1.26.4; extra == "help"
@@ -249,9 +251,9 @@ The current priorities are to improve core capabilities and user experience of t
249
251
 
250
252
  7. **Sub Agents**
251
253
  * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
252
- * [ ] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
253
- * [ ] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
254
- * [ ] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
254
+ * [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
255
+ * [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
256
+ * [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
255
257
  * [ ] Add a `spawn` tool that launches a sub agent as a background command that the parent model waits for to finish
256
258
  * [ ] Add visibility into active sub agent calls in TUI
257
259
 
@@ -165,9 +165,9 @@ The current priorities are to improve core capabilities and user experience of t
165
165
 
166
166
  7. **Sub Agents**
167
167
  * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
168
- * [ ] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
169
- * [ ] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
170
- * [ ] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
168
+ * [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
169
+ * [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
170
+ * [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
171
171
  * [ ] Add a `spawn` tool that launches a sub agent as a background command that the parent model waits for to finish
172
172
  * [ ] Add visibility into active sub agent calls in TUI
173
173
 
@@ -990,7 +990,7 @@ async def run_test_real(
990
990
 
991
991
  from cecli import models
992
992
  from cecli.coders import Coder
993
- from cecli.helpers.conversation import ConversationFiles, ConversationManager
993
+ from cecli.helpers.conversation import ConversationService
994
994
  from cecli.io import InputOutput
995
995
  from cecli.main import SwitchCoderSignal
996
996
 
@@ -1211,13 +1211,12 @@ async def run_test_real(
1211
1211
  dur = 0
1212
1212
  test_outcomes = []
1213
1213
 
1214
- ConversationManager.initialize(
1215
- coder,
1214
+ ConversationService.get_manager(coder).initialize(
1216
1215
  reset=True,
1217
1216
  reformat=True,
1218
1217
  )
1219
1218
 
1220
- ConversationFiles.reset()
1219
+ ConversationService.get_files(coder).reset()
1221
1220
 
1222
1221
  for i in range(tries):
1223
1222
  start = time.time()
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.97.4.dev"
3
+ __version__ = "0.98.0.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '0.98.0'
22
+ __version_tuple__ = version_tuple = (0, 98, 0)
23
+
24
+ __commit_id__ = commit_id = 'g57029fa89'
@@ -14,7 +14,7 @@ from cecli.args_formatter import (
14
14
  MarkdownHelpFormatter,
15
15
  YamlHelpFormatter,
16
16
  )
17
- from cecli.deprecated_args import add_deprecated_model_args
17
+ from cecli.deprecated_args import add_deprecated_mcp_args, add_deprecated_model_args
18
18
 
19
19
  from .dump import dump # noqa: F401
20
20
 
@@ -364,10 +364,11 @@ def get_parser(default_config_files, git_root):
364
364
  default=None,
365
365
  )
366
366
  group.add_argument(
367
- "--mcp-servers-file",
368
- metavar="MCP_CONFIG_FILE",
369
- help="Specify a file path with MCP server configurations",
370
- default=None,
367
+ "--mcp-servers-files",
368
+ metavar="MCP_CONFIG_FILES",
369
+ help="Specify a file path with MCP server configurations (can be specified multiple times)",
370
+ action="append",
371
+ default=[],
371
372
  )
372
373
  group.add_argument(
373
374
  "--mcp-transport",
@@ -961,6 +962,12 @@ def get_parser(default_config_files, git_root):
961
962
  metavar="FILE",
962
963
  help="specify a read-only file (can be used multiple times, glob patterns supported)",
963
964
  ).complete = shtab.FILE
965
+ group.add_argument(
966
+ "--rules",
967
+ action="append",
968
+ metavar="FILE",
969
+ help="specify a rules file (can be used multiple times, glob patterns supported)",
970
+ ).complete = shtab.FILE
964
971
  group.add_argument(
965
972
  "--vim",
966
973
  action="store_true",
@@ -1089,6 +1096,9 @@ def get_parser(default_config_files, git_root):
1089
1096
  # Add deprecated model shortcut arguments
1090
1097
  add_deprecated_model_args(parser, group)
1091
1098
 
1099
+ group = parser.add_argument_group("Deprecated agent settings")
1100
+ add_deprecated_mcp_args(parser, group)
1101
+
1092
1102
  return parser
1093
1103
 
1094
1104
 
@@ -15,11 +15,7 @@ from cecli import utils
15
15
  from cecli.change_tracker import ChangeTracker
16
16
  from cecli.helpers import nested
17
17
  from cecli.helpers.background_commands import BackgroundCommandManager
18
- from cecli.helpers.conversation import ConversationChunks
19
-
20
- # All conversation functions are now available via ConversationChunks class
21
- from cecli.helpers.conversation.manager import ConversationManager
22
- from cecli.helpers.conversation.tags import MessageTag
18
+ from cecli.helpers.conversation import ConversationService, MessageTag
23
19
  from cecli.helpers.similarity import (
24
20
  cosine_similarity,
25
21
  create_bigram_vector,
@@ -42,6 +38,7 @@ class AgentCoder(Coder):
42
38
  prompt_format = "agent"
43
39
  context_management_enabled = True
44
40
  hashlines = True
41
+ stop_on_empty = False
45
42
 
46
43
  def __init__(self, *args, **kwargs):
47
44
  self.recently_removed = {}
@@ -49,7 +46,7 @@ class AgentCoder(Coder):
49
46
  self.tool_usage_retries = 20
50
47
  self.last_round_tools = []
51
48
  self.tool_call_vectors = []
52
- self.tool_similarity_threshold = 0.90
49
+ self.tool_similarity_threshold = 0.95
53
50
  self.max_tool_vector_history = 20
54
51
  self.read_tools = {
55
52
  "command",
@@ -60,17 +57,17 @@ class AgentCoder(Coder):
60
57
  "viewfileswithsymbol",
61
58
  "grep",
62
59
  "listchanges",
63
- "shownumberedcontext",
60
+ "showcontext",
64
61
  "thinking",
65
62
  "updatetodolist",
66
63
  }
67
64
  self.write_tools = {
68
65
  "deletetext",
69
- "indenttext",
70
66
  "inserttext",
71
67
  "replacetext",
72
68
  "undochange",
73
69
  }
70
+ self.edit_allowed = False
74
71
  self.max_tool_calls = 10000
75
72
  self.large_file_token_threshold = 8192
76
73
  self.skills_manager = None
@@ -243,10 +240,15 @@ class AgentCoder(Coder):
243
240
 
244
241
  async def _execute_local_tool_calls(self, tool_calls_list):
245
242
  tool_responses = []
243
+ used_write_tool = False
244
+
246
245
  for tool_call in tool_calls_list:
247
246
  tool_name = tool_call.function.name
248
247
  result_message = ""
249
248
  try:
249
+ if tool_name.lower() in self.write_tools:
250
+ used_write_tool = True
251
+
250
252
  args_string = tool_call.function.arguments.strip()
251
253
  parsed_args_list = []
252
254
 
@@ -268,14 +270,14 @@ class AgentCoder(Coder):
268
270
  except json.JSONDecodeError as e:
269
271
  self.model_kwargs = {}
270
272
  self.io.tool_warning(
271
- f"Could not parse JSON chunk for tool {tool_name}: {chunk}"
273
+ f"Malformed JSON arguments in tool {tool_name}: {chunk}"
272
274
  )
273
275
  tool_responses.append(
274
276
  {
275
277
  "role": "tool",
276
278
  "tool_call_id": tool_call.id,
277
279
  "content": (
278
- f"Could not parse JSON chunk for tool {tool_name}: {str(e)}"
280
+ f"Malformed JSON arguments in tool {tool_name}: {str(e)}"
279
281
  ),
280
282
  }
281
283
  )
@@ -335,6 +337,31 @@ class AgentCoder(Coder):
335
337
  tool_responses.append(
336
338
  {"role": "tool", "tool_call_id": tool_call.id, "content": result_message}
337
339
  )
340
+
341
+ if self.auto_lint and used_write_tool and not self.edit_allowed:
342
+ edited = list(self.files_edited_by_tools)
343
+ lint_errors = self.lint_edited(edited, show_output=False)
344
+ self.lint_outcome = not lint_errors
345
+
346
+ if lint_errors:
347
+ lint_errors = lint_errors.replace(
348
+ "# Fix any linting errors below, if possible.",
349
+ "# Fix any linting errors below, if possible and then continue with your task.",
350
+ 1,
351
+ )
352
+ ConversationService.get_manager(self).add_message(
353
+ message_dict=dict(role="user", content=lint_errors),
354
+ tag=MessageTag.CUR,
355
+ hash_key=("lint_errors", "agent"),
356
+ promotion=ConversationService.get_manager(self).DEFAULT_TAG_PROMOTION_VALUE,
357
+ mark_for_demotion=1,
358
+ force=True,
359
+ )
360
+ else:
361
+ ConversationService.get_manager(self).remove_message_by_hash_key(
362
+ ("lint_errors", "agent")
363
+ )
364
+
338
365
  return tool_responses
339
366
 
340
367
  async def _execute_mcp_tool(self, server, tool_name, params):
@@ -412,7 +439,7 @@ class AgentCoder(Coder):
412
439
  if block_type in self.allowed_context_blocks:
413
440
  block_content = self._generate_context_block(block_type)
414
441
  if block_content:
415
- self.context_block_tokens[block_type] = self.main_model.token_count(
442
+ self.context_block_tokens[block_type] = self.get_active_model().token_count(
416
443
  block_content
417
444
  )
418
445
  self.tokens_calculated = True
@@ -538,37 +565,37 @@ class AgentCoder(Coder):
538
565
  # Choose appropriate fence based on file content
539
566
  self.choose_fence()
540
567
 
541
- ConversationChunks.initialize_conversation_system(self)
542
- # Decrement mark_for_delete values before adding new messages
543
- ConversationManager.decrement_mark_for_delete()
568
+ ConversationService.get_chunks(self).initialize_conversation_system()
544
569
 
545
570
  # Clean up ConversationFiles and remove corresponding messages
546
- ConversationChunks.cleanup_files(self)
571
+ ConversationService.get_chunks(self).cleanup_files()
547
572
 
548
573
  # Add reminder message with list of readonly and editable files
549
- ConversationChunks.add_file_list_reminder(self)
574
+ ConversationService.get_chunks(self).add_file_list_reminder()
550
575
 
551
576
  # Add system messages (including examples and reminder)
552
- ConversationChunks.add_system_messages(self)
577
+ ConversationService.get_chunks(self).add_system_messages()
553
578
 
554
579
  # Add static context blocks (priority 50 - between SYSTEM and EXAMPLES)
555
- ConversationChunks.add_static_context_blocks(self)
580
+ ConversationService.get_chunks(self).add_static_context_blocks()
581
+
582
+ # Add rules messages
583
+ ConversationService.get_chunks(self).add_rules_messages()
556
584
 
557
585
  # Handle file messages using conversation module helper methods
558
586
  # These methods will add messages to ConversationManager
559
- ConversationChunks.add_repo_map_messages(self)
587
+ ConversationService.get_chunks(self).add_repo_map_messages()
560
588
 
561
589
  # Add pre-message context blocks (priority 125 - between REPO and READONLY_FILES)
562
- ConversationChunks.add_pre_message_context_blocks(self)
590
+ ConversationService.get_chunks(self).add_pre_message_context_blocks()
563
591
 
564
- ConversationChunks.add_readonly_files_messages(self)
565
- ConversationChunks.add_chat_files_messages(self)
566
- # ConversationChunks.add_file_context_messages(self)
592
+ ConversationService.get_chunks(self).add_readonly_files_messages()
593
+ ConversationService.get_chunks(self).add_chat_files_messages()
567
594
 
568
595
  # Add post-message context blocks (priority 250 - between CUR and REMINDER)
569
- ConversationChunks.add_post_message_context_blocks(self)
596
+ ConversationService.get_chunks(self).add_post_message_context_blocks()
570
597
 
571
- return ConversationManager.get_messages_dict()
598
+ return ConversationService.get_manager(self).get_messages_dict()
572
599
 
573
600
  def get_context_summary(self):
574
601
  """
@@ -584,7 +611,7 @@ class AgentCoder(Coder):
584
611
  self._calculate_context_block_tokens()
585
612
  result = '<context name="context_summary" from="agent">\n'
586
613
  result += "## Current Context Overview\n\n"
587
- max_input_tokens = self.main_model.info.get("max_input_tokens") or 0
614
+ max_input_tokens = self.get_active_model().info.get("max_input_tokens") or 0
588
615
  if max_input_tokens:
589
616
  result += f"Model context limit: {max_input_tokens:,} tokens\n\n"
590
617
  total_file_tokens = 0
@@ -598,7 +625,7 @@ class AgentCoder(Coder):
598
625
  rel_fname = self.get_rel_fname(fname)
599
626
  content = self.io.read_text(fname)
600
627
  if content is not None:
601
- tokens = self.main_model.token_count(content)
628
+ tokens = self.get_active_model().token_count(content)
602
629
  total_file_tokens += tokens
603
630
  editable_tokens += tokens
604
631
  size_indicator = (
@@ -622,7 +649,7 @@ class AgentCoder(Coder):
622
649
  rel_fname = self.get_rel_fname(fname)
623
650
  content = self.io.read_text(fname)
624
651
  if content is not None:
625
- tokens = self.main_model.token_count(content)
652
+ tokens = self.get_active_model().token_count(content)
626
653
  total_file_tokens += tokens
627
654
  readonly_tokens += tokens
628
655
  size_indicator = (
@@ -726,6 +753,12 @@ class AgentCoder(Coder):
726
753
  # Ensure we call base implementation to trigger execution of all tools (native + extracted)
727
754
  return await super().process_tool_calls(tool_call_response)
728
755
 
756
+ def get_active_model(self):
757
+ if self.main_model.agent_model:
758
+ return self.main_model.agent_model
759
+
760
+ return self.main_model
761
+
729
762
  async def reply_completed(self):
730
763
  """Process the completed response from the LLM.
731
764
 
@@ -797,7 +830,7 @@ class AgentCoder(Coder):
797
830
  if tool_calls_found and self.num_reflections < self.max_reflections:
798
831
  self.tool_call_count = 0
799
832
  self.files_added_in_exploration = set()
800
- cur_messages = ConversationManager.get_messages_dict(MessageTag.CUR)
833
+ cur_messages = ConversationService.get_manager(self).get_messages_dict(MessageTag.CUR)
801
834
  original_question = "Please continue your exploration and provide a final answer."
802
835
  if cur_messages:
803
836
  for msg in reversed(cur_messages):
@@ -832,38 +865,6 @@ I will proceed based on the tool results and updated context.""")
832
865
  if self.hot_reload_enabled:
833
866
  self.skills_manager.hot_reload()
834
867
 
835
- async def _execute_tool_with_registry(self, norm_tool_name, params):
836
- """
837
- Execute a tool using the tool registry.
838
-
839
- Args:
840
- norm_tool_name: Normalized tool name (lowercase)
841
- params: Dictionary of parameters
842
-
843
- Returns:
844
- str: Result message
845
- """
846
- if norm_tool_name in ToolRegistry.get_registered_tools():
847
- tool_module = ToolRegistry.get_tool(norm_tool_name)
848
- try:
849
- result = tool_module.process_response(self, params)
850
- if asyncio.iscoroutine(result):
851
- result = await result
852
- return result
853
- except Exception as e:
854
- self.io.tool_error(f"""Error during {norm_tool_name} execution: {e}
855
- {traceback.format_exc()}""")
856
- return f"Error executing {norm_tool_name}: {str(e)}"
857
- if self.mcp_tools:
858
- for server_name, server_tools in self.mcp_tools:
859
- if any(t.get("function", {}).get("name") == norm_tool_name for t in server_tools):
860
- server = self.mcp_manager.get_server(server_name)
861
- if server:
862
- return await self._execute_mcp_tool(server, norm_tool_name, params)
863
- else:
864
- return f"Error: Could not find server instance for {server_name}"
865
- return f"Error: Unknown tool name '{norm_tool_name}'"
866
-
867
868
  def _get_repetitive_tools(self):
868
869
  """
869
870
  Identifies repetitive tool usage patterns from rounds of tool calls.
@@ -979,14 +980,23 @@ I will proceed based on the tool results and updated context.""")
979
980
  for i, tool in enumerate(recent_history, 1):
980
981
  context_parts.append(f"{i}. {tool}")
981
982
 
983
+ if not self.edit_allowed:
984
+ context_parts.append("\n\n")
985
+ context_parts.append("## File Editing Tools Disabled")
986
+ context_parts.append(
987
+ "File editing tools are currently disabled.Use `ShowContext` to determine the"
988
+ " current hashline prefixes needed to perform an edit and activate them when you"
989
+ " are ready to edit a file."
990
+ )
991
+
982
992
  context_parts.append("\n\n")
983
993
  if repetitive_tools:
984
994
  if not self.model_kwargs:
985
995
  self.model_kwargs = {
986
996
  "temperature": (
987
997
  1
988
- if isinstance(self.main_model.use_temperature, bool)
989
- else float(self.main_model.use_temperature)
998
+ if isinstance(self.get_active_model().use_temperature, bool)
999
+ else float(self.get_active_model().use_temperature)
990
1000
  ) + 0.1,
991
1001
  "frequency_penalty": 0.2,
992
1002
  "presence_penalty": 0.1,
@@ -1002,13 +1012,14 @@ I will proceed based on the tool results and updated context.""")
1002
1012
  self.model_kwargs["temperature"] = min(
1003
1013
  (
1004
1014
  1
1005
- if isinstance(self.main_model.use_temperature, bool)
1006
- else float(self.main_model.use_temperature)
1015
+ if isinstance(self.get_active_model().use_temperature, bool)
1016
+ else float(self.get_active_model().use_temperature)
1007
1017
  ),
1008
1018
  max(temperature - 0.15, 1),
1009
1019
  )
1010
1020
  self.model_kwargs["frequency_penalty"] = min(0, max(freq_penalty - 0.15, 0))
1011
1021
 
1022
+ self.model_kwargs["temperature"] = min(self.model_kwargs["temperature"], 1)
1012
1023
  # One twentieth of the time, just straight reset the randomness
1013
1024
  if random.random() < 0.05:
1014
1025
  self.model_kwargs = {}
@@ -1018,9 +1029,9 @@ I will proceed based on the tool results and updated context.""")
1018
1029
  self._last_repetitive_warning_severity += 1
1019
1030
 
1020
1031
  repetition_warning = f"""
1021
- ## Repetition Detected: Strategy Adjustment Required
1032
+ ## Repetition Detected
1022
1033
  You have been using the following tools repetitively: {', '.join([f'`{t}`' for t in repetitive_tools])}.
1023
- **Constraint:** Do not repeat the same parameters for these tools in your next turns. Try something different.
1034
+ Do not repeat the same parameters for these tools in your next turns. Prioritize editing.
1024
1035
  """
1025
1036
 
1026
1037
  if self._last_repetitive_warning_severity > 5:
@@ -1069,13 +1080,11 @@ You have been using the following tools repetitively: {', '.join([f'`{t}`' for t
1069
1080
  )
1070
1081
 
1071
1082
  repetition_warning += f"""
1072
- ### CRITICAL: Execution Loop Detected
1073
- You are currently "spinning gears". To break the exploration loop, you must:
1074
- 1. **Analyze**: Use the `Thinking` tool exactly once to summarize what you have found so far and why you were stuck.
1075
- 2. **Pivot**: Abandon or modify your current exploration strategy. Try focusing on different files or running tests.
1076
- 3. **Reframe**: To ensure your logic reset, include a 2-sentence story about {animal} {verb} {fruit} in your thoughts.
1077
-
1078
- Prioritize editing or verification over further exploration.
1083
+ ## CRITICAL: Execution Loop Detected
1084
+ You may be stuck in a cycle. To break the exploration loop and continue making progress, please do the following:
1085
+ 1. **Analyze**: Summarize your findings. Describe how you can stop repeating yourself and make progress.
1086
+ 2. **Reframe**: To help with creativity, include a 2-sentence story about {animal} {verb} {fruit} in your thoughts.
1087
+ 3. **Pivot**: Modify your current exploration strategy. Try alternative methods. Prioritize editing.
1079
1088
  """
1080
1089
 
1081
1090
  context_parts.append(repetition_warning)
@@ -1097,8 +1106,8 @@ Prioritize editing or verification over further exploration.
1097
1106
  context_parts = [
1098
1107
  '<context name="tool_usage_history" from="agent">',
1099
1108
  "A file was just edited.",
1100
- "Make sure that something of value was done.",
1101
- "Do not just leave placeholder or sub content.",
1109
+ "Review the diff to make sure that something of value was done.",
1110
+ "Do not just leave placeholder content or partial implementations.",
1102
1111
  "</context>",
1103
1112
  ]
1104
1113
  return "\n".join(context_parts)
@@ -1132,7 +1141,7 @@ Prioritize editing or verification over further exploration.
1132
1141
  if content is None:
1133
1142
  return f"Error reading file: {file_path}"
1134
1143
  if self.context_management_enabled:
1135
- file_tokens = self.main_model.token_count(content)
1144
+ file_tokens = self.get_active_model().token_count(content)
1136
1145
  if file_tokens > self.large_file_token_threshold:
1137
1146
  self.io.tool_output(
1138
1147
  f"⚠️ '{file_path}' is very large ({file_tokens} tokens). Use"
@@ -1165,13 +1174,18 @@ Prioritize editing or verification over further exploration.
1165
1174
  This clearly delineates user input from other sections in the context window.
1166
1175
  """
1167
1176
  inp = await super().preproc_user_input(inp)
1168
- if inp and not inp.startswith('<context name="user_input" from="agent">'):
1169
- inp = f'<context name="user_input" from="agent">\n{inp}\n</context>'
1177
+ inp = self.wrap_user_input(inp)
1170
1178
 
1171
1179
  self.agent_finished = False
1172
1180
  self.turn_count = 0
1173
1181
  return inp
1174
1182
 
1183
+ def wrap_user_input(self, inp):
1184
+ if inp and not inp.startswith('<context name="user_input" from="agent">'):
1185
+ inp = f'<context name="user_input" from="agent">\n{inp}\n</context>'
1186
+
1187
+ return inp
1188
+
1175
1189
  def get_directory_structure(self):
1176
1190
  """
1177
1191
  Generate a structured directory listing of the project file structure.
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
 
3
3
  from ..commands import SwitchCoderSignal
4
- from ..helpers.conversation import ConversationManager
4
+ from ..helpers.conversation import ConversationService
5
5
  from .ask_coder import AskCoder
6
6
  from .base_coder import Coder
7
7
 
@@ -61,8 +61,9 @@ class ArchitectCoder(AskCoder):
61
61
  editor_coder = await Coder.create(**new_kwargs)
62
62
 
63
63
  # Re-initialize ConversationManager with editor coder
64
- ConversationManager.initialize(editor_coder, reset=True, reformat=True, preserve_tags=True)
65
-
64
+ ConversationService.get_manager(editor_coder).initialize(
65
+ reset=True, reformat=True, preserve_tags=True
66
+ )
66
67
  if self.verbose:
67
68
  editor_coder.show_announcements()
68
69
 
@@ -78,8 +79,7 @@ class ArchitectCoder(AskCoder):
78
79
  await editor_coder.generate(user_message=content, preproc=False)
79
80
 
80
81
  # Clear manager and restore original state
81
- ConversationManager.initialize(
82
- original_coder or self,
82
+ ConversationService.get_manager(original_coder or self).initialize(
83
83
  reset=True,
84
84
  reformat=True,
85
85
  preserve_tags=True,
@@ -90,8 +90,7 @@ class ArchitectCoder(AskCoder):
90
90
  except Exception as e:
91
91
  self.io.tool_error(e)
92
92
  # Restore original state on error
93
- ConversationManager.initialize(
94
- original_coder or self,
93
+ ConversationService.get_manager(original_coder or self).initialize(
95
94
  reset=True,
96
95
  reformat=True,
97
96
  preserve_tags=True,