cecli-dev 0.100.11rc3__tar.gz → 0.100.11rc5__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 (690) hide show
  1. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/PKG-INFO +1 -1
  2. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/_version.py +3 -3
  3. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/args.py +3 -8
  4. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/__init__.py +20 -0
  5. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/base_coder.py +8 -25
  6. cecli_dev-0.100.11rc5/cecli/coders/copypaste_coder.py +276 -0
  7. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/core.py +15 -1
  8. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/integration.py +82 -0
  9. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/skills.py +14 -1
  10. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/repo.py +12 -5
  11. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/worker.py +3 -1
  12. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/PKG-INFO +1 -1
  13. cecli_dev-0.100.11rc5/cecli_dev.egg-info/scm_version.json +8 -0
  14. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/coders/test_copypaste_coder.py +24 -30
  15. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/scrape/test_scrape.py +4 -1
  16. cecli_dev-0.100.11rc3/cecli/coders/copypaste_coder.py +0 -268
  17. cecli_dev-0.100.11rc3/cecli_dev.egg-info/scm_version.json +0 -8
  18. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.dockerignore +0 -0
  19. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.flake8 +0 -0
  20. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.gitattributes +0 -0
  21. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  22. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/check_pypi_version.yml +0 -0
  23. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/docker-build-test.yml +0 -0
  24. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/docker-release.yml +0 -0
  25. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/issues.yml +0 -0
  26. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/pages.yml +0 -0
  27. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/pre-commit.yml +0 -0
  28. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/release.yml +0 -0
  29. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/ubuntu-tests.yml +0 -0
  30. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/windows-tests.yml +0 -0
  31. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.github/workflows/windows_check_pypi_version.yml +0 -0
  32. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.gitignore +0 -0
  33. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/.pre-commit-config.yaml +0 -0
  34. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/CHANGELOG.md +0 -0
  35. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/CNAME +0 -0
  36. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/CONTRIBUTING.md +0 -0
  37. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/HISTORY.md +0 -0
  38. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/LICENSE.txt +0 -0
  39. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/MANIFEST.in +0 -0
  40. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/README.md +0 -0
  41. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/Dockerfile +0 -0
  42. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/README.md +0 -0
  43. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/__init__.py +0 -0
  44. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/benchmark.py +0 -0
  45. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/benchmark_classic.py +0 -0
  46. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/clone-exercism.sh +0 -0
  47. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/cpp-test.sh +0 -0
  48. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/docker.sh +0 -0
  49. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/docker_build.sh +0 -0
  50. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/install-docker-ubuntu.sh +0 -0
  51. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/npm-test.sh +0 -0
  52. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/over_time.py +0 -0
  53. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/plot.sh +0 -0
  54. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/plots.py +0 -0
  55. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/problem_stats.py +0 -0
  56. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/prompts.py +0 -0
  57. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/refactor_tools.py +0 -0
  58. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/rsync.sh +0 -0
  59. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/rungrid.py +0 -0
  60. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/swe-bench-lite.txt +0 -0
  61. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/swe-bench.txt +0 -0
  62. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/swe_bench.py +0 -0
  63. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/test_benchmark.py +0 -0
  64. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/variations.1.sh +0 -0
  65. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/variations.2.sh +0 -0
  66. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/variations.3.sh +0 -0
  67. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/benchmark/variations.4.sh +0 -0
  68. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/__init__.py +0 -0
  69. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/__main__.py +0 -0
  70. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/args_formatter.py +0 -0
  71. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/change_tracker.py +0 -0
  72. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/agent_coder.py +0 -0
  73. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/architect_coder.py +0 -0
  74. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/ask_coder.py +0 -0
  75. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/chat_chunks.py +0 -0
  76. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/context_coder.py +0 -0
  77. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editblock_coder.py +0 -0
  78. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editblock_fenced_coder.py +0 -0
  79. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editblock_func_coder.py +0 -0
  80. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  81. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editor_editblock_coder.py +0 -0
  82. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/editor_whole_coder.py +0 -0
  83. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/hashline_coder.py +0 -0
  84. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/help_coder.py +0 -0
  85. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/patch_coder.py +0 -0
  86. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/search_replace.py +0 -0
  87. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/shell.py +0 -0
  88. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/single_wholefile_func_coder.py +0 -0
  89. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/sub_agent_coder.py +0 -0
  90. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/udiff_coder.py +0 -0
  91. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/udiff_simple.py +0 -0
  92. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/wholefile_coder.py +0 -0
  93. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/coders/wholefile_func_coder.py +0 -0
  94. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/__init__.py +0 -0
  95. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/add.py +0 -0
  96. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/agent.py +0 -0
  97. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/agent_model.py +0 -0
  98. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/architect.py +0 -0
  99. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/ask.py +0 -0
  100. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/chat_mode.py +0 -0
  101. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/clear.py +0 -0
  102. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/code.py +0 -0
  103. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/command_prefix.py +0 -0
  104. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/commit.py +0 -0
  105. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/compact.py +0 -0
  106. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/context.py +0 -0
  107. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/context_blocks.py +0 -0
  108. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/context_management.py +0 -0
  109. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/copy.py +0 -0
  110. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/copy_context.py +0 -0
  111. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/diff.py +0 -0
  112. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/drop.py +0 -0
  113. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/editor.py +0 -0
  114. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/editor_model.py +0 -0
  115. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/exclude_skill.py +0 -0
  116. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/exit.py +0 -0
  117. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/git.py +0 -0
  118. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/hashline.py +0 -0
  119. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/help.py +0 -0
  120. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/history_search.py +0 -0
  121. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/hooks.py +0 -0
  122. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/hot_reload.py +0 -0
  123. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/include_skill.py +0 -0
  124. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/lint.py +0 -0
  125. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/list_mcp.py +0 -0
  126. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/list_sessions.py +0 -0
  127. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/list_skills.py +0 -0
  128. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/load.py +0 -0
  129. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/load_hook.py +0 -0
  130. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/load_mcp.py +0 -0
  131. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/load_session.py +0 -0
  132. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/load_skill.py +0 -0
  133. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/ls.py +0 -0
  134. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/map.py +0 -0
  135. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/map_refresh.py +0 -0
  136. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/merge.py +0 -0
  137. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/model.py +0 -0
  138. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/models.py +0 -0
  139. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/multiline_mode.py +0 -0
  140. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/paste.py +0 -0
  141. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/quit.py +0 -0
  142. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/read_only.py +0 -0
  143. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/read_only_stub.py +0 -0
  144. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/reap_agent.py +0 -0
  145. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/reasoning_effort.py +0 -0
  146. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/remove_hook.py +0 -0
  147. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/remove_mcp.py +0 -0
  148. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/remove_skill.py +0 -0
  149. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/report.py +0 -0
  150. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/reset.py +0 -0
  151. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/rules.py +0 -0
  152. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/run.py +0 -0
  153. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/save.py +0 -0
  154. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/save_session.py +0 -0
  155. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/settings.py +0 -0
  156. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/spawn_agent.py +0 -0
  157. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/switch_agent.py +0 -0
  158. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/terminal_data/linux.keytab +0 -0
  159. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/terminal_setup.py +0 -0
  160. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/test.py +0 -0
  161. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/think_tokens.py +0 -0
  162. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/tokens.py +0 -0
  163. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/undo.py +0 -0
  164. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/utils/__init__.py +0 -0
  165. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/utils/base_command.py +0 -0
  166. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/utils/helpers.py +0 -0
  167. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/utils/registry.py +0 -0
  168. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/utils/save_load_manager.py +0 -0
  169. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/voice.py +0 -0
  170. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/weak_model.py +0 -0
  171. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/web.py +0 -0
  172. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/commands/workspace.py +0 -0
  173. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/deprecated_args.py +0 -0
  174. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/diffs.py +0 -0
  175. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/dump.py +0 -0
  176. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/editor.py +0 -0
  177. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/exceptions.py +0 -0
  178. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/format_settings.py +0 -0
  179. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/help.py +0 -0
  180. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/help_pats.py +0 -0
  181. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/__init__.py +0 -0
  182. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/agents/__init__.py +0 -0
  183. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/agents/config.py +0 -0
  184. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/agents/service.py +0 -0
  185. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/background_commands.py +0 -0
  186. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/command_parser.py +0 -0
  187. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/__init__.py +0 -0
  188. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/base_message.py +0 -0
  189. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/files.py +0 -0
  190. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/manager.py +0 -0
  191. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/service.py +0 -0
  192. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/tags.py +0 -0
  193. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/conversation/utils.py +0 -0
  194. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/copypaste.py +0 -0
  195. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/coroutines.py +0 -0
  196. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/crypto.py +0 -0
  197. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_searcher.py +0 -0
  198. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/__init__.py +0 -0
  199. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/builders.py +0 -0
  200. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/ignore.py +0 -0
  201. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/ngram_index.py +0 -0
  202. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/service.py +0 -0
  203. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/file_system/trie_index.py +0 -0
  204. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/__init__.py +0 -0
  205. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/dump.py +0 -0
  206. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  207. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/main.py +0 -0
  208. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/parsers.py +0 -0
  209. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/grep_ast/tsl.py +0 -0
  210. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/hashline.py +0 -0
  211. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/hashpos/__init__.py +0 -0
  212. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/hashpos/hashpos.py +0 -0
  213. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  214. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/io_proxy.py +0 -0
  215. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/leak_detect.py +0 -0
  216. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/model_providers.py +0 -0
  217. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/__init__.py +0 -0
  218. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/config.py +0 -0
  219. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/local_workspace.py +0 -0
  220. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/project.py +0 -0
  221. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/workspace.py +0 -0
  222. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/monorepo/worktree.py +0 -0
  223. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/nested.py +0 -0
  224. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/observations/__init__.py +0 -0
  225. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/observations/service.py +0 -0
  226. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/plugin_manager.py +0 -0
  227. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/profiler.py +0 -0
  228. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/requests.py +0 -0
  229. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/responses.py +0 -0
  230. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/similarity.py +0 -0
  231. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/helpers/threading.py +0 -0
  232. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/history.py +0 -0
  233. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/__init__.py +0 -0
  234. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/base.py +0 -0
  235. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/integration.py +0 -0
  236. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/manager.py +0 -0
  237. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/registry.py +0 -0
  238. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/service.py +0 -0
  239. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/hooks/types.py +0 -0
  240. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/interruptible_input.py +0 -0
  241. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/io.py +0 -0
  242. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/linter.py +0 -0
  243. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/llm.py +0 -0
  244. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/main.py +0 -0
  245. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mcp/__init__.py +0 -0
  246. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mcp/manager.py +0 -0
  247. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mcp/oauth.py +0 -0
  248. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mcp/server.py +0 -0
  249. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mcp/utils.py +0 -0
  250. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/mdstream.py +0 -0
  251. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/models.py +0 -0
  252. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/onboarding.py +0 -0
  253. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/__init__.py +0 -0
  254. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/agent.yml +0 -0
  255. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/architect.yml +0 -0
  256. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/ask.yml +0 -0
  257. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/base.yml +0 -0
  258. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/context.yml +0 -0
  259. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/copypaste.yml +0 -0
  260. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editblock.yml +0 -0
  261. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editblock_fenced.yml +0 -0
  262. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editblock_func.yml +0 -0
  263. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editor_diff_fenced.yml +0 -0
  264. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editor_editblock.yml +0 -0
  265. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/editor_whole.yml +0 -0
  266. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/hashline.yml +0 -0
  267. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/help.yml +0 -0
  268. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/patch.yml +0 -0
  269. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/single_wholefile_func.yml +0 -0
  270. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/subagent.yml +0 -0
  271. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/udiff.yml +0 -0
  272. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/udiff_simple.yml +0 -0
  273. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/utils/__init__.py +0 -0
  274. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/utils/registry.py +0 -0
  275. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/utils/system.py +0 -0
  276. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/wholefile.yml +0 -0
  277. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/prompts/wholefile_func.yml +0 -0
  278. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  279. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  280. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  281. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  282. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  283. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  284. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  285. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  286. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  287. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  288. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  289. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  290. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  291. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  292. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  293. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  294. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  295. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  296. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  297. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  298. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  299. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  300. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  301. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  302. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  303. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  304. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  305. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  306. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  307. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  308. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  309. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  310. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/README.md +0 -0
  311. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  312. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  313. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  314. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  315. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  316. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  317. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  318. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  319. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  320. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  321. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  322. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  323. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  324. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  325. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  326. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  327. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  328. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  329. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  330. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  331. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  332. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  333. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  334. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  335. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  336. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  337. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  338. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/reasoning_tags.py +0 -0
  339. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/repomap.py +0 -0
  340. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/report.py +0 -0
  341. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/resources/__init__.py +0 -0
  342. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/resources/model-metadata.json +0 -0
  343. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/resources/model-settings.yml +0 -0
  344. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/resources/providers.json +0 -0
  345. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/run_cmd.py +0 -0
  346. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/scrape.py +0 -0
  347. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/sendchat.py +0 -0
  348. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/sessions.py +0 -0
  349. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/special.py +0 -0
  350. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/__init__.py +0 -0
  351. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/_yield.py +0 -0
  352. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/command.py +0 -0
  353. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/command_interactive.py +0 -0
  354. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/delegate.py +0 -0
  355. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/edit_text.py +0 -0
  356. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/explore_code.py +0 -0
  357. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_branch.py +0 -0
  358. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_diff.py +0 -0
  359. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_log.py +0 -0
  360. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_remote.py +0 -0
  361. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_show.py +0 -0
  362. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/git_status.py +0 -0
  363. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/grep.py +0 -0
  364. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/ls.py +0 -0
  365. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/read_range.py +0 -0
  366. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/resource_manager.py +0 -0
  367. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/thinking.py +0 -0
  368. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/undo_change.py +0 -0
  369. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/update_todo_list.py +0 -0
  370. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/utils/__init__.py +0 -0
  371. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/utils/base_tool.py +0 -0
  372. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/utils/helpers.py +0 -0
  373. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/utils/output.py +0 -0
  374. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/utils/registry.py +0 -0
  375. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/validations/__init__.py +0 -0
  376. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tools/validations/validations.py +0 -0
  377. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/__init__.py +0 -0
  378. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/app.py +0 -0
  379. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/io.py +0 -0
  380. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/styles.tcss +0 -0
  381. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/__init__.py +0 -0
  382. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/completion_bar.py +0 -0
  383. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/file_list.py +0 -0
  384. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/footer.py +0 -0
  385. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/input_area.py +0 -0
  386. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/input_container.py +0 -0
  387. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/key_hints.py +0 -0
  388. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/output.py +0 -0
  389. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/status_bar.py +0 -0
  390. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/tui/widgets/subagent_pills.py +0 -0
  391. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/urls.py +0 -0
  392. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/utils.py +0 -0
  393. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/versioncheck.py +0 -0
  394. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/voice.py +0 -0
  395. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/waiting.py +0 -0
  396. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/watch.py +0 -0
  397. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/watch_prompts.py +0 -0
  398. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/Gemfile +0 -0
  399. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/blame.md +0 -0
  400. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/get-started.md +0 -0
  401. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/help-tip.md +0 -0
  402. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/help.md +0 -0
  403. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/install.md +0 -0
  404. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/keys.md +0 -0
  405. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/model-warnings.md +0 -0
  406. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/multi-line.md +0 -0
  407. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/python-m-aider.md +0 -0
  408. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/recording.css +0 -0
  409. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/recording.md +0 -0
  410. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_includes/works-best.md +0 -0
  411. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_features.scss +0 -0
  412. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_footer.scss +0 -0
  413. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_hero.scss +0 -0
  414. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_info.scss +0 -0
  415. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_layout.scss +0 -0
  416. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_reset.scss +0 -0
  417. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_testimonials.scss +0 -0
  418. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_typography.scss +0 -0
  419. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/_variables.scss +0 -0
  420. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/custom/custom.scss +0 -0
  421. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/_sass/global-overrides.scss +0 -0
  422. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/adv-model-settings.md +0 -0
  423. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/agent-mode.md +0 -0
  424. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/api-keys.md +0 -0
  425. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/conf.md +0 -0
  426. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/custom-commands.md +0 -0
  427. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  428. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/dotenv.md +0 -0
  429. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/editor.md +0 -0
  430. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/hooks.md +0 -0
  431. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/mcp.md +0 -0
  432. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/model-aliases.md +0 -0
  433. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/model-configuration.md +0 -0
  434. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/options.md +0 -0
  435. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/reasoning.md +0 -0
  436. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/security.md +0 -0
  437. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/skills.md +0 -0
  438. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/subagents.md +0 -0
  439. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/tui.md +0 -0
  440. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config/workspaces.md +0 -0
  441. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/config.md +0 -0
  442. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/git.md +0 -0
  443. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/index.md +0 -0
  444. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/install/docker.md +0 -0
  445. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/install.md +0 -0
  446. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/languages.md +0 -0
  447. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  448. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/legal/privacy.md +0 -0
  449. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/anthropic.md +0 -0
  450. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/azure.md +0 -0
  451. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/bedrock.md +0 -0
  452. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/cohere.md +0 -0
  453. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/deepseek.md +0 -0
  454. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/gemini.md +0 -0
  455. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/github.md +0 -0
  456. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/groq.md +0 -0
  457. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/lm-studio.md +0 -0
  458. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/ollama.md +0 -0
  459. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/openai-compat.md +0 -0
  460. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/openai.md +0 -0
  461. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/openrouter.md +0 -0
  462. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/other.md +0 -0
  463. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/vertex.md +0 -0
  464. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/warnings.md +0 -0
  465. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms/xai.md +0 -0
  466. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/llms.md +0 -0
  467. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/more/analytics.md +0 -0
  468. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/more/edit-formats.md +0 -0
  469. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/more/infinite-output.md +0 -0
  470. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/more-info.md +0 -0
  471. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/repomap.md +0 -0
  472. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/scripting.md +0 -0
  473. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  474. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  475. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/imports.md +0 -0
  476. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  477. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/support.md +0 -0
  478. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  479. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  480. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/troubleshooting.md +0 -0
  481. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/commands.md +0 -0
  482. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/conventions.md +0 -0
  483. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/copypaste.md +0 -0
  484. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/images-urls.md +0 -0
  485. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/lint-test.md +0 -0
  486. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/modes.md +0 -0
  487. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/not-code.md +0 -0
  488. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/notifications.md +0 -0
  489. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/optional.md +0 -0
  490. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/sessions.md +0 -0
  491. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/tips.md +0 -0
  492. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/voice.md +0 -0
  493. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage/watch.md +0 -0
  494. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/docs/usage.md +0 -0
  495. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli/website/share/index.md +0 -0
  496. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/SOURCES.txt +0 -0
  497. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/dependency_links.txt +0 -0
  498. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/entry_points.txt +0 -0
  499. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/requires.txt +0 -0
  500. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/scm_file_list.json +0 -0
  501. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/cecli_dev.egg-info/top_level.txt +0 -0
  502. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/docker/Dockerfile +0 -0
  503. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  504. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/pyproject.toml +0 -0
  505. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/pytest.ini +0 -0
  506. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/common-constraints.txt +0 -0
  507. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-dev.in +0 -0
  508. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-dev.txt +0 -0
  509. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-help.in +0 -0
  510. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-help.txt +0 -0
  511. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-playwright.in +0 -0
  512. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements-playwright.txt +0 -0
  513. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/requirements.in +0 -0
  514. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements/tree-sitter.in +0 -0
  515. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/requirements.txt +0 -0
  516. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/30k-image.py +0 -0
  517. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/Dockerfile.jekyll +0 -0
  518. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/__init__.py +0 -0
  519. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/blame.py +0 -0
  520. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/clean_metadata.py +0 -0
  521. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/compare-message-history.py +0 -0
  522. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/cost_analyzer.py +0 -0
  523. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/cost_calculator.py +0 -0
  524. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/dl_icons.py +0 -0
  525. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/filter-chat-mode.js +0 -0
  526. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/generate_providers.py +0 -0
  527. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/get_contributor_list.js +0 -0
  528. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/get_hashline.py +0 -0
  529. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/history_prompts.py +0 -0
  530. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/homepage.py +0 -0
  531. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/issues.py +0 -0
  532. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/jekyll_build.sh +0 -0
  533. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/jekyll_run.sh +0 -0
  534. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/logo_svg.py +0 -0
  535. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/pip-compile.sh +0 -0
  536. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/recording_audio.py +0 -0
  537. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/redact-cast.py +0 -0
  538. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/rename_to_cecli.py +0 -0
  539. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/tmux_record.sh +0 -0
  540. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/tsl_pack_langs.py +0 -0
  541. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/update-blame.sh +0 -0
  542. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/update-docs.sh +0 -0
  543. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/update-history.py +0 -0
  544. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/versionbump.py +0 -0
  545. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/scripts/yank-old-versions.py +0 -0
  546. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/setup.cfg +0 -0
  547. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/shim.pyproject.toml +0 -0
  548. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/__init__.py +0 -0
  549. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/__init__.py +0 -0
  550. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/conftest.py +0 -0
  551. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_aws_credentials.py +0 -0
  552. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_background_commands.py +0 -0
  553. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_coder.py +0 -0
  554. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_commands.py +0 -0
  555. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_custom_commands.py +0 -0
  556. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_deprecated.py +0 -0
  557. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_editblock.py +0 -0
  558. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_editor.py +0 -0
  559. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_exceptions.py +0 -0
  560. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_find_or_blocks.py +0 -0
  561. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_hashline.py +0 -0
  562. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_hashline_closure.py +0 -0
  563. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_history.py +0 -0
  564. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_io.py +0 -0
  565. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_linter.py +0 -0
  566. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_main.py +0 -0
  567. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_model_info_manager.py +0 -0
  568. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_model_provider_manager.py +0 -0
  569. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_models.py +0 -0
  570. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_onboarding.py +0 -0
  571. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_plugin_manager.py +0 -0
  572. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_prompts.py +0 -0
  573. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_reasoning.py +0 -0
  574. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_repo.py +0 -0
  575. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_repomap.py +0 -0
  576. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_run_cmd.py +0 -0
  577. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_sanity_check_repo.py +0 -0
  578. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_scripting.py +0 -0
  579. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_sendchat.py +0 -0
  580. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_session_args.py +0 -0
  581. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_session_crypto.py +0 -0
  582. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_sessions.py +0 -0
  583. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_sessions_manager.py +0 -0
  584. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_skills.py +0 -0
  585. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_special.py +0 -0
  586. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_ssl_verification.py +0 -0
  587. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_udiff.py +0 -0
  588. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_urls.py +0 -0
  589. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_voice.py +0 -0
  590. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_watch.py +0 -0
  591. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/basic/test_wholefile.py +0 -0
  592. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/coders/test_coder_switching.py +0 -0
  593. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/commands/test_compaction.py +0 -0
  594. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/commands/test_switch_agent.py +0 -0
  595. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/conftest.py +0 -0
  596. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/conversations/test_conversation_integration.py +0 -0
  597. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/conversations/test_conversation_system.py +0 -0
  598. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  599. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/chat-history.md +0 -0
  600. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/arduino/test.ino +0 -0
  601. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/bash/test.sh +0 -0
  602. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/c/test.c +0 -0
  603. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/chatito/test.chatito +0 -0
  604. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/clojure/test.clj +0 -0
  605. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  606. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/cpp/test.cpp +0 -0
  607. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/csharp/test.cs +0 -0
  608. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/d/test.d +0 -0
  609. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/dart/test.dart +0 -0
  610. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/elisp/test.el +0 -0
  611. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/elixir/test.ex +0 -0
  612. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/elm/test.elm +0 -0
  613. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/gleam/test.gleam +0 -0
  614. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/go/test.go +0 -0
  615. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/haskell/test.hs +0 -0
  616. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/hcl/test.tf +0 -0
  617. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/java/test.java +0 -0
  618. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/javascript/test.js +0 -0
  619. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/kotlin/test.kt +0 -0
  620. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/lua/test.lua +0 -0
  621. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/matlab/test.m +0 -0
  622. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/ocaml/test.ml +0 -0
  623. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  624. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/php/test.php +0 -0
  625. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/pony/test.pony +0 -0
  626. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/properties/test.properties +0 -0
  627. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/python/test.py +0 -0
  628. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/ql/test.ql +0 -0
  629. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/r/test.r +0 -0
  630. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/racket/test.rkt +0 -0
  631. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/ruby/test.rb +0 -0
  632. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/rust/test.rs +0 -0
  633. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/scala/test.scala +0 -0
  634. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/solidity/test.sol +0 -0
  635. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/swift/test.swift +0 -0
  636. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/tsx/test.tsx +0 -0
  637. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/typescript/test.ts +0 -0
  638. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/udev/test.rules +0 -0
  639. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/languages/zig/test.zig +0 -0
  640. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/sample-code-base/sample.js +0 -0
  641. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/sample-code-base/sample.py +0 -0
  642. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  643. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/watch.js +0 -0
  644. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/watch.lisp +0 -0
  645. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/watch.py +0 -0
  646. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/fixtures/watch_question.js +0 -0
  647. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/help/test_help.py +0 -0
  648. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  649. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_config.py +0 -0
  650. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_config_active.py +0 -0
  651. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  652. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  653. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  654. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/monorepo/test_workspace.py +0 -0
  655. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/helpers/observations/test_observation_service.py +0 -0
  656. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/hooks/__init__.py +0 -0
  657. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/hooks/test_base.py +0 -0
  658. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/hooks/test_manager.py +0 -0
  659. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/hooks/test_registry.py +0 -0
  660. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/integration/test_agent_mcp_management.py +0 -0
  661. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/integration/test_mcp_management.py +0 -0
  662. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/mcp/__init__.py +0 -0
  663. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/mcp/test_manager.py +0 -0
  664. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/scrape/test_playwright_disable.py +0 -0
  665. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/__init__.py +0 -0
  666. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/conftest.py +0 -0
  667. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_commands.py +0 -0
  668. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_config.py +0 -0
  669. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_delegate.py +0 -0
  670. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_finished.py +0 -0
  671. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_io_proxy.py +0 -0
  672. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_service.py +0 -0
  673. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/subagents/test_sub_agent_coder.py +0 -0
  674. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_extractions.py +0 -0
  675. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_get_lines.py +0 -0
  676. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_git_branch.py +0 -0
  677. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_git_diff.py +0 -0
  678. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_grep.py +0 -0
  679. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_insert_block.py +0 -0
  680. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_read_range_execute.py +0 -0
  681. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_registry.py +0 -0
  682. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_remove_mcp_tool.py +0 -0
  683. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_tool_arguments.py +0 -0
  684. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  685. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tools/validations.py +0 -0
  686. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/tui/test_app.py +0 -0
  687. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/unit/test_load_mcp.py +0 -0
  688. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/unit/test_remove_mcp.py +0 -0
  689. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  690. {cecli_dev-0.100.11rc3 → cecli_dev-0.100.11rc5}/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.11rc3
