cecli-dev 0.97.4__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 (617) hide show
  1. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/CONTRIBUTING.md +1 -1
  2. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/PKG-INFO +7 -5
  3. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/README.md +3 -3
  4. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/benchmark.py +38 -6
  5. cecli_dev-0.98.0/benchmark/variations.1.sh +203 -0
  6. cecli_dev-0.98.0/benchmark/variations.2.sh +203 -0
  7. cecli_dev-0.97.4/benchmark/primary_variations.sh → cecli_dev-0.98.0/benchmark/variations.3.sh +9 -7
  8. cecli_dev-0.98.0/benchmark/variations.4.sh +203 -0
  9. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/__init__.py +1 -1
  10. cecli_dev-0.98.0/cecli/_version.py +24 -0
  11. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/args.py +15 -5
  12. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/agent_coder.py +178 -148
  13. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/architect_coder.py +6 -7
  14. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/base_coder.py +195 -124
  15. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/hashline_coder.py +21 -4
  16. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/search_replace.py +2 -2
  17. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/single_wholefile_func_coder.py +3 -3
  18. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/wholefile_func_coder.py +3 -4
  19. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/__init__.py +3 -0
  20. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/agent_model.py +4 -10
  21. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/clear.py +8 -12
  22. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/context_management.py +5 -9
  23. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/copy.py +2 -2
  24. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/core.py +0 -6
  25. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/drop.py +10 -3
  26. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/editor_model.py +4 -10
  27. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/ls.py +13 -1
  28. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/map.py +2 -2
  29. cecli_dev-0.98.0/cecli/commands/map_refresh.py +90 -0
  30. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/model.py +4 -10
  31. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/reset.py +6 -6
  32. cecli_dev-0.98.0/cecli/commands/rules.py +148 -0
  33. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/run.py +7 -3
  34. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/tokens.py +19 -10
  35. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/undo.py +4 -8
  36. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/utils/base_command.py +5 -5
  37. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/utils/helpers.py +59 -4
  38. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/weak_model.py +4 -9
  39. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/web.py +7 -3
  40. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/deprecated_args.py +11 -0
  41. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/__init__.py +4 -9
  42. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/base_message.py +13 -0
  43. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/files.py +142 -137
  44. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/integration.py +232 -199
  45. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/manager.py +190 -188
  46. cecli_dev-0.98.0/cecli/helpers/conversation/service.py +40 -0
  47. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/tags.py +4 -1
  48. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/hashline.py +371 -581
  49. cecli_dev-0.98.0/cecli/helpers/hashpos/__init__.py +3 -0
  50. cecli_dev-0.98.0/cecli/helpers/hashpos/hashpos.py +195 -0
  51. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/requests.py +28 -36
  52. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/main.py +36 -12
  53. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mcp/manager.py +1 -1
  54. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mcp/utils.py +10 -5
  55. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/models.py +55 -36
  56. cecli_dev-0.98.0/cecli/prompts/agent.yml +79 -0
  57. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/hashline.yml +29 -21
  58. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/repo.py +12 -4
  59. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/repomap.py +44 -6
  60. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/resources/model-metadata.json +1363 -3941
  61. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/sessions.py +15 -14
  62. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/__init__.py +2 -4
  63. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/command.py +2 -2
  64. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/command_interactive.py +1 -1
  65. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/context_manager.py +1 -0
  66. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/delete_text.py +18 -7
  67. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/insert_text.py +17 -6
  68. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/replace_text.py +43 -57
  69. cecli_dev-0.98.0/cecli/tools/show_context.py +256 -0
  70. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/undo_change.py +2 -0
  71. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/update_todo_list.py +4 -1
  72. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/__init__.py +10 -7
  73. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/app.py +28 -10
  74. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/io.py +1 -1
  75. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/footer.py +1 -1
  76. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/worker.py +6 -4
  77. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/watch.py +2 -1
  78. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/recording.css +0 -1
  79. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_hero.scss +0 -1
  80. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_testimonials.scss +1 -4
  81. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/global-overrides.scss +12 -0
  82. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/aider_conf.md +0 -3
  83. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/dotenv.md +0 -3
  84. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/hooks.md +4 -4
  85. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/options.md +0 -10
  86. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/index.md +2 -2
  87. cecli_dev-0.98.0/cecli/website/docs/usage/conventions.md +42 -0
  88. {cecli_dev-0.97.4/cecli/website/docs → cecli_dev-0.98.0/cecli/website/docs/usage}/sessions.md +6 -0
  89. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/PKG-INFO +7 -5
  90. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/SOURCES.txt +11 -12
  91. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/requires.txt +3 -1
  92. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/common-constraints.txt +14 -1
  93. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-dev.in +2 -0
  94. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-dev.txt +41 -1
  95. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-help.txt +2 -0
  96. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements.in +1 -1
  97. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements.txt +4 -0
  98. cecli_dev-0.98.0/scripts/get_hashline.py +58 -0
  99. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_coder.py +15 -8
  100. cecli_dev-0.98.0/tests/basic/test_hashline.py +189 -0
  101. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_main.py +41 -1
  102. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_models.py +11 -1
  103. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_repomap.py +2 -2
  104. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_wholefile.py +4 -4
  105. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/hooks/test_base.py +14 -14
  106. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/hooks/test_manager.py +21 -21
  107. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/hooks/test_registry.py +4 -4
  108. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/test_conversation_integration.py +27 -20
  109. cecli_dev-0.98.0/tests/test_conversation_system.py +330 -0
  110. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/tools/test_insert_block.py +28 -29
  111. cecli_dev-0.97.4/tests/tools/test_show_numbered_context.py → cecli_dev-0.98.0/tests/tools/test_show_context.py +19 -16
  112. cecli_dev-0.97.4/cecli/_version.py +0 -34
  113. cecli_dev-0.97.4/cecli/commands/map_refresh.py +0 -46
  114. cecli_dev-0.97.4/cecli/prompts/agent.yml +0 -64
  115. cecli_dev-0.97.4/cecli/tools/indent_text.py +0 -222
  116. cecli_dev-0.97.4/cecli/tools/show_numbered_context.py +0 -215
  117. cecli_dev-0.97.4/cecli/website/docs/recordings/auto-accept-architect.md +0 -31
  118. cecli_dev-0.97.4/cecli/website/docs/recordings/dont-drop-original-read-files.md +0 -35
  119. cecli_dev-0.97.4/cecli/website/docs/recordings/index.md +0 -21
  120. cecli_dev-0.97.4/cecli/website/docs/recordings/model-accepts-settings.md +0 -69
  121. cecli_dev-0.97.4/cecli/website/docs/recordings/tree-sitter-language-pack.md +0 -80
  122. cecli_dev-0.97.4/cecli/website/docs/usage/browser.md +0 -57
  123. cecli_dev-0.97.4/cecli/website/docs/usage/caching.md +0 -49
  124. cecli_dev-0.97.4/cecli/website/docs/usage/conventions.md +0 -119
  125. cecli_dev-0.97.4/scripts/get_hashline.py +0 -31
  126. cecli_dev-0.97.4/tests/basic/test_hashline.py +0 -925
  127. cecli_dev-0.97.4/tests/test_conversation_system.py +0 -710
  128. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.dockerignore +0 -0
  129. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.flake8 +0 -0
  130. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.gitattributes +0 -0
  131. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  132. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/check_pypi_version.yml +0 -0
  133. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/docker-build-test.yml +0 -0
  134. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/docker-release.yml +0 -0
  135. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/issues.yml +0 -0
  136. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/pages.yml +0 -0
  137. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/pre-commit.yml +0 -0
  138. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/release.yml +0 -0
  139. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/ubuntu-tests.yml +0 -0
  140. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/windows-tests.yml +0 -0
  141. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  142. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.gitignore +0 -0
  143. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/.pre-commit-config.yaml +0 -0
  144. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/CHANGELOG.md +0 -0
  145. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/CNAME +0 -0
  146. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/HISTORY.md +0 -0
  147. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/LICENSE.txt +0 -0
  148. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/MANIFEST.in +0 -0
  149. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/Dockerfile +0 -0
  150. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/README.md +0 -0
  151. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/__init__.py +0 -0
  152. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/benchmark_classic.py +0 -0
  153. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/clone-exercism.sh +0 -0
  154. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/cpp-test.sh +0 -0
  155. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/docker.sh +0 -0
  156. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/docker_build.sh +0 -0
  157. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/install-docker-ubuntu.sh +0 -0
  158. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/npm-test.sh +0 -0
  159. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/over_time.py +0 -0
  160. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/plot.sh +0 -0
  161. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/plots.py +0 -0
  162. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/problem_stats.py +0 -0
  163. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/prompts.py +0 -0
  164. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/refactor_tools.py +0 -0
  165. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/rsync.sh +0 -0
  166. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/rungrid.py +0 -0
  167. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/swe-bench-lite.txt +0 -0
  168. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/swe-bench.txt +0 -0
  169. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/swe_bench.py +0 -0
  170. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/benchmark/test_benchmark.py +0 -0
  171. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/__main__.py +0 -0
  172. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/args_formatter.py +0 -0
  173. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/change_tracker.py +0 -0
  174. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/__init__.py +0 -0
  175. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/ask_coder.py +0 -0
  176. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/chat_chunks.py +0 -0
  177. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/context_coder.py +0 -0
  178. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/copypaste_coder.py +0 -0
  179. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editblock_coder.py +0 -0
  180. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  181. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editblock_func_coder.py +0 -0
  182. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  183. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editor_editblock_coder.py +0 -0
  184. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/editor_whole_coder.py +0 -0
  185. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/help_coder.py +0 -0
  186. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/patch_coder.py +0 -0
  187. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/shell.py +0 -0
  188. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/udiff_coder.py +0 -0
  189. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/udiff_simple.py +0 -0
  190. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/coders/wholefile_coder.py +0 -0
  191. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/add.py +0 -0
  192. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/agent.py +0 -0
  193. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/architect.py +0 -0
  194. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/ask.py +0 -0
  195. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/chat_mode.py +0 -0
  196. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/code.py +0 -0
  197. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/command_prefix.py +0 -0
  198. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/commit.py +0 -0
  199. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/compact.py +0 -0
  200. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/context.py +0 -0
  201. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/context_blocks.py +0 -0
  202. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/copy_context.py +0 -0
  203. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/diff.py +0 -0
  204. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/editor.py +0 -0
  205. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/exit.py +0 -0
  206. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/git.py +0 -0
  207. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/hashline.py +0 -0
  208. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/help.py +0 -0
  209. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/history_search.py +0 -0
  210. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/hooks.py +0 -0
  211. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/lint.py +0 -0
  212. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/list_sessions.py +0 -0
  213. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/load.py +0 -0
  214. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/load_hook.py +0 -0
  215. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/load_mcp.py +0 -0
  216. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/load_session.py +0 -0
  217. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/load_skill.py +0 -0
  218. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/models.py +0 -0
  219. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/multiline_mode.py +0 -0
  220. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/paste.py +0 -0
  221. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/quit.py +0 -0
  222. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/read_only.py +0 -0
  223. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/read_only_stub.py +0 -0
  224. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/reasoning_effort.py +0 -0
  225. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/remove_hook.py +0 -0
  226. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/remove_mcp.py +0 -0
  227. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/remove_skill.py +0 -0
  228. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/report.py +0 -0
  229. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/save.py +0 -0
  230. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/save_session.py +0 -0
  231. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/settings.py +0 -0
  232. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  233. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/terminal_setup.py +0 -0
  234. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/test.py +0 -0
  235. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/think_tokens.py +0 -0
  236. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/utils/__init__.py +0 -0
  237. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/utils/registry.py +0 -0
  238. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/utils/save_load_manager.py +0 -0
  239. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/commands/voice.py +0 -0
  240. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/diffs.py +0 -0
  241. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/dump.py +0 -0
  242. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/editor.py +0 -0
  243. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/exceptions.py +0 -0
  244. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/format_settings.py +0 -0
  245. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/help.py +0 -0
  246. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/help_pats.py +0 -0
  247. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/__init__.py +0 -0
  248. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/background_commands.py +0 -0
  249. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/command_parser.py +0 -0
  250. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/conversation/utils.py +0 -0
  251. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/copypaste.py +0 -0
  252. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/coroutines.py +0 -0
  253. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/file_searcher.py +0 -0
  254. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/model_providers.py +0 -0
  255. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/nested.py +0 -0
  256. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/plugin_manager.py +0 -0
  257. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/profiler.py +0 -0
  258. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/responses.py +0 -0
  259. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/similarity.py +0 -0
  260. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/helpers/skills.py +0 -0
  261. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/history.py +0 -0
  262. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/__init__.py +0 -0
  263. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/base.py +0 -0
  264. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/integration.py +0 -0
  265. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/manager.py +0 -0
  266. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/registry.py +0 -0
  267. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/hooks/types.py +0 -0
  268. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/interruptible_input.py +0 -0
  269. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/io.py +0 -0
  270. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/linter.py +0 -0
  271. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/llm.py +0 -0
  272. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mcp/__init__.py +0 -0
  273. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mcp/oauth.py +0 -0
  274. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mcp/server.py +0 -0
  275. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/mdstream.py +0 -0
  276. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/onboarding.py +0 -0
  277. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/__init__.py +0 -0
  278. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/architect.yml +0 -0
  279. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/ask.yml +0 -0
  280. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/base.yml +0 -0
  281. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/context.yml +0 -0
  282. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/copypaste.yml +0 -0
  283. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editblock.yml +0 -0
  284. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editblock_fenced.yml +0 -0
  285. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editblock_func.yml +0 -0
  286. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  287. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editor_editblock.yml +0 -0
  288. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/editor_whole.yml +0 -0
  289. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/help.yml +0 -0
  290. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/patch.yml +0 -0
  291. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  292. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/udiff.yml +0 -0
  293. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/udiff_simple.yml +0 -0
  294. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/utils/__init__.py +0 -0
  295. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/utils/registry.py +0 -0
  296. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/utils/system.py +0 -0
  297. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/wholefile.yml +0 -0
  298. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/prompts/wholefile_func.yml +0 -0
  299. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  300. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  301. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  302. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  303. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  304. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  305. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  306. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  307. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  308. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  309. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  310. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  311. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  312. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  313. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  314. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  315. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  316. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  317. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  318. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  319. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  320. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  321. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  322. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  323. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  324. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  325. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  326. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  327. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  328. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  329. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  330. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  331. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  332. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  333. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  334. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  335. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  336. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  337. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  338. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  339. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  340. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  341. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  342. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  343. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  344. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  345. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  346. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  347. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  348. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  349. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  350. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  351. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  352. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  353. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  354. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  355. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  356. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  357. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/reasoning_tags.py +0 -0
  358. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/report.py +0 -0
  359. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/resources/__init__.py +0 -0
  360. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/resources/model-settings.yml +0 -0
  361. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/resources/providers.json +0 -0
  362. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/run_cmd.py +0 -0
  363. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/scrape.py +0 -0
  364. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/sendchat.py +0 -0
  365. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/special.py +0 -0
  366. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/finished.py +0 -0
  367. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_branch.py +0 -0
  368. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_diff.py +0 -0
  369. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_log.py +0 -0
  370. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_remote.py +0 -0
  371. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_show.py +0 -0
  372. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/git_status.py +0 -0
  373. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/grep.py +0 -0
  374. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/list_changes.py +0 -0
  375. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/load_skill.py +0 -0
  376. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/ls.py +0 -0
  377. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/remove_skill.py +0 -0
  378. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/thinking.py +0 -0
  379. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/utils/base_tool.py +0 -0
  380. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/utils/helpers.py +0 -0
  381. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/utils/output.py +0 -0
  382. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/utils/registry.py +0 -0
  383. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/view_files_matching.py +0 -0
  384. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tools/view_files_with_symbol.py +0 -0
  385. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/styles.tcss +0 -0
  386. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/__init__.py +0 -0
  387. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/completion_bar.py +0 -0
  388. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/file_list.py +0 -0
  389. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/input_area.py +0 -0
  390. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/input_container.py +0 -0
  391. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/key_hints.py +0 -0
  392. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/output.py +0 -0
  393. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/tui/widgets/status_bar.py +0 -0
  394. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/urls.py +0 -0
  395. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/utils.py +0 -0
  396. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/versioncheck.py +0 -0
  397. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/voice.py +0 -0
  398. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/waiting.py +0 -0
  399. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/watch_prompts.py +0 -0
  400. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/Gemfile +0 -0
  401. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/blame.md +0 -0
  402. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/get-started.md +0 -0
  403. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/help-tip.md +0 -0
  404. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/help.md +0 -0
  405. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/install.md +0 -0
  406. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/keys.md +0 -0
  407. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/model-warnings.md +0 -0
  408. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/multi-line.md +0 -0
  409. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/python-m-aider.md +0 -0
  410. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/recording.md +0 -0
  411. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_includes/works-best.md +0 -0
  412. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_features.scss +0 -0
  413. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_footer.scss +0 -0
  414. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_info.scss +0 -0
  415. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_layout.scss +0 -0
  416. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_reset.scss +0 -0
  417. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_typography.scss +0 -0
  418. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/_variables.scss +0 -0
  419. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/_sass/custom/custom.scss +0 -0
  420. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  421. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/agent-mode.md +0 -0
  422. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/api-keys.md +0 -0
  423. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/custom-commands.md +0 -0
  424. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  425. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/editor.md +0 -0
  426. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/mcp.md +0 -0
  427. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/model-aliases.md +0 -0
  428. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/reasoning.md +0 -0
  429. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/security.md +0 -0
  430. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/skills.md +0 -0
  431. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config/tui.md +0 -0
  432. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/config.md +0 -0
  433. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/faq.md +0 -0
  434. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/git.md +0 -0
  435. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/install/docker.md +0 -0
  436. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/install/optional.md +0 -0
  437. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/install.md +0 -0
  438. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/languages.md +0 -0
  439. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  440. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/legal/privacy.md +0 -0
  441. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/anthropic.md +0 -0
  442. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/azure.md +0 -0
  443. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/bedrock.md +0 -0
  444. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/cohere.md +0 -0
  445. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/deepseek.md +0 -0
  446. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/gemini.md +0 -0
  447. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/github.md +0 -0
  448. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/groq.md +0 -0
  449. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  450. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/ollama.md +0 -0
  451. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  452. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/openai.md +0 -0
  453. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/openrouter.md +0 -0
  454. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/other.md +0 -0
  455. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/vertex.md +0 -0
  456. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/warnings.md +0 -0
  457. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms/xai.md +0 -0
  458. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/llms.md +0 -0
  459. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/more/analytics.md +0 -0
  460. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/more/edit-formats.md +0 -0
  461. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/more/infinite-output.md +0 -0
  462. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/more-info.md +0 -0
  463. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/repomap.md +0 -0
  464. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/scripting.md +0 -0
  465. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  466. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  467. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  468. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  469. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  470. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  471. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  472. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/troubleshooting.md +0 -0
  473. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/commands.md +0 -0
  474. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/copypaste.md +0 -0
  475. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/images-urls.md +0 -0
  476. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/lint-test.md +0 -0
  477. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/modes.md +0 -0
  478. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/not-code.md +0 -0
  479. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/notifications.md +0 -0
  480. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/tips.md +0 -0
  481. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/voice.md +0 -0
  482. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage/watch.md +0 -0
  483. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/docs/usage.md +0 -0
  484. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli/website/share/index.md +0 -0
  485. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  486. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  487. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/cecli_dev.egg-info/top_level.txt +0 -0
  488. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/docker/Dockerfile +0 -0
  489. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  490. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/pyproject.toml +0 -0
  491. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/pytest.ini +0 -0
  492. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-help.in +0 -0
  493. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-playwright.in +0 -0
  494. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/requirements-playwright.txt +0 -0
  495. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/requirements/tree-sitter.in +0 -0
  496. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/30k-image.py +0 -0
  497. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/Dockerfile.jekyll +0 -0
  498. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/__init__.py +0 -0
  499. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/blame.py +0 -0
  500. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/clean_metadata.py +0 -0
  501. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/cost_analyzer.py +0 -0
  502. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/dl_icons.py +0 -0
  503. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/filter-chat-mode.js +0 -0
  504. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/generate_providers.py +0 -0
  505. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/get_contributor_list.js +0 -0
  506. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/history_prompts.py +0 -0
  507. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/homepage.py +0 -0
  508. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/issues.py +0 -0
  509. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/jekyll_build.sh +0 -0
  510. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/jekyll_run.sh +0 -0
  511. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/logo_svg.py +0 -0
  512. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/pip-compile.sh +0 -0
  513. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/recording_audio.py +0 -0
  514. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/redact-cast.py +0 -0
  515. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/rename_to_cecli.py +0 -0
  516. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/tmux_record.sh +0 -0
  517. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/tsl_pack_langs.py +0 -0
  518. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/update-blame.sh +0 -0
  519. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/update-docs.sh +0 -0
  520. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/update-history.py +0 -0
  521. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/versionbump.py +0 -0
  522. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/scripts/yank-old-versions.py +0 -0
  523. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/setup.cfg +0 -0
  524. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/shim.pyproject.toml +0 -0
  525. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/__init__.py +0 -0
  526. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/__init__.py +0 -0
  527. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_aws_credentials.py +0 -0
  528. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_background_commands.py +0 -0
  529. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_commands.py +0 -0
  530. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_custom_commands.py +0 -0
  531. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_deprecated.py +0 -0
  532. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_editblock.py +0 -0
  533. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_editor.py +0 -0
  534. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_exceptions.py +0 -0
  535. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_find_or_blocks.py +0 -0
  536. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_history.py +0 -0
  537. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_io.py +0 -0
  538. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_linter.py +0 -0
  539. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_model_info_manager.py +0 -0
  540. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_model_provider_manager.py +0 -0
  541. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_onboarding.py +0 -0
  542. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_plugin_manager.py +0 -0
  543. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_prompts.py +0 -0
  544. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_reasoning.py +0 -0
  545. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_repo.py +0 -0
  546. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_run_cmd.py +0 -0
  547. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_sanity_check_repo.py +0 -0
  548. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_scripting.py +0 -0
  549. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_sendchat.py +0 -0
  550. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_sessions.py +0 -0
  551. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_skills.py +0 -0
  552. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_special.py +0 -0
  553. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_ssl_verification.py +0 -0
  554. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_udiff.py +0 -0
  555. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_urls.py +0 -0
  556. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_voice.py +0 -0
  557. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/basic/test_watch.py +0 -0
  558. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/coders/test_copypaste_coder.py +0 -0
  559. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/conftest.py +0 -0
  560. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  561. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/chat-history.md +0 -0
  562. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  563. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/c/test.c +0 -0
  564. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  565. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  566. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  567. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  568. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  569. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/d/test.d +0 -0
  570. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/dart/test.dart +0 -0
  571. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/elisp/test.el +0 -0
  572. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  573. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/elm/test.elm +0 -0
  574. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  575. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/go/test.go +0 -0
  576. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  577. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  578. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/java/test.java +0 -0
  579. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/javascript/test.js +0 -0
  580. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  581. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/lua/test.lua +0 -0
  582. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/matlab/test.m +0 -0
  583. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  584. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  585. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/php/test.php +0 -0
  586. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/pony/test.pony +0 -0
  587. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/properties/test.properties +0 -0
  588. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/python/test.py +0 -0
  589. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/ql/test.ql +0 -0
  590. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/r/test.r +0 -0
  591. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  592. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  593. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/rust/test.rs +0 -0
  594. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/scala/test.scala +0 -0
  595. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  596. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/swift/test.swift +0 -0
  597. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  598. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  599. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/udev/test.rules +0 -0
  600. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/languages/zig/test.zig +0 -0
  601. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  602. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  603. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  604. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/watch.js +0 -0
  605. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/watch.lisp +0 -0
  606. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/watch.py +0 -0
  607. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/fixtures/watch_question.js +0 -0
  608. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/help/test_help.py +0 -0
  609. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/hooks/__init__.py +0 -0
  610. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/mcp/__init__.py +0 -0
  611. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/mcp/test_manager.py +0 -0
  612. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/scrape/test_playwright_disable.py +0 -0
  613. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/scrape/test_scrape.py +0 -0
  614. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/tools/test_git_branch.py +0 -0
  615. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/tools/test_git_diff.py +0 -0
  616. {cecli_dev-0.97.4 → cecli_dev-0.98.0}/tests/tools/test_grep.py +0 -0
  617. {cecli_dev-0.97.4 → 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.4
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
 
@@ -515,7 +515,8 @@ def load_results(results_dir, stats_languages=None):
515
515
  results["test_cases_total"] = total_cases
516
516
  if passed_cases is not None:
517
517
  results["test_cases_passed"] = passed_cases
518
-
518
+ if passed_cases is not None and total_cases is not None:
519
+ results["test_cases_pass_ratio"] = passed_cases / total_cases
519
520
  # Update the JSON file immediately to keep data fresh
520
521
  fname.write_text(json.dumps(results, indent=4))
521
522
  logger.debug(f"Updated {fname} with test case counts")
@@ -583,7 +584,8 @@ def summarize_results(results_dir, verbose, stats_languages=None):
583
584
  res.completion_tokens = 0
584
585
  res.test_cases_total = 0
585
586
  res.test_cases_passed = 0
586
-
587
+ res.test_cases_pass_ratio_sum = 0.0
588
+ res.test_cases_pass_ratio_count = 0
587
589
  res.reasoning_effort = None
588
590
  res.thinking_tokens = None
589
591
  res.map_tokens = None
@@ -621,6 +623,8 @@ def summarize_results(results_dir, verbose, stats_languages=None):
621
623
  lang_stats.completion_tokens = 0
622
624
  lang_stats.test_cases_total = 0
623
625
  lang_stats.test_cases_passed = 0
626
+ lang_stats.test_cases_pass_ratio_sum = 0.0
627
+ lang_stats.test_cases_pass_ratio_count = 0
624
628
  lang_to_stats[lang] = lang_stats
625
629
  lang_to_passed_tests[lang] = [0] * tries
626
630
 
@@ -682,6 +686,11 @@ def summarize_results(results_dir, verbose, stats_languages=None):
682
686
  if passed_cases is not None:
683
687
  add("test_cases_passed", passed_cases, res, lang_stats)
684
688
 
689
+ pass_ratio = results.get("test_cases_pass_ratio")
690
+ if pass_ratio is not None:
691
+ add("test_cases_pass_ratio_sum", pass_ratio, res, lang_stats)
692
+ add("test_cases_pass_ratio_count", 1, res, lang_stats)
693
+
685
694
  res.reasoning_effort = results.get("reasoning_effort")
686
695
  res.thinking_tokens = results.get("thinking_tokens")
687
696
  res.map_tokens = results.get("map_tokens")
@@ -764,6 +773,12 @@ def summarize_results(results_dir, verbose, stats_languages=None):
764
773
  res.test_cases_percentage = 100 * res.test_cases_passed / res.test_cases_total
765
774
  print(f" test_cases_percentage: {res.test_cases_percentage:.1f}")
766
775
 
776
+ if res.test_cases_pass_ratio_count > 0:
777
+ res.test_cases_pass_ratio_avg = (
778
+ 100 * res.test_cases_pass_ratio_sum / res.test_cases_pass_ratio_count
779
+ )
780
+ print(f" test_cases_pass_ratio_avg: {res.test_cases_pass_ratio_avg:.1f}")
781
+
767
782
  if variants["model"]:
768
783
  a_model = set(variants["model"]).pop()
769
784
  command = f"cecli --model {a_model}"
@@ -801,6 +816,18 @@ def summarize_results(results_dir, verbose, stats_languages=None):
801
816
  pass_rate = 100 * num_passed / float(lang_stats.completed_tests)
802
817
  setattr(lang_stats, f"pass_rate_{i + 1}", pass_rate)
803
818
 
819
+ if lang_stats.test_cases_pass_ratio_count > 0:
820
+ lang_stats.test_cases_pass_ratio_avg = (
821
+ 100
822
+ * lang_stats.test_cases_pass_ratio_sum
823
+ / lang_stats.test_cases_pass_ratio_count
824
+ )
825
+ else:
826
+ lang_stats.test_cases_pass_ratio_avg = 0.0
827
+
828
+ del lang_stats.test_cases_pass_ratio_sum
829
+ del lang_stats.test_cases_pass_ratio_count
830
+
804
831
  # Then format attributes into ready-to-print strings
805
832
  for attr in lang_stats.__dict__:
806
833
  val = getattr(lang_stats, attr)
@@ -870,6 +897,11 @@ def summarize_results(results_dir, verbose, stats_languages=None):
870
897
  console.rule()
871
898
 
872
899
  # print(json.dumps(vars(res), indent=4, sort_keys=True))
900
+ if hasattr(res, "test_cases_pass_ratio_sum"):
901
+ del res.test_cases_pass_ratio_sum
902
+ if hasattr(res, "test_cases_pass_ratio_count"):
903
+ del res.test_cases_pass_ratio_count
904
+
873
905
  return res
874
906
 
875
907
 
@@ -958,7 +990,7 @@ async def run_test_real(
958
990
 
959
991
  from cecli import models
960
992
  from cecli.coders import Coder
961
- from cecli.helpers.conversation import ConversationFiles, ConversationManager
993
+ from cecli.helpers.conversation import ConversationService
962
994
  from cecli.io import InputOutput
963
995
  from cecli.main import SwitchCoderSignal
964
996
 
@@ -1156,6 +1188,7 @@ async def run_test_real(
1156
1188
  verbose=verbose,
1157
1189
  yes_always_commands=True,
1158
1190
  max_reflections=0,
1191
+ file_diffs=False,
1159
1192
  ),
1160
1193
  map_mul_no_files=4,
1161
1194
  mcp_manager=None,
@@ -1178,13 +1211,12 @@ async def run_test_real(
1178
1211
  dur = 0
1179
1212
  test_outcomes = []
1180
1213
 
1181
- ConversationManager.initialize(
1182
- coder,
1214
+ ConversationService.get_manager(coder).initialize(
1183
1215
  reset=True,
1184
1216
  reformat=True,
1185
1217
  )
1186
1218
 
1187
- ConversationFiles.reset()
1219
+ ConversationService.get_files(coder).reset()
1188
1220
 
1189
1221
  for i in range(tries):
1190
1222
  start = time.time()
@@ -0,0 +1,203 @@
1
+ #!/bin/bash
2
+ # Benchmark runner script for testing multiple OpenRouter models
3
+ # Usage: ./run_benchmark_variations.sh [OPTIONS]
4
+
5
+ set -e # Exit on error
6
+
7
+ # Default values
8
+ BASE_NAME="cecli-little-guys-h6"
9
+ EDIT_FORMAT="hashline"
10
+ MAP_TOKENS="512"
11
+ THREADS="1"
12
+ LANGUAGES="javascript,python,rust,go,java"
13
+ HASH_RE="^.[15ef]"
14
+ NUM_TESTS="72"
15
+ EXERCISES_DIR="polyglot-benchmark"
16
+ OUTPUT_DIR="tmp.benchmarks"
17
+ SLEEP_BETWEEN=30 # Seconds to sleep between runs
18
+
19
+ # List of models to test
20
+ # RERUN
21
+ # "openrouter/minimax/minimax-m2.1"
22
+ # "openrouter/qwen/qwen3-vl-235b-a22b-thinking"
23
+ MODELS=(
24
+ # "openrouter/qwen/qwen3.5-35b-a3b"
25
+ # "openrouter/xiaomi/mimo-v2-flash"
26
+ # "openrouter/moonshotai/kimi-k2.5"
27
+ # "openrouter/minimax/minimax-m2.5"
28
+ "openrouter/anthropic/claude-haiku-4.5"
29
+ "openrouter/openai/gpt-oss-120b"
30
+ "openrouter/openai/gpt-5-mini"
31
+ "openrouter/google/gemini-3-flash-preview"
32
+ "openrouter/deepseek/deepseek-v3.2-exp"
33
+ )
34
+
35
+ # Parse command line arguments
36
+ while [[ $# -gt 0 ]]; do
37
+ case $1 in
38
+ --base-name)
39
+ BASE_NAME="$2"
40
+ shift 2
41
+ ;;
42
+ --edit-format)
43
+ EDIT_FORMAT="$2"
44
+ shift 2
45
+ ;;
46
+ --map-tokens)
47
+ MAP_TOKENS="$2"
48
+ shift 2
49
+ ;;
50
+ --threads)
51
+ THREADS="$2"
52
+ shift 2
53
+ ;;
54
+ --hash-re)
55
+ HASH_RE="$2"
56
+ shift 2
57
+ ;;
58
+ --num-tests)
59
+ NUM_TESTS="$2"
60
+ shift 2
61
+ ;;
62
+ --exercises-dir)
63
+ EXERCISES_DIR="$2"
64
+ shift 2
65
+ ;;
66
+ --output-dir)
67
+ OUTPUT_DIR="$2"
68
+ shift 2
69
+ ;;
70
+ --sleep)
71
+ SLEEP_BETWEEN="$2"
72
+ shift 2
73
+ ;;
74
+ --help)
75
+ echo "Usage: $0 [OPTIONS]"
76
+ echo ""
77
+ echo "Options:"
78
+ echo " --base-name NAME Base name for benchmark runs (default: $BASE_NAME)"
79
+ echo " --edit-format FORMAT Edit format to use (default: $EDIT_FORMAT)"
80
+ echo " --map-tokens TOKENS Map tokens (default: $MAP_TOKENS)"
81
+ echo " --threads N Number of threads (default: $THREADS)"
82
+ echo " --hash-re REGEX Hash regex filter (default: $HASH_RE)"
83
+ echo " --num-tests N Number of tests to run (default: $NUM_TESTS)"
84
+ echo " --exercises-dir DIR Exercises directory (default: $EXERCISES_DIR)"
85
+ echo " --output-dir DIR Output directory (default: $OUTPUT_DIR)"
86
+ echo " --sleep SECONDS Sleep between runs in seconds (default: $SLEEP_BETWEEN)"
87
+ echo " --help Show this help message"
88
+ echo ""
89
+ echo "Example:"
90
+ echo " $0 --threads 2 --num-tests 5"
91
+ exit 0
92
+ ;;
93
+ *)
94
+ echo "Unknown option: $1"
95
+ echo "Use --help for usage information"
96
+ exit 1
97
+ ;;
98
+ esac
99
+ done
100
+
101
+ # Function to run a single benchmark
102
+ run_benchmark() {
103
+ local model="$1"
104
+ local run_name="$2"
105
+
106
+ echo "========================================================================"
107
+ echo "Starting benchmark: $run_name"
108
+ echo "Model: $model"
109
+ echo "Time: $(date)"
110
+ echo "========================================================================"
111
+
112
+ # Create the benchmark command
113
+ ./benchmark/benchmark.py "$run_name" \
114
+ --new \
115
+ --model "$model" \
116
+ --edit-format "$EDIT_FORMAT" \
117
+ --map-tokens "$MAP_TOKENS" \
118
+ --threads "$THREADS" \
119
+ --hash-re "$HASH_RE" \
120
+ --num-tests "$NUM_TESTS" \
121
+ --languages "$LANGUAGES" \
122
+ --tries 2 \
123
+ --exercises-dir "$EXERCISES_DIR"
124
+
125
+ echo "Benchmark completed: $run_name"
126
+ echo "Results directory: $OUTPUT_DIR/$(ls -t $OUTPUT_DIR | grep "$run_name" | head -1)"
127
+ echo ""
128
+ }
129
+
130
+ # Function to generate statistics for all completed runs
131
+ generate_stats() {
132
+ echo "========================================================================"
133
+ echo "Generating statistics for all completed runs"
134
+ echo "========================================================================"
135
+
136
+ for dir in "$OUTPUT_DIR"/*; do
137
+ if [ -d "$dir" ] && [ -f "$dir/.cecli.results.json" ]; then
138
+ echo "Processing: $(basename "$dir")"
139
+ ./benchmark/benchmark.py --stats "$dir" || true
140
+ echo ""
141
+ fi
142
+ done
143
+ }
144
+
145
+ # Main execution
146
+ main() {
147
+ echo "========================================================================"
148
+ echo "OpenRouter Model Benchmark Runner"
149
+ echo "========================================================================"
150
+ echo "Configuration:"
151
+ echo " Base name: $BASE_NAME"
152
+ echo " Edit format: $EDIT_FORMAT"
153
+ echo " Map tokens: $MAP_TOKENS"
154
+ echo " Threads: $THREADS"
155
+ echo " Hash regex: $HASH_RE"
156
+ echo " Num tests: $NUM_TESTS"
157
+ echo " Exercises dir: $EXERCISES_DIR"
158
+ echo " Output dir: $OUTPUT_DIR"
159
+ echo " Sleep between: ${SLEEP_BETWEEN}s"
160
+ echo " Models to test: ${#MODELS[@]}"
161
+ echo ""
162
+
163
+ # Create output directory if it doesn't exist
164
+ mkdir -p "$OUTPUT_DIR"
165
+
166
+ # Run benchmarks for each model
167
+ for model in "${MODELS[@]}"; do
168
+ # Create a run name by replacing slashes with hyphens
169
+ local model_slug=$(echo "$model" | sed 's|/|-|g')
170
+ local run_name="${BASE_NAME}-${model_slug}"
171
+
172
+ run_benchmark "$model" "$run_name"
173
+
174
+ # Sleep between runs to avoid rate limiting
175
+ if [ "$SLEEP_BETWEEN" -gt 0 ]; then
176
+ echo "Sleeping for ${SLEEP_BETWEEN} seconds before next run..."
177
+ sleep "$SLEEP_BETWEEN"
178
+ echo ""
179
+ fi
180
+ done
181
+
182
+ # Generate statistics
183
+ generate_stats
184
+
185
+ echo "========================================================================"
186
+ echo "All benchmarks completed!"
187
+ echo "========================================================================"
188
+ echo ""
189
+ echo "Summary of results directories:"
190
+ ls -la "$OUTPUT_DIR" | grep "$BASE_NAME"
191
+ echo ""
192
+ echo "To view statistics for a specific run:"
193
+ echo " ./benchmark/benchmark.py --stats $OUTPUT_DIR/<run-directory>"
194
+ echo ""
195
+ echo "To compare all results:"
196
+ echo " for dir in $OUTPUT_DIR/*$BASE_NAME*; do"
197
+ echo " echo \"=== \$(basename \$dir) ===\""
198
+ echo " ./benchmark/benchmark.py --stats \"\$dir\" 2>/dev/null | grep -E '(pass_rate|total_cost|completed_tests)' || true"
199
+ echo " done"
200
+ }
201
+
202
+ # Run main function
203
+ main
@@ -0,0 +1,203 @@
1
+ #!/bin/bash
2
+ # Benchmark runner script for testing multiple OpenRouter models
3
+ # Usage: ./run_benchmark_variations.sh [OPTIONS]
4
+
5
+ set -e # Exit on error
6
+
7
+ # Default values
8
+ BASE_NAME="cecli-little-guys-h6"
9
+ EDIT_FORMAT="hashline"
10
+ MAP_TOKENS="512"
11
+ THREADS="1"
12
+ LANGUAGES="javascript,python,rust,go,java"
13
+ HASH_RE="^.[15ef]"
14
+ NUM_TESTS="72"
15
+ EXERCISES_DIR="polyglot-benchmark"
16
+ OUTPUT_DIR="tmp.benchmarks"
17
+ SLEEP_BETWEEN=30 # Seconds to sleep between runs
18
+
19
+ # List of models to test
20
+ # RERUN
21
+ # "openrouter/minimax/minimax-m2.1"
22
+ # "openrouter/qwen/qwen3-vl-235b-a22b-thinking"
23
+ MODELS=(
24
+ "openrouter/qwen/qwen3.5-35b-a3b"
25
+ "openrouter/xiaomi/mimo-v2-flash"
26
+ "openrouter/moonshotai/kimi-k2.5"
27
+ "openrouter/minimax/minimax-m2.5"
28
+ # "openrouter/anthropic/claude-haiku-4.5"
29
+ # "openrouter/openai/gpt-oss-120b"
30
+ # "openrouter/openai/gpt-5-mini"
31
+ # "openrouter/google/gemini-3-flash-preview"
32
+ # "openrouter/deepseek/deepseek-v3.2-exp"
33
+ )
34
+
35
+ # Parse command line arguments
36
+ while [[ $# -gt 0 ]]; do
37
+ case $1 in
38
+ --base-name)
39
+ BASE_NAME="$2"
40
+ shift 2
41
+ ;;
42
+ --edit-format)
43
+ EDIT_FORMAT="$2"
44
+ shift 2
45
+ ;;
46
+ --map-tokens)
47
+ MAP_TOKENS="$2"
48
+ shift 2
49
+ ;;
50
+ --threads)
51
+ THREADS="$2"
52
+ shift 2
53
+ ;;
54
+ --hash-re)
55
+ HASH_RE="$2"
56
+ shift 2
57
+ ;;
58
+ --num-tests)
59
+ NUM_TESTS="$2"
60
+ shift 2
61
+ ;;
62
+ --exercises-dir)
63
+ EXERCISES_DIR="$2"
64
+ shift 2
65
+ ;;
66
+ --output-dir)
67
+ OUTPUT_DIR="$2"
68
+ shift 2
69
+ ;;
70
+ --sleep)
71
+ SLEEP_BETWEEN="$2"
72
+ shift 2
73
+ ;;
74
+ --help)
75
+ echo "Usage: $0 [OPTIONS]"
76
+ echo ""
77
+ echo "Options:"
78
+ echo " --base-name NAME Base name for benchmark runs (default: $BASE_NAME)"
79
+ echo " --edit-format FORMAT Edit format to use (default: $EDIT_FORMAT)"
80
+ echo " --map-tokens TOKENS Map tokens (default: $MAP_TOKENS)"
81
+ echo " --threads N Number of threads (default: $THREADS)"
82
+ echo " --hash-re REGEX Hash regex filter (default: $HASH_RE)"
83
+ echo " --num-tests N Number of tests to run (default: $NUM_TESTS)"
84
+ echo " --exercises-dir DIR Exercises directory (default: $EXERCISES_DIR)"
85
+ echo " --output-dir DIR Output directory (default: $OUTPUT_DIR)"
86
+ echo " --sleep SECONDS Sleep between runs in seconds (default: $SLEEP_BETWEEN)"
87
+ echo " --help Show this help message"
88
+ echo ""
89
+ echo "Example:"
90
+ echo " $0 --threads 2 --num-tests 5"
91
+ exit 0
92
+ ;;
93
+ *)
94
+ echo "Unknown option: $1"
95
+ echo "Use --help for usage information"
96
+ exit 1
97
+ ;;
98
+ esac
99
+ done
100
+
101
+ # Function to run a single benchmark
102
+ run_benchmark() {
103
+ local model="$1"
104
+ local run_name="$2"
105
+
106
+ echo "========================================================================"
107
+ echo "Starting benchmark: $run_name"
108
+ echo "Model: $model"
109
+ echo "Time: $(date)"
110
+ echo "========================================================================"
111
+
112
+ # Create the benchmark command
113
+ ./benchmark/benchmark.py "$run_name" \
114
+ --new \
115
+ --model "$model" \
116
+ --edit-format "$EDIT_FORMAT" \
117
+ --map-tokens "$MAP_TOKENS" \
118
+ --threads "$THREADS" \
119
+ --hash-re "$HASH_RE" \
120
+ --num-tests "$NUM_TESTS" \
121
+ --languages "$LANGUAGES" \
122
+ --tries 2 \
123
+ --exercises-dir "$EXERCISES_DIR"
124
+
125
+ echo "Benchmark completed: $run_name"
126
+ echo "Results directory: $OUTPUT_DIR/$(ls -t $OUTPUT_DIR | grep "$run_name" | head -1)"
127
+ echo ""
128
+ }
129
+
130
+ # Function to generate statistics for all completed runs
131
+ generate_stats() {
132
+ echo "========================================================================"
133
+ echo "Generating statistics for all completed runs"
134
+ echo "========================================================================"
135
+
136
+ for dir in "$OUTPUT_DIR"/*; do
137
+ if [ -d "$dir" ] && [ -f "$dir/.cecli.results.json" ]; then
138
+ echo "Processing: $(basename "$dir")"
139
+ ./benchmark/benchmark.py --stats "$dir" || true
140
+ echo ""
141
+ fi
142
+ done
143
+ }
144
+
145
+ # Main execution
146
+ main() {
147
+ echo "========================================================================"
148
+ echo "OpenRouter Model Benchmark Runner"
149
+ echo "========================================================================"
150
+ echo "Configuration:"
151
+ echo " Base name: $BASE_NAME"
152
+ echo " Edit format: $EDIT_FORMAT"
153
+ echo " Map tokens: $MAP_TOKENS"
154
+ echo " Threads: $THREADS"
155
+ echo " Hash regex: $HASH_RE"
156
+ echo " Num tests: $NUM_TESTS"
157
+ echo " Exercises dir: $EXERCISES_DIR"
158
+ echo " Output dir: $OUTPUT_DIR"
159
+ echo " Sleep between: ${SLEEP_BETWEEN}s"
160
+ echo " Models to test: ${#MODELS[@]}"
161
+ echo ""
162
+
163
+ # Create output directory if it doesn't exist
164
+ mkdir -p "$OUTPUT_DIR"
165
+
166
+ # Run benchmarks for each model
167
+ for model in "${MODELS[@]}"; do
168
+ # Create a run name by replacing slashes with hyphens
169
+ local model_slug=$(echo "$model" | sed 's|/|-|g')
170
+ local run_name="${BASE_NAME}-${model_slug}"
171
+
172
+ run_benchmark "$model" "$run_name"
173
+
174
+ # Sleep between runs to avoid rate limiting
175
+ if [ "$SLEEP_BETWEEN" -gt 0 ]; then
176
+ echo "Sleeping for ${SLEEP_BETWEEN} seconds before next run..."
177
+ sleep "$SLEEP_BETWEEN"
178
+ echo ""
179
+ fi
180
+ done
181
+
182
+ # Generate statistics
183
+ generate_stats
184
+
185
+ echo "========================================================================"
186
+ echo "All benchmarks completed!"
187
+ echo "========================================================================"
188
+ echo ""
189
+ echo "Summary of results directories:"
190
+ ls -la "$OUTPUT_DIR" | grep "$BASE_NAME"
191
+ echo ""
192
+ echo "To view statistics for a specific run:"
193
+ echo " ./benchmark/benchmark.py --stats $OUTPUT_DIR/<run-directory>"
194
+ echo ""
195
+ echo "To compare all results:"
196
+ echo " for dir in $OUTPUT_DIR/*$BASE_NAME*; do"
197
+ echo " echo \"=== \$(basename \$dir) ===\""
198
+ echo " ./benchmark/benchmark.py --stats \"\$dir\" 2>/dev/null | grep -E '(pass_rate|total_cost|completed_tests)' || true"
199
+ echo " done"
200
+ }
201
+
202
+ # Run main function
203
+ main
@@ -5,7 +5,7 @@
5
5
  set -e # Exit on error
6
6
 
7
7
  # Default values
8
- BASE_NAME="cecli-base-d-big-3"
8
+ BASE_NAME="cecli-little-guys-d6"
9
9
  EDIT_FORMAT="diff"
10
10
  MAP_TOKENS="512"
11
11
  THREADS="1"
@@ -21,14 +21,15 @@ SLEEP_BETWEEN=30 # Seconds to sleep between runs
21
21
  # "openrouter/minimax/minimax-m2.1"
22
22
  # "openrouter/qwen/qwen3-vl-235b-a22b-thinking"
23
23
  MODELS=(
24
- # "openrouter/deepseek/deepseek-v3.2-exp"
25
- "openrouter/moonshotai/kimi-k2.5"
24
+ # "openrouter/qwen/qwen3.5-35b-a3b"
25
+ # "openrouter/xiaomi/mimo-v2-flash"
26
+ # "openrouter/moonshotai/kimi-k2.5"
27
+ # "openrouter/minimax/minimax-m2.5"
28
+ "openrouter/anthropic/claude-haiku-4.5"
26
29
  "openrouter/openai/gpt-oss-120b"
27
- "openrouter/openai/gpt-5.2"
30
+ "openrouter/openai/gpt-5-mini"
28
31
  "openrouter/google/gemini-3-flash-preview"
29
- "openrouter/google/gemini-3-pro-preview"
30
- "openrouter/anthropic/claude-haiku-4.5"
31
- "openrouter/anthropic/claude-sonnet-4.5"
32
+ "openrouter/deepseek/deepseek-v3.2-exp"
32
33
  )
33
34
 
34
35
  # Parse command line arguments
@@ -118,6 +119,7 @@ run_benchmark() {
118
119
  --hash-re "$HASH_RE" \
119
120
  --num-tests "$NUM_TESTS" \
120
121
  --languages "$LANGUAGES" \
122
+ --tries 2 \
121
123
  --exercises-dir "$EXERCISES_DIR"
122
124
 
123
125
  echo "Benchmark completed: $run_name"