cecli-dev 0.100.12rc3__tar.gz → 0.100.13__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 (704) hide show
  1. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/ubuntu-tests.yml +3 -0
  2. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/windows-tests.yml +3 -0
  3. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/PKG-INFO +1 -1
  4. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/_version.py +3 -3
  5. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/args.py +9 -0
  6. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/agent_coder.py +2 -1
  7. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/base_coder.py +44 -13
  8. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/__init__.py +3 -0
  9. cecli_dev-0.100.13/cecli/commands/agent_tree.py +95 -0
  10. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/clear.py +2 -3
  11. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/reset.py +1 -1
  12. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/integration.py +4 -56
  13. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/hashline.py +55 -15
  14. cecli_dev-0.100.13/cecli/helpers/hashpos/hashpos.py +237 -0
  15. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/model_providers.py +16 -0
  16. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/observations/service.py +9 -3
  17. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/__init__.py +2 -0
  18. cecli_dev-0.100.13/cecli/hooks/helpers.py +188 -0
  19. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/llm.py +5 -1
  20. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/main.py +19 -0
  21. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mcp/manager.py +30 -0
  22. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mcp/server.py +143 -4
  23. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/models.py +1 -0
  24. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/agent.yml +13 -8
  25. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/base.yml +1 -0
  26. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/subagent.yml +13 -8
  27. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/edit_file.py +56 -31
  28. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/read_file.py +2 -1
  29. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/agent-mode.md +2 -0
  30. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/hooks.md +89 -4
  31. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/mcp.md +18 -0
  32. cecli_dev-0.100.13/cecli/website/docs/config/model-providers.md +180 -0
  33. cecli_dev-0.100.12rc3/cecli/website/docs/config.md → cecli_dev-0.100.13/cecli/website/docs/config/retries.md +5 -42
  34. cecli_dev-0.100.13/cecli/website/docs/config.md +78 -0
  35. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/PKG-INFO +1 -1
  36. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/SOURCES.txt +13 -0
  37. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/scm_file_list.json +823 -810
  38. cecli_dev-0.100.13/cecli_dev.egg-info/scm_version.json +8 -0
  39. cecli_dev-0.100.13/scripts/optimize_tokens.sh +67 -0
  40. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_hashline.py +27 -40
  41. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/observations/test_observation_service.py +30 -12
  42. cecli_dev-0.100.13/tests/mcp/conftest.py +138 -0
  43. cecli_dev-0.100.13/tests/mcp/mock_server.py +132 -0
  44. cecli_dev-0.100.13/tests/mcp/test_keepalive_concurrency.py +136 -0
  45. cecli_dev-0.100.13/tests/mcp/test_keepalive_config.py +143 -0
  46. cecli_dev-0.100.13/tests/mcp/test_keepalive_integration.py +147 -0
  47. cecli_dev-0.100.13/tests/mcp/test_keepalive_logging.py +82 -0
  48. cecli_dev-0.100.13/tests/mcp/test_keepalive_resilience.py +132 -0
  49. cecli_dev-0.100.13/tests/mcp/test_keepalive_unit.py +151 -0
  50. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_insert_block.py +1 -1
  51. cecli_dev-0.100.12rc3/cecli/helpers/hashpos/hashpos.py +0 -217
  52. cecli_dev-0.100.12rc3/cecli_dev.egg-info/scm_version.json +0 -8
  53. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.dockerignore +0 -0
  54. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.flake8 +0 -0
  55. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.gitattributes +0 -0
  56. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  57. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/check_pypi_version.yml +0 -0
  58. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/docker-build-test.yml +0 -0
  59. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/docker-release.yml +0 -0
  60. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/issues.yml +0 -0
  61. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/pages.yml +0 -0
  62. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/pre-commit.yml +0 -0
  63. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/release.yml +0 -0
  64. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.github/workflows/windows_check_pypi_version.yml +0 -0
  65. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.gitignore +0 -0
  66. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/.pre-commit-config.yaml +0 -0
  67. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/CHANGELOG.md +0 -0
  68. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/CNAME +0 -0
  69. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/CONTRIBUTING.md +0 -0
  70. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/HISTORY.md +0 -0
  71. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/LICENSE.txt +0 -0
  72. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/MANIFEST.in +0 -0
  73. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/README.md +0 -0
  74. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/Dockerfile +0 -0
  75. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/README.md +0 -0
  76. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/__init__.py +0 -0
  77. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/benchmark.py +0 -0
  78. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/benchmark_classic.py +0 -0
  79. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/clone-exercism.sh +0 -0
  80. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/cpp-test.sh +0 -0
  81. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/docker.sh +0 -0
  82. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/docker_build.sh +0 -0
  83. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/install-docker-ubuntu.sh +0 -0
  84. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/npm-test.sh +0 -0
  85. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/over_time.py +0 -0
  86. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/plot.sh +0 -0
  87. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/plots.py +0 -0
  88. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/problem_stats.py +0 -0
  89. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/prompts.py +0 -0
  90. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/refactor_tools.py +0 -0
  91. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/rsync.sh +0 -0
  92. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/rungrid.py +0 -0
  93. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/swe-bench-lite.txt +0 -0
  94. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/swe-bench.txt +0 -0
  95. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/swe_bench.py +0 -0
  96. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/test_benchmark.py +0 -0
  97. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/variations.1.sh +0 -0
  98. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/variations.2.sh +0 -0
  99. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/variations.3.sh +0 -0
  100. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/benchmark/variations.4.sh +0 -0
  101. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/__init__.py +0 -0
  102. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/__main__.py +0 -0
  103. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/args_formatter.py +0 -0
  104. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/change_tracker.py +0 -0
  105. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/__init__.py +0 -0
  106. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/architect_coder.py +0 -0
  107. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/ask_coder.py +0 -0
  108. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/chat_chunks.py +0 -0
  109. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/context_coder.py +0 -0
  110. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/copypaste_coder.py +0 -0
  111. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editblock_coder.py +0 -0
  112. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editblock_fenced_coder.py +0 -0
  113. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editblock_func_coder.py +0 -0
  114. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  115. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editor_editblock_coder.py +0 -0
  116. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/editor_whole_coder.py +0 -0
  117. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/hashline_coder.py +0 -0
  118. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/help_coder.py +0 -0
  119. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/patch_coder.py +0 -0
  120. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/search_replace.py +0 -0
  121. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/shell.py +0 -0
  122. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/single_wholefile_func_coder.py +0 -0
  123. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/sub_agent_coder.py +0 -0
  124. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/udiff_coder.py +0 -0
  125. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/udiff_simple.py +0 -0
  126. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/wholefile_coder.py +0 -0
  127. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/coders/wholefile_func_coder.py +0 -0
  128. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/add.py +0 -0
  129. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/agent.py +0 -0
  130. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/agent_model.py +0 -0
  131. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/architect.py +0 -0
  132. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/ask.py +0 -0
  133. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/chat_mode.py +0 -0
  134. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/code.py +0 -0
  135. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/command_prefix.py +0 -0
  136. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/commit.py +0 -0
  137. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/compact.py +0 -0
  138. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/context.py +0 -0
  139. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/context_blocks.py +0 -0
  140. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/context_management.py +0 -0
  141. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/copy.py +0 -0
  142. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/copy_context.py +0 -0
  143. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/core.py +0 -0
  144. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/diff.py +0 -0
  145. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/drop.py +0 -0
  146. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/editor.py +0 -0
  147. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/editor_model.py +0 -0
  148. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/exclude_skill.py +0 -0
  149. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/exit.py +0 -0
  150. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/git.py +0 -0
  151. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/hashline.py +0 -0
  152. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/help.py +0 -0
  153. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/history_search.py +0 -0
  154. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/hooks.py +0 -0
  155. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/hot_reload.py +0 -0
  156. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/include_skill.py +0 -0
  157. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/lint.py +0 -0
  158. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/list_mcp.py +0 -0
  159. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/list_sessions.py +0 -0
  160. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/list_skills.py +0 -0
  161. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/load.py +0 -0
  162. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/load_hook.py +0 -0
  163. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/load_mcp.py +0 -0
  164. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/load_session.py +0 -0
  165. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/load_skill.py +0 -0
  166. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/ls.py +0 -0
  167. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/map.py +0 -0
  168. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/map_refresh.py +0 -0
  169. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/merge.py +0 -0
  170. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/model.py +0 -0
  171. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/models.py +0 -0
  172. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/multiline_mode.py +0 -0
  173. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/paste.py +0 -0
  174. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/quit.py +0 -0
  175. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/read_only.py +0 -0
  176. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/read_only_stub.py +0 -0
  177. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/reap_agent.py +0 -0
  178. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/reasoning_effort.py +0 -0
  179. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/remove_hook.py +0 -0
  180. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/remove_mcp.py +0 -0
  181. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/remove_skill.py +0 -0
  182. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/report.py +0 -0
  183. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/rules.py +0 -0
  184. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/run.py +0 -0
  185. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/save.py +0 -0
  186. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/save_session.py +0 -0
  187. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/settings.py +0 -0
  188. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/spawn_agent.py +0 -0
  189. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/switch_agent.py +0 -0
  190. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/terminal_data/linux.keytab +0 -0
  191. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/terminal_setup.py +0 -0
  192. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/test.py +0 -0
  193. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/think_tokens.py +0 -0
  194. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/tokens.py +0 -0
  195. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/undo.py +0 -0
  196. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/utils/__init__.py +0 -0
  197. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/utils/base_command.py +0 -0
  198. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/utils/helpers.py +0 -0
  199. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/utils/registry.py +0 -0
  200. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/utils/save_load_manager.py +0 -0
  201. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/voice.py +0 -0
  202. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/weak_model.py +0 -0
  203. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/web.py +0 -0
  204. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/commands/workspace.py +0 -0
  205. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/deprecated_args.py +0 -0
  206. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/diffs.py +0 -0
  207. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/dump.py +0 -0
  208. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/editor.py +0 -0
  209. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/exceptions.py +0 -0
  210. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/format_settings.py +0 -0
  211. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/help.py +0 -0
  212. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/help_pats.py +0 -0
  213. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/__init__.py +0 -0
  214. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/agents/__init__.py +0 -0
  215. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/agents/config.py +0 -0
  216. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/agents/service.py +0 -0
  217. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/background_commands.py +0 -0
  218. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/command_parser.py +0 -0
  219. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/__init__.py +0 -0
  220. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/base_message.py +0 -0
  221. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/files.py +0 -0
  222. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/manager.py +0 -0
  223. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/service.py +0 -0
  224. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/tags.py +0 -0
  225. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/conversation/utils.py +0 -0
  226. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/copypaste.py +0 -0
  227. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/coroutines.py +0 -0
  228. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/crypto.py +0 -0
  229. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_searcher.py +0 -0
  230. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/__init__.py +0 -0
  231. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/builders.py +0 -0
  232. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/ignore.py +0 -0
  233. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/ngram_index.py +0 -0
  234. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/service.py +0 -0
  235. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/file_system/trie_index.py +0 -0
  236. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/__init__.py +0 -0
  237. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/dump.py +0 -0
  238. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  239. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/main.py +0 -0
  240. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/parsers.py +0 -0
  241. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/grep_ast/tsl.py +0 -0
  242. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/hashpos/__init__.py +0 -0
  243. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  244. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/io_proxy.py +0 -0
  245. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/leak_detect.py +0 -0
  246. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/__init__.py +0 -0
  247. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/config.py +0 -0
  248. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/local_workspace.py +0 -0
  249. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/project.py +0 -0
  250. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/workspace.py +0 -0
  251. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/monorepo/worktree.py +0 -0
  252. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/nested.py +0 -0
  253. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/observations/__init__.py +0 -0
  254. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/plugin_manager.py +0 -0
  255. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/profiler.py +0 -0
  256. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/requests.py +0 -0
  257. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/responses.py +0 -0
  258. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/similarity.py +0 -0
  259. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/skills.py +0 -0
  260. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/helpers/threading.py +0 -0
  261. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/history.py +0 -0
  262. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/base.py +0 -0
  263. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/integration.py +0 -0
  264. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/manager.py +0 -0
  265. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/registry.py +0 -0
  266. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/service.py +0 -0
  267. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/hooks/types.py +0 -0
  268. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/interruptible_input.py +0 -0
  269. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/io.py +0 -0
  270. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/linter.py +0 -0
  271. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mcp/__init__.py +0 -0
  272. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mcp/oauth.py +0 -0
  273. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mcp/utils.py +0 -0
  274. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/mdstream.py +0 -0
  275. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/onboarding.py +0 -0
  276. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/__init__.py +0 -0
  277. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/architect.yml +0 -0
  278. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/ask.yml +0 -0
  279. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/context.yml +0 -0
  280. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/copypaste.yml +0 -0
  281. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editblock.yml +0 -0
  282. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editblock_fenced.yml +0 -0
  283. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editblock_func.yml +0 -0
  284. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editor_diff_fenced.yml +0 -0
  285. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editor_editblock.yml +0 -0
  286. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/editor_whole.yml +0 -0
  287. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/hashline.yml +0 -0
  288. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/help.yml +0 -0
  289. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/patch.yml +0 -0
  290. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/single_wholefile_func.yml +0 -0
  291. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/udiff.yml +0 -0
  292. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/udiff_simple.yml +0 -0
  293. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/utils/__init__.py +0 -0
  294. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/utils/registry.py +0 -0
  295. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/utils/system.py +0 -0
  296. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/wholefile.yml +0 -0
  297. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/prompts/wholefile_func.yml +0 -0
  298. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  299. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  300. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  301. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  302. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  303. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  304. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  305. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  306. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  307. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  308. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  309. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  310. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  311. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  312. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  313. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  314. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  315. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  316. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  317. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  318. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  319. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  320. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  321. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  322. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  323. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  324. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  325. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  326. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  327. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  328. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  329. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  330. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/README.md +0 -0
  331. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  332. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  333. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  334. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  335. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  336. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  337. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  338. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  339. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  340. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  341. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  342. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  343. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  344. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  345. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  346. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  347. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  348. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  349. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  350. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  351. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  352. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  353. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  354. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  355. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  356. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  357. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  358. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/reasoning_tags.py +0 -0
  359. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/repo.py +0 -0
  360. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/repomap.py +0 -0
  361. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/report.py +0 -0
  362. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/resources/__init__.py +0 -0
  363. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/resources/model-metadata.json +0 -0
  364. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/resources/model-settings.yml +0 -0
  365. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/resources/providers.json +0 -0
  366. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/run_cmd.py +0 -0
  367. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/scrape.py +0 -0
  368. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/sendchat.py +0 -0
  369. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/sessions.py +0 -0
  370. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/special.py +0 -0
  371. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/__init__.py +0 -0
  372. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/_yield.py +0 -0
  373. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/command.py +0 -0
  374. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/command_interactive.py +0 -0
  375. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/delegate.py +0 -0
  376. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/explore_code.py +0 -0
  377. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_branch.py +0 -0
  378. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_diff.py +0 -0
  379. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_log.py +0 -0
  380. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_remote.py +0 -0
  381. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_show.py +0 -0
  382. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/git_status.py +0 -0
  383. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/grep.py +0 -0
  384. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/ls.py +0 -0
  385. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/resource_manager.py +0 -0
  386. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/thinking.py +0 -0
  387. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/undo_change.py +0 -0
  388. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/update_todo_list.py +0 -0
  389. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/utils/__init__.py +0 -0
  390. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/utils/base_tool.py +0 -0
  391. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/utils/helpers.py +0 -0
  392. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/utils/output.py +0 -0
  393. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/utils/registry.py +0 -0
  394. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/validations/__init__.py +0 -0
  395. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tools/validations/validations.py +0 -0
  396. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/__init__.py +0 -0
  397. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/app.py +0 -0
  398. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/io.py +0 -0
  399. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/styles.tcss +0 -0
  400. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/__init__.py +0 -0
  401. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/completion_bar.py +0 -0
  402. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/file_list.py +0 -0
  403. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/footer.py +0 -0
  404. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/input_area.py +0 -0
  405. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/input_container.py +0 -0
  406. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/key_hints.py +0 -0
  407. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/output.py +0 -0
  408. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/status_bar.py +0 -0
  409. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/widgets/subagent_pills.py +0 -0
  410. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/tui/worker.py +0 -0
  411. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/urls.py +0 -0
  412. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/utils.py +0 -0
  413. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/versioncheck.py +0 -0
  414. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/voice.py +0 -0
  415. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/waiting.py +0 -0
  416. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/watch.py +0 -0
  417. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/watch_prompts.py +0 -0
  418. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/Gemfile +0 -0
  419. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/blame.md +0 -0
  420. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/get-started.md +0 -0
  421. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/help-tip.md +0 -0
  422. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/help.md +0 -0
  423. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/install.md +0 -0
  424. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/keys.md +0 -0
  425. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/model-warnings.md +0 -0
  426. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/multi-line.md +0 -0
  427. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/python-m-aider.md +0 -0
  428. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/recording.css +0 -0
  429. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/recording.md +0 -0
  430. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_includes/works-best.md +0 -0
  431. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_features.scss +0 -0
  432. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_footer.scss +0 -0
  433. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_hero.scss +0 -0
  434. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_info.scss +0 -0
  435. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_layout.scss +0 -0
  436. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_reset.scss +0 -0
  437. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_testimonials.scss +0 -0
  438. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_typography.scss +0 -0
  439. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/_variables.scss +0 -0
  440. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/custom/custom.scss +0 -0
  441. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/_sass/global-overrides.scss +0 -0
  442. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/adv-model-settings.md +0 -0
  443. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/api-keys.md +0 -0
  444. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/conf.md +0 -0
  445. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/custom-commands.md +0 -0
  446. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  447. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/dotenv.md +0 -0
  448. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/editor.md +0 -0
  449. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/model-aliases.md +0 -0
  450. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/model-configuration.md +0 -0
  451. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/options.md +0 -0
  452. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/reasoning.md +0 -0
  453. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/security.md +0 -0
  454. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/skills.md +0 -0
  455. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/subagents.md +0 -0
  456. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/tui.md +0 -0
  457. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/config/workspaces.md +0 -0
  458. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/git.md +0 -0
  459. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/index.md +0 -0
  460. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/install/docker.md +0 -0
  461. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/install.md +0 -0
  462. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/languages.md +0 -0
  463. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  464. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/legal/privacy.md +0 -0
  465. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/anthropic.md +0 -0
  466. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/azure.md +0 -0
  467. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/bedrock.md +0 -0
  468. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/cohere.md +0 -0
  469. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/deepseek.md +0 -0
  470. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/gemini.md +0 -0
  471. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/github.md +0 -0
  472. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/groq.md +0 -0
  473. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/lm-studio.md +0 -0
  474. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/ollama.md +0 -0
  475. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/openai-compat.md +0 -0
  476. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/openai.md +0 -0
  477. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/openrouter.md +0 -0
  478. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/other.md +0 -0
  479. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/vertex.md +0 -0
  480. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/warnings.md +0 -0
  481. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms/xai.md +0 -0
  482. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/llms.md +0 -0
  483. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/more/analytics.md +0 -0
  484. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/more/edit-formats.md +0 -0
  485. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/more/infinite-output.md +0 -0
  486. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/more-info.md +0 -0
  487. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/repomap.md +0 -0
  488. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/scripting.md +0 -0
  489. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  490. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  491. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/imports.md +0 -0
  492. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  493. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/support.md +0 -0
  494. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  495. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  496. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/troubleshooting.md +0 -0
  497. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/commands.md +0 -0
  498. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/conventions.md +0 -0
  499. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/copypaste.md +0 -0
  500. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/images-urls.md +0 -0
  501. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/lint-test.md +0 -0
  502. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/modes.md +0 -0
  503. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/not-code.md +0 -0
  504. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/notifications.md +0 -0
  505. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/optional.md +0 -0
  506. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/sessions.md +0 -0
  507. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/tips.md +0 -0
  508. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/voice.md +0 -0
  509. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage/watch.md +0 -0
  510. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/docs/usage.md +0 -0
  511. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli/website/share/index.md +0 -0
  512. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/dependency_links.txt +0 -0
  513. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/entry_points.txt +0 -0
  514. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/requires.txt +0 -0
  515. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/cecli_dev.egg-info/top_level.txt +0 -0
  516. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/docker/Dockerfile +0 -0
  517. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  518. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/pyproject.toml +0 -0
  519. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/pytest.ini +0 -0
  520. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/common-constraints.txt +0 -0
  521. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-dev.in +0 -0
  522. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-dev.txt +0 -0
  523. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-help.in +0 -0
  524. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-help.txt +0 -0
  525. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-playwright.in +0 -0
  526. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements-playwright.txt +0 -0
  527. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/requirements.in +0 -0
  528. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements/tree-sitter.in +0 -0
  529. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/requirements.txt +0 -0
  530. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/30k-image.py +0 -0
  531. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/Dockerfile.jekyll +0 -0
  532. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/__init__.py +0 -0
  533. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/blame.py +0 -0
  534. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/clean_metadata.py +0 -0
  535. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/compare-message-history.py +0 -0
  536. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/cost_analyzer.py +0 -0
  537. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/cost_calculator.py +0 -0
  538. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/dl_icons.py +0 -0
  539. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/filter-chat-mode.js +0 -0
  540. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/generate_providers.py +0 -0
  541. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/get_contributor_list.js +0 -0
  542. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/get_hashline.py +0 -0
  543. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/history_prompts.py +0 -0
  544. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/homepage.py +0 -0
  545. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/issues.py +0 -0
  546. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/jekyll_build.sh +0 -0
  547. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/jekyll_run.sh +0 -0
  548. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/logo_svg.py +0 -0
  549. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/pip-compile.sh +0 -0
  550. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/recording_audio.py +0 -0
  551. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/redact-cast.py +0 -0
  552. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/rename_to_cecli.py +0 -0
  553. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/tmux_record.sh +0 -0
  554. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/tsl_pack_langs.py +0 -0
  555. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/update-blame.sh +0 -0
  556. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/update-docs.sh +0 -0
  557. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/update-history.py +0 -0
  558. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/versionbump.py +0 -0
  559. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/scripts/yank-old-versions.py +0 -0
  560. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/setup.cfg +0 -0
  561. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/shim.pyproject.toml +0 -0
  562. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/__init__.py +0 -0
  563. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/__init__.py +0 -0
  564. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/conftest.py +0 -0
  565. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_aws_credentials.py +0 -0
  566. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_background_commands.py +0 -0
  567. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_coder.py +0 -0
  568. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_commands.py +0 -0
  569. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_custom_commands.py +0 -0
  570. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_deprecated.py +0 -0
  571. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_editblock.py +0 -0
  572. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_editor.py +0 -0
  573. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_exceptions.py +0 -0
  574. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_find_or_blocks.py +0 -0
  575. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_hashline_closure.py +0 -0
  576. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_history.py +0 -0
  577. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_io.py +0 -0
  578. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_linter.py +0 -0
  579. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_main.py +0 -0
  580. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_model_info_manager.py +0 -0
  581. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_model_provider_manager.py +0 -0
  582. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_models.py +0 -0
  583. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_onboarding.py +0 -0
  584. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_plugin_manager.py +0 -0
  585. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_prompts.py +0 -0
  586. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_reasoning.py +0 -0
  587. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_repo.py +0 -0
  588. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_repomap.py +0 -0
  589. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_run_cmd.py +0 -0
  590. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_sanity_check_repo.py +0 -0
  591. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_scripting.py +0 -0
  592. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_sendchat.py +0 -0
  593. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_session_args.py +0 -0
  594. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_session_crypto.py +0 -0
  595. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_sessions.py +0 -0
  596. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_sessions_manager.py +0 -0
  597. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_skills.py +0 -0
  598. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_special.py +0 -0
  599. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_ssl_verification.py +0 -0
  600. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_udiff.py +0 -0
  601. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_urls.py +0 -0
  602. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_voice.py +0 -0
  603. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_watch.py +0 -0
  604. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/basic/test_wholefile.py +0 -0
  605. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/coders/test_coder_switching.py +0 -0
  606. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/coders/test_copypaste_coder.py +0 -0
  607. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/commands/test_compaction.py +0 -0
  608. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/commands/test_switch_agent.py +0 -0
  609. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/conftest.py +0 -0
  610. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/conversations/test_conversation_integration.py +0 -0
  611. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/conversations/test_conversation_system.py +0 -0
  612. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  613. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/chat-history.md +0 -0
  614. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/arduino/test.ino +0 -0
  615. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/bash/test.sh +0 -0
  616. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/c/test.c +0 -0
  617. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/chatito/test.chatito +0 -0
  618. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/clojure/test.clj +0 -0
  619. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  620. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/cpp/test.cpp +0 -0
  621. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/csharp/test.cs +0 -0
  622. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/d/test.d +0 -0
  623. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/dart/test.dart +0 -0
  624. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/elisp/test.el +0 -0
  625. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/elixir/test.ex +0 -0
  626. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/elm/test.elm +0 -0
  627. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/gleam/test.gleam +0 -0
  628. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/go/test.go +0 -0
  629. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/haskell/test.hs +0 -0
  630. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/hcl/test.tf +0 -0
  631. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/java/test.java +0 -0
  632. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/javascript/test.js +0 -0
  633. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/kotlin/test.kt +0 -0
  634. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/lua/test.lua +0 -0
  635. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/matlab/test.m +0 -0
  636. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/ocaml/test.ml +0 -0
  637. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  638. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/php/test.php +0 -0
  639. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/pony/test.pony +0 -0
  640. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/properties/test.properties +0 -0
  641. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/python/test.py +0 -0
  642. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/ql/test.ql +0 -0
  643. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/r/test.r +0 -0
  644. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/racket/test.rkt +0 -0
  645. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/ruby/test.rb +0 -0
  646. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/rust/test.rs +0 -0
  647. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/scala/test.scala +0 -0
  648. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/solidity/test.sol +0 -0
  649. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/swift/test.swift +0 -0
  650. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/tsx/test.tsx +0 -0
  651. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/typescript/test.ts +0 -0
  652. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/udev/test.rules +0 -0
  653. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/languages/zig/test.zig +0 -0
  654. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/sample-code-base/sample.js +0 -0
  655. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/sample-code-base/sample.py +0 -0
  656. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  657. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/watch.js +0 -0
  658. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/watch.lisp +0 -0
  659. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/watch.py +0 -0
  660. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/fixtures/watch_question.js +0 -0
  661. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/help/test_help.py +0 -0
  662. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  663. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_config.py +0 -0
  664. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_config_active.py +0 -0
  665. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  666. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  667. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  668. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/helpers/monorepo/test_workspace.py +0 -0
  669. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/hooks/__init__.py +0 -0
  670. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/hooks/test_base.py +0 -0
  671. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/hooks/test_manager.py +0 -0
  672. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/hooks/test_registry.py +0 -0
  673. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/integration/test_agent_mcp_management.py +0 -0
  674. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/integration/test_mcp_management.py +0 -0
  675. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/mcp/__init__.py +0 -0
  676. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/mcp/test_manager.py +0 -0
  677. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/scrape/test_playwright_disable.py +0 -0
  678. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/scrape/test_scrape.py +0 -0
  679. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/__init__.py +0 -0
  680. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/conftest.py +0 -0
  681. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_commands.py +0 -0
  682. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_config.py +0 -0
  683. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_delegate.py +0 -0
  684. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_finished.py +0 -0
  685. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_io_proxy.py +0 -0
  686. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_service.py +0 -0
  687. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/subagents/test_sub_agent_coder.py +0 -0
  688. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/test_requests.py +0 -0
  689. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_extractions.py +0 -0
  690. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_get_lines.py +0 -0
  691. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_git_branch.py +0 -0
  692. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_git_diff.py +0 -0
  693. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_grep.py +0 -0
  694. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_read_range_execute.py +0 -0
  695. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_registry.py +0 -0
  696. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_remove_mcp_tool.py +0 -0
  697. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_tool_arguments.py +0 -0
  698. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  699. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tools/validations.py +0 -0
  700. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/tui/test_app.py +0 -0
  701. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/unit/test_load_mcp.py +0 -0
  702. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/unit/test_remove_mcp.py +0 -0
  703. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  704. {cecli_dev-0.100.12rc3 → cecli_dev-0.100.13}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
@@ -55,6 +55,8 @@ jobs:
55
55
  -r requirements/requirements-help.in \
56
56
  -r requirements/requirements-playwright.in \
57
57
  ".[help,playwright]"
58
+ env:
59
+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
58
60
 
59
61
  - name: Configure Git for tests
60
62
  run: |
@@ -67,3 +69,4 @@ jobs:
67
69
  pytest
68
70
  env:
69
71
  CECLI_TUI: "false"
72
+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
@@ -43,6 +43,8 @@ jobs:
43
43
  python -m pip install --upgrade pip
44
44
  pip install uv
45
45
  uv pip install --system pytest pytest-asyncio pytest-mock -r requirements/requirements.in -r requirements/requirements-help.in -r requirements/requirements-playwright.in '.[help,playwright]'
46
+ env:
47
+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
46
48
 
47
49
  - name: Configure Git for tests
48
50
  run: |
@@ -55,3 +57,4 @@ jobs:
55
57
  pytest
56
58
  env:
57
59
  CECLI_TUI: "false"
60
+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.12rc3
3
+ Version: 0.100.13
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.100.12rc3'
22
- __version_tuple__ = version_tuple = (0, 100, 12, 'rc3')
21
+ __version__ = version = '0.100.13'
22
+ __version_tuple__ = version_tuple = (0, 100, 13)
23
23
 
24
- __commit_id__ = commit_id = 'g51463af16'
24
+ __commit_id__ = commit_id = 'g5879c9b5f'
@@ -132,6 +132,15 @@ def get_parser(default_config_files, git_root):
132
132
  "Specify a file with model tag overrides (e.g., gpt-4o:high -> reasoning_effort: high)"
133
133
  ),
134
134
  ).complete = shtab.FILE
135
+ group.add_argument(
136
+ "--model-providers",
137
+ metavar="MODEL_PROVIDERS_JSON",
138
+ help=(
139
+ "Specify custom OpenAI-compatible model providers as a JSON/YAML string (e.g.,"
140
+ ' \'{"my-provider": {"api_base": "https://...", "api_key_env": ["MY_KEY"]}}\')'
141
+ ),
142
+ default=None,
143
+ )
135
144
  group.add_argument(
136
145
  "--reasoning-effort",
137
146
  type=str,
@@ -165,6 +165,7 @@ class AgentCoder(Coder):
165
165
  config["command_timeout"] = nested.getter(config, "command_timeout", 30)
166
166
  config["allowed_commands"] = nested.getter(config, "allowed_commands", [])
167
167
  config["hot_reload"] = nested.getter(config, "hot_reload", False)
168
+ config["diff_colors"] = nested.getter(config, "diff_colors", True)
168
169
  config["allow_nested_delegation"] = nested.getter(config, "allow_nested_delegation", False)
169
170
 
170
171
  config["tools_paths"] = nested.getter(config, ["tools_paths", "tool_paths"], [])
@@ -828,7 +829,7 @@ class AgentCoder(Coder):
828
829
  if lint_errors:
829
830
  lint_errors = lint_errors.replace(
830
831
  "# Fix any linting errors below, if possible.",
831
- "# Fix any linting errors below, if possible and then continue with your task.",
832
+ "# Fix the linting errors below, and then continue with your task.",
832
833
  1,
833
834
  )
834
835
  ConversationService.get_manager(self).add_message(
@@ -1733,7 +1733,27 @@ class Coder(metaclass=UsageMeta):
1733
1733
  # Compacting is wasteful since /clear will clear everything
1734
1734
  # and /exit will exit the application
1735
1735
  stripped = user_message.strip()
1736
- if stripped not in ("/clear", "/reset", "/exit", "/quit"):
1736
+ is_command = self.commands.is_command(stripped)
1737
+ is_allowed_command = False
1738
+
1739
+ if is_command:
1740
+ res = self.commands.matching_commands(user_message)
1741
+ if res is not None:
1742
+ matching_commands, first_word, rest_inp = res
1743
+ if len(matching_commands) == 1:
1744
+ command = matching_commands[0]
1745
+ splits = (rest_inp or "").split()
1746
+ split_map = {
1747
+ "/agent": 1,
1748
+ "/architect": 1,
1749
+ "/ask": 1,
1750
+ "/code": 1,
1751
+ "/model": 2,
1752
+ }
1753
+ if command in split_map and len(splits) >= split_map.get(command, 0):
1754
+ is_allowed_command = True
1755
+
1756
+ if not is_command or is_allowed_command:
1737
1757
  self.compact_context_completed = False
1738
1758
  await self.compact_context_if_needed()
1739
1759
  self.compact_context_completed = True
@@ -1977,27 +1997,34 @@ class Coder(metaclass=UsageMeta):
1977
1997
  done_messages = manager.get_messages_dict(MessageTag.DONE)
1978
1998
  cur_messages = manager.get_messages_dict(MessageTag.CUR)
1979
1999
  diff_messages = manager.get_messages_dict(MessageTag.DIFFS)
2000
+ file_context_messages = manager.get_messages_dict(MessageTag.FILE_CONTEXTS)
1980
2001
  all_messages = manager.get_messages_dict()
1981
2002
 
1982
2003
  # Exclude first cur_message since that's the user's initial input
1983
2004
  done_tokens = self.summarizer.count_tokens(done_messages)
1984
2005
  cur_tokens = self.summarizer.count_tokens(cur_messages[1:] if len(cur_messages) > 1 else [])
1985
2006
  diff_tokens = self.summarizer.count_tokens(diff_messages)
2007
+ file_context_tokens = self.summarizer.count_tokens(file_context_messages)
1986
2008
  all_tokens = self.summarizer.count_tokens(all_messages)
1987
2009
 
1988
- combined_tokens = done_tokens + cur_tokens + diff_tokens
2010
+ message_tokens = done_tokens + cur_tokens
2011
+ file_tokens = diff_tokens + file_context_tokens
2012
+ combined_tokens = done_tokens + cur_tokens + diff_tokens + file_context_tokens
1989
2013
 
1990
2014
  self.context_compaction_current_ratio = all_tokens / self.context_compaction_max_tokens
1991
2015
 
1992
2016
  if force or (
1993
2017
  all_tokens >= self.context_compaction_max_tokens * 0.9
1994
2018
  and ConversationService.get_chunks(self).last_clear_count > 20
2019
+ and file_tokens / max(message_tokens, 1) > 2
1995
2020
  ):
1996
2021
  manager.clear_tag(MessageTag.LINT, ratio=0.33)
1997
2022
  manager.clear_tag(MessageTag.DIFFS, ratio=0.33)
1998
2023
  manager.clear_tag(MessageTag.FILE_CONTEXTS, ratio=0.33)
1999
2024
  ConversationService.get_files(self).clear_file_cache()
2000
2025
  ConversationService.get_chunks(self).flush_removals()
2026
+ ConversationService.get_chunks(self).reset_clear_count()
2027
+ ObservationService.get_instance(self).reset_index()
2001
2028
 
2002
2029
  if not force and combined_tokens < self.context_compaction_max_tokens:
2003
2030
  return
@@ -2031,9 +2058,9 @@ class Coder(metaclass=UsageMeta):
2031
2058
  manager.clear_tag(tag)
2032
2059
 
2033
2060
  if tag == MessageTag.DONE:
2034
- manager.add_message({"role": "user", "content": text}, tag=tag)
2035
- manager.add_message(
2036
- {
2061
+ manager.queue_message(message_dict={"role": "user", "content": text}, tag=tag)
2062
+ manager.queue_message(
2063
+ message_dict={
2037
2064
  "role": "assistant",
2038
2065
  "content": (
2039
2066
  "Ok, I will use this summary and the observations as context for"
@@ -2044,12 +2071,13 @@ class Coder(metaclass=UsageMeta):
2044
2071
  )
2045
2072
  else:
2046
2073
  if self.last_user_message:
2047
- manager.add_message(
2048
- {"role": "user", "content": self.last_user_message}, tag=tag
2074
+ manager.queue_message(
2075
+ message_dict={"role": "user", "content": self.last_user_message},
2076
+ tag=tag,
2049
2077
  )
2050
2078
 
2051
- manager.add_message(
2052
- {
2079
+ manager.queue_message(
2080
+ message_dict={
2053
2081
  "role": "assistant",
2054
2082
  "content": "Ok. I am awaiting your summary of our goals to proceed.",
2055
2083
  },
@@ -2057,8 +2085,8 @@ class Coder(metaclass=UsageMeta):
2057
2085
  force=True,
2058
2086
  )
2059
2087
 
2060
- manager.add_message(
2061
- {
2088
+ manager.queue_message(
2089
+ message_dict={
2062
2090
  "role": "user",
2063
2091
  "content": (
2064
2092
  "Here is a summary of our current goals and historical"
@@ -2068,8 +2096,8 @@ class Coder(metaclass=UsageMeta):
2068
2096
  tag=tag,
2069
2097
  )
2070
2098
 
2071
- manager.add_message(
2072
- {
2099
+ manager.queue_message(
2100
+ message_dict={
2073
2101
  "role": "assistant",
2074
2102
  "content": (
2075
2103
  "Ok, I will use this summary and proceed with our task. I will"
@@ -2102,6 +2130,9 @@ class Coder(metaclass=UsageMeta):
2102
2130
  manager.clear_tag(MessageTag.FILE_CONTEXTS)
2103
2131
  ConversationService.get_files(self).clear_file_cache()
2104
2132
  ConversationService.get_chunks(self).flush_removals()
2133
+ ConversationService.get_chunks(self).reset_clear_count()
2134
+ ObservationService.get_instance(self).reset_index()
2135
+ self.format_chat_chunks()
2105
2136
 
2106
2137
  except Exception as e:
2107
2138
  self.io.tool_warning(f"Context compaction failed: {e}")
@@ -8,6 +8,7 @@ BaseCommand pattern for modular, testable command execution.
8
8
  from .add import AddCommand
9
9
  from .agent import AgentCommand
10
10
  from .agent_model import AgentModelCommand
11
+ from .agent_tree import AgentTreeCommand
11
12
  from .architect import ArchitectCommand
12
13
  from .ask import AskCommand
13
14
  from .clear import ClearCommand
@@ -94,6 +95,7 @@ from .workspace import WorkspaceCommand
94
95
  CommandRegistry.register(AddCommand)
95
96
  CommandRegistry.register(AgentCommand)
96
97
  CommandRegistry.register(AgentModelCommand)
98
+ CommandRegistry.register(AgentTreeCommand)
97
99
  CommandRegistry.register(ArchitectCommand)
98
100
  CommandRegistry.register(AskCommand)
99
101
  CommandRegistry.register(ClearCommand)
@@ -169,6 +171,7 @@ __all__ = [
169
171
  "AddCommand",
170
172
  "AgentCommand",
171
173
  "AgentModelCommand",
174
+ "AgentTreeCommand",
172
175
  "ArchitectCommand",
173
176
  "AskCommand",
174
177
  "BaseCommand",
@@ -0,0 +1,95 @@
1
+ from typing import List
2
+
3
+ from cecli.commands.utils.base_command import BaseCommand
4
+ from cecli.helpers.agents.service import AgentService, SubAgentInfo, SubAgentStatus
5
+
6
+
7
+ class TreeNode:
8
+ """A node in the agent hierarchy tree."""
9
+
10
+ def __init__(self, agent_info: SubAgentInfo):
11
+ self.agent_info = agent_info
12
+ self.children: List[TreeNode] = []
13
+
14
+ def add_child(self, child_node: "TreeNode"):
15
+ self.children.append(child_node)
16
+
17
+
18
+ class AgentTreeCommand(BaseCommand):
19
+ """Command to display the hierarchy of active agents."""
20
+
21
+ NORM_NAME = "agent-tree"
22
+ DESCRIPTION = "Display the hierarchy of active agents."
23
+
24
+ @classmethod
25
+ async def execute(cls, io, coder, args, **kwargs):
26
+ """Execute the /agent-tree command."""
27
+ agent_service = AgentService.get_instance(coder)
28
+ if not agent_service:
29
+ io.tool_output("Agent service not available.")
30
+ return
31
+
32
+ # Collect all agents: primary coder + sub-agents from sub_agents dict
33
+ all_infos: List[SubAgentInfo] = []
34
+
35
+ # Primary agent as a synthetic SubAgentInfo
36
+ primary_coder = agent_service.coder
37
+ primary_info = SubAgentInfo(
38
+ name="primary",
39
+ coder=primary_coder,
40
+ parent_uuid=str(primary_coder.parent_uuid or ""),
41
+ status=SubAgentStatus.RUNNING,
42
+ )
43
+ all_infos.append(primary_info)
44
+
45
+ # Sub-agents from the service's sub_agents dict
46
+ for info in agent_service.sub_agents.values():
47
+ if info and info.coder:
48
+ all_infos.append(info)
49
+
50
+ if len(all_infos) <= 1:
51
+ io.tool_output("No active sub-agents found.")
52
+ return
53
+
54
+ root_nodes = cls._build_tree(all_infos)
55
+ tree_output = cls._render_tree(root_nodes)
56
+ io.tool_output(tree_output)
57
+
58
+ @classmethod
59
+ def _build_tree(cls, all_agents: List[SubAgentInfo]) -> List[TreeNode]:
60
+ """Build the agent tree from a flat list of agents."""
61
+ nodes = {str(agent.coder.uuid): TreeNode(agent) for agent in all_agents}
62
+ root_nodes = []
63
+
64
+ for agent in all_agents:
65
+ parent_uuid = str(agent.coder.parent_uuid)
66
+ if parent_uuid and parent_uuid in nodes:
67
+ parent_node = nodes[parent_uuid]
68
+ child_node = nodes[str(agent.coder.uuid)]
69
+ parent_node.add_child(child_node)
70
+ else:
71
+ root_nodes.append(nodes[str(agent.coder.uuid)])
72
+
73
+ return root_nodes
74
+
75
+ @classmethod
76
+ def _render_tree(cls, nodes: List[TreeNode]) -> str:
77
+ """Render the agent tree to a string."""
78
+ output = []
79
+
80
+ def render_node(node: TreeNode, prefix: str = "", is_last: bool = True):
81
+ connector = "└── " if is_last else "├── "
82
+ output.append(
83
+ f"{prefix}{connector}{node.agent_info.name}"
84
+ f" ({node.agent_info.status.value})"
85
+ f" - {str(node.agent_info.coder.uuid)}"
86
+ )
87
+
88
+ child_prefix = prefix + (" " if is_last else "│ ")
89
+ for i, child in enumerate(node.children):
90
+ render_node(child, child_prefix, i == len(node.children) - 1)
91
+
92
+ for i, node in enumerate(nodes):
93
+ render_node(node, is_last=i == len(nodes) - 1)
94
+
95
+ return "\n".join(output)
@@ -25,10 +25,9 @@ class ClearCommand(BaseCommand):
25
25
 
26
26
  # Clear TUI output if available
27
27
  if coder.tui and coder.tui():
28
- coder.tui().action_clear_output()
28
+ coder.tui().call_later(coder.tui().action_clear_output)
29
29
 
30
- io.tool_output("All chat history cleared.")
31
- return format_command_result(io, "clear", "Cleared chat history")
30
+ return format_command_result(io, "clear", "All chat history cleared.")
32
31
 
33
32
  @classmethod
34
33
  def get_completions(cls, io, coder, args) -> List[str]:
@@ -29,7 +29,7 @@ class ResetCommand(BaseCommand):
29
29
 
30
30
  # Clear TUI output if available
31
31
  if coder.tui and coder.tui():
32
- coder.tui().action_clear_output()
32
+ coder.tui().call_later(coder.tui().action_clear_output)
33
33
  else:
34
34
  io.tool_output("All files dropped and chat history cleared.")
35
35
 
@@ -245,62 +245,7 @@ class ConversationChunks:
245
245
  if not coder:
246
246
  return
247
247
 
248
- # Check diff message ratio and clear if too many diffs
249
- diff_messages = ConversationService.get_manager(coder).get_messages_dict(MessageTag.DIFFS)
250
- read_only_messages = ConversationService.get_manager(coder).get_messages_dict(
251
- MessageTag.READONLY_FILES
252
- )
253
- chat_messages = ConversationService.get_manager(coder).get_messages_dict(
254
- MessageTag.CHAT_FILES
255
- )
256
- edit_messages = ConversationService.get_manager(coder).get_messages_dict(
257
- MessageTag.EDIT_FILES
258
- )
259
-
260
- # Calculate token counts for token-based ratio check
261
- diff_tokens = coder.main_model.token_count(diff_messages) if diff_messages else 0
262
-
263
- # Calculate tokens for readonly, chat, and edit tag messages
264
- other_tokens = 0
265
- if read_only_messages:
266
- other_tokens += coder.main_model.token_count(read_only_messages)
267
- if chat_messages:
268
- other_tokens += coder.main_model.token_count(chat_messages)
269
- if edit_messages:
270
- other_tokens += coder.main_model.token_count(edit_messages)
271
-
272
- # Calculate message counts for message-based ratio check
273
- diff_count = len(diff_messages)
274
- other_count = len(read_only_messages) + len(chat_messages) + len(edit_messages)
275
-
276
- # Clear diff messages and file caches if EITHER:
277
- # 1. Diff tokens > 33% of other message tokens (token-based check)
278
- # 2. Diff message count ratio > 5:1 (message count-based check for periodic refresh)
279
- should_clear = False
280
-
281
- # Token-based check
282
- if diff_tokens > 0 and other_tokens > 0 and diff_tokens / other_tokens > 0.5:
283
- should_clear = True
284
-
285
- # Message count-based check (for periodic refresh)
286
- if diff_count > 0 and other_count > 0 and diff_count / other_count > 20:
287
- should_clear = True
288
-
289
248
  self.last_clear_count += 1
290
-
291
- if (
292
- should_clear
293
- and coder.context_compaction_current_ratio > 0.8
294
- and self.last_clear_count >= 20
295
- and diff_tokens + other_tokens > coder.context_compaction_max_tokens * 0.5
296
- ):
297
- self.last_clear_count = 0
298
-
299
- # Clear all diff messages
300
- ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS, 0.33)
301
- # Clear ConversationFiles caches to force regeneration
302
- ConversationService.get_files(coder).clear_file_cache(clear_contexts=False)
303
-
304
249
  # Get all tracked files (both regular and image files)
305
250
  tracked_files = ConversationService.get_files(coder).get_all_tracked_files()
306
251
 
@@ -483,7 +428,7 @@ class ConversationChunks:
483
428
  repo_messages = ConversationService.get_manager(coder).get_messages_dict(MessageTag.REPO)
484
429
  if len(repo_messages) >= 20:
485
430
  # Clear all REPO tagged messages
486
- ConversationService.get_manager(coder).clear_tag(MessageTag.REPO)
431
+ ConversationService.get_manager(coder).clear_tag(MessageTag.REPO, ratio=0.33)
487
432
  # Clear the combined repomap dict to force fresh regeneration
488
433
  if (
489
434
  hasattr(coder, "repo_map")
@@ -1017,6 +962,9 @@ class ConversationChunks:
1017
962
  def flush_removals(self):
1018
963
  self._deferred_removals.clear()
1019
964
 
965
+ def reset_clear_count(self):
966
+ self.last_clear_count = 0
967
+
1020
968
  def _cancel_post_message_injections(self, modulus=10):
1021
969
  coder = self.get_coder()
1022
970
  if not coder:
@@ -320,6 +320,16 @@ def resolve_content_to_hashline_ids(
320
320
  value_stripped = value.strip()
321
321
  return [i for i, line in enumerate(lines) if value_stripped in line]
322
322
 
323
+ def _find_multiline_match(lines, value):
324
+ """Find the start index where the full multiline value matches consecutive lines."""
325
+ value_lines = value.strip().splitlines()
326
+ if len(value_lines) <= 1:
327
+ return None
328
+ for i in range(len(lines) - len(value_lines) + 1):
329
+ if all(value_lines[j].strip() in lines[i + j] for j in range(len(value_lines))):
330
+ return i
331
+ return None
332
+
323
333
  def _resolve_to_hash_id(lines, idx, hp):
324
334
  """Generate a hash ID for the line at the given index."""
325
335
  hash_id = hp.generate_public_id(lines[idx], idx)
@@ -333,10 +343,18 @@ def resolve_content_to_hashline_ids(
333
343
  resolved_start_idx = None
334
344
 
335
345
  if start_value is not None and not _looks_like_content_id(start_value):
336
- containing_indices = _find_substring_matches(lines, start_value)
337
- if len(containing_indices) == 1:
338
- resolved_start_idx = containing_indices[0]
346
+ # For multiline values, try full multiline match first
347
+ first_line = start_value.splitlines()[0] if start_value.splitlines() else start_value
348
+ multiline_start_idx = _find_multiline_match(lines, start_value)
349
+ if multiline_start_idx is not None:
350
+ resolved_start_idx = multiline_start_idx
339
351
  resolved_start = _resolve_to_hash_id(lines, resolved_start_idx, hp)
352
+ else:
353
+ # Fall back to first line substring matching
354
+ containing_indices = _find_substring_matches(lines, first_line)
355
+ if len(containing_indices) == 1:
356
+ resolved_start_idx = containing_indices[0]
357
+ resolved_start = _resolve_to_hash_id(lines, resolved_start_idx, hp)
340
358
  elif start_value is not None and _looks_like_content_id(start_value):
341
359
  # Already a content ID - try to resolve it to find the line position
342
360
  # for proximity matching with end_value
@@ -352,18 +370,26 @@ def resolve_content_to_hashline_ids(
352
370
  resolved_end = end_value
353
371
 
354
372
  if end_value is not None and not _looks_like_content_id(end_value):
355
- containing_indices = _find_substring_matches(lines, end_value)
356
- if len(containing_indices) == 1:
357
- # Unique match - resolve directly
358
- idx = containing_indices[0]
373
+ # For multiline values, try full multiline match first
374
+ first_line = end_value.splitlines()[0] if end_value.splitlines() else end_value
375
+ multiline_end_idx = _find_multiline_match(lines, end_value)
376
+ if multiline_end_idx is not None:
377
+ idx = multiline_end_idx
359
378
  resolved_end = _resolve_to_hash_id(lines, idx, hp)
360
- elif len(containing_indices) > 1 and resolved_start_idx is not None:
361
- # Multiple matches - pick closest to start position
362
- closest_idx = min(
363
- containing_indices,
364
- key=lambda idx: abs(idx - resolved_start_idx),
365
- )
366
- resolved_end = _resolve_to_hash_id(lines, closest_idx, hp)
379
+ else:
380
+ # Fall back to first line substring matching
381
+ containing_indices = _find_substring_matches(lines, first_line)
382
+ if len(containing_indices) == 1:
383
+ # Unique match - resolve directly
384
+ idx = containing_indices[0]
385
+ resolved_end = _resolve_to_hash_id(lines, idx, hp)
386
+ elif len(containing_indices) > 1 and resolved_start_idx is not None:
387
+ # Multiple matches - pick closest to start position
388
+ closest_idx = min(
389
+ containing_indices,
390
+ key=lambda idx: abs(idx - resolved_start_idx),
391
+ )
392
+ resolved_end = _resolve_to_hash_id(lines, closest_idx, hp)
367
393
 
368
394
  return resolved_start, resolved_end
369
395
 
@@ -409,6 +435,7 @@ def get_hashline_diff(
409
435
  end_line_hash,
410
436
  operation,
411
437
  text=None,
438
+ pretty=False,
412
439
  ):
413
440
  """
414
441
  Generate a diff for a hashline operation in the format used by the original format_output.
@@ -420,6 +447,8 @@ def get_hashline_diff(
420
447
  end_line_hash: Hashline format for end line: "{4 char hash}" (without the braces)
421
448
  operation: One of "replace", "insert", or "delete"
422
449
  text: Text to insert or replace with (required for replace/insert operations)
450
+ pretty: When True, color removed lines in magenta (\x1b[95m) and added lines
451
+ in light green (\033[32m). When False, all diff lines use \033[92m.
423
452
 
424
453
  Returns:
425
454
  str: A formatted diff snippet showing changes, or empty string if no changes
@@ -523,7 +552,18 @@ def get_hashline_diff(
523
552
  diff_lines = list(diff)[2:]
524
553
 
525
554
  if diff_lines:
526
- return "\n".join([line for line in diff_lines])
555
+ if pretty:
556
+ colored_lines = []
557
+ for line in diff_lines:
558
+ if line.startswith("-"):
559
+ colored_lines.append(f"\033[38;5;96m{line}\x1b[0m")
560
+ elif line.startswith("+"):
561
+ colored_lines.append(f"\033[32m{line}\x1b[0m")
562
+ else:
563
+ colored_lines.append(line)
564
+ return "\n".join(colored_lines)
565
+ else:
566
+ return "\n".join([line for line in diff_lines])
527
567
  else:
528
568
  return ""
529
569