3
+ Version: 0.100.11rc5
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.11rc3'
22
- __version_tuple__ = version_tuple = (0, 100, 11, 'rc3')
21
+ __version__ = version = '0.100.11rc5'
22
+ __version_tuple__ = version_tuple = (0, 100, 11, 'rc5')
23
23
 
24
- __commit_id__ = commit_id = 'g11ba4d315'
24
+ __commit_id__ = commit_id = 'gef557d67b'
@@ -43,15 +43,10 @@ def get_parser(default_config_files, git_root):
43
43
  # List of valid edit formats for argparse validation & shtab completion.
44
44
  # Dynamically gather them from the registered coder classes so the list
45
45
  # stays in sync if new formats are added.
46
- from cecli import coders as _cecli_coders
46
+ from cecli.coders import EDIT_FORMAT_MAP
47
+
48
+ edit_format_choices = sorted(EDIT_FORMAT_MAP.keys())
47
49
 
48
- edit_format_choices = sorted(
49
- {
50
- c.edit_format
51
- for c in _cecli_coders.__all__
52
- if hasattr(c, "edit_format") and c.edit_format is not None
53
- }
54
- )
55
50
  group = parser.add_argument_group("Main model")
56
51
  group.add_argument(
57
52
  "files", metavar="FILE", nargs="*", help="files to edit with an LLM (optional)"
@@ -44,6 +44,26 @@ _MODULE_MAP = {
44
44
  }
45
45
 
46
46
 
47
+ EDIT_FORMAT_MAP = {
48
+ "help": "HelpCoder",
49
+ "ask": "AskCoder",
50
+ "diff": "EditBlockCoder",
51
+ "diff-fenced": "EditBlockFencedCoder",
52
+ "whole": "WholeFileCoder",
53
+ "patch": "PatchCoder",
54
+ "udiff": "UnifiedDiffCoder",
55
+ "udiff-simple": "UnifiedDiffSimpleCoder",
56
+ "architect": "ArchitectCoder",
57
+ "editor-diff": "EditorEditBlockCoder",
58
+ "editor-whole": "EditorWholeFileCoder",
59
+ "editor-diff-fenced": "EditorDiffFencedCoder",
60
+ "context": "ContextCoder",
61
+ "agent": "AgentCoder",
62
+ "hashline": "HashLineCoder",
63
+ "subagent": "SubAgentCoder",
64
+ }
65
+
66
+
47
67
  def __getattr__(name):
48
68
  if name in _MODULE_MAP:
49
69
  import importlib
@@ -105,28 +105,6 @@ all_fences = [
105
105
  wrap_fence("sourcecode"),
106
106
  ]
107
107
 
108
- # Map of edit_format values to coder class names.
109
- # Used by Coder.create() to find the right coder class by edit_format
110
- # without importing all coder modules.
111
- EDIT_FORMAT_MAP = {
112
- "help": "HelpCoder",
113
- "ask": "AskCoder",
114
- "diff": "EditBlockCoder",
115
- "diff-fenced": "EditBlockFencedCoder",
116
- "whole": "WholeFileCoder",
117
- "patch": "PatchCoder",
118
- "udiff": "UnifiedDiffCoder",
119
- "udiff-simple": "UnifiedDiffSimpleCoder",
120
- "architect": "ArchitectCoder",
121
- "editor-diff": "EditorEditBlockCoder",
122
- "editor-whole": "EditorWholeFileCoder",
123
- "editor-diff-fenced": "EditorDiffFencedCoder",
124
- "context": "ContextCoder",
125
- "agent": "AgentCoder",
126
- "hashline": "HashLineCoder",
127
- "subagent": "SubAgentCoder",
128
- }
129
-
130
108
 
131
109
  class UsageMeta(type):
132
110
  """Metaclass that provides shared accumulator properties across all Coder subclasses.
@@ -336,6 +314,7 @@ class Coder(metaclass=UsageMeta):
336
314
  uuid=from_coder.uuid,
337
315
  parent_uuid=from_coder.parent_uuid,
338
316
  repo=from_coder.repo,
317
+ summarizer=from_coder.summarizer,
339
318
  )
340
319
  use_kwargs.update(update) # override to complete the switch
341
320
  use_kwargs.update(kwargs) # override passed kwargs
@@ -351,7 +330,7 @@ class Coder(metaclass=UsageMeta):
351
330
  res = coders.CopyPasteCoder(main_model, io, args=args, **kwargs)
352
331
 
353
332
  if not res:
354
- coder_name = EDIT_FORMAT_MAP.get(edit_format)
333
+ coder_name = coders.EDIT_FORMAT_MAP.get(edit_format)
355
334
  if coder_name:
356
335
  coder_cls = getattr(coders, coder_name)
357
336
  res = coder_cls(main_model, io, args=args, **kwargs)
@@ -373,10 +352,14 @@ class Coder(metaclass=UsageMeta):
373
352
 
374
353
  await res.initialize_mcp_tools()
375
354
 
376
- res.original_kwargs = dict(kwargs)
355
+ # Store only small/primitive kwargs to avoid retaining large object references.
356
+ # Large objects (repo, mcp_manager, commands, summarizer, file_watcher, etc.)
357
+ # are either overridden during clone() or accessible from instance attributes.
358
+ _LARGE_KWARGS = {"repo", "mcp_manager", "commands", "summarizer", "file_watcher"}
359
+ res.original_kwargs = {k: v for k, v in kwargs.items() if k not in _LARGE_KWARGS}
377
360
  return res
378
361
 
379
- valid_formats = list(EDIT_FORMAT_MAP.keys())
362
+ valid_formats = list(coders.EDIT_FORMAT_MAP.keys())
380
363
  raise UnknownEditFormat(edit_format, valid_formats)
381
364
 
382
365
  async def clone(self, **kwargs):
@@ -0,0 +1,276 @@
1
+ import hashlib
2
+ import json
3
+ import math
4
+ import time
5
+ import uuid
6
+
7
+ from cecli.exceptions import LiteLLMExceptions
8
+ from cecli.llm import litellm
9
+
10
+ from .base_coder import Coder, EmptyResponseError
11
+
12
+
13
+ class CopyPasteCoder(Coder):
14
+ """Fixed marker class for isinstance checks and backward compatibility.
15
+
16
+ When ``copy_paste_mode`` is active, instantiating this class automatically
17
+ returns an instance of a dynamic subclass that inherits from **both** this
18
+ class and the coder matching the selected ``edit_format`` (e.g.
19
+ ``AgentCoder``, ``EditBlockCoder``, ``AskCoder``, …). The dynamic subclass
20
+ overrides ``send()`` with the clipboard-transport logic while inheriting
21
+ all other behaviour from the target coder.
22
+
23
+ This fixed class exists only so that ``isinstance(coder, CopyPasteCoder)``
24
+ works and the name remains importable from ``cecli.coders``.
25
+ """
26
+
27
+ # CopyPasteCoder doesn't have its own prompt format.
28
+ prompt_format = None
29
+
30
+ def __new__(cls, *args, **kwargs):
31
+ """Intercept instantiation to return a dynamic subclass instance.
32
+
33
+ When ``CopyPasteCoder()`` is called, this creates a dynamic subclass
34
+ that inherits from **both** ``CopyPasteCoder`` (for isinstance checks)
35
+ and the coder class matching the selected ``edit_format``.
36
+
37
+ Python will automatically call ``__init__`` on the returned instance
38
+ because ``isinstance(result, CopyPasteCoder)`` is ``True``.
39
+ """
40
+ # If already instantiating a dynamic subclass, create normally
41
+ if cls is not CopyPasteCoder:
42
+ return super().__new__(cls)
43
+
44
+ # --- resolve the effective edit format -------------------------------
45
+ main_model = args[0] if args else None
46
+ args_obj = kwargs.get("args")
47
+ edit_format = None
48
+ if args_obj is not None:
49
+ edit_format = getattr(args_obj, "edit_format", None)
50
+ if not edit_format or edit_format == "code":
51
+ edit_format = getattr(main_model, "edit_format", None)
52
+
53
+ # --- delegate to the factory function --------------------------------
54
+ dynamic_cls = get_copy_paste_coder_class(edit_format, main_model)
55
+ return object.__new__(dynamic_cls)
56
+
57
+ prompt_format = None
58
+
59
+
60
+ def get_copy_paste_coder_class(edit_format, main_model):
61
+ """Dynamically create a CopyPasteCoder class that inherits from the
62
+ coder class matching the selected ``edit_format``.
63
+
64
+ ``CopyPasteCoder`` is a transport-layer wrapper: it swaps the API
65
+ transport for clipboard transport while inheriting all behavioural
66
+ traits (editing, prompting, announcements, …) from the target coder
67
+ class (e.g. ``AgentCoder``, ``EditBlockCoder``, ``AskCoder``, …).
68
+ """
69
+ import cecli.coders as coders
70
+
71
+ # --- resolve the effective edit format -----------------------------------
72
+ effective_format = edit_format
73
+ if not effective_format or effective_format == "code":
74
+ effective_format = getattr(main_model, "edit_format", None)
75
+
76
+ # --- find the target base class ------------------------------------------
77
+ if effective_format:
78
+ coder_name = coders.EDIT_FORMAT_MAP.get(effective_format)
79
+ base_class = getattr(coders, coder_name, Coder) if coder_name else Coder
80
+ else:
81
+ base_class = Coder
82
+
83
+ # ---- create the dynamic class first so methods can reference it -----
84
+ # Use a different local variable name to avoid shadowing the
85
+ # module-level CopyPasteCoder (needed for the bases tuple).
86
+ DynamicCopyPasteCoder = type(
87
+ "CopyPasteCoder",
88
+ (CopyPasteCoder, base_class),
89
+ {
90
+ "__module__": __name__,
91
+ "prompt_format": getattr(base_class, "prompt_format", None),
92
+ },
93
+ )
94
+
95
+ # ---- clipboard-specific transport method --------------------------------
96
+ async def send(self, messages, model=None, functions=None, tools=None):
97
+ model = model or self.main_model
98
+
99
+ if getattr(model, "copy_paste_transport", "api") == "api":
100
+ # Fall through to the base coder's normal send()
101
+ async for chunk in base_class.send(
102
+ self, messages, model=model, functions=functions, tools=tools
103
+ ):
104
+ yield chunk
105
+ return
106
+
107
+ self.interrupt_event.clear()
108
+ self.got_reasoning_content = False
109
+ self.ended_reasoning_content = False
110
+ self.empty_response = False
111
+
112
+ self._streaming_buffer_length = 0
113
+ self.io.reset_streaming_response()
114
+
115
+ # Base Coder methods (eg show_send_output/preprocess_response) expect these
116
+ # streaming attributes to always exist, even when we bypass the normal API
117
+ # streaming path.
118
+ self.partial_response_content = ""
119
+ self.partial_response_reasoning_content = ""
120
+ self.partial_response_chunks = []
121
+ self.partial_response_tool_calls = []
122
+ self.partial_response_function_call = dict()
123
+ # preprocess_response() does len(self.partial_response_tool_calls),
124
+ # so it must not be None.
125
+ self.partial_response_consolidated = None
126
+
127
+ try:
128
+ hash_object, completion = self.copy_paste_completion(messages, model)
129
+ self.chat_completion_call_hashes.append(hash_object.hexdigest())
130
+ await self.show_send_output(completion)
131
+
132
+ if self.empty_response:
133
+ raise EmptyResponseError
134
+
135
+ response, func_err, content_err = self.consolidate_chunks()
136
+ if response:
137
+ completion = response
138
+ self.calculate_and_show_tokens_and_cost(messages, completion)
139
+ finally:
140
+ self.preprocess_response()
141
+
142
+ if self.partial_response_content:
143
+ self.io.ai_output(self.partial_response_content)
144
+
145
+ # ---- clipboard completion logic ------------------------------------------
146
+ def copy_paste_completion(self, messages, model):
147
+
148
+ try:
149
+ from cecli.helpers import copypaste
150
+ except ImportError:
151
+ self.io.tool_error("copy/paste mode requires the pyperclip package.")
152
+ self.io.tool_output("Install it with: pip install pyperclip")
153
+ raise
154
+
155
+ def content_to_text(content):
156
+ """Extract text from the various content formats cecli/LLMs can produce."""
157
+ if not content:
158
+ return ""
159
+ if isinstance(content, str):
160
+ return content
161
+ if isinstance(content, list):
162
+ parts = []
163
+ for part in content:
164
+ if isinstance(part, dict):
165
+ text = part.get("text")
166
+ if isinstance(text, str):
167
+ parts.append(text)
168
+ elif isinstance(part, str):
169
+ parts.append(part)
170
+ return "".join(parts)
171
+ if isinstance(content, dict):
172
+ text = content.get("text")
173
+ if isinstance(text, str):
174
+ return text
175
+ return ""
176
+ return str(content)
177
+
178
+ lines = []
179
+ for message in messages:
180
+ text_content = content_to_text(message.get("content"))
181
+ if not text_content:
182
+ continue
183
+ role = message.get("role")
184
+ if role:
185
+ lines.append(f"{role.upper()}:\n{text_content}")
186
+ else:
187
+ lines.append(text_content)
188
+
189
+ prompt_text = "\n\n".join(lines).strip()
190
+
191
+ # --- incremental context: strip previously-sent exchange ---
192
+ last_prompt = getattr(self, "_last_prompt_text", None)
193
+ last_response = getattr(self, "_last_response_text", None)
194
+ _full_prompt = prompt_text # Keep the original for storage
195
+ if last_prompt is not None and last_response is not None:
196
+ expected_prefix = f"{last_prompt}\n\nASSISTANT:\n{last_response}"
197
+ if prompt_text.startswith(expected_prefix):
198
+ new_only = prompt_text[len(expected_prefix) :].strip()
199
+ if new_only:
200
+ prompt_text = new_only
201
+
202
+ self._last_prompt_text = _full_prompt
203
+
204
+ try:
205
+ copypaste.copy_to_clipboard(prompt_text)
206
+ except copypaste.ClipboardError as err:
207
+ self.io.tool_error(f"Unable to copy prompt to clipboard: {err}")
208
+ raise
209
+
210
+ self.io.tool_output("Request copied to clipboard.")
211
+ self.io.tool_output("Paste it into your LLM interface, then copy the reply back.")
212
+ self.io.tool_output("Waiting for clipboard updates (Ctrl+C to cancel)...")
213
+
214
+ try:
215
+ last_value = copypaste.read_clipboard()
216
+ except copypaste.ClipboardError as err:
217
+ self.io.tool_error(f"Unable to read clipboard: {err}")
218
+ raise
219
+
220
+ try:
221
+ response_text = copypaste.wait_for_clipboard_change(initial=last_value)
222
+ except copypaste.ClipboardError as err:
223
+ self.io.tool_error(f"Unable to read clipboard: {err}")
224
+ raise
225
+
226
+ self._last_response_text = response_text
227
+
228
+ def _safe_token_count(text):
229
+ """Return token count via the model tokenizer, falling back to a heuristic."""
230
+ if not text:
231
+ return 0
232
+ try:
233
+ count = model.token_count(text)
234
+ if isinstance(count, int) and count >= 0:
235
+ return count
236
+ except Exception as ex:
237
+ try:
238
+ ex_info = LiteLLMExceptions().get_ex_info(ex)
239
+ if ex_info and ex_info.description:
240
+ self.io.tool_warning(
241
+ f"Token count failed: {ex_info.description} Falling back to heuristic."
242
+ )
243
+ except Exception:
244
+ pass
245
+ return int(math.ceil(len(text) / 4))
246
+
247
+ prompt_tokens = _safe_token_count(prompt_text)
248
+ completion_tokens = _safe_token_count(response_text)
249
+ total_tokens = prompt_tokens + completion_tokens
250
+
251
+ completion = litellm.ModelResponse(
252
+ id=f"chatcmpl-{uuid.uuid4()}",
253
+ choices=[
254
+ litellm.Choices(
255
+ index=0,
256
+ finish_reason="stop",
257
+ message=litellm.Message(role="assistant", content=response_text),
258
+ )
259
+ ],
260
+ created=int(time.time()),
261
+ model=model.name,
262
+ usage={
263
+ "prompt_tokens": prompt_tokens,
264
+ "completion_tokens": completion_tokens,
265
+ "total_tokens": total_tokens,
266
+ },
267
+ )
268
+
269
+ kwargs = dict(model=model.name, messages=messages, stream=False)
270
+ hash_object = hashlib.sha1(json.dumps(kwargs, sort_keys=True).encode())
271
+ return hash_object, completion
272
+
273
+ # ---- attach the clipboard methods and return -----------------------------
274
+ DynamicCopyPasteCoder.send = send
275
+ DynamicCopyPasteCoder.copy_paste_completion = copy_paste_completion
276
+ return DynamicCopyPasteCoder
@@ -1,6 +1,7 @@
1
1
  import json
2
2
  import re
3
3
  import sys
4
+ import weakref
4
5
  from pathlib import Path
5
6
 
6
7
  from cecli.commands.utils.registry import CommandRegistry
@@ -55,6 +56,18 @@ class ReloadProgramSignal(BaseException):
55
56
  class Commands:
56
57
  scraper = None
57
58
 
59
+ def _get_coder(self):
60
+ """Return coder via weak reference, or None if collected."""
61
+ if self._coder_ref is not None:
62
+ return self._coder_ref()
63
+ return None
64
+
65
+ def _set_coder(self, value):
66
+ """Store coder as weakref to break circular reference chains."""
67
+ self._coder_ref = weakref.ref(value) if value is not None else None
68
+
69
+ coder = property(_get_coder, _set_coder)
70
+
58
71
  def clone(self):
59
72
  cloned = Commands(
60
73
  self.io,
@@ -87,7 +100,8 @@ class Commands:
87
100
  original_read_only_fnames=None,
88
101
  ):
89
102
  self.io = io
90
- self.coder = coder
103
+ # Use weak ref to avoid circular reference chains
104
+ self._coder_ref = weakref.ref(coder) if coder else None
91
105
  self.parser = parser
92
106
  self.args = args
93
107
  self.verbose = verbose
@@ -104,6 +104,10 @@ class ConversationChunks:
104
104
  priority=75 + i,
105
105
  )
106
106
 
107
+ if getattr(coder, "copy_paste_mode", False):
108
+ # Add copy-paste mode tool instructions for inline tool calling
109
+ self.add_copy_paste_tool_instructions()
110
+
107
111
  if self._cancel_post_message_injections():
108
112
  return
109
113
 
@@ -1035,6 +1039,84 @@ class ConversationChunks:
1035
1039
 
1036
1040
  return False
1037
1041
 
1042
+ def add_copy_paste_tool_instructions(self) -> None:
1043
+ """
1044
+ Add tool instructions for copy/paste mode.
1045
+
1046
+ When in copy/paste mode, the model cannot use native API tool calling so
1047
+ we inject instructions on how to embed tool calls inline using XML, JSON,
1048
+ or bracket formats. These are parsed out by the extract_tools_from_content_*
1049
+ functions in ``responses.py``.
1050
+ """
1051
+ coder = self.get_coder()
1052
+ if not coder:
1053
+ return
1054
+
1055
+ tool_list = coder.get_tool_list()
1056
+ if not tool_list:
1057
+ return
1058
+
1059
+ # Prepare a clean, serializable version of the tool list
1060
+ tool_descriptions = []
1061
+ for prefixed_tool in tool_list:
1062
+ if isinstance(prefixed_tool, dict):
1063
+ func = prefixed_tool.get("function", {})
1064
+ tool_descriptions.append(
1065
+ {
1066
+ "name": func.get("name", ""),
1067
+ "description": func.get("description", ""),
1068
+ "parameters": func.get("parameters", {}),
1069
+ }
1070
+ )
1071
+ elif hasattr(prefixed_tool, "function") and hasattr(prefixed_tool.function, "name"):
1072
+ tool_descriptions.append(
1073
+ {
1074
+ "name": getattr(prefixed_tool.function, "name", ""),
1075
+ "description": getattr(prefixed_tool.function, "description", ""),
1076
+ "parameters": getattr(prefixed_tool.function, "parameters", {}),
1077
+ }
1078
+ )
1079
+
1080
+ tool_list_json = json.dumps(tool_descriptions, indent=2)
1081
+
1082
+ inline_tool_instructions = (
1083
+ '<context name="tool_list">\n'
1084
+ "You are in copy/paste mode. Since the LLM API transport is unavailable, "
1085
+ "you MUST embed tool calls directly in your response content using one of the "
1086
+ "following formats. The system will parse these out and execute them.\n\n"
1087
+ "Available tools:\n"
1088
+ f"{tool_list_json}\n\n"
1089
+ "TOOL CALLING FORMATS (use any of these):\n\n"
1090
+ "1. XML Function Format:\n"
1091
+ " <function=ToolName>\n"
1092
+ " <parameter=param_name>param_value_json</parameter>\n"
1093
+ " </function>\n\n"
1094
+ " Example:\n"
1095
+ " <function=Local--ReadRange>\n"
1096
+ ' <parameter=read>[{"file_path": "example.py", "range_start": "def hello",'
1097
+ ' "range_end": "def goodbye"}]</parameter>\n'
1098
+ " </function>\n\n"
1099
+ "2. JSON Tool-Call Format:\n"
1100
+ ' Embed a JSON object with "name" and "arguments" keys.\n\n'
1101
+ " Example:\n"
1102
+ ' {"name": "Local--ReadRange", "arguments": {"read": [{"file_path": "example.py",'
1103
+ ' "range_start": "class A", "range_end": "class Z"}]}}\n\n'
1104
+ "3. Bracket Format:\n"
1105
+ " [ToolName(key1=value1, key2=value2)]\n\n"
1106
+ " Example:\n"
1107
+ ' [Local--ReadRange(read=[{"file_path": "example.py", "range_start": "class A"}])]\n\n'
1108
+ "IMPORTANT: Use the FULL prefixed tool name "
1109
+ '(e.g., "Local--ReadRange" not just "ReadRange").\n'
1110
+ "</context>"
1111
+ )
1112
+
1113
+ ConversationService.get_manager(coder).add_message(
1114
+ message_dict={"role": "system", "content": inline_tool_instructions},
1115
+ tag=MessageTag.SYSTEM,
1116
+ hash_key=("main", "copy_paste_tools"),
1117
+ force=True,
1118
+ )
1119
+
1038
1120
  def _shuffle_reminders(self, content: str) -> str:
1039
1121
  """
1040
1122
  If the string is a critical_reminders block, shuffle all bulleted points
@@ -6,6 +6,7 @@ according to the Skills specification.
6
6
  """
7
7
 
8
8
  import re
9
+ import weakref
9
10
  from dataclasses import dataclass, field
10
11
  from pathlib import Path
11
12
  from typing import Any, Dict, List, Optional
@@ -69,7 +70,7 @@ class SkillsManager:
69
70
  self.include_list = set(include_list) if include_list else None
70
71
  self.exclude_list = set(exclude_list) if exclude_list else set()
71
72
  self.git_root = Path(git_root).expanduser().resolve() if git_root else None
72
- self.coder = coder # Weak reference to coder instance
73
+ self._coder_ref = weakref.ref(coder) if coder else None # Weak reference to coder instance
73
74
 
74
75
  # Cache for loaded skills
75
76
  self._skills_cache: Dict[str, SkillContent] = {}
@@ -105,6 +106,18 @@ class SkillsManager:
105
106
 
106
107
  # Save initial state from config
107
108
 
109
+ def _get_coder(self):
110
+ """Return coder via weak reference, or None if collected."""
111
+ if self._coder_ref is not None:
112
+ return self._coder_ref()
113
+ return None
114
+
115
+ def _set_coder(self, value):
116
+ """Store coder as weakref to break circular reference chains."""
117
+ self._coder_ref = weakref.ref(value) if value is not None else None
118
+
119
+ coder = property(_get_coder, _set_coder)
120
+
108
121
  def _save_state(self):
109
122
  """Save current mutable state to the global skill state store.
110
123
 
@@ -1,5 +1,6 @@
1
1
  import contextlib
2
2
  import os
3
+ import sys
3
4
  import time
4
5
  from pathlib import Path, PurePosixPath
5
6
 
@@ -84,7 +85,9 @@ class GitRepo:
84
85
  self.models = models
85
86
 
86
87
  self.normalized_path = {}
87
- self.tree_files = {}
88
+ # Single-entry file cache: (commit_sha, interned_set_of_paths)
89
+ # Using a single entry (not per-commit dict) limits unbounded memory growth
90
+ self._tree_cache = None
88
91
 
89
92
  self.attribute_author = attribute_author
90
93
  self.attribute_committer = attribute_committer
@@ -602,8 +605,8 @@ class GitRepo:
602
605
 
603
606
  files = set()
604
607
  if commit:
605
- if commit in self.tree_files:
606
- files = self.tree_files[commit]
608
+ if self._tree_cache is not None and self._tree_cache[0] == commit.hexsha:
609
+ files = self._tree_cache[1]
607
610
  else:
608
611
  try:
609
612
  iterator = commit.tree.traverse()
@@ -612,7 +615,8 @@ class GitRepo:
612
615
  try:
613
616
  blob = next(iterator)
614
617
  if blob.type == "blob": # blob is a file
615
- files.add(blob.path)
618
+ # Use sys.intern() to deduplicate path strings in memory
619
+ files.add(sys.intern(blob.path))
616
620
  except IndexError:
617
621
  # Handle potential index error during tree traversal
618
622
  # without relying on potentially unassigned 'blob'
@@ -629,7 +633,10 @@ class GitRepo:
629
633
  self.io.tool_output("Is your git repo corrupted?")
630
634
  return []
631
635
  files = set(self.normalize_path(path) for path in files)
632
- self.tree_files[commit] = set(files)
636
+ # Use single-entry cache (not per-commit dict) to limit memory growth
637
+ # Store only the SHA string (not the Commit object) to avoid retaining
638
+ # the entire git object graph (tree, blobs, parent commits, etc.)
639
+ self._tree_cache = (commit.hexsha, files)
633
640
 
634
641
  # Add staged files
635
642
  index = self.repo.index
@@ -156,7 +156,9 @@ class CoderWorker:
156
156
  else:
157
157
  new_coder.show_announcements()
158
158
 
159
- edit_format = getattr(target_coder, "edit_format", "code") or "code"
159
+ edit_format = kwargs.get(
160
+ "edit_format", getattr(target_coder, "edit_format", "code") or "code"
161
+ )
160
162
  self.output_queue.put(
161
163
  {
162
164
  "type": "mode_change",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.11rc3
3
+ Version: 0.100.11rc5
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.100.11rc5",
3
+ "distance": 0,
4
+ "node": "gef557d67b79d4b14678bee3df5367348f07fe9fc",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-01"
8
+ }