cecli-dev 0.97.3__tar.gz → 0.97.4__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 (606) hide show
  1. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/PKG-INFO +4 -4
  2. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/README.md +3 -3
  3. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/__init__.py +1 -1
  4. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/_version.py +3 -3
  5. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/args.py +6 -0
  6. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/agent_coder.py +4 -0
  7. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/architect_coder.py +4 -6
  8. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/base_coder.py +28 -101
  9. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/agent_model.py +3 -3
  10. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/editor_model.py +3 -3
  11. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/model.py +3 -3
  12. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/tokens.py +1 -0
  13. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/utils/base_command.py +3 -5
  14. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/weak_model.py +3 -3
  15. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/manager.py +28 -23
  16. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/hashline.py +434 -199
  17. cecli_dev-0.97.4/cecli/helpers/responses.py +132 -0
  18. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/main.py +24 -1
  19. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/agent.yml +3 -2
  20. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/hashline.yml +16 -19
  21. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/resources/model-metadata.json +19984 -19100
  22. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/scrape.py +1 -1
  23. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/command.py +6 -0
  24. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/context_manager.py +9 -1
  25. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/grep.py +22 -5
  26. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/app.py +44 -0
  27. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/input_area.py +15 -11
  28. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/tui.md +1 -0
  29. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/imports.md +1 -5
  30. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/PKG-INFO +4 -4
  31. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/SOURCES.txt +0 -3
  32. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/filter-chat-mode.js +35 -5
  33. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_hashline.py +4 -79
  34. cecli_dev-0.97.3/cecli/helpers/responses.py +0 -21
  35. cecli_dev-0.97.3/cecli/website/docs/install/codespaces.md +0 -39
  36. cecli_dev-0.97.3/cecli/website/docs/install/replit.md +0 -8
  37. cecli_dev-0.97.3/cecli/website/docs/usage/tutorials.md +0 -30
  38. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.dockerignore +0 -0
  39. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.flake8 +0 -0
  40. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.gitattributes +0 -0
  41. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  42. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/check_pypi_version.yml +0 -0
  43. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/docker-build-test.yml +0 -0
  44. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/docker-release.yml +0 -0
  45. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/issues.yml +0 -0
  46. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/pages.yml +0 -0
  47. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/pre-commit.yml +0 -0
  48. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/release.yml +0 -0
  49. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/ubuntu-tests.yml +0 -0
  50. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/windows-tests.yml +0 -0
  51. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.github/workflows/windows_check_pypi_version.yml +0 -0
  52. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.gitignore +0 -0
  53. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/.pre-commit-config.yaml +0 -0
  54. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/CHANGELOG.md +0 -0
  55. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/CNAME +0 -0
  56. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/CONTRIBUTING.md +0 -0
  57. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/HISTORY.md +0 -0
  58. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/LICENSE.txt +0 -0
  59. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/MANIFEST.in +0 -0
  60. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/Dockerfile +0 -0
  61. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/README.md +0 -0
  62. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/__init__.py +0 -0
  63. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/benchmark.py +0 -0
  64. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/benchmark_classic.py +0 -0
  65. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/clone-exercism.sh +0 -0
  66. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/cpp-test.sh +0 -0
  67. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/docker.sh +0 -0
  68. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/docker_build.sh +0 -0
  69. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/install-docker-ubuntu.sh +0 -0
  70. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/npm-test.sh +0 -0
  71. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/over_time.py +0 -0
  72. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/plot.sh +0 -0
  73. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/plots.py +0 -0
  74. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/primary_variations.sh +0 -0
  75. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/problem_stats.py +0 -0
  76. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/prompts.py +0 -0
  77. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/refactor_tools.py +0 -0
  78. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/rsync.sh +0 -0
  79. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/rungrid.py +0 -0
  80. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/swe-bench-lite.txt +0 -0
  81. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/swe-bench.txt +0 -0
  82. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/swe_bench.py +0 -0
  83. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/benchmark/test_benchmark.py +0 -0
  84. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/__main__.py +0 -0
  85. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/args_formatter.py +0 -0
  86. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/change_tracker.py +0 -0
  87. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/__init__.py +0 -0
  88. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/ask_coder.py +0 -0
  89. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/chat_chunks.py +0 -0
  90. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/context_coder.py +0 -0
  91. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/copypaste_coder.py +0 -0
  92. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editblock_coder.py +0 -0
  93. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editblock_fenced_coder.py +0 -0
  94. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editblock_func_coder.py +0 -0
  95. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  96. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editor_editblock_coder.py +0 -0
  97. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/editor_whole_coder.py +0 -0
  98. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/hashline_coder.py +0 -0
  99. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/help_coder.py +0 -0
  100. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/patch_coder.py +0 -0
  101. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/search_replace.py +0 -0
  102. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/shell.py +0 -0
  103. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/single_wholefile_func_coder.py +0 -0
  104. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/udiff_coder.py +0 -0
  105. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/udiff_simple.py +0 -0
  106. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/wholefile_coder.py +0 -0
  107. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/coders/wholefile_func_coder.py +0 -0
  108. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/__init__.py +0 -0
  109. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/add.py +0 -0
  110. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/agent.py +0 -0
  111. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/architect.py +0 -0
  112. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/ask.py +0 -0
  113. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/chat_mode.py +0 -0
  114. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/clear.py +0 -0
  115. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/code.py +0 -0
  116. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/command_prefix.py +0 -0
  117. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/commit.py +0 -0
  118. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/compact.py +0 -0
  119. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/context.py +0 -0
  120. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/context_blocks.py +0 -0
  121. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/context_management.py +0 -0
  122. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/copy.py +0 -0
  123. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/copy_context.py +0 -0
  124. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/core.py +0 -0
  125. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/diff.py +0 -0
  126. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/drop.py +0 -0
  127. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/editor.py +0 -0
  128. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/exit.py +0 -0
  129. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/git.py +0 -0
  130. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/hashline.py +0 -0
  131. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/help.py +0 -0
  132. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/history_search.py +0 -0
  133. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/hooks.py +0 -0
  134. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/lint.py +0 -0
  135. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/list_sessions.py +0 -0
  136. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/load.py +0 -0
  137. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/load_hook.py +0 -0
  138. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/load_mcp.py +0 -0
  139. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/load_session.py +0 -0
  140. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/load_skill.py +0 -0
  141. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/ls.py +0 -0
  142. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/map.py +0 -0
  143. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/map_refresh.py +0 -0
  144. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/models.py +0 -0
  145. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/multiline_mode.py +0 -0
  146. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/paste.py +0 -0
  147. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/quit.py +0 -0
  148. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/read_only.py +0 -0
  149. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/read_only_stub.py +0 -0
  150. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/reasoning_effort.py +0 -0
  151. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/remove_hook.py +0 -0
  152. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/remove_mcp.py +0 -0
  153. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/remove_skill.py +0 -0
  154. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/report.py +0 -0
  155. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/reset.py +0 -0
  156. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/run.py +0 -0
  157. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/save.py +0 -0
  158. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/save_session.py +0 -0
  159. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/settings.py +0 -0
  160. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/terminal_data/linux.keytab +0 -0
  161. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/terminal_setup.py +0 -0
  162. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/test.py +0 -0
  163. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/think_tokens.py +0 -0
  164. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/undo.py +0 -0
  165. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/utils/__init__.py +0 -0
  166. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/utils/helpers.py +0 -0
  167. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/utils/registry.py +0 -0
  168. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/utils/save_load_manager.py +0 -0
  169. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/voice.py +0 -0
  170. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/commands/web.py +0 -0
  171. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/deprecated_args.py +0 -0
  172. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/diffs.py +0 -0
  173. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/dump.py +0 -0
  174. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/editor.py +0 -0
  175. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/exceptions.py +0 -0
  176. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/format_settings.py +0 -0
  177. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/help.py +0 -0
  178. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/help_pats.py +0 -0
  179. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/__init__.py +0 -0
  180. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/background_commands.py +0 -0
  181. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/command_parser.py +0 -0
  182. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/__init__.py +0 -0
  183. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/base_message.py +0 -0
  184. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/files.py +0 -0
  185. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/integration.py +0 -0
  186. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/tags.py +0 -0
  187. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/conversation/utils.py +0 -0
  188. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/copypaste.py +0 -0
  189. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/coroutines.py +0 -0
  190. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/file_searcher.py +0 -0
  191. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/model_providers.py +0 -0
  192. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/nested.py +0 -0
  193. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/plugin_manager.py +0 -0
  194. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/profiler.py +0 -0
  195. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/requests.py +0 -0
  196. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/similarity.py +0 -0
  197. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/helpers/skills.py +0 -0
  198. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/history.py +0 -0
  199. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/__init__.py +0 -0
  200. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/base.py +0 -0
  201. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/integration.py +0 -0
  202. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/manager.py +0 -0
  203. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/registry.py +0 -0
  204. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/hooks/types.py +0 -0
  205. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/interruptible_input.py +0 -0
  206. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/io.py +0 -0
  207. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/linter.py +0 -0
  208. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/llm.py +0 -0
  209. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mcp/__init__.py +0 -0
  210. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mcp/manager.py +0 -0
  211. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mcp/oauth.py +0 -0
  212. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mcp/server.py +0 -0
  213. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mcp/utils.py +0 -0
  214. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/mdstream.py +0 -0
  215. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/models.py +0 -0
  216. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/onboarding.py +0 -0
  217. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/__init__.py +0 -0
  218. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/architect.yml +0 -0
  219. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/ask.yml +0 -0
  220. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/base.yml +0 -0
  221. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/context.yml +0 -0
  222. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/copypaste.yml +0 -0
  223. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editblock.yml +0 -0
  224. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editblock_fenced.yml +0 -0
  225. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editblock_func.yml +0 -0
  226. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editor_diff_fenced.yml +0 -0
  227. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editor_editblock.yml +0 -0
  228. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/editor_whole.yml +0 -0
  229. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/help.yml +0 -0
  230. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/patch.yml +0 -0
  231. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/single_wholefile_func.yml +0 -0
  232. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/udiff.yml +0 -0
  233. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/udiff_simple.yml +0 -0
  234. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/utils/__init__.py +0 -0
  235. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/utils/registry.py +0 -0
  236. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/utils/system.py +0 -0
  237. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/wholefile.yml +0 -0
  238. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/prompts/wholefile_func.yml +0 -0
  239. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  240. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  241. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  242. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  243. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  244. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  245. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  246. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  247. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  248. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  249. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  250. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  251. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  252. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  253. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  254. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  255. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  256. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  257. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  258. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  259. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  260. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  261. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  262. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  263. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  264. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  265. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  266. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  267. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  268. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  269. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  270. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/README.md +0 -0
  271. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  272. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  273. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  274. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  275. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  276. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  277. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  278. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  279. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  280. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  281. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  282. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  283. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  284. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  285. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  286. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  287. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  288. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  289. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  290. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  291. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  292. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  293. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  294. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  295. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  296. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  297. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/reasoning_tags.py +0 -0
  298. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/repo.py +0 -0
  299. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/repomap.py +0 -0
  300. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/report.py +0 -0
  301. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/resources/__init__.py +0 -0
  302. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/resources/model-settings.yml +0 -0
  303. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/resources/providers.json +0 -0
  304. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/run_cmd.py +0 -0
  305. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/sendchat.py +0 -0
  306. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/sessions.py +0 -0
  307. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/special.py +0 -0
  308. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/__init__.py +0 -0
  309. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/command_interactive.py +0 -0
  310. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/delete_text.py +0 -0
  311. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/finished.py +0 -0
  312. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_branch.py +0 -0
  313. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_diff.py +0 -0
  314. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_log.py +0 -0
  315. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_remote.py +0 -0
  316. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_show.py +0 -0
  317. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/git_status.py +0 -0
  318. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/indent_text.py +0 -0
  319. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/insert_text.py +0 -0
  320. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/list_changes.py +0 -0
  321. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/load_skill.py +0 -0
  322. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/ls.py +0 -0
  323. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/remove_skill.py +0 -0
  324. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/replace_text.py +0 -0
  325. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/show_numbered_context.py +0 -0
  326. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/thinking.py +0 -0
  327. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/undo_change.py +0 -0
  328. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/update_todo_list.py +0 -0
  329. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/utils/base_tool.py +0 -0
  330. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/utils/helpers.py +0 -0
  331. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/utils/output.py +0 -0
  332. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/utils/registry.py +0 -0
  333. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/view_files_matching.py +0 -0
  334. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tools/view_files_with_symbol.py +0 -0
  335. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/__init__.py +0 -0
  336. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/io.py +0 -0
  337. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/styles.tcss +0 -0
  338. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/__init__.py +0 -0
  339. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/completion_bar.py +0 -0
  340. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/file_list.py +0 -0
  341. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/footer.py +0 -0
  342. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/input_container.py +0 -0
  343. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/key_hints.py +0 -0
  344. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/output.py +0 -0
  345. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/widgets/status_bar.py +0 -0
  346. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/tui/worker.py +0 -0
  347. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/urls.py +0 -0
  348. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/utils.py +0 -0
  349. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/versioncheck.py +0 -0
  350. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/voice.py +0 -0
  351. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/waiting.py +0 -0
  352. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/watch.py +0 -0
  353. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/watch_prompts.py +0 -0
  354. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/Gemfile +0 -0
  355. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/blame.md +0 -0
  356. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/get-started.md +0 -0
  357. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/help-tip.md +0 -0
  358. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/help.md +0 -0
  359. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/install.md +0 -0
  360. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/keys.md +0 -0
  361. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/model-warnings.md +0 -0
  362. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/multi-line.md +0 -0
  363. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/python-m-aider.md +0 -0
  364. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/recording.css +0 -0
  365. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/recording.md +0 -0
  366. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_includes/works-best.md +0 -0
  367. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_features.scss +0 -0
  368. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_footer.scss +0 -0
  369. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_hero.scss +0 -0
  370. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_info.scss +0 -0
  371. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_layout.scss +0 -0
  372. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_reset.scss +0 -0
  373. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_testimonials.scss +0 -0
  374. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_typography.scss +0 -0
  375. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/_variables.scss +0 -0
  376. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/custom/custom.scss +0 -0
  377. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/_sass/global-overrides.scss +0 -0
  378. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/adv-model-settings.md +0 -0
  379. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/agent-mode.md +0 -0
  380. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/aider_conf.md +0 -0
  381. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/api-keys.md +0 -0
  382. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/custom-commands.md +0 -0
  383. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  384. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/dotenv.md +0 -0
  385. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/editor.md +0 -0
  386. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/hooks.md +0 -0
  387. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/mcp.md +0 -0
  388. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/model-aliases.md +0 -0
  389. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/options.md +0 -0
  390. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/reasoning.md +0 -0
  391. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/security.md +0 -0
  392. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config/skills.md +0 -0
  393. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/config.md +0 -0
  394. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/faq.md +0 -0
  395. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/git.md +0 -0
  396. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/index.md +0 -0
  397. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/install/docker.md +0 -0
  398. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/install/optional.md +0 -0
  399. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/install.md +0 -0
  400. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/languages.md +0 -0
  401. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  402. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/legal/privacy.md +0 -0
  403. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/anthropic.md +0 -0
  404. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/azure.md +0 -0
  405. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/bedrock.md +0 -0
  406. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/cohere.md +0 -0
  407. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/deepseek.md +0 -0
  408. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/gemini.md +0 -0
  409. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/github.md +0 -0
  410. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/groq.md +0 -0
  411. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/lm-studio.md +0 -0
  412. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/ollama.md +0 -0
  413. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/openai-compat.md +0 -0
  414. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/openai.md +0 -0
  415. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/openrouter.md +0 -0
  416. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/other.md +0 -0
  417. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/vertex.md +0 -0
  418. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/warnings.md +0 -0
  419. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms/xai.md +0 -0
  420. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/llms.md +0 -0
  421. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/more/analytics.md +0 -0
  422. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/more/edit-formats.md +0 -0
  423. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/more/infinite-output.md +0 -0
  424. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/more-info.md +0 -0
  425. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/recordings/auto-accept-architect.md +0 -0
  426. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/recordings/dont-drop-original-read-files.md +0 -0
  427. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/recordings/index.md +0 -0
  428. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/recordings/model-accepts-settings.md +0 -0
  429. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/recordings/tree-sitter-language-pack.md +0 -0
  430. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/repomap.md +0 -0
  431. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/scripting.md +0 -0
  432. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/sessions.md +0 -0
  433. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  434. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  435. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  436. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/support.md +0 -0
  437. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  438. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  439. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting.md +0 -0
  440. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/browser.md +0 -0
  441. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/caching.md +0 -0
  442. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/commands.md +0 -0
  443. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/conventions.md +0 -0
  444. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/copypaste.md +0 -0
  445. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/images-urls.md +0 -0
  446. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/lint-test.md +0 -0
  447. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/modes.md +0 -0
  448. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/not-code.md +0 -0
  449. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/notifications.md +0 -0
  450. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/tips.md +0 -0
  451. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/voice.md +0 -0
  452. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage/watch.md +0 -0
  453. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/docs/usage.md +0 -0
  454. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli/website/share/index.md +0 -0
  455. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/dependency_links.txt +0 -0
  456. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/entry_points.txt +0 -0
  457. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/requires.txt +0 -0
  458. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/cecli_dev.egg-info/top_level.txt +0 -0
  459. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/docker/Dockerfile +0 -0
  460. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  461. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/pyproject.toml +0 -0
  462. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/pytest.ini +0 -0
  463. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/common-constraints.txt +0 -0
  464. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-dev.in +0 -0
  465. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-dev.txt +0 -0
  466. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-help.in +0 -0
  467. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-help.txt +0 -0
  468. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-playwright.in +0 -0
  469. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements-playwright.txt +0 -0
  470. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/requirements.in +0 -0
  471. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements/tree-sitter.in +0 -0
  472. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/requirements.txt +0 -0
  473. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/30k-image.py +0 -0
  474. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/Dockerfile.jekyll +0 -0
  475. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/__init__.py +0 -0
  476. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/blame.py +0 -0
  477. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/clean_metadata.py +0 -0
  478. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/cost_analyzer.py +0 -0
  479. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/dl_icons.py +0 -0
  480. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/generate_providers.py +0 -0
  481. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/get_contributor_list.js +0 -0
  482. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/get_hashline.py +0 -0
  483. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/history_prompts.py +0 -0
  484. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/homepage.py +0 -0
  485. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/issues.py +0 -0
  486. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/jekyll_build.sh +0 -0
  487. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/jekyll_run.sh +0 -0
  488. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/logo_svg.py +0 -0
  489. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/pip-compile.sh +0 -0
  490. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/recording_audio.py +0 -0
  491. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/redact-cast.py +0 -0
  492. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/rename_to_cecli.py +0 -0
  493. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/tmux_record.sh +0 -0
  494. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/tsl_pack_langs.py +0 -0
  495. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/update-blame.sh +0 -0
  496. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/update-docs.sh +0 -0
  497. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/update-history.py +0 -0
  498. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/versionbump.py +0 -0
  499. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/scripts/yank-old-versions.py +0 -0
  500. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/setup.cfg +0 -0
  501. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/shim.pyproject.toml +0 -0
  502. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/__init__.py +0 -0
  503. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/__init__.py +0 -0
  504. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_aws_credentials.py +0 -0
  505. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_background_commands.py +0 -0
  506. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_coder.py +0 -0
  507. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_commands.py +0 -0
  508. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_custom_commands.py +0 -0
  509. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_deprecated.py +0 -0
  510. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_editblock.py +0 -0
  511. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_editor.py +0 -0
  512. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_exceptions.py +0 -0
  513. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_find_or_blocks.py +0 -0
  514. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_history.py +0 -0
  515. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_io.py +0 -0
  516. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_linter.py +0 -0
  517. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_main.py +0 -0
  518. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_model_info_manager.py +0 -0
  519. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_model_provider_manager.py +0 -0
  520. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_models.py +0 -0
  521. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_onboarding.py +0 -0
  522. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_plugin_manager.py +0 -0
  523. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_prompts.py +0 -0
  524. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_reasoning.py +0 -0
  525. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_repo.py +0 -0
  526. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_repomap.py +0 -0
  527. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_run_cmd.py +0 -0
  528. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_sanity_check_repo.py +0 -0
  529. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_scripting.py +0 -0
  530. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_sendchat.py +0 -0
  531. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_sessions.py +0 -0
  532. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_skills.py +0 -0
  533. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_special.py +0 -0
  534. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_ssl_verification.py +0 -0
  535. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_udiff.py +0 -0
  536. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_urls.py +0 -0
  537. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_voice.py +0 -0
  538. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_watch.py +0 -0
  539. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/basic/test_wholefile.py +0 -0
  540. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/coders/test_copypaste_coder.py +0 -0
  541. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/conftest.py +0 -0
  542. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  543. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/chat-history.md +0 -0
  544. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/arduino/test.ino +0 -0
  545. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/c/test.c +0 -0
  546. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/chatito/test.chatito +0 -0
  547. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/clojure/test.clj +0 -0
  548. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  549. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/cpp/test.cpp +0 -0
  550. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/csharp/test.cs +0 -0
  551. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/d/test.d +0 -0
  552. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/dart/test.dart +0 -0
  553. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/elisp/test.el +0 -0
  554. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/elixir/test.ex +0 -0
  555. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/elm/test.elm +0 -0
  556. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/gleam/test.gleam +0 -0
  557. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/go/test.go +0 -0
  558. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/haskell/test.hs +0 -0
  559. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/hcl/test.tf +0 -0
  560. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/java/test.java +0 -0
  561. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/javascript/test.js +0 -0
  562. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/kotlin/test.kt +0 -0
  563. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/lua/test.lua +0 -0
  564. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/matlab/test.m +0 -0
  565. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/ocaml/test.ml +0 -0
  566. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  567. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/php/test.php +0 -0
  568. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/pony/test.pony +0 -0
  569. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/properties/test.properties +0 -0
  570. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/python/test.py +0 -0
  571. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/ql/test.ql +0 -0
  572. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/r/test.r +0 -0
  573. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/racket/test.rkt +0 -0
  574. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/ruby/test.rb +0 -0
  575. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/rust/test.rs +0 -0
  576. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/scala/test.scala +0 -0
  577. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/solidity/test.sol +0 -0
  578. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/swift/test.swift +0 -0
  579. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/tsx/test.tsx +0 -0
  580. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/typescript/test.ts +0 -0
  581. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/udev/test.rules +0 -0
  582. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/languages/zig/test.zig +0 -0
  583. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base/sample.js +0 -0
  584. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base/sample.py +0 -0
  585. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  586. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/watch.js +0 -0
  587. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/watch.lisp +0 -0
  588. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/watch.py +0 -0
  589. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/fixtures/watch_question.js +0 -0
  590. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/help/test_help.py +0 -0
  591. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/hooks/__init__.py +0 -0
  592. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/hooks/test_base.py +0 -0
  593. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/hooks/test_manager.py +0 -0
  594. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/hooks/test_registry.py +0 -0
  595. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/mcp/__init__.py +0 -0
  596. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/mcp/test_manager.py +0 -0
  597. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/scrape/test_playwright_disable.py +0 -0
  598. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/scrape/test_scrape.py +0 -0
  599. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/test_conversation_integration.py +0 -0
  600. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/test_conversation_system.py +0 -0
  601. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_git_branch.py +0 -0
  602. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_git_diff.py +0 -0
  603. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_grep.py +0 -0
  604. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_insert_block.py +0 -0
  605. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_registry.py +0 -0
  606. {cecli_dev-0.97.3 → cecli_dev-0.97.4}/tests/tools/test_show_numbered_context.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.97.3
3
+ Version: 0.97.4
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
@@ -84,12 +84,12 @@ Dynamic: license-file
84
84
 
85
85
  ## Why `cecli`?
86
86
 
87
- `cecli` (probably pronounced like "Cecily", aka `aider-ce`) is a community-driven fork of the [Aider](https://cecli.dev/) AI pair programming tool.
88
- Aider is a fantastic piece of software with a wonderful community but it has been painfully slow in receiving updates in the quickly evolving AI tooling space.
87
+ `cecli` (probably pronounced like "Cecily") is yet another cli agent crafted for extensibility and customization. Originally a fork of the [Aider](https://cecli.dev/) AI pair programming tool, we aim to make agentic coding as maximally effective as it can be based on the growing capabilities of large language models.
89
88
 
90
- We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in genuine FOSS principles and actively welcome contributors of all skill levels.
89
+ We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in the principles of FOSS and actively welcome contributors of all skill levels.
91
90
 
92
91
  If you are looking for bleeding-edge features or want to get your hands dirty with the internals of an AI coding agent, here's your sign.
92
+
93
93
  LLMs are a part of our lives from here on out so join us in learning about and crafting the future.
94
94
 
95
95
  ### Links
@@ -1,11 +1,11 @@
1
1
  ## Why `cecli`?
2
2
 
3
- `cecli` (probably pronounced like "Cecily", aka `aider-ce`) is a community-driven fork of the [Aider](https://cecli.dev/) AI pair programming tool.
4
- Aider is a fantastic piece of software with a wonderful community but it has been painfully slow in receiving updates in the quickly evolving AI tooling space.
3
+ `cecli` (probably pronounced like "Cecily") is yet another cli agent crafted for extensibility and customization. Originally a fork of the [Aider](https://cecli.dev/) AI pair programming tool, we aim to make agentic coding as maximally effective as it can be based on the growing capabilities of large language models.
5
4
 
6
- We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in genuine FOSS principles and actively welcome contributors of all skill levels.
5
+ We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in the principles of FOSS and actively welcome contributors of all skill levels.
7
6
 
8
7
  If you are looking for bleeding-edge features or want to get your hands dirty with the internals of an AI coding agent, here's your sign.
8
+
9
9
  LLMs are a part of our lives from here on out so join us in learning about and crafting the future.
10
10
 
11
11
  ### Links
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.97.3.dev"
3
+ __version__ = "0.97.4.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.97.3'
32
- __version_tuple__ = version_tuple = (0, 97, 3)
31
+ __version__ = version = '0.97.4'
32
+ __version_tuple__ = version_tuple = (0, 97, 4)
33
33
 
34
- __commit_id__ = commit_id = 'gebd79a406'
34
+ __commit_id__ = commit_id = 'g3f41a1bc9'
@@ -260,6 +260,12 @@ def get_parser(default_config_files, git_root):
260
260
  default=3,
261
261
  help="Maximum number of retries a model gets on malformed outputs (default: 3)",
262
262
  )
263
+ group.add_argument(
264
+ "--cost-limit",
265
+ type=float,
266
+ default=None,
267
+ help="Cost limit per session, exceeding this forces prompt confirmation (default: None)",
268
+ )
263
269
  group.add_argument(
264
270
  "--file-diffs",
265
271
  action=argparse.BooleanOptionalAction,
@@ -90,9 +90,13 @@ class AgentCoder(Coder):
90
90
  self.skip_cli_confirmations = False
91
91
  self.agent_finished = False
92
92
  self.agent_config = self._get_agent_config()
93
+ self._setup_agent()
93
94
  ToolRegistry.build_registry(agent_config=self.agent_config)
94
95
  super().__init__(*args, **kwargs)
95
96
 
97
+ def _setup_agent(self):
98
+ os.makedirs(".cecli/workspace", exist_ok=True)
99
+
96
100
  def _get_agent_config(self):
97
101
  """
98
102
  Parse and return agent configuration from args.agent_config.
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
 
3
3
  from ..commands import SwitchCoderSignal
4
- from ..helpers.conversation import ConversationManager, MessageTag
4
+ from ..helpers.conversation import ConversationManager
5
5
  from .ask_coder import AskCoder
6
6
  from .base_coder import Coder
7
7
 
@@ -61,9 +61,7 @@ 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(
65
- editor_coder, reset=True, reformat=True, preserve_tags=[MessageTag.DONE, MessageTag.CUR]
66
- )
64
+ ConversationManager.initialize(editor_coder, reset=True, reformat=True, preserve_tags=True)
67
65
 
68
66
  if self.verbose:
69
67
  editor_coder.show_announcements()
@@ -84,7 +82,7 @@ class ArchitectCoder(AskCoder):
84
82
  original_coder or self,
85
83
  reset=True,
86
84
  reformat=True,
87
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
85
+ preserve_tags=True,
88
86
  )
89
87
 
90
88
  self.total_cost = editor_coder.total_cost
@@ -96,7 +94,7 @@ class ArchitectCoder(AskCoder):
96
94
  original_coder or self,
97
95
  reset=True,
98
96
  reformat=True,
99
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
97
+ preserve_tags=True,
100
98
  )
101
99
 
102
100
  raise SwitchCoderSignal(main_model=self.main_model, edit_format="architect")
@@ -32,7 +32,7 @@ from uuid import uuid4 as generate_unique_id
32
32
 
33
33
  import httpx
34
34
  from litellm import experimental_mcp_client
35
- from litellm.types.utils import ChatCompletionMessageToolCall, Function, ModelResponse
35
+ from litellm.types.utils import ModelResponse
36
36
  from prompt_toolkit.patch_stdout import patch_stdout
37
37
  from rich.console import Console
38
38
 
@@ -40,7 +40,7 @@ import cecli.prompts.utils.system as prompts
40
40
  from cecli import __version__, models, urls, utils
41
41
  from cecli.commands import Commands, SwitchCoderSignal
42
42
  from cecli.exceptions import LiteLLMExceptions
43
- from cecli.helpers import command_parser, coroutines, nested
43
+ from cecli.helpers import command_parser, coroutines, nested, responses
44
44
  from cecli.helpers.conversation import (
45
45
  ConversationChunks,
46
46
  ConversationManager,
@@ -157,6 +157,7 @@ class Coder:
157
157
  last_user_message = ""
158
158
  uuid = ""
159
159
  model_kwargs = {}
160
+ cost_multiplier = 1
160
161
 
161
162
  # Task coordination state variables
162
163
  input_running = False
@@ -211,34 +212,14 @@ class Coder:
211
212
 
212
213
  use_kwargs = dict(from_coder.original_kwargs) # copy orig kwargs
213
214
 
214
- # If the edit format changes, we can't leave old ASSISTANT
215
- # messages in the chat history. The old edit format will
216
- # confused the new LLM. It may try and imitate it, disobeying
217
- # the system prompt.
218
- # Get DONE messages from ConversationManager
219
- done_messages = ConversationManager.get_messages_dict(MessageTag.DONE)
220
- if edit_format != from_coder.edit_format and done_messages and summarize_from_coder:
221
- try:
222
- io.tool_warning("Summarizing messages, please wait...")
223
- done_messages = await from_coder.summarizer.summarize_all(done_messages)
224
- except (KeyboardInterrupt, ValueError):
225
- # If summarization fails, keep the original messages and warn the user
226
- io.tool_warning(
227
- "Chat history summarization failed, continuing with full history"
228
- )
229
-
230
- # Bring along context from the old Coder
231
- # Get CUR messages from ConversationManager
232
- cur_messages = ConversationManager.get_messages_dict(MessageTag.CUR)
233
-
234
215
  update = dict(
235
216
  fnames=list(from_coder.abs_fnames),
236
217
  read_only_fnames=list(from_coder.abs_read_only_fnames), # Copy read-only files
237
218
  read_only_stubs_fnames=list(
238
219
  from_coder.abs_read_only_stubs_fnames
239
220
  ), # Copy read-only stubs
240
- done_messages=done_messages,
241
- cur_messages=cur_messages,
221
+ done_messages=[],
222
+ cur_messages=[],
242
223
  coder_commit_hashes=from_coder.coder_commit_hashes,
243
224
  commands=from_coder.commands.clone(),
244
225
  total_cost=from_coder.total_cost,
@@ -415,22 +396,6 @@ class Coder:
415
396
  self.add_gitignore_files = add_gitignore_files
416
397
  self.abs_read_only_stubs_fnames = set()
417
398
 
418
- # Always use ConversationManager as the source of truth
419
- # Add any provided messages to ConversationManager
420
- if done_messages:
421
- for msg in done_messages:
422
- ConversationManager.add_message(
423
- message_dict=msg,
424
- tag=MessageTag.DONE,
425
- )
426
-
427
- if cur_messages:
428
- for msg in cur_messages:
429
- ConversationManager.add_message(
430
- message_dict=msg,
431
- tag=MessageTag.CUR,
432
- )
433
-
434
399
  self.io = io
435
400
  self.io.coder = weakref.ref(self)
436
401
 
@@ -1616,6 +1581,18 @@ class Coder:
1616
1581
  self.reflected_message = None
1617
1582
  self.tool_reflection = False
1618
1583
 
1584
+ if float(self.total_cost) > self.cost_multiplier * (
1585
+ nested.getter(self.args, "cost_limit", float("inf")) or float("inf")
1586
+ ):
1587
+ if await self.io.confirm_ask(
1588
+ "You have reached your configured cost limit. Continue?",
1589
+ group_response="Cost Limit",
1590
+ explicit_yes_required=True,
1591
+ ):
1592
+ Coder.cost_multiplier += 1
1593
+ else:
1594
+ return
1595
+
1619
1596
  async for _ in self.send_message(message):
1620
1597
  pass
1621
1598
 
@@ -2405,7 +2382,7 @@ class Coder:
2405
2382
  force=True, # Force update existing message
2406
2383
  )
2407
2384
 
2408
- if edited and self.auto_test:
2385
+ if edited and self.auto_test and self.test_cmd:
2409
2386
  test_errors = await self.commands.execute("test", self.test_cmd)
2410
2387
  self.test_outcome = not test_errors
2411
2388
  if test_errors:
@@ -3334,66 +3311,16 @@ class Coder:
3334
3311
  # If no native tool calls, check if the content contains JSON tool calls
3335
3312
  # This handles models that write JSON in text instead of using native calling
3336
3313
  if not self.partial_response_tool_calls and self.partial_response_content:
3337
- try:
3338
- # Simple extraction of JSON-like structures that look like tool calls
3339
- # Only look for tool calls if it looks like JSON
3340
- if "{" in self.partial_response_content or "[" in self.partial_response_content:
3341
- json_chunks = utils.split_concatenated_json(self.partial_response_content)
3342
- extracted_calls = []
3343
- chunk_index = 0
3344
-
3345
- for chunk in json_chunks:
3346
- chunk_index += 1
3347
- try:
3348
- json_obj = json.loads(chunk)
3349
- if (
3350
- isinstance(json_obj, dict)
3351
- and "name" in json_obj
3352
- and "arguments" in json_obj
3353
- ):
3354
- # Create a Pydantic model for the tool call
3355
- function_obj = Function(
3356
- name=json_obj["name"],
3357
- arguments=(
3358
- json.dumps(json_obj["arguments"])
3359
- if isinstance(json_obj["arguments"], (dict, list))
3360
- else str(json_obj["arguments"])
3361
- ),
3362
- )
3363
- tool_call_obj = ChatCompletionMessageToolCall(
3364
- type="function",
3365
- function=function_obj,
3366
- id=f"call_{len(extracted_calls)}_{int(time.time())}_{chunk_index}",
3367
- )
3368
- extracted_calls.append(tool_call_obj)
3369
- elif isinstance(json_obj, list):
3370
- for item in json_obj:
3371
- if (
3372
- isinstance(item, dict)
3373
- and "name" in item
3374
- and "arguments" in item
3375
- ):
3376
- function_obj = Function(
3377
- name=item["name"],
3378
- arguments=(
3379
- json.dumps(item["arguments"])
3380
- if isinstance(item["arguments"], (dict, list))
3381
- else str(item["arguments"])
3382
- ),
3383
- )
3384
- tool_call_obj = ChatCompletionMessageToolCall(
3385
- type="function",
3386
- function=function_obj,
3387
- id=f"call_{len(extracted_calls)}_{int(time.time())}_{chunk_index}",
3388
- )
3389
- extracted_calls.append(tool_call_obj)
3390
- except json.JSONDecodeError:
3391
- continue
3392
-
3393
- if extracted_calls:
3394
- self.partial_response_tool_calls = extracted_calls
3395
- except Exception:
3396
- pass
3314
+ extracted_calls = responses.extract_tools_from_content_json(
3315
+ self.partial_response_content
3316
+ )
3317
+ if not extracted_calls:
3318
+ extracted_calls = responses.extract_tools_from_content_xml(
3319
+ self.partial_response_content
3320
+ )
3321
+
3322
+ if extracted_calls:
3323
+ self.partial_response_tool_calls = extracted_calls
3397
3324
 
3398
3325
  return response, func_err, content_err
3399
3326
 
@@ -3,7 +3,7 @@ from typing import List
3
3
  import cecli.models as models
4
4
  from cecli.commands.utils.base_command import BaseCommand
5
5
  from cecli.commands.utils.helpers import format_command_result
6
- from cecli.helpers.conversation import ConversationManager, MessageTag
6
+ from cecli.helpers.conversation import ConversationManager
7
7
 
8
8
 
9
9
  class AgentModelCommand(BaseCommand):
@@ -69,7 +69,7 @@ class AgentModelCommand(BaseCommand):
69
69
  temp_coder,
70
70
  reset=True,
71
71
  reformat=True,
72
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
72
+ preserve_tags=True,
73
73
  )
74
74
 
75
75
  verbose = kwargs.get("verbose", False)
@@ -86,7 +86,7 @@ class AgentModelCommand(BaseCommand):
86
86
  original_coder,
87
87
  reset=True,
88
88
  reformat=True,
89
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
89
+ preserve_tags=True,
90
90
  )
91
91
 
92
92
  # Restore the original model configuration
@@ -3,7 +3,7 @@ from typing import List
3
3
  import cecli.models as models
4
4
  from cecli.commands.utils.base_command import BaseCommand
5
5
  from cecli.commands.utils.helpers import format_command_result
6
- from cecli.helpers.conversation import ConversationManager, MessageTag
6
+ from cecli.helpers.conversation import ConversationManager
7
7
 
8
8
 
9
9
  class EditorModelCommand(BaseCommand):
@@ -69,7 +69,7 @@ class EditorModelCommand(BaseCommand):
69
69
  temp_coder,
70
70
  reset=True,
71
71
  reformat=True,
72
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
72
+ preserve_tags=True,
73
73
  )
74
74
 
75
75
  verbose = kwargs.get("verbose", False)
@@ -86,7 +86,7 @@ class EditorModelCommand(BaseCommand):
86
86
  original_coder,
87
87
  reset=True,
88
88
  reformat=True,
89
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
89
+ preserve_tags=True,
90
90
  )
91
91
 
92
92
  # Restore the original model configuration
@@ -3,7 +3,7 @@ from typing import List
3
3
  import cecli.models as models
4
4
  from cecli.commands.utils.base_command import BaseCommand
5
5
  from cecli.commands.utils.helpers import format_command_result
6
- from cecli.helpers.conversation import ConversationManager, MessageTag
6
+ from cecli.helpers.conversation import ConversationManager
7
7
 
8
8
 
9
9
  class ModelCommand(BaseCommand):
@@ -73,7 +73,7 @@ class ModelCommand(BaseCommand):
73
73
  temp_coder,
74
74
  reset=True,
75
75
  reformat=True,
76
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
76
+ preserve_tags=True,
77
77
  )
78
78
 
79
79
  verbose = kwargs.get("verbose", False)
@@ -90,7 +90,7 @@ class ModelCommand(BaseCommand):
90
90
  original_coder,
91
91
  reset=True,
92
92
  reformat=True,
93
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
93
+ preserve_tags=True,
94
94
  )
95
95
 
96
96
  # Restore the original model configuration
@@ -64,6 +64,7 @@ class TokensCommand(BaseCommand):
64
64
  tokens_done = 0
65
65
  tokens_cur = 0
66
66
  tokens_diffs = 0
67
+ tokens_file_contexts = 0
67
68
 
68
69
  if msgs_done:
69
70
  tokens_done = coder.main_model.token_count(msgs_done)
@@ -1,7 +1,7 @@
1
1
  from abc import ABC, ABCMeta, abstractmethod
2
2
  from typing import List
3
3
 
4
- from cecli.helpers.conversation import ConversationManager, MessageTag
4
+ from cecli.helpers.conversation import ConversationManager
5
5
 
6
6
 
7
7
  class CommandMeta(ABCMeta):
@@ -152,9 +152,7 @@ class BaseCommand(ABC, metaclass=CommandMeta):
152
152
  new_coder = await Coder.create(**kwargs)
153
153
 
154
154
  # Re-initialize ConversationManager with new coder
155
- ConversationManager.initialize(
156
- new_coder, reset=True, reformat=True, preserve_tags=[MessageTag.DONE, MessageTag.CUR]
157
- )
155
+ ConversationManager.initialize(new_coder, reset=True, reformat=True, preserve_tags=True)
158
156
 
159
157
  await new_coder.generate(user_message=user_msg, preproc=False)
160
158
  coder.coder_commit_hashes = new_coder.coder_commit_hashes
@@ -164,7 +162,7 @@ class BaseCommand(ABC, metaclass=CommandMeta):
164
162
  original_coder,
165
163
  reset=True,
166
164
  reformat=True,
167
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
165
+ preserve_tags=True,
168
166
  )
169
167
 
170
168
  from cecli.commands import SwitchCoderSignal
@@ -3,7 +3,7 @@ from typing import List
3
3
  import cecli.models as models
4
4
  from cecli.commands.utils.base_command import BaseCommand
5
5
  from cecli.commands.utils.helpers import format_command_result
6
- from cecli.helpers.conversation import ConversationManager, MessageTag
6
+ from cecli.helpers.conversation import ConversationManager
7
7
 
8
8
 
9
9
  class WeakModelCommand(BaseCommand):
@@ -68,7 +68,7 @@ class WeakModelCommand(BaseCommand):
68
68
  temp_coder,
69
69
  reset=True,
70
70
  reformat=True,
71
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
71
+ preserve_tags=True,
72
72
  )
73
73
 
74
74
  verbose = kwargs.get("verbose", False)
@@ -85,7 +85,7 @@ class WeakModelCommand(BaseCommand):
85
85
  original_coder,
86
86
  reset=True,
87
87
  reformat=True,
88
- preserve_tags=[MessageTag.DONE, MessageTag.CUR],
88
+ preserve_tags=True,
89
89
  )
90
90
 
91
91
  # Restore the original model configuration
@@ -2,7 +2,7 @@ import copy
2
2
  import json
3
3
  import time
4
4
  import weakref
5
- from typing import Any, Dict, List, Optional, Tuple
5
+ from typing import Any, Dict, List, Optional, Tuple, Union
6
6
 
7
7
  from cecli.helpers import nested
8
8
 
@@ -38,7 +38,7 @@ class ConversationManager:
38
38
  coder,
39
39
  reset: bool = False,
40
40
  reformat: bool = False,
41
- preserve_tags: Optional[List[str]] = None,
41
+ preserve_tags: Optional[Union[List[str], bool]] = None,
42
42
  ) -> None:
43
43
  """
44
44
  Set up singleton with weak reference to coder.
@@ -56,6 +56,14 @@ class ConversationManager:
56
56
  cls._initialized = True
57
57
 
58
58
  preserved_messages = []
59
+ if preserve_tags is True:
60
+ preserve_tags = [
61
+ MessageTag.DONE,
62
+ MessageTag.CUR,
63
+ MessageTag.DIFFS,
64
+ MessageTag.FILE_CONTEXTS,
65
+ ]
66
+
59
67
  if reset and preserve_tags:
60
68
  # New approach: loop over every single tag type and only clear tags NOT in preserve_tags
61
69
  # Get all MessageTag values
@@ -78,20 +86,10 @@ class ConversationManager:
78
86
 
79
87
  # If preserve_tags is truthy, re-add preserved messages with updated timestamps after reformat block
80
88
  if preserve_tags and preserved_messages:
81
- for tag_type in preserve_tags:
82
- cls.clear_tag(tag_type)
83
-
89
+ offset = 0
84
90
  for msg in preserved_messages:
85
- cls.add_message(
86
- message_dict=msg.message_dict,
87
- tag=MessageTag(msg.tag),
88
- priority=msg.priority,
89
- timestamp=time.monotonic_ns(), # Updated timestamp
90
- mark_for_delete=msg.mark_for_delete,
91
- force=True,
92
- update_timestamp=True,
93
- message_id=msg.message_id,
94
- )
91
+ offset += 1
92
+ msg.timestamp = time.monotonic_ns() + offset
95
93
 
96
94
  # Enable debug mode if coder has verbose attribute and it's True
97
95
  if hasattr(coder, "verbose") and coder.verbose:
@@ -372,15 +370,22 @@ class ConversationManager:
372
370
  Returns:
373
371
  True if a message was removed, False otherwise
374
372
  """
375
- for message in cls._messages:
376
- if message.hash_key == hash_key:
377
- cls._messages.remove(message)
373
+ messages_to_remove = [m for m in cls._messages if m.hash_key == hash_key]
374
+ if not messages_to_remove:
375
+ return False
376
+
377
+ tags_to_clear = set()
378
+ for message in messages_to_remove:
379
+ cls._messages.remove(message)
380
+ if message.message_id in cls._message_index:
378
381
  del cls._message_index[message.message_id]
379
- # Clear cache for this tag and all messages cache since message was removed
380
- cls._tag_cache.pop(message.tag, None)
381
- cls._tag_cache.pop(cls._ALL_MESSAGES_CACHE_KEY, None)
382
- return True
383
- return False
382
+ tags_to_clear.add(message.tag)
383
+
384
+ for tag in tags_to_clear:
385
+ cls._tag_cache.pop(tag, None)
386
+ cls._tag_cache.pop(cls._ALL_MESSAGES_CACHE_KEY, None)
387
+
388
+ return True
384
389
 
385
390
  @classmethod
386
391
  def get_tag_messages(cls, tag: str) -> List[BaseMessage]: