cecli-dev 0.100.10rc2__tar.gz → 0.100.11rc1__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 (689) hide show
  1. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/PKG-INFO +2 -2
  2. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/__init__.py +1 -1
  3. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/_version.py +3 -3
  4. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/agent_coder.py +30 -9
  5. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/base_coder.py +23 -9
  6. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/files.py +94 -14
  7. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/integration.py +35 -9
  8. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/manager.py +35 -7
  9. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/tags.py +3 -0
  10. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/utils.py +3 -2
  11. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/hashline.py +34 -0
  12. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/hashpos/hashpos.py +5 -1
  13. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/requests.py +1 -1
  14. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/io.py +11 -3
  15. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/linter.py +1 -0
  16. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/main.py +4 -4
  17. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/models.py +33 -2
  18. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/edit_text.py +3 -2
  19. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/ls.py +2 -2
  20. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/read_range.py +167 -47
  21. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/resource_manager.py +1 -1
  22. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/agent-mode.md +4 -0
  23. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/mcp.md +3 -3
  24. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/PKG-INFO +2 -2
  25. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/SOURCES.txt +1 -0
  26. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/requires.txt +1 -1
  27. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/scm_file_list.json +1 -0
  28. cecli_dev-0.100.11rc1/cecli_dev.egg-info/scm_version.json +8 -0
  29. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/pyproject.toml +1 -0
  30. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/common-constraints.txt +1 -1
  31. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements.in +1 -1
  32. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements.txt +1 -1
  33. cecli_dev-0.100.11rc1/scripts/compare-message-history.py +257 -0
  34. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/cost_calculator.py +0 -0
  35. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_read_range_execute.py +13 -7
  36. cecli_dev-0.100.10rc2/cecli_dev.egg-info/scm_version.json +0 -8
  37. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.dockerignore +0 -0
  38. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.flake8 +0 -0
  39. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.gitattributes +0 -0
  40. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  41. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/check_pypi_version.yml +0 -0
  42. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/docker-build-test.yml +0 -0
  43. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/docker-release.yml +0 -0
  44. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/issues.yml +0 -0
  45. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/pages.yml +0 -0
  46. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/pre-commit.yml +0 -0
  47. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/release.yml +0 -0
  48. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/ubuntu-tests.yml +0 -0
  49. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/windows-tests.yml +0 -0
  50. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
  51. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.gitignore +0 -0
  52. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/.pre-commit-config.yaml +0 -0
  53. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/CHANGELOG.md +0 -0
  54. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/CNAME +0 -0
  55. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/CONTRIBUTING.md +0 -0
  56. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/HISTORY.md +0 -0
  57. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/LICENSE.txt +0 -0
  58. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/MANIFEST.in +0 -0
  59. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/README.md +0 -0
  60. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/Dockerfile +0 -0
  61. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/README.md +0 -0
  62. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/__init__.py +0 -0
  63. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/benchmark.py +0 -0
  64. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/benchmark_classic.py +0 -0
  65. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/clone-exercism.sh +0 -0
  66. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/cpp-test.sh +0 -0
  67. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/docker.sh +0 -0
  68. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/docker_build.sh +0 -0
  69. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/install-docker-ubuntu.sh +0 -0
  70. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/npm-test.sh +0 -0
  71. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/over_time.py +0 -0
  72. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/plot.sh +0 -0
  73. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/plots.py +0 -0
  74. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/problem_stats.py +0 -0
  75. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/prompts.py +0 -0
  76. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/refactor_tools.py +0 -0
  77. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/rsync.sh +0 -0
  78. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/rungrid.py +0 -0
  79. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/swe-bench-lite.txt +0 -0
  80. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/swe-bench.txt +0 -0
  81. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/swe_bench.py +0 -0
  82. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/test_benchmark.py +0 -0
  83. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/variations.1.sh +0 -0
  84. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/variations.2.sh +0 -0
  85. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/variations.3.sh +0 -0
  86. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/benchmark/variations.4.sh +0 -0
  87. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/__main__.py +0 -0
  88. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/args.py +0 -0
  89. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/args_formatter.py +0 -0
  90. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/change_tracker.py +0 -0
  91. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/__init__.py +0 -0
  92. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/architect_coder.py +0 -0
  93. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/ask_coder.py +0 -0
  94. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/chat_chunks.py +0 -0
  95. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/context_coder.py +0 -0
  96. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/copypaste_coder.py +0 -0
  97. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editblock_coder.py +0 -0
  98. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
  99. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editblock_func_coder.py +0 -0
  100. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  101. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editor_editblock_coder.py +0 -0
  102. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/editor_whole_coder.py +0 -0
  103. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/hashline_coder.py +0 -0
  104. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/help_coder.py +0 -0
  105. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/patch_coder.py +0 -0
  106. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/search_replace.py +0 -0
  107. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/shell.py +0 -0
  108. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
  109. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/sub_agent_coder.py +0 -0
  110. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/udiff_coder.py +0 -0
  111. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/udiff_simple.py +0 -0
  112. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/wholefile_coder.py +0 -0
  113. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/coders/wholefile_func_coder.py +0 -0
  114. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/__init__.py +0 -0
  115. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/add.py +0 -0
  116. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/agent.py +0 -0
  117. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/agent_model.py +0 -0
  118. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/architect.py +0 -0
  119. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/ask.py +0 -0
  120. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/chat_mode.py +0 -0
  121. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/clear.py +0 -0
  122. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/code.py +0 -0
  123. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/command_prefix.py +0 -0
  124. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/commit.py +0 -0
  125. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/compact.py +0 -0
  126. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/context.py +0 -0
  127. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/context_blocks.py +0 -0
  128. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/context_management.py +0 -0
  129. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/copy.py +0 -0
  130. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/copy_context.py +0 -0
  131. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/core.py +0 -0
  132. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/diff.py +0 -0
  133. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/drop.py +0 -0
  134. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/editor.py +0 -0
  135. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/editor_model.py +0 -0
  136. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/exclude_skill.py +0 -0
  137. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/exit.py +0 -0
  138. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/git.py +0 -0
  139. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/hashline.py +0 -0
  140. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/help.py +0 -0
  141. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/history_search.py +0 -0
  142. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/hooks.py +0 -0
  143. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/hot_reload.py +0 -0
  144. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/include_skill.py +0 -0
  145. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/lint.py +0 -0
  146. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/list_mcp.py +0 -0
  147. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/list_sessions.py +0 -0
  148. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/list_skills.py +0 -0
  149. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/load.py +0 -0
  150. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/load_hook.py +0 -0
  151. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/load_mcp.py +0 -0
  152. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/load_session.py +0 -0
  153. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/load_skill.py +0 -0
  154. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/ls.py +0 -0
  155. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/map.py +0 -0
  156. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/map_refresh.py +0 -0
  157. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/merge.py +0 -0
  158. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/model.py +0 -0
  159. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/models.py +0 -0
  160. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/multiline_mode.py +0 -0
  161. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/paste.py +0 -0
  162. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/quit.py +0 -0
  163. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/read_only.py +0 -0
  164. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/read_only_stub.py +0 -0
  165. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/reap_agent.py +0 -0
  166. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/reasoning_effort.py +0 -0
  167. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/remove_hook.py +0 -0
  168. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/remove_mcp.py +0 -0
  169. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/remove_skill.py +0 -0
  170. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/report.py +0 -0
  171. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/reset.py +0 -0
  172. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/rules.py +0 -0
  173. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/run.py +0 -0
  174. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/save.py +0 -0
  175. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/save_session.py +0 -0
  176. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/settings.py +0 -0
  177. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/spawn_agent.py +0 -0
  178. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/switch_agent.py +0 -0
  179. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
  180. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/terminal_setup.py +0 -0
  181. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/test.py +0 -0
  182. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/think_tokens.py +0 -0
  183. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/tokens.py +0 -0
  184. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/undo.py +0 -0
  185. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/utils/__init__.py +0 -0
  186. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/utils/base_command.py +0 -0
  187. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/utils/helpers.py +0 -0
  188. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/utils/registry.py +0 -0
  189. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/utils/save_load_manager.py +0 -0
  190. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/voice.py +0 -0
  191. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/weak_model.py +0 -0
  192. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/web.py +0 -0
  193. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/commands/workspace.py +0 -0
  194. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/deprecated_args.py +0 -0
  195. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/diffs.py +0 -0
  196. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/dump.py +0 -0
  197. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/editor.py +0 -0
  198. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/exceptions.py +0 -0
  199. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/format_settings.py +0 -0
  200. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/help.py +0 -0
  201. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/help_pats.py +0 -0
  202. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/__init__.py +0 -0
  203. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/agents/__init__.py +0 -0
  204. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/agents/config.py +0 -0
  205. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/agents/service.py +0 -0
  206. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/background_commands.py +0 -0
  207. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/command_parser.py +0 -0
  208. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/__init__.py +0 -0
  209. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/base_message.py +0 -0
  210. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/conversation/service.py +0 -0
  211. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/copypaste.py +0 -0
  212. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/coroutines.py +0 -0
  213. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/crypto.py +0 -0
  214. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_searcher.py +0 -0
  215. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/__init__.py +0 -0
  216. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/builders.py +0 -0
  217. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/ignore.py +0 -0
  218. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
  219. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/service.py +0 -0
  220. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/file_system/trie_index.py +0 -0
  221. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
  222. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/dump.py +0 -0
  223. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  224. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/main.py +0 -0
  225. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
  226. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
  227. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/hashpos/__init__.py +0 -0
  228. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  229. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/io_proxy.py +0 -0
  230. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/leak_detect.py +0 -0
  231. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/model_providers.py +0 -0
  232. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/__init__.py +0 -0
  233. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/config.py +0 -0
  234. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/local_workspace.py +0 -0
  235. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/project.py +0 -0
  236. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/workspace.py +0 -0
  237. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/monorepo/worktree.py +0 -0
  238. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/nested.py +0 -0
  239. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/observations/__init__.py +0 -0
  240. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/observations/service.py +0 -0
  241. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/plugin_manager.py +0 -0
  242. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/profiler.py +0 -0
  243. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/responses.py +0 -0
  244. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/similarity.py +0 -0
  245. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/skills.py +0 -0
  246. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/helpers/threading.py +0 -0
  247. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/history.py +0 -0
  248. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/__init__.py +0 -0
  249. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/base.py +0 -0
  250. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/integration.py +0 -0
  251. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/manager.py +0 -0
  252. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/registry.py +0 -0
  253. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/service.py +0 -0
  254. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/hooks/types.py +0 -0
  255. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/interruptible_input.py +0 -0
  256. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/llm.py +0 -0
  257. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mcp/__init__.py +0 -0
  258. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mcp/manager.py +0 -0
  259. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mcp/oauth.py +0 -0
  260. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mcp/server.py +0 -0
  261. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mcp/utils.py +0 -0
  262. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/mdstream.py +0 -0
  263. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/onboarding.py +0 -0
  264. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/__init__.py +0 -0
  265. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/agent.yml +0 -0
  266. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/architect.yml +0 -0
  267. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/ask.yml +0 -0
  268. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/base.yml +0 -0
  269. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/context.yml +0 -0
  270. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/copypaste.yml +0 -0
  271. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editblock.yml +0 -0
  272. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editblock_fenced.yml +0 -0
  273. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editblock_func.yml +0 -0
  274. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
  275. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editor_editblock.yml +0 -0
  276. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/editor_whole.yml +0 -0
  277. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/hashline.yml +0 -0
  278. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/help.yml +0 -0
  279. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/patch.yml +0 -0
  280. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
  281. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/subagent.yml +0 -0
  282. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/udiff.yml +0 -0
  283. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/udiff_simple.yml +0 -0
  284. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/utils/__init__.py +0 -0
  285. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/utils/registry.py +0 -0
  286. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/utils/system.py +0 -0
  287. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/wholefile.yml +0 -0
  288. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/prompts/wholefile_func.yml +0 -0
  289. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  290. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  291. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  292. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  293. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  294. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  295. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  296. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  297. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  298. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  299. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  300. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  301. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  302. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  303. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  304. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  305. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  306. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  307. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  308. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  309. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  310. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  311. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  312. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  313. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  314. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  315. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  316. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  317. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  318. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  319. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  320. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  321. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
  322. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  323. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  324. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  325. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  326. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  327. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  328. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  329. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  330. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  331. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  332. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  333. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  334. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  335. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  336. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  337. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  338. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  339. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  340. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  341. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  342. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  343. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  344. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  345. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  346. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  347. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  348. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  349. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/reasoning_tags.py +0 -0
  350. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/repo.py +0 -0
  351. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/repomap.py +0 -0
  352. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/report.py +0 -0
  353. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/resources/__init__.py +0 -0
  354. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/resources/model-metadata.json +0 -0
  355. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/resources/model-settings.yml +0 -0
  356. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/resources/providers.json +0 -0
  357. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/run_cmd.py +0 -0
  358. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/scrape.py +0 -0
  359. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/sendchat.py +0 -0
  360. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/sessions.py +0 -0
  361. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/special.py +0 -0
  362. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/__init__.py +0 -0
  363. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/_yield.py +0 -0
  364. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/command.py +0 -0
  365. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/command_interactive.py +0 -0
  366. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/delegate.py +0 -0
  367. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/explore_code.py +0 -0
  368. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_branch.py +0 -0
  369. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_diff.py +0 -0
  370. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_log.py +0 -0
  371. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_remote.py +0 -0
  372. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_show.py +0 -0
  373. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/git_status.py +0 -0
  374. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/grep.py +0 -0
  375. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/thinking.py +0 -0
  376. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/undo_change.py +0 -0
  377. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/update_todo_list.py +0 -0
  378. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/utils/__init__.py +0 -0
  379. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/utils/base_tool.py +0 -0
  380. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/utils/helpers.py +0 -0
  381. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/utils/output.py +0 -0
  382. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/utils/registry.py +0 -0
  383. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/validations/__init__.py +0 -0
  384. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tools/validations/validations.py +0 -0
  385. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/__init__.py +0 -0
  386. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/app.py +0 -0
  387. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/io.py +0 -0
  388. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/styles.tcss +0 -0
  389. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/__init__.py +0 -0
  390. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/completion_bar.py +0 -0
  391. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/file_list.py +0 -0
  392. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/footer.py +0 -0
  393. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/input_area.py +0 -0
  394. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/input_container.py +0 -0
  395. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/key_hints.py +0 -0
  396. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/output.py +0 -0
  397. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/status_bar.py +0 -0
  398. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
  399. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/tui/worker.py +0 -0
  400. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/urls.py +0 -0
  401. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/utils.py +0 -0
  402. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/versioncheck.py +0 -0
  403. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/voice.py +0 -0
  404. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/waiting.py +0 -0
  405. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/watch.py +0 -0
  406. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/watch_prompts.py +0 -0
  407. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/Gemfile +0 -0
  408. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/blame.md +0 -0
  409. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/get-started.md +0 -0
  410. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/help-tip.md +0 -0
  411. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/help.md +0 -0
  412. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/install.md +0 -0
  413. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/keys.md +0 -0
  414. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/model-warnings.md +0 -0
  415. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/multi-line.md +0 -0
  416. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/python-m-aider.md +0 -0
  417. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/recording.css +0 -0
  418. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/recording.md +0 -0
  419. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_includes/works-best.md +0 -0
  420. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_features.scss +0 -0
  421. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_footer.scss +0 -0
  422. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_hero.scss +0 -0
  423. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_info.scss +0 -0
  424. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_layout.scss +0 -0
  425. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_reset.scss +0 -0
  426. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_testimonials.scss +0 -0
  427. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_typography.scss +0 -0
  428. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/_variables.scss +0 -0
  429. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/custom/custom.scss +0 -0
  430. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/_sass/global-overrides.scss +0 -0
  431. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
  432. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/api-keys.md +0 -0
  433. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/conf.md +0 -0
  434. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/custom-commands.md +0 -0
  435. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  436. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/dotenv.md +0 -0
  437. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/editor.md +0 -0
  438. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/hooks.md +0 -0
  439. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/model-aliases.md +0 -0
  440. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/model-configuration.md +0 -0
  441. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/options.md +0 -0
  442. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/reasoning.md +0 -0
  443. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/security.md +0 -0
  444. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/skills.md +0 -0
  445. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/subagents.md +0 -0
  446. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/tui.md +0 -0
  447. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config/workspaces.md +0 -0
  448. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/config.md +0 -0
  449. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/git.md +0 -0
  450. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/index.md +0 -0
  451. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/install/docker.md +0 -0
  452. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/install.md +0 -0
  453. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/languages.md +0 -0
  454. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  455. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/legal/privacy.md +0 -0
  456. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/anthropic.md +0 -0
  457. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/azure.md +0 -0
  458. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/bedrock.md +0 -0
  459. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/cohere.md +0 -0
  460. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/deepseek.md +0 -0
  461. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/gemini.md +0 -0
  462. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/github.md +0 -0
  463. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/groq.md +0 -0
  464. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
  465. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/ollama.md +0 -0
  466. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
  467. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/openai.md +0 -0
  468. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/openrouter.md +0 -0
  469. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/other.md +0 -0
  470. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/vertex.md +0 -0
  471. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/warnings.md +0 -0
  472. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms/xai.md +0 -0
  473. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/llms.md +0 -0
  474. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/more/analytics.md +0 -0
  475. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/more/edit-formats.md +0 -0
  476. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/more/infinite-output.md +0 -0
  477. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/more-info.md +0 -0
  478. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/repomap.md +0 -0
  479. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/scripting.md +0 -0
  480. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  481. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  482. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
  483. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  484. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
  485. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  486. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  487. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/troubleshooting.md +0 -0
  488. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/commands.md +0 -0
  489. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/conventions.md +0 -0
  490. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/copypaste.md +0 -0
  491. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/images-urls.md +0 -0
  492. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/lint-test.md +0 -0
  493. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/modes.md +0 -0
  494. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/not-code.md +0 -0
  495. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/notifications.md +0 -0
  496. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/optional.md +0 -0
  497. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/sessions.md +0 -0
  498. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/tips.md +0 -0
  499. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/voice.md +0 -0
  500. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage/watch.md +0 -0
  501. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/docs/usage.md +0 -0
  502. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli/website/share/index.md +0 -0
  503. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
  504. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
  505. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/cecli_dev.egg-info/top_level.txt +0 -0
  506. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/docker/Dockerfile +0 -0
  507. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  508. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/pytest.ini +0 -0
  509. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-dev.in +0 -0
  510. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-dev.txt +0 -0
  511. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-help.in +0 -0
  512. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-help.txt +0 -0
  513. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-playwright.in +0 -0
  514. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/requirements-playwright.txt +0 -0
  515. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/requirements/tree-sitter.in +0 -0
  516. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/30k-image.py +0 -0
  517. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/Dockerfile.jekyll +0 -0
  518. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/__init__.py +0 -0
  519. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/blame.py +0 -0
  520. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/clean_metadata.py +0 -0
  521. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/cost_analyzer.py +0 -0
  522. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/dl_icons.py +0 -0
  523. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/filter-chat-mode.js +0 -0
  524. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/generate_providers.py +0 -0
  525. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/get_contributor_list.js +0 -0
  526. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/get_hashline.py +0 -0
  527. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/history_prompts.py +0 -0
  528. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/homepage.py +0 -0
  529. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/issues.py +0 -0
  530. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/jekyll_build.sh +0 -0
  531. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/jekyll_run.sh +0 -0
  532. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/logo_svg.py +0 -0
  533. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/pip-compile.sh +0 -0
  534. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/recording_audio.py +0 -0
  535. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/redact-cast.py +0 -0
  536. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/rename_to_cecli.py +0 -0
  537. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/tmux_record.sh +0 -0
  538. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/tsl_pack_langs.py +0 -0
  539. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/update-blame.sh +0 -0
  540. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/update-docs.sh +0 -0
  541. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/update-history.py +0 -0
  542. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/versionbump.py +0 -0
  543. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/scripts/yank-old-versions.py +0 -0
  544. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/setup.cfg +0 -0
  545. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/shim.pyproject.toml +0 -0
  546. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/__init__.py +0 -0
  547. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/__init__.py +0 -0
  548. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/conftest.py +0 -0
  549. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_aws_credentials.py +0 -0
  550. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_background_commands.py +0 -0
  551. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_coder.py +0 -0
  552. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_commands.py +0 -0
  553. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_custom_commands.py +0 -0
  554. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_deprecated.py +0 -0
  555. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_editblock.py +0 -0
  556. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_editor.py +0 -0
  557. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_exceptions.py +0 -0
  558. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_find_or_blocks.py +0 -0
  559. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_hashline.py +0 -0
  560. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_hashline_closure.py +0 -0
  561. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_history.py +0 -0
  562. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_io.py +0 -0
  563. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_linter.py +0 -0
  564. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_main.py +0 -0
  565. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_model_info_manager.py +0 -0
  566. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_model_provider_manager.py +0 -0
  567. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_models.py +0 -0
  568. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_onboarding.py +0 -0
  569. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_plugin_manager.py +0 -0
  570. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_prompts.py +0 -0
  571. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_reasoning.py +0 -0
  572. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_repo.py +0 -0
  573. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_repomap.py +0 -0
  574. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_run_cmd.py +0 -0
  575. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_sanity_check_repo.py +0 -0
  576. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_scripting.py +0 -0
  577. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_sendchat.py +0 -0
  578. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_session_args.py +0 -0
  579. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_session_crypto.py +0 -0
  580. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_sessions.py +0 -0
  581. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_sessions_manager.py +0 -0
  582. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_skills.py +0 -0
  583. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_special.py +0 -0
  584. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_ssl_verification.py +0 -0
  585. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_udiff.py +0 -0
  586. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_urls.py +0 -0
  587. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_voice.py +0 -0
  588. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_watch.py +0 -0
  589. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/basic/test_wholefile.py +0 -0
  590. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/coders/test_coder_switching.py +0 -0
  591. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/coders/test_copypaste_coder.py +0 -0
  592. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/commands/test_compaction.py +0 -0
  593. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/commands/test_switch_agent.py +0 -0
  594. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/conftest.py +0 -0
  595. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/conversations/test_conversation_integration.py +0 -0
  596. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/conversations/test_conversation_system.py +0 -0
  597. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  598. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/chat-history.md +0 -0
  599. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
  600. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/bash/test.sh +0 -0
  601. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/c/test.c +0 -0
  602. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
  603. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
  604. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  605. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
  606. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
  607. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/d/test.d +0 -0
  608. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/dart/test.dart +0 -0
  609. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/elisp/test.el +0 -0
  610. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
  611. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/elm/test.elm +0 -0
  612. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
  613. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/go/test.go +0 -0
  614. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
  615. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
  616. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/java/test.java +0 -0
  617. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/javascript/test.js +0 -0
  618. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
  619. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/lua/test.lua +0 -0
  620. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/matlab/test.m +0 -0
  621. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
  622. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  623. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/php/test.php +0 -0
  624. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/pony/test.pony +0 -0
  625. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/properties/test.properties +0 -0
  626. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/python/test.py +0 -0
  627. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/ql/test.ql +0 -0
  628. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/r/test.r +0 -0
  629. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
  630. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
  631. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/rust/test.rs +0 -0
  632. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/scala/test.scala +0 -0
  633. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
  634. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/swift/test.swift +0 -0
  635. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
  636. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
  637. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/udev/test.rules +0 -0
  638. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/languages/zig/test.zig +0 -0
  639. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
  640. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
  641. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  642. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/watch.js +0 -0
  643. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/watch.lisp +0 -0
  644. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/watch.py +0 -0
  645. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/fixtures/watch_question.js +0 -0
  646. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/help/test_help.py +0 -0
  647. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  648. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_config.py +0 -0
  649. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_config_active.py +0 -0
  650. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  651. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  652. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  653. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/monorepo/test_workspace.py +0 -0
  654. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/helpers/observations/test_observation_service.py +0 -0
  655. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/hooks/__init__.py +0 -0
  656. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/hooks/test_base.py +0 -0
  657. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/hooks/test_manager.py +0 -0
  658. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/hooks/test_registry.py +0 -0
  659. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/integration/test_agent_mcp_management.py +0 -0
  660. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/integration/test_mcp_management.py +0 -0
  661. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/mcp/__init__.py +0 -0
  662. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/mcp/test_manager.py +0 -0
  663. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/scrape/test_playwright_disable.py +0 -0
  664. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/scrape/test_scrape.py +0 -0
  665. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/__init__.py +0 -0
  666. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/conftest.py +0 -0
  667. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_commands.py +0 -0
  668. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_config.py +0 -0
  669. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_delegate.py +0 -0
  670. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_finished.py +0 -0
  671. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_io_proxy.py +0 -0
  672. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_service.py +0 -0
  673. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
  674. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_extractions.py +0 -0
  675. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_get_lines.py +0 -0
  676. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_git_branch.py +0 -0
  677. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_git_diff.py +0 -0
  678. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_grep.py +0 -0
  679. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_insert_block.py +0 -0
  680. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_registry.py +0 -0
  681. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
  682. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_tool_arguments.py +0 -0
  683. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  684. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tools/validations.py +0 -0
  685. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/tui/test_app.py +0 -0
  686. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/unit/test_load_mcp.py +0 -0
  687. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/unit/test_remove_mcp.py +0 -0
  688. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  689. {cecli_dev-0.100.10rc2 → cecli_dev-0.100.11rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.10rc2
3
+ Version: 0.100.11rc1
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
@@ -51,7 +51,7 @@ Requires-Dist: textual>=6.0.0
51
51
  Requires-Dist: tomlkit>=0.14.0
52
52
  Requires-Dist: truststore
53
53
  Requires-Dist: xxhash>=3.6.0
54
- Requires-Dist: py-cymbal>=0.1.24
54
+ Requires-Dist: py-cymbal>=0.2.1
55
55
  Requires-Dist: cryptography>=42.0.0
56
56
  Requires-Dist: json-repair>=0.60.1
57
57
  Requires-Dist: marisa-trie>=1.0
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.100.8.dev"
3
+ __version__ = "0.100.11.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.100.10rc2'
22
- __version_tuple__ = version_tuple = (0, 100, 10, 'rc2')
21
+ __version__ = version = '0.100.11rc1'
22
+ __version_tuple__ = version_tuple = (0, 100, 11, 'rc1')
23
23
 
24
- __commit_id__ = commit_id = 'g0bbb611c7'
24
+ __commit_id__ = commit_id = 'g5657978fc'
@@ -157,9 +157,11 @@ class AgentCoder(Coder):
157
157
  config["large_file_token_threshold"] = nested.getter(
158
158
  config, "large_file_token_threshold", 8192
159
159
  )
160
+ config["show_lint_errors"] = nested.getter(config, "show_lint_errors", False)
160
161
  config["skip_cli_confirmations"] = nested.getter(
161
162
  config, "skip_cli_confirmations", nested.getter(config, "yolo", [])
162
163
  )
164
+
163
165
  config["command_timeout"] = nested.getter(config, "command_timeout", 30)
164
166
  config["allowed_commands"] = nested.getter(config, "allowed_commands", [])
165
167
  config["hot_reload"] = nested.getter(config, "hot_reload", False)
@@ -816,6 +818,11 @@ class AgentCoder(Coder):
816
818
  if interrupted:
817
819
  raise KeyboardInterrupt("Interrupted during linting")
818
820
 
821
+ has_errors = False
822
+
823
+ if self.lint_outcome is False:
824
+ has_errors = True
825
+
819
826
  self.lint_outcome = not lint_errors
820
827
 
821
828
  if lint_errors:
@@ -824,21 +831,35 @@ class AgentCoder(Coder):
824
831
  "# Fix any linting errors below, if possible and then continue with your task.",
825
832
  1,
826
833
  )
827
- ConversationService.get_manager(self).remove_message_by_hash_key(
828
- ("lint_errors", "agent")
829
- )
830
834
  ConversationService.get_manager(self).add_message(
831
835
  message_dict=dict(role="user", content=lint_errors),
832
- tag=MessageTag.CUR,
833
- hash_key=("lint_errors", "agent"),
836
+ tag=MessageTag.LINT,
837
+ hash_key=("lint_errors", "agent", lint_errors),
838
+ )
839
+ ConversationService.get_manager(self).add_message(
840
+ message_dict=dict(
841
+ role="user", content="Please address the latest linting errors."
842
+ ),
843
+ tag=MessageTag.LINT,
844
+ hash_key=("lint_errors", "agent", lint_errors, "cta"),
834
845
  promotion=ConversationService.get_manager(self).DEFAULT_TAG_PROMOTION_VALUE,
835
846
  mark_for_demotion=1,
836
- force=True,
847
+ mark_for_delete=0,
837
848
  )
838
849
  else:
839
- ConversationService.get_manager(self).remove_message_by_hash_key(
840
- ("lint_errors", "agent")
841
- )
850
+ if has_errors:
851
+ ConversationService.get_manager(self).add_message(
852
+ message_dict=dict(
853
+ role="user",
854
+ content=(
855
+ '<context name="linting_confirmation" from="agent">'
856
+ "All linting errors resolved."
857
+ "</context>"
858
+ ),
859
+ ),
860
+ tag=MessageTag.LINT,
861
+ hash_key=("lint_errors", "agent", str(time.monotonic_ns())),
862
+ )
842
863
 
843
864
  return tool_responses
844
865
 
@@ -491,6 +491,7 @@ class Coder(metaclass=UsageMeta):
491
491
  self.mcp_manager = mcp_manager
492
492
  self.enable_context_compaction = enable_context_compaction
493
493
 
494
+ self.context_compaction_current_ratio = 0
494
495
  self.context_compaction_max_tokens = context_compaction_max_tokens
495
496
  self.context_compaction_summary_tokens = context_compaction_summary_tokens
496
497
  self.max_reflections = nested.getter(self.args, "max_reflections", 3)
@@ -1439,7 +1440,10 @@ class Coder(metaclass=UsageMeta):
1439
1440
  if mime_type.startswith("image/") and supports_images:
1440
1441
  content = [
1441
1442
  {"type": "text", "text": f"Image file: {rel_fname}"},
1442
- {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}},
1443
+ {
1444
+ "type": "image_url",
1445
+ "image_url": {"url": image_url, "detail": "high", "format": mime_type},
1446
+ },
1443
1447
  ]
1444
1448
  elif mime_type == "application/pdf" and supports_pdfs:
1445
1449
  content = [
@@ -2000,12 +2004,15 @@ class Coder(metaclass=UsageMeta):
2000
2004
 
2001
2005
  combined_tokens = done_tokens + cur_tokens + diff_tokens
2002
2006
 
2007
+ self.context_compaction_current_ratio = all_tokens / self.context_compaction_max_tokens
2008
+
2003
2009
  if force or (
2004
2010
  all_tokens >= self.context_compaction_max_tokens * 0.9
2005
- and ConversationService.get_chunks(self).last_clear_count > 10
2011
+ and ConversationService.get_chunks(self).last_clear_count > 20
2006
2012
  ):
2007
- manager.clear_tag(MessageTag.DIFFS)
2008
- manager.clear_tag(MessageTag.FILE_CONTEXTS)
2013
+ manager.clear_tag(MessageTag.LINT, ratio=0.33)
2014
+ manager.clear_tag(MessageTag.DIFFS, ratio=0.33)
2015
+ manager.clear_tag(MessageTag.FILE_CONTEXTS, ratio=0.33)
2009
2016
  ConversationService.get_files(self).clear_file_cache()
2010
2017
  ConversationService.get_chunks(self).flush_removals()
2011
2018
 
@@ -3248,6 +3255,12 @@ class Coder(metaclass=UsageMeta):
3248
3255
  res += errors
3249
3256
  res += "\n"
3250
3257
 
3258
+ if self.edit_format in ("agent", "subagent"):
3259
+ if self.agent_config.get("show_lint_errors"):
3260
+ show_output = True
3261
+ else:
3262
+ show_output = False
3263
+
3251
3264
  if res and show_output:
3252
3265
  self.io.tool_warning(res)
3253
3266
 
@@ -4023,7 +4036,9 @@ class Coder(metaclass=UsageMeta):
4023
4036
  input_cost_per_token = self.get_active_model().info.get("input_cost_per_token") or 0
4024
4037
  output_cost_per_token = self.get_active_model().info.get("output_cost_per_token") or 0
4025
4038
  input_cost_per_token_cache_hit = (
4026
- self.get_active_model().info.get("input_cost_per_token_cache_hit") or 0
4039
+ self.get_active_model().info.get("input_cost_per_token_cache_hit")
4040
+ or self.get_active_model().info.get("cache_read_input_token_cost")
4041
+ or 0
4027
4042
  )
4028
4043
 
4029
4044
  # deepseek
@@ -4035,14 +4050,13 @@ class Coder(metaclass=UsageMeta):
4035
4050
  # == total tokens that were
4036
4051
 
4037
4052
  if input_cost_per_token_cache_hit:
4038
- # must be deepseek
4039
- cost += input_cost_per_token_cache_hit * cache_hit_tokens
4040
- cost += (prompt_tokens - input_cost_per_token_cache_hit) * input_cost_per_token
4053
+ cost += cache_hit_tokens * input_cost_per_token_cache_hit
4054
+ cost += (prompt_tokens - cache_hit_tokens) * input_cost_per_token
4041
4055
  else:
4042
4056
  # hard code the anthropic adjustments, no-ops for other models since cache_x_tokens==0
4043
4057
  cost += cache_write_tokens * input_cost_per_token * 1.25
4044
4058
  cost += cache_hit_tokens * input_cost_per_token * 0.10
4045
- cost += prompt_tokens * input_cost_per_token
4059
+ cost += (prompt_tokens - cache_hit_tokens) * input_cost_per_token
4046
4060
 
4047
4061
  cost += completion_tokens * output_cost_per_token
4048
4062
  return cost
@@ -1,10 +1,14 @@
1
+ import json
1
2
  import os
2
3
  import weakref
3
4
  from typing import Any, Dict, List, Optional, Tuple
4
5
 
5
6
  import xxhash
6
7
 
7
- from cecli.helpers.hashline import get_hashline_content_diff, hashline
8
+ from cecli.helpers.hashline import (
9
+ get_hashline_content_diff,
10
+ hashline_formatted,
11
+ )
8
12
  from cecli.repomap import RepoMap
9
13
 
10
14
  from .service import ConversationService
@@ -25,8 +29,11 @@ class ConversationFiles:
25
29
  self.uuid = coder.uuid
26
30
  self._file_contents_original: Dict[str, str] = {}
27
31
  self._file_contents_snapshot: Dict[str, str] = {}
32
+ self._file_json_contents: Dict[str, str] = {}
28
33
  self._file_timestamps: Dict[str, float] = {}
29
34
  self._file_diffs: Dict[str, str] = {}
35
+ self._file_diff_versions: Dict[str, int] = {}
36
+ self._file_context_versions: Dict[str, int] = {}
30
37
  self._file_stub_contents: Dict[str, str] = {}
31
38
  self._file_to_message_id: Dict[str, str] = {}
32
39
  self._image_files: Dict[str, bool] = {}
@@ -109,7 +116,10 @@ class ConversationFiles:
109
116
  try:
110
117
  content = coder.io.read_text(abs_fname, silent=True)
111
118
  if coder.hashlines:
112
- content = hashline(content)
119
+ content, json_str = hashline_formatted(
120
+ content, file_name=abs_fname, partial=False
121
+ )
122
+ self._file_json_contents[abs_fname] = json_str
113
123
  except Exception:
114
124
  content = "" # Empty content for unreadable files
115
125
 
@@ -226,7 +236,9 @@ class ConversationFiles:
226
236
  try:
227
237
  current_content = coder.io.read_text(abs_fname, silent=True)
228
238
  if coder.hashlines:
229
- current_content = hashline(current_content)
239
+ current_content, _ = hashline_formatted(
240
+ current_content, file_name=abs_fname, partial=False
241
+ )
230
242
  except Exception:
231
243
  return None
232
244
 
@@ -239,6 +251,9 @@ class ConversationFiles:
239
251
  abs_fname, self._file_contents_original[abs_fname]
240
252
  )
241
253
 
254
+ if not snapshot_content:
255
+ return None
256
+
242
257
  # Generate diff between snapshot and current content using hashline helper
243
258
  diff_text = get_hashline_content_diff(
244
259
  old_content=snapshot_content,
@@ -265,10 +280,14 @@ class ConversationFiles:
265
280
  """
266
281
  coder = self.get_coder()
267
282
  diff = self.generate_diff(fname)
283
+ diff_output = diff
268
284
 
269
285
  if diff:
270
- # Store diff
286
+ # Increment diff version counter
271
287
  abs_fname = os.path.abspath(fname)
288
+ self._file_diff_versions[abs_fname] = self._file_diff_versions.get(abs_fname, 0) + 1
289
+
290
+ # Store diff
272
291
  self._file_diffs[abs_fname] = diff
273
292
 
274
293
  rel_fname = fname
@@ -278,6 +297,16 @@ class ConversationFiles:
278
297
  rel_fname = coder.get_rel_fname(fname)
279
298
  prefix_str = "content ID prefixed " if getattr(coder, "hashlines") else ""
280
299
 
300
+ if coder.hashlines:
301
+ # Wrap diff in JSON structure
302
+ diff_output = json.dumps(
303
+ {
304
+ "file_name": rel_fname,
305
+ "prefixed_diff": diff,
306
+ },
307
+ ensure_ascii=False,
308
+ )
309
+
281
310
  # Add diff message to conversation
282
311
  content_hash = xxhash.xxh3_128_hexdigest(diff.encode("utf-8"))
283
312
 
@@ -285,7 +314,7 @@ class ConversationFiles:
285
314
  "role": "user",
286
315
  "content": (
287
316
  f"{rel_fname} has been updated. Review this {prefix_str}diff of the changes to"
288
- f" ensure all modifications are appropriate:\n\n{diff}"
317
+ f" ensure all modifications are appropriate:\n\n{diff_output}"
289
318
  ),
290
319
  }
291
320
 
@@ -328,6 +357,22 @@ class ConversationFiles:
328
357
 
329
358
  return content or ""
330
359
 
360
+ def get_file_json(self, fname: str) -> Optional[str]:
361
+ """
362
+ Get the cached JSON metadata for a file, if available.
363
+
364
+ The JSON is generated and cached during add_file() and contains
365
+ file_name, start_line, end_line, partial, and prefixed_contents.
366
+
367
+ Args:
368
+ fname: Absolute file path
369
+
370
+ Returns:
371
+ JSON-formatted string, or None if not cached
372
+ """
373
+ abs_fname = os.path.abspath(fname)
374
+ return self._file_json_contents.get(abs_fname)
375
+
331
376
  def clear_file_cache(self, fname: Optional[str] = None, clear_contexts=True) -> None:
332
377
  """
333
378
  Clear cache for specific file or all files.
@@ -340,7 +385,10 @@ class ConversationFiles:
340
385
  self._file_contents_snapshot.clear()
341
386
  self._file_timestamps.clear()
342
387
  self._file_diffs.clear()
388
+ self._file_diff_versions.clear()
389
+ self._file_context_versions.clear()
343
390
  self._file_stub_contents.clear()
391
+ self._file_json_contents.clear()
344
392
  self._file_to_message_id.clear()
345
393
  if clear_contexts:
346
394
  self._numbered_contexts.clear()
@@ -350,7 +398,10 @@ class ConversationFiles:
350
398
  self._file_contents_snapshot.pop(abs_fname, None)
351
399
  self._file_timestamps.pop(abs_fname, None)
352
400
  self._file_diffs.pop(abs_fname, None)
401
+ self._file_diff_versions.pop(abs_fname, None)
402
+ self._file_context_versions.pop(abs_fname, None)
353
403
  self._file_stub_contents.pop(abs_fname, None)
404
+ self._file_json_contents.pop(abs_fname, None)
354
405
  self._file_to_message_id.pop(abs_fname, None)
355
406
  self._image_files.pop(abs_fname, None)
356
407
  if clear_contexts:
@@ -402,6 +453,8 @@ class ConversationFiles:
402
453
  The merged range (start_line, end_line) that contains the input range.
403
454
  """
404
455
  abs_fname = os.path.abspath(file_path)
456
+ diff_version = self._file_diff_versions.get(abs_fname, 0)
457
+ context_version = self._file_context_versions.get(abs_fname, 0)
405
458
 
406
459
  # Validate range
407
460
  if start_line > end_line:
@@ -410,6 +463,11 @@ class ConversationFiles:
410
463
  # Get existing ranges
411
464
  existing_ranges = self._numbered_contexts.get(abs_fname, [])
412
465
 
466
+ if diff_version != context_version:
467
+ self._file_context_versions[abs_fname] = diff_version
468
+ # auto clear on edit
469
+ # existing_ranges = []
470
+
413
471
  # Add new range
414
472
  new_range = (start_line, end_line)
415
473
  all_ranges = existing_ranges + [new_range]
@@ -481,7 +539,7 @@ class ConversationFiles:
481
539
  abs_fname = os.path.abspath(file_path)
482
540
  self._last_merged_ranges.pop(abs_fname, None)
483
541
 
484
- def get_file_context(self, file_path: str, all_ranges=False) -> str:
542
+ def get_file_context(self, file_path: str, all_ranges=False, check_versions=True) -> str:
485
543
  """
486
544
  Generate hashline representation of cached context ranges.
487
545
 
@@ -489,7 +547,8 @@ class ConversationFiles:
489
547
  file_path: Absolute file path
490
548
 
491
549
  Returns:
492
- Hashline representation of cached ranges, or empty string if no ranges
550
+ JSON-formatted string with file_path, version, and results array,
551
+ or empty string if no ranges
493
552
  """
494
553
  abs_fname = os.path.abspath(file_path)
495
554
 
@@ -518,8 +577,10 @@ class ConversationFiles:
518
577
  return ""
519
578
 
520
579
  # Generate hashline representations for each range
521
- context_parts = []
580
+ results = []
522
581
  content_lines = content.splitlines()
582
+ diff_version = self._file_diff_versions.get(abs_fname, 0)
583
+ context_version = self._file_context_versions.get(abs_fname, 0)
523
584
 
524
585
  for i, (start_line, end_line) in enumerate(ranges):
525
586
  # Note: hashline uses 1-based line numbers, so no conversion needed
@@ -532,15 +593,34 @@ class ConversationFiles:
532
593
  # Extract lines for this range (0-based indexing for list)
533
594
  lines = content_lines[start_line_adj - 1 : end_line_adj]
534
595
 
535
- # Generate hashline representation using the hashline() function
536
- # Join lines back with newlines for hashline()
596
+ # Generate JSON for this range using hashline_formatted()
537
597
  range_content = "\n".join(lines)
538
- hashline_content = hashline(range_content, start_line=start_line_adj)
539
598
 
540
- context_parts.append(hashline_content.strip())
599
+ # Don't duplicate whole contents that are already in context
600
+ if (
601
+ check_versions
602
+ and range_content == content
603
+ and (abs_fname in coder.abs_fnames or abs_fname in coder.abs_read_only_fnames)
604
+ and diff_version == context_version
605
+ ):
606
+ continue
607
+
608
+ _, json_str = hashline_formatted(
609
+ range_content, file_name=abs_fname, partial=True, start_line=start_line_adj
610
+ )
611
+ results.append(json.loads(json_str))
612
+
613
+ # Build and return the top-level JSON structure
614
+ # version = self._file_diff_versions.get(abs_fname, 0)
615
+ if results:
616
+ result = {
617
+ "file_path": file_path,
618
+ "results": results,
619
+ # "version": version,
620
+ }
621
+ return json.dumps(result, ensure_ascii=False)
541
622
 
542
- # Join with ellipsis separator
543
- return "\n...\n\n".join(context_parts)
623
+ return None
544
624
 
545
625
  def remove_file_context(self, file_path: str) -> None:
546
626
  """
@@ -168,8 +168,8 @@ class ConversationChunks:
168
168
  if not coder:
169
169
  return
170
170
 
171
- # if self._cancel_post_message_injections():
172
- # return
171
+ if self._cancel_post_message_injections():
172
+ return
173
173
 
174
174
  message = random.choice(
175
175
  [
@@ -192,7 +192,7 @@ class ConversationChunks:
192
192
  " the current data."
193
193
  ),
194
194
  (
195
- "You’ve got what you need, please invoke the right tools to keep making"
195
+ "Based on what you know, please invoke the right tools to keep making"
196
196
  " progress towards our goal."
197
197
  ),
198
198
  (
@@ -286,13 +286,14 @@ class ConversationChunks:
286
286
 
287
287
  if (
288
288
  should_clear
289
+ and coder.context_compaction_current_ratio > 0.8
289
290
  and self.last_clear_count >= 20
290
291
  and diff_tokens + other_tokens > coder.context_compaction_max_tokens * 0.5
291
292
  ):
292
293
  self.last_clear_count = 0
293
294
 
294
295
  # Clear all diff messages
295
- ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS)
296
+ ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS, 0.33)
296
297
  # Clear ConversationFiles caches to force regeneration
297
298
  ConversationService.get_files(coder).clear_file_cache(clear_contexts=False)
298
299
 
@@ -623,7 +624,16 @@ class ConversationChunks:
623
624
  ConversationService.get_files(coder).add_file(fname, force_refresh=refresh)
624
625
 
625
626
  # Get file content (with proper caching and stub generation)
626
- content = ConversationService.get_files(coder).get_file_stub(fname)
627
+ content = None
628
+ if coder.edit_format in ("agent", "subagent"):
629
+ content = ConversationService.get_files(coder).get_file_json(fname)
630
+ else:
631
+ content = ConversationService.get_files(coder).get_file_stub(fname)
632
+
633
+ if not content:
634
+ ConversationService.get_files(coder).clear_file_cache(fname)
635
+ continue
636
+
627
637
  if content:
628
638
  # Add user message with file path as hash_key
629
639
  rel_fname = coder.get_rel_fname(fname)
@@ -704,7 +714,12 @@ class ConversationChunks:
704
714
  ConversationService.get_files(coder).add_file(fname, force_refresh=refresh)
705
715
 
706
716
  # Get file content (with proper caching and stub generation)
707
- content = ConversationService.get_files(coder).get_file_stub(fname)
717
+ content = None
718
+ if coder.edit_format in ("agent", "subagent"):
719
+ content = ConversationService.get_files(coder).get_file_json(fname)
720
+ else:
721
+ content = ConversationService.get_files(coder).get_file_stub(fname)
722
+
708
723
  if not content:
709
724
  ConversationService.get_files(coder).clear_file_cache(fname)
710
725
  continue
@@ -998,14 +1013,25 @@ class ConversationChunks:
998
1013
  def flush_removals(self):
999
1014
  self._deferred_removals.clear()
1000
1015
 
1001
- def _cancel_post_message_injections(self):
1016
+ def _cancel_post_message_injections(self, modulus=10):
1002
1017
  coder = self.get_coder()
1003
1018
  if not coder:
1004
1019
  return False
1005
1020
 
1006
1021
  # Add system reminder as a pre-prompt context block
1007
- if coder.edit_format in ("agent", "subagent") and coder.turn_count % 5 != 0:
1008
- return True
1022
+ if coder.edit_format in ("agent", "subagent"):
1023
+ if coder.turn_count < modulus:
1024
+ return True
1025
+
1026
+ if coder.edit_allowed and not coder._get_repetitive_tools():
1027
+ return True
1028
+
1029
+ if coder.turn_count % modulus != 0:
1030
+ # and coder.turn_count % modulus != 0
1031
+ if not coder.edit_allowed:
1032
+ return False
1033
+ else:
1034
+ return True
1009
1035
 
1010
1036
  return False
1011
1037
 
@@ -370,8 +370,14 @@ class ConversationManager:
370
370
  messages_dict = self._add_cache_control(messages_dict)
371
371
  return messages_dict
372
372
 
373
- def clear_tag(self, tag: str) -> None:
374
- """Remove all messages with given tag."""
373
+ def clear_tag(self, tag: str, ratio: float = 0) -> None:
374
+ """Remove all messages with given tag.
375
+
376
+ Args:
377
+ tag: The tag to remove messages for
378
+ ratio: If > 0, only consider the newest ratio portion of messages
379
+ (e.g., 0.25 = newest 25%)
380
+ """
375
381
  if not isinstance(tag, MessageTag):
376
382
  try:
377
383
  tag = MessageTag(tag)
@@ -381,7 +387,13 @@ class ConversationManager:
381
387
  tag_str = tag.value
382
388
  messages_to_remove = []
383
389
 
384
- for message in self._messages:
390
+ # If ratio is set, only look at the newest portion of messages
391
+ messages = self._messages
392
+ if ratio > 0:
393
+ count = max(1, int(len(messages) * ratio))
394
+ messages = messages[-count:]
395
+
396
+ for message in messages:
385
397
  if message.tag == tag_str:
386
398
  messages_to_remove.append(message)
387
399
 
@@ -394,17 +406,25 @@ class ConversationManager:
394
406
  self._tag_cache.pop(tag_str, None)
395
407
  self._tag_cache.pop(self._ALL_MESSAGES_CACHE_KEY, None)
396
408
 
397
- def remove_messages_by_hash_key_pattern(self, pattern_checker) -> None:
409
+ def remove_messages_by_hash_key_pattern(self, pattern_checker, ratio: float = 0) -> None:
398
410
  """
399
411
  Remove messages whose hash_key matches a pattern.
400
412
 
401
413
  Args:
402
414
  pattern_checker: A function that takes a hash_key (tuple) and returns True
403
415
  if the message should be removed
416
+ ratio: If > 0, only consider the newest ratio portion of messages
417
+ (e.g., 0.25 = newest 25%)
404
418
  """
405
419
  messages_to_remove = []
406
420
 
407
- for message in self._messages:
421
+ # If ratio is set, only look at the newest portion of messages
422
+ messages = self._messages
423
+ if ratio > 0:
424
+ count = max(1, int(len(messages) * ratio))
425
+ messages = messages[-count:]
426
+
427
+ for message in messages:
408
428
  if message.hash_key and pattern_checker(message.hash_key):
409
429
  messages_to_remove.append(message)
410
430
 
@@ -421,17 +441,25 @@ class ConversationManager:
421
441
  self._tag_cache.pop(tag, None)
422
442
  self._tag_cache.pop(self._ALL_MESSAGES_CACHE_KEY, None)
423
443
 
424
- def remove_message_by_hash_key(self, hash_key: Tuple[str, ...]) -> bool:
444
+ def remove_message_by_hash_key(self, hash_key: Tuple[str, ...], ratio: float = 0) -> bool:
425
445
  """
426
446
  Remove a message by its exact hash key.
427
447
 
428
448
  Args:
429
449
  hash_key: The exact hash key to match
450
+ ratio: If > 0, only consider the newest ratio portion of messages
451
+ (e.g., 0.25 = newest 25%)
430
452
 
431
453
  Returns:
432
454
  True if a message was removed, False otherwise
433
455
  """
434
- messages_to_remove = [m for m in self._messages if m.hash_key == hash_key]
456
+ # If ratio is set, only look at the newest portion of messages
457
+ messages = self._messages
458
+ if ratio > 0:
459
+ count = max(1, int(len(messages) * ratio))
460
+ messages = messages[-count:]
461
+
462
+ messages_to_remove = [m for m in messages if m.hash_key == hash_key]
435
463
  if not messages_to_remove:
436
464
  return False
437
465
 
@@ -19,6 +19,7 @@ class MessageTag(str, Enum):
19
19
  CHAT_FILES = "chat_files"
20
20
  EDIT_FILES = "edit_files"
21
21
  DIFFS = "diffs"
22
+ LINT = "lint"
22
23
  FILE_CONTEXTS = "file_contexts"
23
24
  CUR = "cur"
24
25
  DONE = "done"
@@ -37,6 +38,7 @@ DEFAULT_TAG_PRIORITY: Dict[MessageTag, int] = {
37
38
  MessageTag.CHAT_FILES: 200,
38
39
  MessageTag.EDIT_FILES: 200,
39
40
  MessageTag.DIFFS: 200,
41
+ MessageTag.LINT: 200,
40
42
  MessageTag.FILE_CONTEXTS: 200,
41
43
  MessageTag.DONE: 200,
42
44
  MessageTag.CUR: 200,
@@ -56,6 +58,7 @@ DEFAULT_TAG_TIMESTAMP_OFFSET: Dict[MessageTag, int] = {
56
58
  MessageTag.CHAT_FILES: 0,
57
59
  MessageTag.EDIT_FILES: 0,
58
60
  MessageTag.DIFFS: 0,
61
+ MessageTag.LINT: 0,
59
62
  MessageTag.FILE_CONTEXTS: 0,
60
63
  MessageTag.DONE: 0,
61
64
  MessageTag.CUR: 0,
@@ -1,7 +1,8 @@
1
- import hashlib
2
1
  import json
3
2
  from typing import Any, Dict, Optional, Tuple
4
3
 
4
+ import xxhash
5
+
5
6
 
6
7
  def generate_message_hash(
7
8
  role: str,
@@ -35,7 +36,7 @@ def generate_message_hash(
35
36
  else:
36
37
  key_data = f"{role}:{content or ''}"
37
38
 
38
- return hashlib.md5(key_data.encode("utf-8")).hexdigest()
39
+ return xxhash.xxh3_128_hexdigest(key_data.encode("utf-8"))
39
40
 
40
41
 
41
42
  def validate_message_dict(message_dict: Dict[str, Any]) -> bool: