cecli-dev 0.100.0rc8__tar.gz → 0.100.0rc9__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 (652) hide show
  1. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/PKG-INFO +2 -2
  2. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/_version.py +3 -3
  3. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/agent_coder.py +7 -5
  4. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/base_coder.py +8 -3
  5. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/__init__.py +3 -0
  6. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/invoke_agent.py +2 -0
  7. cecli_dev-0.100.0rc9/cecli/commands/switch_agent.py +122 -0
  8. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/run_cmd.py +49 -5
  9. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/command.py +5 -3
  10. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/read_range.py +2 -2
  11. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/app.py +73 -0
  12. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/input_container.py +18 -6
  13. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/commands.md +1 -0
  14. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/PKG-INFO +2 -2
  15. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/SOURCES.txt +3 -0
  16. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/requires.txt +3 -1
  17. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-dev.in +1 -1
  18. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-dev.txt +21 -9
  19. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-help.txt +20 -18
  20. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-playwright.txt +1 -1
  21. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/pip-compile.sh +1 -0
  22. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_run_cmd.py +2 -2
  23. cecli_dev-0.100.0rc9/tests/commands/test_compaction.py +105 -0
  24. cecli_dev-0.100.0rc9/tests/commands/test_switch_agent.py +104 -0
  25. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_repomap_workspace.py +4 -0
  26. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.dockerignore +0 -0
  27. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.flake8 +0 -0
  28. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.gitattributes +0 -0
  29. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  30. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/check_pypi_version.yml +0 -0
  31. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/docker-build-test.yml +0 -0
  32. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/docker-release.yml +0 -0
  33. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/issues.yml +0 -0
  34. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/pages.yml +0 -0
  35. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/pre-commit.yml +0 -0
  36. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/release.yml +0 -0
  37. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/ubuntu-tests.yml +0 -0
  38. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/windows-tests.yml +0 -0
  39. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.github/workflows/windows_check_pypi_version.yml +0 -0
  40. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.gitignore +0 -0
  41. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/.pre-commit-config.yaml +0 -0
  42. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/CHANGELOG.md +0 -0
  43. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/CNAME +0 -0
  44. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/CONTRIBUTING.md +0 -0
  45. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/HISTORY.md +0 -0
  46. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/LICENSE.txt +0 -0
  47. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/MANIFEST.in +0 -0
  48. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/README.md +0 -0
  49. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/Dockerfile +0 -0
  50. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/README.md +0 -0
  51. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/__init__.py +0 -0
  52. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/benchmark.py +0 -0
  53. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/benchmark_classic.py +0 -0
  54. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/clone-exercism.sh +0 -0
  55. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/cpp-test.sh +0 -0
  56. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/docker.sh +0 -0
  57. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/docker_build.sh +0 -0
  58. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/install-docker-ubuntu.sh +0 -0
  59. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/npm-test.sh +0 -0
  60. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/over_time.py +0 -0
  61. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/plot.sh +0 -0
  62. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/plots.py +0 -0
  63. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/problem_stats.py +0 -0
  64. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/prompts.py +0 -0
  65. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/refactor_tools.py +0 -0
  66. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/rsync.sh +0 -0
  67. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/rungrid.py +0 -0
  68. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/swe-bench-lite.txt +0 -0
  69. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/swe-bench.txt +0 -0
  70. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/swe_bench.py +0 -0
  71. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/test_benchmark.py +0 -0
  72. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/variations.1.sh +0 -0
  73. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/variations.2.sh +0 -0
  74. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/variations.3.sh +0 -0
  75. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/benchmark/variations.4.sh +0 -0
  76. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/__init__.py +0 -0
  77. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/__main__.py +0 -0
  78. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/args.py +0 -0
  79. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/args_formatter.py +0 -0
  80. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/change_tracker.py +0 -0
  81. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/__init__.py +0 -0
  82. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/architect_coder.py +0 -0
  83. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/ask_coder.py +0 -0
  84. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/chat_chunks.py +0 -0
  85. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/context_coder.py +0 -0
  86. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/copypaste_coder.py +0 -0
  87. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_coder.py +0 -0
  88. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_fenced_coder.py +0 -0
  89. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_func_coder.py +0 -0
  90. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  91. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editor_editblock_coder.py +0 -0
  92. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/editor_whole_coder.py +0 -0
  93. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/hashline_coder.py +0 -0
  94. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/help_coder.py +0 -0
  95. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/patch_coder.py +0 -0
  96. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/search_replace.py +0 -0
  97. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/shell.py +0 -0
  98. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/single_wholefile_func_coder.py +0 -0
  99. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/sub_agent_coder.py +0 -0
  100. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/udiff_coder.py +0 -0
  101. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/udiff_simple.py +0 -0
  102. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/wholefile_coder.py +0 -0
  103. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/coders/wholefile_func_coder.py +0 -0
  104. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/add.py +0 -0
  105. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/agent.py +0 -0
  106. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/agent_model.py +0 -0
  107. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/architect.py +0 -0
  108. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/ask.py +0 -0
  109. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/chat_mode.py +0 -0
  110. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/clear.py +0 -0
  111. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/code.py +0 -0
  112. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/command_prefix.py +0 -0
  113. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/commit.py +0 -0
  114. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/compact.py +0 -0
  115. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/context.py +0 -0
  116. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/context_blocks.py +0 -0
  117. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/context_management.py +0 -0
  118. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/copy.py +0 -0
  119. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/copy_context.py +0 -0
  120. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/core.py +0 -0
  121. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/diff.py +0 -0
  122. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/drop.py +0 -0
  123. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/editor.py +0 -0
  124. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/editor_model.py +0 -0
  125. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/exclude_skill.py +0 -0
  126. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/exit.py +0 -0
  127. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/git.py +0 -0
  128. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/hashline.py +0 -0
  129. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/help.py +0 -0
  130. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/history_search.py +0 -0
  131. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/hooks.py +0 -0
  132. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/include_skill.py +0 -0
  133. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/lint.py +0 -0
  134. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/list_sessions.py +0 -0
  135. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/list_skills.py +0 -0
  136. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/load.py +0 -0
  137. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/load_hook.py +0 -0
  138. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/load_mcp.py +0 -0
  139. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/load_session.py +0 -0
  140. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/load_skill.py +0 -0
  141. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/ls.py +0 -0
  142. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/map.py +0 -0
  143. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/map_refresh.py +0 -0
  144. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/model.py +0 -0
  145. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/models.py +0 -0
  146. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/multiline_mode.py +0 -0
  147. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/paste.py +0 -0
  148. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/quit.py +0 -0
  149. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/read_only.py +0 -0
  150. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/read_only_stub.py +0 -0
  151. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/reap_agent.py +0 -0
  152. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/reasoning_effort.py +0 -0
  153. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/remove_hook.py +0 -0
  154. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/remove_mcp.py +0 -0
  155. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/remove_skill.py +0 -0
  156. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/report.py +0 -0
  157. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/reset.py +0 -0
  158. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/rules.py +0 -0
  159. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/run.py +0 -0
  160. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/save.py +0 -0
  161. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/save_session.py +0 -0
  162. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/settings.py +0 -0
  163. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/spawn_agent.py +0 -0
  164. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/terminal_data/linux.keytab +0 -0
  165. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/terminal_setup.py +0 -0
  166. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/test.py +0 -0
  167. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/think_tokens.py +0 -0
  168. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/tokens.py +0 -0
  169. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/undo.py +0 -0
  170. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/utils/__init__.py +0 -0
  171. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/utils/base_command.py +0 -0
  172. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/utils/helpers.py +0 -0
  173. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/utils/registry.py +0 -0
  174. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/utils/save_load_manager.py +0 -0
  175. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/voice.py +0 -0
  176. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/weak_model.py +0 -0
  177. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/web.py +0 -0
  178. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/commands/workspace.py +0 -0
  179. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/deprecated_args.py +0 -0
  180. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/diffs.py +0 -0
  181. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/dump.py +0 -0
  182. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/editor.py +0 -0
  183. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/exceptions.py +0 -0
  184. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/format_settings.py +0 -0
  185. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/help.py +0 -0
  186. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/help_pats.py +0 -0
  187. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/__init__.py +0 -0
  188. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/__init__.py +0 -0
  189. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/config.py +0 -0
  190. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/service.py +0 -0
  191. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/background_commands.py +0 -0
  192. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/command_parser.py +0 -0
  193. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/__init__.py +0 -0
  194. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/base_message.py +0 -0
  195. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/files.py +0 -0
  196. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/integration.py +0 -0
  197. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/manager.py +0 -0
  198. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/service.py +0 -0
  199. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/tags.py +0 -0
  200. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/utils.py +0 -0
  201. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/copypaste.py +0 -0
  202. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/coroutines.py +0 -0
  203. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/file_searcher.py +0 -0
  204. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/__init__.py +0 -0
  205. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/dump.py +0 -0
  206. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  207. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/main.py +0 -0
  208. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/parsers.py +0 -0
  209. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/tsl.py +0 -0
  210. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/hashline.py +0 -0
  211. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/hashpos/__init__.py +0 -0
  212. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/hashpos/hashpos.py +0 -0
  213. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/io_proxy.py +0 -0
  214. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/leak_detect.py +0 -0
  215. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/model_providers.py +0 -0
  216. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/__init__.py +0 -0
  217. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/config.py +0 -0
  218. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/project.py +0 -0
  219. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/workspace.py +0 -0
  220. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/worktree.py +0 -0
  221. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/nested.py +0 -0
  222. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/observations/__init__.py +0 -0
  223. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/observations/service.py +0 -0
  224. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/plugin_manager.py +0 -0
  225. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/profiler.py +0 -0
  226. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/requests.py +0 -0
  227. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/responses.py +0 -0
  228. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/similarity.py +0 -0
  229. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/helpers/skills.py +0 -0
  230. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/history.py +0 -0
  231. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/__init__.py +0 -0
  232. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/base.py +0 -0
  233. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/integration.py +0 -0
  234. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/manager.py +0 -0
  235. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/registry.py +0 -0
  236. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/hooks/types.py +0 -0
  237. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/interruptible_input.py +0 -0
  238. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/io.py +0 -0
  239. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/linter.py +0 -0
  240. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/llm.py +0 -0
  241. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/main.py +0 -0
  242. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mcp/__init__.py +0 -0
  243. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mcp/manager.py +0 -0
  244. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mcp/oauth.py +0 -0
  245. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mcp/server.py +0 -0
  246. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mcp/utils.py +0 -0
  247. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/mdstream.py +0 -0
  248. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/models.py +0 -0
  249. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/onboarding.py +0 -0
  250. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/__init__.py +0 -0
  251. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/agent.yml +0 -0
  252. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/architect.yml +0 -0
  253. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/ask.yml +0 -0
  254. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/base.yml +0 -0
  255. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/context.yml +0 -0
  256. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/copypaste.yml +0 -0
  257. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock.yml +0 -0
  258. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock_fenced.yml +0 -0
  259. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock_func.yml +0 -0
  260. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_diff_fenced.yml +0 -0
  261. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_editblock.yml +0 -0
  262. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_whole.yml +0 -0
  263. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/hashline.yml +0 -0
  264. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/help.yml +0 -0
  265. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/patch.yml +0 -0
  266. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/single_wholefile_func.yml +0 -0
  267. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/subagent.yml +0 -0
  268. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/udiff.yml +0 -0
  269. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/udiff_simple.yml +0 -0
  270. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/__init__.py +0 -0
  271. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/registry.py +0 -0
  272. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/system.py +0 -0
  273. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/wholefile.yml +0 -0
  274. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/prompts/wholefile_func.yml +0 -0
  275. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  276. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  277. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  278. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  279. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  280. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  281. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  282. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  283. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  284. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  285. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  286. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  287. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  288. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  289. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  290. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  291. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  292. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  293. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  294. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  295. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  296. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  297. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  298. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  299. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  300. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  301. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  302. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  303. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  304. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  305. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  306. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  307. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/README.md +0 -0
  308. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  309. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  310. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  311. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  312. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  313. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  314. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  315. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  316. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  317. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  318. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  319. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  320. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  321. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  322. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  323. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  324. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  325. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  326. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  327. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  328. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  329. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  330. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  331. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  332. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  333. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  334. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  335. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/reasoning_tags.py +0 -0
  336. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/repo.py +0 -0
  337. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/repomap.py +0 -0
  338. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/report.py +0 -0
  339. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/resources/__init__.py +0 -0
  340. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/resources/model-metadata.json +0 -0
  341. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/resources/model-settings.yml +0 -0
  342. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/resources/providers.json +0 -0
  343. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/scrape.py +0 -0
  344. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/sendchat.py +0 -0
  345. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/sessions.py +0 -0
  346. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/special.py +0 -0
  347. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/__init__.py +0 -0
  348. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/command_interactive.py +0 -0
  349. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/context_manager.py +0 -0
  350. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/delegate.py +0 -0
  351. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/edit_text.py +0 -0
  352. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/explore_code.py +0 -0
  353. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/finished.py +0 -0
  354. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_branch.py +0 -0
  355. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_diff.py +0 -0
  356. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_log.py +0 -0
  357. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_remote.py +0 -0
  358. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_show.py +0 -0
  359. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/git_status.py +0 -0
  360. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/grep.py +0 -0
  361. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/load_skill.py +0 -0
  362. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/ls.py +0 -0
  363. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/remove_skill.py +0 -0
  364. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/thinking.py +0 -0
  365. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/undo_change.py +0 -0
  366. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/update_todo_list.py +0 -0
  367. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/utils/base_tool.py +0 -0
  368. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/utils/helpers.py +0 -0
  369. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/utils/output.py +0 -0
  370. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tools/utils/registry.py +0 -0
  371. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/__init__.py +0 -0
  372. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/io.py +0 -0
  373. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/styles.tcss +0 -0
  374. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/__init__.py +0 -0
  375. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/completion_bar.py +0 -0
  376. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/file_list.py +0 -0
  377. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/footer.py +0 -0
  378. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/input_area.py +0 -0
  379. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/key_hints.py +0 -0
  380. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/output.py +0 -0
  381. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/status_bar.py +0 -0
  382. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/subagent_pills.py +0 -0
  383. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/tui/worker.py +0 -0
  384. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/urls.py +0 -0
  385. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/utils.py +0 -0
  386. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/versioncheck.py +0 -0
  387. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/voice.py +0 -0
  388. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/waiting.py +0 -0
  389. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/watch.py +0 -0
  390. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/watch_prompts.py +0 -0
  391. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/Gemfile +0 -0
  392. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/blame.md +0 -0
  393. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/get-started.md +0 -0
  394. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/help-tip.md +0 -0
  395. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/help.md +0 -0
  396. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/install.md +0 -0
  397. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/keys.md +0 -0
  398. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/model-warnings.md +0 -0
  399. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/multi-line.md +0 -0
  400. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/python-m-aider.md +0 -0
  401. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/recording.css +0 -0
  402. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/recording.md +0 -0
  403. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_includes/works-best.md +0 -0
  404. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_features.scss +0 -0
  405. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_footer.scss +0 -0
  406. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_hero.scss +0 -0
  407. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_info.scss +0 -0
  408. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_layout.scss +0 -0
  409. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_reset.scss +0 -0
  410. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_testimonials.scss +0 -0
  411. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_typography.scss +0 -0
  412. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_variables.scss +0 -0
  413. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/custom/custom.scss +0 -0
  414. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/_sass/global-overrides.scss +0 -0
  415. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/adv-model-settings.md +0 -0
  416. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/agent-mode.md +0 -0
  417. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/aider_conf.md +0 -0
  418. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/api-keys.md +0 -0
  419. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/custom-commands.md +0 -0
  420. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  421. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/dotenv.md +0 -0
  422. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/editor.md +0 -0
  423. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/hooks.md +0 -0
  424. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/mcp.md +0 -0
  425. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/model-aliases.md +0 -0
  426. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/options.md +0 -0
  427. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/reasoning.md +0 -0
  428. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/security.md +0 -0
  429. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/skills.md +0 -0
  430. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/subagents.md +0 -0
  431. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/tui.md +0 -0
  432. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/workspaces.md +0 -0
  433. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/config.md +0 -0
  434. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/faq.md +0 -0
  435. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/git.md +0 -0
  436. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/index.md +0 -0
  437. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/install/docker.md +0 -0
  438. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/install/optional.md +0 -0
  439. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/install.md +0 -0
  440. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/languages.md +0 -0
  441. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  442. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/legal/privacy.md +0 -0
  443. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/anthropic.md +0 -0
  444. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/azure.md +0 -0
  445. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/bedrock.md +0 -0
  446. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/cohere.md +0 -0
  447. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/deepseek.md +0 -0
  448. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/gemini.md +0 -0
  449. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/github.md +0 -0
  450. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/groq.md +0 -0
  451. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/lm-studio.md +0 -0
  452. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/ollama.md +0 -0
  453. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openai-compat.md +0 -0
  454. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openai.md +0 -0
  455. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openrouter.md +0 -0
  456. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/other.md +0 -0
  457. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/vertex.md +0 -0
  458. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/warnings.md +0 -0
  459. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/xai.md +0 -0
  460. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms.md +0 -0
  461. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/analytics.md +0 -0
  462. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/edit-formats.md +0 -0
  463. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/infinite-output.md +0 -0
  464. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/more-info.md +0 -0
  465. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/repomap.md +0 -0
  466. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/scripting.md +0 -0
  467. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  468. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  469. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/imports.md +0 -0
  470. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  471. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/support.md +0 -0
  472. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  473. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  474. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting.md +0 -0
  475. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/conventions.md +0 -0
  476. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/copypaste.md +0 -0
  477. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/images-urls.md +0 -0
  478. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/lint-test.md +0 -0
  479. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/modes.md +0 -0
  480. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/not-code.md +0 -0
  481. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/notifications.md +0 -0
  482. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/sessions.md +0 -0
  483. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/tips.md +0 -0
  484. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/voice.md +0 -0
  485. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/watch.md +0 -0
  486. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage.md +0 -0
  487. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli/website/share/index.md +0 -0
  488. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/dependency_links.txt +0 -0
  489. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/entry_points.txt +0 -0
  490. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/top_level.txt +0 -0
  491. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/docker/Dockerfile +0 -0
  492. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  493. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/pyproject.toml +0 -0
  494. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/pytest.ini +0 -0
  495. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/common-constraints.txt +0 -0
  496. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-help.in +0 -0
  497. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements-playwright.in +0 -0
  498. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/requirements.in +0 -0
  499. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements/tree-sitter.in +0 -0
  500. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/requirements.txt +0 -0
  501. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/30k-image.py +0 -0
  502. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/Dockerfile.jekyll +0 -0
  503. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/__init__.py +0 -0
  504. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/blame.py +0 -0
  505. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/clean_metadata.py +0 -0
  506. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/cost_analyzer.py +0 -0
  507. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/cost_calculator.py +0 -0
  508. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/dl_icons.py +0 -0
  509. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/filter-chat-mode.js +0 -0
  510. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/generate_providers.py +0 -0
  511. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/get_contributor_list.js +0 -0
  512. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/get_hashline.py +0 -0
  513. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/history_prompts.py +0 -0
  514. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/homepage.py +0 -0
  515. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/issues.py +0 -0
  516. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/jekyll_build.sh +0 -0
  517. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/jekyll_run.sh +0 -0
  518. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/logo_svg.py +0 -0
  519. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/recording_audio.py +0 -0
  520. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/redact-cast.py +0 -0
  521. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/rename_to_cecli.py +0 -0
  522. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/tmux_record.sh +0 -0
  523. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/tsl_pack_langs.py +0 -0
  524. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/update-blame.sh +0 -0
  525. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/update-docs.sh +0 -0
  526. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/update-history.py +0 -0
  527. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/versionbump.py +0 -0
  528. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/scripts/yank-old-versions.py +0 -0
  529. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/setup.cfg +0 -0
  530. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/shim.pyproject.toml +0 -0
  531. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/__init__.py +0 -0
  532. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/__init__.py +0 -0
  533. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_aws_credentials.py +0 -0
  534. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_background_commands.py +0 -0
  535. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_coder.py +0 -0
  536. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_commands.py +0 -0
  537. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_custom_commands.py +0 -0
  538. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_deprecated.py +0 -0
  539. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_editblock.py +0 -0
  540. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_editor.py +0 -0
  541. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_exceptions.py +0 -0
  542. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_find_or_blocks.py +0 -0
  543. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_hashline.py +0 -0
  544. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_history.py +0 -0
  545. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_io.py +0 -0
  546. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_linter.py +0 -0
  547. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_main.py +0 -0
  548. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_model_info_manager.py +0 -0
  549. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_model_provider_manager.py +0 -0
  550. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_models.py +0 -0
  551. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_onboarding.py +0 -0
  552. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_plugin_manager.py +0 -0
  553. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_prompts.py +0 -0
  554. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_reasoning.py +0 -0
  555. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_repo.py +0 -0
  556. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_repomap.py +0 -0
  557. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_sanity_check_repo.py +0 -0
  558. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_scripting.py +0 -0
  559. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_sendchat.py +0 -0
  560. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_sessions.py +0 -0
  561. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_skills.py +0 -0
  562. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_special.py +0 -0
  563. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_ssl_verification.py +0 -0
  564. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_udiff.py +0 -0
  565. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_urls.py +0 -0
  566. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_voice.py +0 -0
  567. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_watch.py +0 -0
  568. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/basic/test_wholefile.py +0 -0
  569. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/coders/test_coder_switching.py +0 -0
  570. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/coders/test_copypaste_coder.py +0 -0
  571. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/conftest.py +0 -0
  572. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/conversations/test_conversation_integration.py +0 -0
  573. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/conversations/test_conversation_system.py +0 -0
  574. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  575. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/chat-history.md +0 -0
  576. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/arduino/test.ino +0 -0
  577. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/bash/test.sh +0 -0
  578. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/c/test.c +0 -0
  579. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/chatito/test.chatito +0 -0
  580. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/clojure/test.clj +0 -0
  581. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  582. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/cpp/test.cpp +0 -0
  583. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/csharp/test.cs +0 -0
  584. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/d/test.d +0 -0
  585. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/dart/test.dart +0 -0
  586. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elisp/test.el +0 -0
  587. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elixir/test.ex +0 -0
  588. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elm/test.elm +0 -0
  589. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/gleam/test.gleam +0 -0
  590. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/go/test.go +0 -0
  591. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/haskell/test.hs +0 -0
  592. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/hcl/test.tf +0 -0
  593. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/java/test.java +0 -0
  594. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/javascript/test.js +0 -0
  595. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/kotlin/test.kt +0 -0
  596. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/lua/test.lua +0 -0
  597. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/matlab/test.m +0 -0
  598. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ocaml/test.ml +0 -0
  599. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  600. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/php/test.php +0 -0
  601. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/pony/test.pony +0 -0
  602. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/properties/test.properties +0 -0
  603. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/python/test.py +0 -0
  604. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ql/test.ql +0 -0
  605. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/r/test.r +0 -0
  606. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/racket/test.rkt +0 -0
  607. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ruby/test.rb +0 -0
  608. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/rust/test.rs +0 -0
  609. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/scala/test.scala +0 -0
  610. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/solidity/test.sol +0 -0
  611. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/swift/test.swift +0 -0
  612. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/tsx/test.tsx +0 -0
  613. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/typescript/test.ts +0 -0
  614. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/udev/test.rules +0 -0
  615. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/zig/test.zig +0 -0
  616. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base/sample.js +0 -0
  617. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base/sample.py +0 -0
  618. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  619. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.js +0 -0
  620. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.lisp +0 -0
  621. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.py +0 -0
  622. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/fixtures/watch_question.js +0 -0
  623. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/help/test_help.py +0 -0
  624. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_config.py +0 -0
  625. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_config_active.py +0 -0
  626. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  627. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_workspace.py +0 -0
  628. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/helpers/observations/test_observation_service.py +0 -0
  629. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/hooks/__init__.py +0 -0
  630. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/hooks/test_base.py +0 -0
  631. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/hooks/test_manager.py +0 -0
  632. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/hooks/test_registry.py +0 -0
  633. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/mcp/__init__.py +0 -0
  634. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/mcp/test_manager.py +0 -0
  635. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/scrape/test_playwright_disable.py +0 -0
  636. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/scrape/test_scrape.py +0 -0
  637. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/__init__.py +0 -0
  638. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/conftest.py +0 -0
  639. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_commands.py +0 -0
  640. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_config.py +0 -0
  641. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_delegate.py +0 -0
  642. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_finished.py +0 -0
  643. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_io_proxy.py +0 -0
  644. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_service.py +0 -0
  645. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/subagents/test_sub_agent_coder.py +0 -0
  646. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_get_lines.py +0 -0
  647. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_git_branch.py +0 -0
  648. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_git_diff.py +0 -0
  649. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_grep.py +0 -0
  650. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_insert_block.py +0 -0
  651. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tools/test_registry.py +0 -0
  652. {cecli_dev-0.100.0rc8 → cecli_dev-0.100.0rc9}/tests/tui/test_app.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.0rc8
3
+ Version: 0.100.0rc9
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
@@ -76,7 +76,7 @@ Requires-Dist: cogapp; extra == "dev"
76
76
  Requires-Dist: semver; extra == "dev"
77
77
  Requires-Dist: codespell; extra == "dev"
78
78
  Requires-Dist: uv; extra == "dev"
79
- Requires-Dist: memray; extra == "dev"
79
+ Requires-Dist: memray; sys_platform != "win32" and extra == "dev"
80
80
  Requires-Dist: objgraph; extra == "dev"
81
81
  Requires-Dist: pympler; extra == "dev"
82
82
  Requires-Dist: guppy3; extra == "dev"
@@ -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.0rc8'
22
- __version_tuple__ = version_tuple = (0, 100, 0, 'rc8')
21
+ __version__ = version = '0.100.0rc9'
22
+ __version_tuple__ = version_tuple = (0, 100, 0, 'rc9')
23
23
 
24
- __commit_id__ = commit_id = 'g4af9ad954'
24
+ __commit_id__ = commit_id = 'g2aca17696'
@@ -76,7 +76,7 @@ class AgentCoder(Coder):
76
76
  "edittext",
77
77
  "undochange",
78
78
  }
79
- self.edit_allowed = False
79
+ self.edit_allowed = True
80
80
  self.max_tool_calls = 10000
81
81
  self.large_file_token_threshold = 8192
82
82
  self.skills_manager = None
@@ -246,6 +246,12 @@ class AgentCoder(Coder):
246
246
  joined_skills = ", ".join(skills_list)
247
247
  self.io.tool_output(f"Available Skills: {joined_skills}")
248
248
 
249
+ registry = AgentService.get_registry()
250
+ if registry:
251
+ names = sorted(registry.keys())
252
+ joined_names = ", ".join(names)
253
+ self.io.tool_output(f"Available Subagents: {joined_names}")
254
+
249
255
  def get_local_tool_schemas(self):
250
256
  """Returns the JSON schemas for all local tools using the tool registry."""
251
257
  schemas = []
@@ -503,8 +509,6 @@ class AgentCoder(Coder):
503
509
  # For primary agents, use the default system messages flow
504
510
  needs_system_prompts = True
505
511
  if hasattr(self, "parent_uuid") and self.parent_uuid:
506
- from cecli.helpers.agents.service import AgentService
507
-
508
512
  service = AgentService.get_instance(self)
509
513
  info = service.sub_agents.get(self.uuid)
510
514
  if info:
@@ -1468,8 +1472,6 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1468
1472
  if hasattr(self, "parent_uuid") and self.parent_uuid:
1469
1473
  return None
1470
1474
  try:
1471
- from cecli.helpers.agents.service import AgentService
1472
-
1473
1475
  registry = AgentService.get_registry()
1474
1476
  if not registry:
1475
1477
  return None
@@ -1642,9 +1642,14 @@ class Coder(metaclass=UsageMeta):
1642
1642
 
1643
1643
  try:
1644
1644
  if self.enable_context_compaction:
1645
- self.compact_context_completed = False
1646
- await self.compact_context_if_needed()
1647
- self.compact_context_completed = True
1645
+ # Skip compaction if the user wants to clear or exit
1646
+ # Compacting is wasteful since /clear will clear everything
1647
+ # and /exit will exit the application
1648
+ stripped = user_message.strip()
1649
+ if stripped not in ("/clear", "/reset", "/exit", "/quit"):
1650
+ self.compact_context_completed = False
1651
+ await self.compact_context_if_needed()
1652
+ self.compact_context_completed = True
1648
1653
 
1649
1654
  self.run_one_completed = False
1650
1655
  await self.run_one(user_message, preproc)
@@ -65,6 +65,7 @@ from .save import SaveCommand
65
65
  from .save_session import SaveSessionCommand
66
66
  from .settings import SettingsCommand
67
67
  from .spawn_agent import SpawnAgentCommand
68
+ from .switch_agent import SwitchAgentCommand
68
69
  from .terminal_setup import TerminalSetupCommand
69
70
  from .test import TestCommand
70
71
  from .think_tokens import ThinkTokensCommand
@@ -118,6 +119,7 @@ CommandRegistry.register(HooksCommand)
118
119
  CommandRegistry.register(InvokeAgentCommand)
119
120
  CommandRegistry.register(ReapAgentCommand)
120
121
  CommandRegistry.register(SpawnAgentCommand)
122
+ CommandRegistry.register(SwitchAgentCommand)
121
123
  CommandRegistry.register(IncludeSkillCommand)
122
124
  CommandRegistry.register(LintCommand)
123
125
  CommandRegistry.register(ListSessionsCommand)
@@ -199,6 +201,7 @@ __all__ = [
199
201
  "InvokeAgentCommand",
200
202
  "ReapAgentCommand",
201
203
  "SpawnAgentCommand",
204
+ "SwitchAgentCommand",
202
205
  "LintCommand",
203
206
  "ListSessionsCommand",
204
207
  "ListSkillsCommand",
@@ -25,9 +25,11 @@ class InvokeAgentCommand(BaseCommand):
25
25
  summary = await agent_service.invoke(name, prompt, blocking=True)
26
26
  if summary:
27
27
  from cecli.helpers.conversation.service import ConversationService
28
+ from cecli.helpers.conversation.tags import MessageTag
28
29
 
29
30
  ConversationService.get_manager(coder).add_message(
30
31
  message_dict=dict(role="user", content=summary),
32
+ tag=MessageTag.CUR,
31
33
  )
32
34
  io.tool_output(f"Sub-agent '{name}' completed:\n{summary}")
33
35
  else:
@@ -0,0 +1,122 @@
1
+ from typing import List
2
+
3
+ from cecli.commands.utils.base_command import BaseCommand
4
+ from cecli.commands.utils.helpers import format_command_result
5
+ from cecli.helpers.agents.service import AgentService
6
+
7
+
8
+ class SwitchAgentCommand(BaseCommand):
9
+ NORM_NAME = "switch-agent"
10
+ DESCRIPTION = "Switch to a specific agent by name"
11
+
12
+ @classmethod
13
+ async def execute(cls, io, coder, args, **kwargs):
14
+ """Execute the switch-agent command."""
15
+ agent_name = args.strip()
16
+ if not agent_name:
17
+ io.tool_error("Usage: /switch-agent <agent-name>")
18
+ return 1
19
+
20
+ try:
21
+ agent_service = AgentService.get_instance(coder)
22
+ except Exception as e:
23
+ io.tool_error(f"Could not get agent service: {e}")
24
+ return 1
25
+
26
+ agent_uuid = None
27
+
28
+ if agent_name == "primary":
29
+ agent_uuid = str(coder.uuid)
30
+ else:
31
+ if agent_service and agent_service.sub_agents:
32
+ # Try parsing "name (uuid)" format
33
+ if agent_name.endswith(")") and " (" in agent_name:
34
+ try:
35
+ # Extract uuid prefix from "name (prefix)"
36
+ uuid_prefix = agent_name.rsplit(" (", 1)[1][:-1]
37
+ for uuid, info in agent_service.sub_agents.items():
38
+ if uuid.startswith(uuid_prefix):
39
+ agent_uuid = uuid
40
+ break
41
+ except IndexError:
42
+ pass # Not the format we expected
43
+
44
+ # If not found via "name (uuid)", try matching by name directly
45
+ if agent_uuid is None:
46
+ for uuid, sub_agent_info in agent_service.sub_agents.items():
47
+ if sub_agent_info.name == agent_name:
48
+ agent_uuid = uuid
49
+ break
50
+
51
+ # If still not found, try matching by uuid prefix directly
52
+ if agent_uuid is None:
53
+ for uuid, sub_agent_info in agent_service.sub_agents.items():
54
+ if uuid.startswith(agent_name):
55
+ agent_uuid = uuid
56
+ break
57
+
58
+ if agent_uuid is None:
59
+ io.tool_error(f"Error: Agent '{agent_name}' not found.")
60
+ return 1
61
+
62
+ if hasattr(io, "output_queue") and io.output_queue:
63
+ io.output_queue.put({"type": "switch_agent", "uuid": agent_uuid})
64
+ else:
65
+ # Non-TUI mode
66
+ if agent_uuid == str(coder.uuid):
67
+ agent_service.foreground_uuid = None
68
+ else:
69
+ agent_service.foreground_uuid = agent_uuid
70
+ io.tool_output(f"Switched to agent: {agent_name}")
71
+
72
+ return format_command_result(io, "switch-agent", f"Switched to agent '{agent_name}'")
73
+
74
+ @classmethod
75
+ def get_completions(cls, io, coder, args) -> List[str]:
76
+ """Get completion options for switch-agent command."""
77
+ try:
78
+ agent_service = AgentService.get_instance(coder)
79
+ names = []
80
+
81
+ # Determine current foreground agent
82
+ foreground_uuid = agent_service.foreground_uuid
83
+
84
+ # Add "primary" only if not already on primary
85
+ if foreground_uuid is not None:
86
+ names.append("primary")
87
+
88
+ # Add sub-agent names, excluding the currently active one
89
+ if agent_service and agent_service.sub_agents:
90
+ # First pass: count name occurrences
91
+ name_counts = {}
92
+ for uuid, sub_agent_info in agent_service.sub_agents.items():
93
+ name_counts[sub_agent_info.name] = name_counts.get(sub_agent_info.name, 0) + 1
94
+
95
+ # Second pass: only show UUID prefix when name appears multiple times
96
+ for uuid, sub_agent_info in agent_service.sub_agents.items():
97
+ if uuid != foreground_uuid:
98
+ name = sub_agent_info.name
99
+ if name_counts[name] > 1:
100
+ names.append(f"{name} ({uuid[:3]})")
101
+ else:
102
+ names.append(name)
103
+
104
+ current_arg = args.strip().lower()
105
+ if current_arg:
106
+ return [name for name in names if name.lower().startswith(current_arg)]
107
+ else:
108
+ return names
109
+ except Exception:
110
+ return ["primary"]
111
+
112
+ @classmethod
113
+ def get_help(cls) -> str:
114
+ """Get help text for the switch-agent command."""
115
+ help_text = super().get_help()
116
+ help_text += "\nUsage:\n"
117
+ help_text += " /switch-agent <agent-name> # Switch to a specific agent\n"
118
+ help_text += "\nExamples:\n"
119
+ help_text += " /switch-agent primary\n"
120
+ help_text += " /switch-agent reviewer\n"
121
+ help_text += "\nUse tab for auto-completion of agent names.\n"
122
+ return help_text
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import base64
2
3
  import os
3
4
  import platform
4
5
  import subprocess
@@ -54,8 +55,11 @@ def run_cmd_subprocess(
54
55
  if platform.system() == "Windows":
55
56
  parent_process = get_windows_parent_process_name()
56
57
  if parent_process == "powershell.exe":
57
- command = f"powershell -Command {command}"
58
-
58
+ # Silence progress/error streams at the source to prevent CLIXML
59
+ silenced_command = f"$ProgressPreference='SilentlyContinue'; {command}"
60
+ cmd_bytes = silenced_command.encode("utf-16-le")
61
+ encoded = base64.b64encode(cmd_bytes).decode()
62
+ command = f"powershell -NoProfile -NonInteractive -OutputFormat Text -EncodedCommand {encoded}"
59
63
  if verbose:
60
64
  print("Running command:", command)
61
65
  print("SHELL:", shell)
@@ -93,7 +97,7 @@ def run_cmd_subprocess(
93
97
  print(line, end="", flush=True)
94
98
 
95
99
  process.wait()
96
- return process.returncode, "".join(output)
100
+ return process.returncode, _clean_output("".join(output))
97
101
  except Exception as e:
98
102
  return 1, str(e)
99
103
 
@@ -116,7 +120,11 @@ async def run_cmd_async(
116
120
  if platform.system() == "Windows":
117
121
  parent_process = get_windows_parent_process_name()
118
122
  if parent_process == "powershell.exe":
119
- command = f"powershell -Command {command}"
123
+ # Silence progress/error streams at the source to prevent CLIXML
124
+ silenced_command = f"$ProgressPreference='SilentlyContinue'; {command}"
125
+ cmd_bytes = silenced_command.encode("utf-16-le")
126
+ encoded = base64.b64encode(cmd_bytes).decode()
127
+ command = f"powershell -NoProfile -NonInteractive -OutputFormat Text -EncodedCommand {encoded}"
120
128
 
121
129
  if verbose:
122
130
  print("Running command:", command)
@@ -131,6 +139,19 @@ async def run_cmd_async(
131
139
  stderr=asyncio.subprocess.STDOUT,
132
140
  cwd=cwd,
133
141
  )
142
+ except NotImplementedError:
143
+ # On Windows with SelectorEventLoop, asyncio does not support subprocesses.
144
+ # Fall back to synchronous subprocess via loop.run_in_executor.
145
+ loop = asyncio.get_running_loop()
146
+ return await loop.run_in_executor(
147
+ None,
148
+ run_cmd_subprocess,
149
+ command,
150
+ verbose,
151
+ cwd,
152
+ encoding,
153
+ should_print,
154
+ )
134
155
  except FileNotFoundError:
135
156
  return 1, f"Command not found: {command}"
136
157
 
@@ -175,7 +196,7 @@ async def run_cmd_async(
175
196
  if not reader_task.done():
176
197
  await reader_task
177
198
 
178
- return process.returncode, "".join(output)
199
+ return process.returncode, _clean_output("".join(output))
179
200
 
180
201
 
181
202
  def run_cmd_pexpect(command, verbose=False, cwd=None, should_print=True):
@@ -222,3 +243,26 @@ def run_cmd_pexpect(command, verbose=False, cwd=None, should_print=True):
222
243
  except (pexpect.ExceptionPexpect, TypeError, ValueError) as e:
223
244
  error_msg = f"Error running command {command}: {e}"
224
245
  return 1, error_msg
246
+
247
+
248
+ def _clean_output(output):
249
+ """Remove CLIXML progress output from PowerShell commands."""
250
+ if platform.system() != "Windows":
251
+ return output
252
+
253
+ if output.startswith("#< CLIXML"):
254
+ lines = output.splitlines()
255
+ filtered = []
256
+ for line in lines:
257
+ # Skip the CLIXML header line
258
+ if line.startswith("#< CLIXML"):
259
+ continue
260
+ # Skip CLIXML XML object tags (progress messages)
261
+ stripped = line.strip()
262
+ if stripped.startswith("<Objs ") or stripped == "</Objs>":
263
+ continue
264
+ if stripped.startswith("<Obj "):
265
+ continue
266
+ filtered.append(line)
267
+ return "\n".join(filtered)
268
+ return output
@@ -245,7 +245,9 @@ class Tool(BaseTool):
245
245
 
246
246
  # Format output
247
247
  output_content = output or ""
248
- output_limit = coder.large_file_token_threshold
248
+ # Tokens are roughly 3-4 characters
249
+ output_limit = coder.large_file_token_threshold * 3.5
250
+
249
251
  if coder.context_management_enabled and len(output_content) > output_limit * 1.25:
250
252
  # Save full output to paginated files instead of truncating
251
253
  folder_path, file_list, alias_paths = (
@@ -266,8 +268,8 @@ class Tool(BaseTool):
266
268
  f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
267
269
  "Use the `ContextManager` tool to view these files."
268
270
  "Do not use standard cli tools to view these files."
269
- "Remove them from context after taking note of the relevant information "
270
- "in the output to prevent overfilling stale context."
271
+ "Remove them from context after taking notes on the relevant information "
272
+ "to prevent overfilling stale context."
271
273
  )
272
274
 
273
275
  # Remove from background tracking since it's done
@@ -201,7 +201,7 @@ class Tool(BaseTool):
201
201
  found_by = ""
202
202
 
203
203
  if start_text is not None and end_text is not None:
204
- if start_text == "@000":
204
+ if start_text == "@000" or start_text == "000@":
205
205
  start_indices = [0]
206
206
  else:
207
207
  start_pattern_lines = start_text.split("\n")
@@ -213,7 +213,7 @@ class Tool(BaseTool):
213
213
  ):
214
214
  start_indices.append(i)
215
215
 
216
- if end_text == "000@":
216
+ if end_text == "000@" or end_text == "@000":
217
217
  end_indices = [num_lines - 1]
218
218
  else:
219
219
  end_pattern_lines = end_text.split("\n")
@@ -554,6 +554,14 @@ class TUI(App):
554
554
 
555
555
  footer = self.query_one(MainFooter)
556
556
  footer.update_mode(msg.get("mode", "code"))
557
+ elif msg_type == "switch_agent":
558
+ target_uuid = msg["uuid"]
559
+ # Ensure the target container exists before switching
560
+ primary_uuid = str(self.worker.coder.uuid)
561
+ if target_uuid != primary_uuid and target_uuid not in self._sub_agent_containers:
562
+ self.show_error("Agent container not found. Cannot switch.")
563
+ else:
564
+ self._switch_to_container(target_uuid)
557
565
 
558
566
  def add_output(self, text, task_id=None):
559
567
  """Add output to the output container."""
@@ -678,6 +686,8 @@ class TUI(App):
678
686
 
679
687
  def on_input_area_submit(self, message: InputArea.Submit):
680
688
  """Handle input submission."""
689
+ from cecli.helpers.agents.service import AgentService
690
+
681
691
  user_input = message.value
682
692
 
683
693
  if not user_input.strip():
@@ -703,6 +713,63 @@ class TUI(App):
703
713
  self._open_editor_suspended(initial_content)
704
714
  return
705
715
 
716
+ # Intercept /switch-agent command to handle immediately without LLM processing
717
+ if stripped.startswith("/switch-agent"):
718
+ parts = stripped.split(maxsplit=1)
719
+ agent_name = parts[1].strip() if len(parts) > 1 else ""
720
+
721
+ input_area = self.query_one("#input", InputArea)
722
+ input_area.value = ""
723
+
724
+ if not agent_name:
725
+ self.show_error("Usage: /switch-agent <agent-name>")
726
+ return
727
+
728
+ # Resolve agent name to UUID
729
+ agent_service = AgentService.get_instance(self.worker.coder)
730
+ primary_uuid = str(self.worker.coder.uuid)
731
+
732
+ target_uuid = None
733
+ if agent_name == "primary":
734
+ target_uuid = primary_uuid
735
+ else:
736
+ # Try parsing "name (uuid)" format
737
+ if agent_name.endswith(")") and " (" in agent_name:
738
+ try:
739
+ # Extract uuid prefix from "name (prefix)"
740
+ uuid_prefix = agent_name.rsplit(" (", 1)[1][:-1]
741
+ for uuid, info in agent_service.sub_agents.items():
742
+ if uuid.startswith(uuid_prefix):
743
+ target_uuid = uuid
744
+ break
745
+ except IndexError:
746
+ pass # Not the format we expected
747
+
748
+ # If not found via "name (uuid)", try matching by name directly
749
+ if target_uuid is None:
750
+ for uuid, info in agent_service.sub_agents.items():
751
+ if info.name == agent_name:
752
+ target_uuid = uuid
753
+ break
754
+
755
+ # If still not found, try matching by uuid prefix directly
756
+ if target_uuid is None:
757
+ for uuid, info in agent_service.sub_agents.items():
758
+ if uuid.startswith(agent_name):
759
+ target_uuid = uuid
760
+ break
761
+
762
+ if target_uuid is None:
763
+ self.show_error(f"Agent '{agent_name}' not found.")
764
+ return
765
+
766
+ if target_uuid != primary_uuid and target_uuid not in self._sub_agent_containers:
767
+ self.show_error(f"Agent container for '{agent_name}' not found.")
768
+ return
769
+
770
+ self._switch_to_container(target_uuid)
771
+ return
772
+
706
773
  # Save to history before clearing
707
774
  input_area = self.query_one("#input", InputArea)
708
775
  input_area.save_to_history(user_input)
@@ -976,6 +1043,12 @@ class TUI(App):
976
1043
  agent_service = AgentService.get_instance(self.worker.coder)
977
1044
  primary_uuid = str(self.worker.coder.uuid)
978
1045
 
1046
+ # Check if the target container exists
1047
+ if uuid != primary_uuid and uuid not in self._sub_agent_containers:
1048
+ # Sub-agent container not found, fall back to primary
1049
+ self.show_error(f"Agent container for UUID {uuid} not found. Switching to primary.")
1050
+ uuid = primary_uuid
1051
+
979
1052
  if uuid == primary_uuid:
980
1053
  # Switch to primary agent
981
1054
  agent_service.foreground_uuid = None
@@ -40,7 +40,7 @@ class InputContainer(Vertical):
40
40
  sub_agents = self._get_sub_agents()
41
41
  if sub_agents:
42
42
  pills_text = self._format_sub_agent_pills(sub_agents, self.show_squares)
43
- self.border_title = f"{mode}: {pills_text}"
43
+ self.border_title = f"agent: {pills_text}"
44
44
  else:
45
45
  self.border_title = mode
46
46
  self.refresh()
@@ -49,7 +49,7 @@ class InputContainer(Vertical):
49
49
  """Query AgentService via self.app to build sub-agent pill data.
50
50
 
51
51
  Returns:
52
- List of dicts with ``name``, ``active``, and ``generating`` keys,
52
+ List of dicts with ``name``, ``uuid``, ``active``, and ``generating`` keys,
53
53
  or empty list.
54
54
  """
55
55
  try:
@@ -61,13 +61,14 @@ class InputContainer(Vertical):
61
61
  agent_service = AgentService.get_instance(coder)
62
62
 
63
63
  sub_agents = []
64
- primary_uuid = agent_service.coder.uuid
64
+ primary_uuid = str(agent_service.coder.uuid)
65
65
  active_uuid = agent_service.foreground_uuid or primary_uuid
66
66
 
67
67
  # Primary is never "generating" in the sub-agent sense
68
68
  sub_agents.append(
69
69
  {
70
70
  "name": "primary",
71
+ "uuid": primary_uuid,
71
72
  "active": active_uuid == primary_uuid,
72
73
  "generating": is_active(getattr(coder.io, "output_task", None)),
73
74
  }
@@ -78,6 +79,7 @@ class InputContainer(Vertical):
78
79
  sub_agents.append(
79
80
  {
80
81
  "name": info.name,
82
+ "uuid": coder_uuid,
81
83
  "active": coder_uuid == active_uuid,
82
84
  "generating": is_active(info.generate_task),
83
85
  }
@@ -101,13 +103,17 @@ class InputContainer(Vertical):
101
103
  - ◆/■ (generating, active) — alternates for animation
102
104
 
103
105
  Args:
104
- sub_agents: List of dicts with ``name``, ``active``, and ``generating`` keys.
106
+ sub_agents: List of dicts with ``name``, ``uuid``, ``active``, and ``generating`` keys.
105
107
  show_squares: If True, use square icons (□/■) instead of diamonds (◇/◆) for generating agents.
106
108
 
107
109
  Returns:
108
- A string like ``"◍ primary ◆ reviewer"``.
110
+ A string like ``"◍ primary ◆ reviewer (a6b)"``.
109
111
  """
110
112
  parts = []
113
+ name_counts = {}
114
+ for sa in sub_agents:
115
+ name_counts[sa["name"]] = name_counts.get(sa["name"], 0) + 1
116
+
111
117
  for sa in sub_agents:
112
118
  active = sa.get("active", False)
113
119
  gen = sa.get("generating", False)
@@ -118,7 +124,13 @@ class InputContainer(Vertical):
118
124
  icon = "◆" if active else "◇"
119
125
  else:
120
126
  icon = "●" if active else "○"
121
- parts.append(f"{icon} {sa['name']}")
127
+
128
+ name = sa["name"]
129
+ display_name = name
130
+ if name != "primary" and name_counts[name] > 1:
131
+ display_name = f"{name} ({sa['uuid'][:3]})"
132
+
133
+ parts.append(f"{icon} {display_name}")
122
134
  return " ".join(parts)
123
135
 
124
136
  def update_cost(self, cost_text: str):
@@ -59,6 +59,7 @@ cog.out(get_help_md())
59
59
  | **/run** | Run a shell command and optionally add the output to the chat (alias: !) |
60
60
  | **/save** | Save commands to a file that can reconstruct the current chat session's files |
61
61
  | **/settings** | Print out the current settings |
62
+ | **/switch-agent** | Switch to a specific agent by name |
62
63
  | **/test** | Run a shell command and add the output to the chat on non-zero exit code |
63
64
  | **/think-tokens** | Set the thinking token budget, eg: 8096, 8k, 10.5k, 0.5M, or 0 to disable. |
64
65
  | **/tokens** | Report on the number of tokens used by the current chat context |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.0rc8
3
+ Version: 0.100.0rc9
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
@@ -76,7 +76,7 @@ Requires-Dist: cogapp; extra == "dev"
76
76
  Requires-Dist: semver; extra == "dev"
77
77
  Requires-Dist: codespell; extra == "dev"
78
78
  Requires-Dist: uv; extra == "dev"
79
- Requires-Dist: memray; extra == "dev"
79
+ Requires-Dist: memray; sys_platform != "win32" and extra == "dev"
80
80
  Requires-Dist: objgraph; extra == "dev"
81
81
  Requires-Dist: pympler; extra == "dev"
82
82
  Requires-Dist: guppy3; extra == "dev"
@@ -178,6 +178,7 @@ cecli/commands/save.py
178
178
  cecli/commands/save_session.py
179
179
  cecli/commands/settings.py
180
180
  cecli/commands/spawn_agent.py
181
+ cecli/commands/switch_agent.py
181
182
  cecli/commands/terminal_setup.py
182
183
  cecli/commands/test.py
183
184
  cecli/commands/think_tokens.py
@@ -563,6 +564,8 @@ tests/basic/test_watch.py
563
564
  tests/basic/test_wholefile.py
564
565
  tests/coders/test_coder_switching.py
565
566
  tests/coders/test_copypaste_coder.py
567
+ tests/commands/test_compaction.py
568
+ tests/commands/test_switch_agent.py
566
569
  tests/conversations/test_conversation_integration.py
567
570
  tests/conversations/test_conversation_system.py
568
571
  tests/fixtures/chat-history-search-replace-gold.txt
@@ -65,12 +65,14 @@ cogapp
65
65
  semver
66
66
  codespell
67
67
  uv
68
- memray
69
68
  objgraph
70
69
  pympler
71
70
  guppy3
72
71
  psutil
73
72
 
73
+ [dev:sys_platform != "win32"]
74
+ memray
75
+
74
76
  [help]
75
77
  llama-index-embeddings-huggingface
76
78
  numpy>=1.26.4
@@ -13,7 +13,7 @@ cogapp
13
13
  semver
14
14
  codespell
15
15
  uv
16
- memray
16
+ memray; sys_platform != 'win32'
17
17
  objgraph
18
18
  pympler
19
19
  guppy3