cecli-dev 0.99.12__tar.gz → 0.100.0rc1__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 (650) hide show
  1. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/PKG-INFO +8 -6
  2. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/README.md +6 -5
  3. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/_version.py +3 -3
  4. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/args.py +1 -1
  5. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/__init__.py +2 -0
  6. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/agent_coder.py +99 -6
  7. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/base_coder.py +99 -20
  8. cecli_dev-0.100.0rc1/cecli/coders/sub_agent_coder.py +22 -0
  9. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/__init__.py +10 -1
  10. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/clear.py +2 -2
  11. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/core.py +16 -11
  12. cecli_dev-0.100.0rc1/cecli/commands/invoke_agent.py +51 -0
  13. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/ls.py +3 -3
  14. cecli_dev-0.100.0rc1/cecli/commands/reap_agent.py +66 -0
  15. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/reset.py +2 -2
  16. cecli_dev-0.100.0rc1/cecli/commands/spawn_agent.py +40 -0
  17. cecli_dev-0.100.0rc1/cecli/helpers/agents/__init__.py +7 -0
  18. cecli_dev-0.100.0rc1/cecli/helpers/agents/config.py +79 -0
  19. cecli_dev-0.100.0rc1/cecli/helpers/agents/service.py +506 -0
  20. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/files.py +29 -11
  21. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/integration.py +69 -13
  22. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/manager.py +29 -11
  23. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/service.py +1 -2
  24. cecli_dev-0.100.0rc1/cecli/helpers/io_proxy.py +256 -0
  25. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/leak_detect.py +42 -0
  26. cecli_dev-0.99.12/cecli/helpers/observations/manager.py → cecli_dev-0.100.0rc1/cecli/helpers/observations/service.py +50 -16
  27. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/io.py +18 -15
  28. cecli_dev-0.100.0rc1/cecli/prompts/subagent.yml +62 -0
  29. cecli_dev-0.100.0rc1/cecli/queries/tree-sitter-language-pack/bash-tags.scm +8 -0
  30. cecli_dev-0.100.0rc1/cecli/queries/tree-sitter-languages/bash-tags.scm +8 -0
  31. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/repomap.py +30 -7
  32. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/__init__.py +2 -0
  33. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/context_manager.py +51 -5
  34. cecli_dev-0.100.0rc1/cecli/tools/delegate.py +125 -0
  35. cecli_dev-0.100.0rc1/cecli/tools/finished.py +86 -0
  36. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/read_range.py +89 -13
  37. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/base_tool.py +2 -2
  38. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/app.py +357 -49
  39. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/io.py +179 -55
  40. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/styles.tcss +2 -1
  41. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/__init__.py +2 -0
  42. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/file_list.py +12 -2
  43. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/footer.py +61 -4
  44. cecli_dev-0.100.0rc1/cecli/tui/widgets/input_container.py +127 -0
  45. cecli_dev-0.100.0rc1/cecli/tui/widgets/subagent_pills.py +164 -0
  46. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/worker.py +26 -6
  47. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/agent-mode.md +18 -28
  48. cecli_dev-0.100.0rc1/cecli/website/docs/config/subagents.md +235 -0
  49. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/PKG-INFO +8 -6
  50. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/SOURCES.txt +26 -2
  51. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/requires.txt +1 -0
  52. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/pytest.ini +1 -0
  53. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/common-constraints.txt +3 -1
  54. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-dev.in +1 -0
  55. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-dev.txt +4 -0
  56. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_coder.py +17 -9
  57. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_reasoning.py +4 -4
  58. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_repomap.py +3 -0
  59. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conversations/test_conversation_integration.py +1 -1
  60. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conversations/test_conversation_system.py +1 -1
  61. cecli_dev-0.100.0rc1/tests/fixtures/languages/bash/test.sh +19 -0
  62. cecli_dev-0.99.12/tests/helpers/observations/test_observation_manager.py → cecli_dev-0.100.0rc1/tests/helpers/observations/test_observation_service.py +7 -7
  63. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/scrape/test_playwright_disable.py +2 -0
  64. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/scrape/test_scrape.py +2 -0
  65. cecli_dev-0.100.0rc1/tests/subagents/__init__.py +0 -0
  66. cecli_dev-0.100.0rc1/tests/subagents/conftest.py +60 -0
  67. cecli_dev-0.100.0rc1/tests/subagents/test_commands.py +234 -0
  68. cecli_dev-0.100.0rc1/tests/subagents/test_config.py +109 -0
  69. cecli_dev-0.100.0rc1/tests/subagents/test_delegate.py +116 -0
  70. cecli_dev-0.100.0rc1/tests/subagents/test_finished.py +109 -0
  71. cecli_dev-0.100.0rc1/tests/subagents/test_io_proxy.py +187 -0
  72. cecli_dev-0.100.0rc1/tests/subagents/test_service.py +653 -0
  73. cecli_dev-0.100.0rc1/tests/subagents/test_sub_agent_coder.py +153 -0
  74. cecli_dev-0.99.12/cecli/tools/finished.py +0 -41
  75. cecli_dev-0.99.12/cecli/tui/widgets/input_container.py +0 -24
  76. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.dockerignore +0 -0
  77. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.flake8 +0 -0
  78. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.gitattributes +0 -0
  79. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  80. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/check_pypi_version.yml +0 -0
  81. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/docker-build-test.yml +0 -0
  82. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/docker-release.yml +0 -0
  83. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/issues.yml +0 -0
  84. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/pages.yml +0 -0
  85. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/pre-commit.yml +0 -0
  86. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/release.yml +0 -0
  87. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/ubuntu-tests.yml +0 -0
  88. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/windows-tests.yml +0 -0
  89. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
  90. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.gitignore +0 -0
  91. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.pre-commit-config.yaml +0 -0
  92. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CHANGELOG.md +0 -0
  93. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CNAME +0 -0
  94. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CONTRIBUTING.md +0 -0
  95. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/HISTORY.md +0 -0
  96. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/LICENSE.txt +0 -0
  97. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/MANIFEST.in +0 -0
  98. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/Dockerfile +0 -0
  99. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/README.md +0 -0
  100. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/__init__.py +0 -0
  101. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/benchmark.py +0 -0
  102. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/benchmark_classic.py +0 -0
  103. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/clone-exercism.sh +0 -0
  104. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/cpp-test.sh +0 -0
  105. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/docker.sh +0 -0
  106. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/docker_build.sh +0 -0
  107. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/install-docker-ubuntu.sh +0 -0
  108. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/npm-test.sh +0 -0
  109. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/over_time.py +0 -0
  110. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/plot.sh +0 -0
  111. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/plots.py +0 -0
  112. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/problem_stats.py +0 -0
  113. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/prompts.py +0 -0
  114. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/refactor_tools.py +0 -0
  115. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/rsync.sh +0 -0
  116. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/rungrid.py +0 -0
  117. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe-bench-lite.txt +0 -0
  118. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe-bench.txt +0 -0
  119. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe_bench.py +0 -0
  120. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/test_benchmark.py +0 -0
  121. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.1.sh +0 -0
  122. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.2.sh +0 -0
  123. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.3.sh +0 -0
  124. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.4.sh +0 -0
  125. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/__init__.py +0 -0
  126. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/__main__.py +0 -0
  127. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/args_formatter.py +0 -0
  128. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/change_tracker.py +0 -0
  129. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/architect_coder.py +0 -0
  130. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/ask_coder.py +0 -0
  131. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/chat_chunks.py +0 -0
  132. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/context_coder.py +0 -0
  133. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/copypaste_coder.py +0 -0
  134. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_coder.py +0 -0
  135. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
  136. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_func_coder.py +0 -0
  137. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  138. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_editblock_coder.py +0 -0
  139. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_whole_coder.py +0 -0
  140. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/hashline_coder.py +0 -0
  141. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/help_coder.py +0 -0
  142. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/patch_coder.py +0 -0
  143. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/search_replace.py +0 -0
  144. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/shell.py +0 -0
  145. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
  146. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/udiff_coder.py +0 -0
  147. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/udiff_simple.py +0 -0
  148. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/wholefile_coder.py +0 -0
  149. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/wholefile_func_coder.py +0 -0
  150. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/add.py +0 -0
  151. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/agent.py +0 -0
  152. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/agent_model.py +0 -0
  153. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/architect.py +0 -0
  154. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/ask.py +0 -0
  155. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/chat_mode.py +0 -0
  156. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/code.py +0 -0
  157. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/command_prefix.py +0 -0
  158. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/commit.py +0 -0
  159. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/compact.py +0 -0
  160. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context.py +0 -0
  161. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context_blocks.py +0 -0
  162. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context_management.py +0 -0
  163. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/copy.py +0 -0
  164. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/copy_context.py +0 -0
  165. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/diff.py +0 -0
  166. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/drop.py +0 -0
  167. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/editor.py +0 -0
  168. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/editor_model.py +0 -0
  169. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/exclude_skill.py +0 -0
  170. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/exit.py +0 -0
  171. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/git.py +0 -0
  172. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/hashline.py +0 -0
  173. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/help.py +0 -0
  174. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/history_search.py +0 -0
  175. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/hooks.py +0 -0
  176. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/include_skill.py +0 -0
  177. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/lint.py +0 -0
  178. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/list_sessions.py +0 -0
  179. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/list_skills.py +0 -0
  180. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load.py +0 -0
  181. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_hook.py +0 -0
  182. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_mcp.py +0 -0
  183. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_session.py +0 -0
  184. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_skill.py +0 -0
  185. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/map.py +0 -0
  186. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/map_refresh.py +0 -0
  187. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/model.py +0 -0
  188. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/models.py +0 -0
  189. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/multiline_mode.py +0 -0
  190. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/paste.py +0 -0
  191. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/quit.py +0 -0
  192. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/read_only.py +0 -0
  193. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/read_only_stub.py +0 -0
  194. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/reasoning_effort.py +0 -0
  195. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_hook.py +0 -0
  196. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_mcp.py +0 -0
  197. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_skill.py +0 -0
  198. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/report.py +0 -0
  199. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/rules.py +0 -0
  200. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/run.py +0 -0
  201. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/save.py +0 -0
  202. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/save_session.py +0 -0
  203. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/settings.py +0 -0
  204. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
  205. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/terminal_setup.py +0 -0
  206. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/test.py +0 -0
  207. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/think_tokens.py +0 -0
  208. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/tokens.py +0 -0
  209. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/undo.py +0 -0
  210. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/__init__.py +0 -0
  211. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/base_command.py +0 -0
  212. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/helpers.py +0 -0
  213. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/registry.py +0 -0
  214. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/save_load_manager.py +0 -0
  215. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/voice.py +0 -0
  216. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/weak_model.py +0 -0
  217. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/web.py +0 -0
  218. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/workspace.py +0 -0
  219. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/deprecated_args.py +0 -0
  220. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/diffs.py +0 -0
  221. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/dump.py +0 -0
  222. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/editor.py +0 -0
  223. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/exceptions.py +0 -0
  224. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/format_settings.py +0 -0
  225. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/help.py +0 -0
  226. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/help_pats.py +0 -0
  227. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/__init__.py +0 -0
  228. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/background_commands.py +0 -0
  229. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/command_parser.py +0 -0
  230. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/__init__.py +0 -0
  231. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/base_message.py +0 -0
  232. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/tags.py +0 -0
  233. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/utils.py +0 -0
  234. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/copypaste.py +0 -0
  235. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/coroutines.py +0 -0
  236. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/file_searcher.py +0 -0
  237. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
  238. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/dump.py +0 -0
  239. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  240. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/main.py +0 -0
  241. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
  242. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
  243. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashline.py +0 -0
  244. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashpos/__init__.py +0 -0
  245. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
  246. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/model_providers.py +0 -0
  247. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/__init__.py +0 -0
  248. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/config.py +0 -0
  249. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/project.py +0 -0
  250. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/workspace.py +0 -0
  251. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/worktree.py +0 -0
  252. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/nested.py +0 -0
  253. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/observations/__init__.py +0 -0
  254. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/plugin_manager.py +0 -0
  255. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/profiler.py +0 -0
  256. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/requests.py +0 -0
  257. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/responses.py +0 -0
  258. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/similarity.py +0 -0
  259. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/skills.py +0 -0
  260. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/history.py +0 -0
  261. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/__init__.py +0 -0
  262. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/base.py +0 -0
  263. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/integration.py +0 -0
  264. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/manager.py +0 -0
  265. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/registry.py +0 -0
  266. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/types.py +0 -0
  267. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/interruptible_input.py +0 -0
  268. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/linter.py +0 -0
  269. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/llm.py +0 -0
  270. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/main.py +0 -0
  271. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/__init__.py +0 -0
  272. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/manager.py +0 -0
  273. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/oauth.py +0 -0
  274. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/server.py +0 -0
  275. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/utils.py +0 -0
  276. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mdstream.py +0 -0
  277. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/models.py +0 -0
  278. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/onboarding.py +0 -0
  279. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/__init__.py +0 -0
  280. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/agent.yml +0 -0
  281. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/architect.yml +0 -0
  282. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/ask.yml +0 -0
  283. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/base.yml +0 -0
  284. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/context.yml +0 -0
  285. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/copypaste.yml +0 -0
  286. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock.yml +0 -0
  287. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock_fenced.yml +0 -0
  288. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock_func.yml +0 -0
  289. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
  290. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_editblock.yml +0 -0
  291. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_whole.yml +0 -0
  292. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/hashline.yml +0 -0
  293. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/help.yml +0 -0
  294. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/patch.yml +0 -0
  295. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
  296. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/udiff.yml +0 -0
  297. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/udiff_simple.yml +0 -0
  298. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/__init__.py +0 -0
  299. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/registry.py +0 -0
  300. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/system.py +0 -0
  301. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/wholefile.yml +0 -0
  302. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/wholefile_func.yml +0 -0
  303. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  304. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  305. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  306. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  307. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  308. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  309. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  310. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  311. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  312. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  313. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  314. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  315. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  316. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  317. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  318. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  319. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  320. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  321. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  322. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  323. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  324. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  325. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  326. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  327. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  328. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  329. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  330. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  331. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  332. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  333. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  334. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
  335. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  336. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  337. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  338. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  339. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  340. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  341. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  342. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  343. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  344. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  345. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  346. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  347. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  348. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  349. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  350. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  351. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  352. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  353. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  354. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  355. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  356. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  357. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  358. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  359. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  360. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  361. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/reasoning_tags.py +0 -0
  362. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/repo.py +0 -0
  363. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/report.py +0 -0
  364. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/__init__.py +0 -0
  365. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/model-metadata.json +0 -0
  366. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/model-settings.yml +0 -0
  367. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/providers.json +0 -0
  368. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/run_cmd.py +0 -0
  369. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/scrape.py +0 -0
  370. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/sendchat.py +0 -0
  371. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/sessions.py +0 -0
  372. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/special.py +0 -0
  373. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/command.py +0 -0
  374. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/command_interactive.py +0 -0
  375. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/edit_text.py +0 -0
  376. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/explore_code.py +0 -0
  377. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_branch.py +0 -0
  378. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_diff.py +0 -0
  379. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_log.py +0 -0
  380. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_remote.py +0 -0
  381. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_show.py +0 -0
  382. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_status.py +0 -0
  383. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/grep.py +0 -0
  384. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/load_skill.py +0 -0
  385. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/ls.py +0 -0
  386. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/remove_skill.py +0 -0
  387. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/thinking.py +0 -0
  388. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/undo_change.py +0 -0
  389. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/update_todo_list.py +0 -0
  390. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/helpers.py +0 -0
  391. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/output.py +0 -0
  392. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/registry.py +0 -0
  393. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/__init__.py +0 -0
  394. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/completion_bar.py +0 -0
  395. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/input_area.py +0 -0
  396. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/key_hints.py +0 -0
  397. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/output.py +0 -0
  398. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/status_bar.py +0 -0
  399. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/urls.py +0 -0
  400. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/utils.py +0 -0
  401. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/versioncheck.py +0 -0
  402. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/voice.py +0 -0
  403. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/waiting.py +0 -0
  404. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/watch.py +0 -0
  405. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/watch_prompts.py +0 -0
  406. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/Gemfile +0 -0
  407. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/blame.md +0 -0
  408. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/get-started.md +0 -0
  409. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/help-tip.md +0 -0
  410. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/help.md +0 -0
  411. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/install.md +0 -0
  412. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/keys.md +0 -0
  413. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/model-warnings.md +0 -0
  414. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/multi-line.md +0 -0
  415. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/python-m-aider.md +0 -0
  416. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/recording.css +0 -0
  417. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/recording.md +0 -0
  418. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/works-best.md +0 -0
  419. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_features.scss +0 -0
  420. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_footer.scss +0 -0
  421. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_hero.scss +0 -0
  422. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_info.scss +0 -0
  423. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_layout.scss +0 -0
  424. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_reset.scss +0 -0
  425. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_testimonials.scss +0 -0
  426. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_typography.scss +0 -0
  427. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_variables.scss +0 -0
  428. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/custom/custom.scss +0 -0
  429. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/global-overrides.scss +0 -0
  430. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
  431. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/aider_conf.md +0 -0
  432. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/api-keys.md +0 -0
  433. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/custom-commands.md +0 -0
  434. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  435. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/dotenv.md +0 -0
  436. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/editor.md +0 -0
  437. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/hooks.md +0 -0
  438. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/mcp.md +0 -0
  439. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/model-aliases.md +0 -0
  440. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/options.md +0 -0
  441. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/reasoning.md +0 -0
  442. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/security.md +0 -0
  443. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/skills.md +0 -0
  444. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/tui.md +0 -0
  445. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/workspaces.md +0 -0
  446. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config.md +0 -0
  447. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/faq.md +0 -0
  448. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/git.md +0 -0
  449. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/index.md +0 -0
  450. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install/docker.md +0 -0
  451. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install/optional.md +0 -0
  452. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install.md +0 -0
  453. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/languages.md +0 -0
  454. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  455. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/legal/privacy.md +0 -0
  456. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/anthropic.md +0 -0
  457. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/azure.md +0 -0
  458. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/bedrock.md +0 -0
  459. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/cohere.md +0 -0
  460. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/deepseek.md +0 -0
  461. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/gemini.md +0 -0
  462. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/github.md +0 -0
  463. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/groq.md +0 -0
  464. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
  465. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/ollama.md +0 -0
  466. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
  467. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openai.md +0 -0
  468. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openrouter.md +0 -0
  469. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/other.md +0 -0
  470. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/vertex.md +0 -0
  471. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/warnings.md +0 -0
  472. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/xai.md +0 -0
  473. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms.md +0 -0
  474. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/analytics.md +0 -0
  475. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/edit-formats.md +0 -0
  476. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/infinite-output.md +0 -0
  477. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more-info.md +0 -0
  478. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/repomap.md +0 -0
  479. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/scripting.md +0 -0
  480. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  481. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  482. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
  483. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  484. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
  485. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  486. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  487. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting.md +0 -0
  488. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/commands.md +0 -0
  489. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/conventions.md +0 -0
  490. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/copypaste.md +0 -0
  491. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/images-urls.md +0 -0
  492. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/lint-test.md +0 -0
  493. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/modes.md +0 -0
  494. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/not-code.md +0 -0
  495. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/notifications.md +0 -0
  496. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/sessions.md +0 -0
  497. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/tips.md +0 -0
  498. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/voice.md +0 -0
  499. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/watch.md +0 -0
  500. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage.md +0 -0
  501. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/share/index.md +0 -0
  502. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
  503. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
  504. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/top_level.txt +0 -0
  505. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/docker/Dockerfile +0 -0
  506. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  507. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/pyproject.toml +0 -0
  508. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-help.in +0 -0
  509. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-help.txt +0 -0
  510. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-playwright.in +0 -0
  511. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-playwright.txt +0 -0
  512. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements.in +0 -0
  513. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/tree-sitter.in +0 -0
  514. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements.txt +0 -0
  515. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/30k-image.py +0 -0
  516. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/Dockerfile.jekyll +0 -0
  517. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/__init__.py +0 -0
  518. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/blame.py +0 -0
  519. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/clean_metadata.py +0 -0
  520. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/cost_analyzer.py +0 -0
  521. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/cost_calculator.py +0 -0
  522. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/dl_icons.py +0 -0
  523. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/filter-chat-mode.js +0 -0
  524. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/generate_providers.py +0 -0
  525. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/get_contributor_list.js +0 -0
  526. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/get_hashline.py +0 -0
  527. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/history_prompts.py +0 -0
  528. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/homepage.py +0 -0
  529. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/issues.py +0 -0
  530. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/jekyll_build.sh +0 -0
  531. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/jekyll_run.sh +0 -0
  532. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/logo_svg.py +0 -0
  533. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/pip-compile.sh +0 -0
  534. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/recording_audio.py +0 -0
  535. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/redact-cast.py +0 -0
  536. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/rename_to_cecli.py +0 -0
  537. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/tmux_record.sh +0 -0
  538. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/tsl_pack_langs.py +0 -0
  539. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-blame.sh +0 -0
  540. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-docs.sh +0 -0
  541. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-history.py +0 -0
  542. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/versionbump.py +0 -0
  543. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/yank-old-versions.py +0 -0
  544. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/setup.cfg +0 -0
  545. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/shim.pyproject.toml +0 -0
  546. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/__init__.py +0 -0
  547. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/__init__.py +0 -0
  548. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_aws_credentials.py +0 -0
  549. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_background_commands.py +0 -0
  550. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_commands.py +0 -0
  551. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_custom_commands.py +0 -0
  552. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_deprecated.py +0 -0
  553. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_editblock.py +0 -0
  554. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_editor.py +0 -0
  555. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_exceptions.py +0 -0
  556. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_find_or_blocks.py +0 -0
  557. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_hashline.py +0 -0
  558. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_history.py +0 -0
  559. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_io.py +0 -0
  560. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_linter.py +0 -0
  561. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_main.py +0 -0
  562. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_model_info_manager.py +0 -0
  563. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_model_provider_manager.py +0 -0
  564. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_models.py +0 -0
  565. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_onboarding.py +0 -0
  566. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_plugin_manager.py +0 -0
  567. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_prompts.py +0 -0
  568. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_repo.py +0 -0
  569. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_run_cmd.py +0 -0
  570. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sanity_check_repo.py +0 -0
  571. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_scripting.py +0 -0
  572. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sendchat.py +0 -0
  573. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sessions.py +0 -0
  574. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_skills.py +0 -0
  575. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_special.py +0 -0
  576. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_ssl_verification.py +0 -0
  577. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_udiff.py +0 -0
  578. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_urls.py +0 -0
  579. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_voice.py +0 -0
  580. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_watch.py +0 -0
  581. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_wholefile.py +0 -0
  582. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/coders/test_copypaste_coder.py +0 -0
  583. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conftest.py +0 -0
  584. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  585. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/chat-history.md +0 -0
  586. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
  587. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/c/test.c +0 -0
  588. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
  589. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
  590. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  591. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
  592. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
  593. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/d/test.d +0 -0
  594. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/dart/test.dart +0 -0
  595. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elisp/test.el +0 -0
  596. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
  597. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elm/test.elm +0 -0
  598. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
  599. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/go/test.go +0 -0
  600. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
  601. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
  602. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/java/test.java +0 -0
  603. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/javascript/test.js +0 -0
  604. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
  605. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/lua/test.lua +0 -0
  606. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/matlab/test.m +0 -0
  607. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
  608. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  609. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/php/test.php +0 -0
  610. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/pony/test.pony +0 -0
  611. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/properties/test.properties +0 -0
  612. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/python/test.py +0 -0
  613. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ql/test.ql +0 -0
  614. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/r/test.r +0 -0
  615. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
  616. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
  617. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/rust/test.rs +0 -0
  618. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/scala/test.scala +0 -0
  619. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
  620. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/swift/test.swift +0 -0
  621. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
  622. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
  623. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/udev/test.rules +0 -0
  624. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/zig/test.zig +0 -0
  625. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
  626. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
  627. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  628. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.js +0 -0
  629. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.lisp +0 -0
  630. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.py +0 -0
  631. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch_question.js +0 -0
  632. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/help/test_help.py +0 -0
  633. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_config.py +0 -0
  634. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_config_active.py +0 -0
  635. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  636. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  637. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_workspace.py +0 -0
  638. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/__init__.py +0 -0
  639. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_base.py +0 -0
  640. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_manager.py +0 -0
  641. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_registry.py +0 -0
  642. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/mcp/__init__.py +0 -0
  643. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/mcp/test_manager.py +0 -0
  644. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_get_lines.py +0 -0
  645. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_git_branch.py +0 -0
  646. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_git_diff.py +0 -0
  647. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_grep.py +0 -0
  648. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_insert_block.py +0 -0
  649. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_registry.py +0 -0
  650. {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/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.99.12
3
+ Version: 0.100.0rc1
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
@@ -80,6 +80,7 @@ Requires-Dist: memray; extra == "dev"
80
80
  Requires-Dist: objgraph; extra == "dev"
81
81
  Requires-Dist: pympler; extra == "dev"
82
82
  Requires-Dist: guppy3; extra == "dev"
83
+ Requires-Dist: psutil; extra == "dev"
83
84
  Provides-Extra: help
84
85
  Requires-Dist: llama-index-embeddings-huggingface; extra == "help"
85
86
  Requires-Dist: numpy>=1.26.4; extra == "help"
@@ -110,6 +111,7 @@ LLMs are a part of our lives from here on out so join us in learning about and c
110
111
  * [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
111
112
  * [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
112
113
  * [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
114
+ * [Subagents](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/subagents.md)
113
115
  * [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
114
116
  * [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
115
117
  * [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
@@ -232,7 +234,7 @@ The current priorities are to improve core capabilities and user experience of t
232
234
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
233
235
 
234
236
  4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
235
- * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
237
+ * [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
236
238
  * [x] Add support for partial files and code snippets in model completion messages
237
239
  * [x] Update message request structure for optimal caching
238
240
 
@@ -251,12 +253,12 @@ The current priorities are to improve core capabilities and user experience of t
251
253
  * [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
252
254
 
253
255
  7. **Sub Agents**
254
- * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
256
+ * [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
255
257
  * [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
256
258
  * [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
257
259
  * [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
258
- * [ ] Add a `spawn` tool that launches a sub agent as a background command that the parent model waits for to finish
259
- * [ ] Add visibility into active sub agent calls in TUI
260
+ * [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
261
+ * [x] Add visibility into active sub agent calls in TUI
260
262
 
261
263
  8. **Hooks**
262
264
  * [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
@@ -270,7 +272,7 @@ The current priorities are to improve core capabilities and user experience of t
270
272
  * [x] Update internal file diff representation to support hashline propagation
271
273
 
272
274
  10. **Dynamic Context Management**
273
- * [ ] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
275
+ * [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
274
276
  * [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
275
277
  * [ ] Integrate RLM to extract information from decision records on disk and other definable notes
276
278
  * [ ] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
@@ -20,6 +20,7 @@ LLMs are a part of our lives from here on out so join us in learning about and c
20
20
  * [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
21
21
  * [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
22
22
  * [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
23
+ * [Subagents](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/subagents.md)
23
24
  * [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
24
25
  * [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
25
26
  * [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
@@ -142,7 +143,7 @@ The current priorities are to improve core capabilities and user experience of t
142
143
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
143
144
 
144
145
  4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
145
- * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
146
+ * [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
146
147
  * [x] Add support for partial files and code snippets in model completion messages
147
148
  * [x] Update message request structure for optimal caching
148
149
 
@@ -161,12 +162,12 @@ The current priorities are to improve core capabilities and user experience of t
161
162
  * [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
162
163
 
163
164
  7. **Sub Agents**
164
- * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
165
+ * [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
165
166
  * [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
166
167
  * [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
167
168
  * [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
168
- * [ ] Add a `spawn` tool that launches a sub agent as a background command that the parent model waits for to finish
169
- * [ ] Add visibility into active sub agent calls in TUI
169
+ * [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
170
+ * [x] Add visibility into active sub agent calls in TUI
170
171
 
171
172
  8. **Hooks**
172
173
  * [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
@@ -180,7 +181,7 @@ The current priorities are to improve core capabilities and user experience of t
180
181
  * [x] Update internal file diff representation to support hashline propagation
181
182
 
182
183
  10. **Dynamic Context Management**
183
- * [ ] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
184
+ * [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
184
185
  * [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
185
186
  * [ ] Integrate RLM to extract information from decision records on disk and other definable notes
186
187
  * [ ] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
@@ -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.99.12'
22
- __version_tuple__ = version_tuple = (0, 99, 12)
21
+ __version__ = version = '0.100.0rc1'
22
+ __version_tuple__ = version_tuple = (0, 100, 0, 'rc1')
23
23
 
24
- __commit_id__ = commit_id = 'gdd84a43a9'
24
+ __commit_id__ = commit_id = 'gd703941b6'
@@ -403,7 +403,7 @@ def get_parser(default_config_files, git_root):
403
403
  "--use-enhanced-map",
404
404
  action="store_true",
405
405
  help="Use enhanced Repo Map that takes into account imports (default: False)",
406
- default=False,
406
+ default=True,
407
407
  )
408
408
 
409
409
  ##########
@@ -12,6 +12,7 @@ from .editor_whole_coder import EditorWholeFileCoder
12
12
  from .hashline_coder import HashLineCoder
13
13
  from .help_coder import HelpCoder
14
14
  from .patch_coder import PatchCoder
15
+ from .sub_agent_coder import SubAgentCoder
15
16
  from .udiff_coder import UnifiedDiffCoder
16
17
  from .udiff_simple import UnifiedDiffSimpleCoder
17
18
  from .wholefile_coder import WholeFileCoder
@@ -37,4 +38,5 @@ __all__ = [
37
38
  AgentCoder,
38
39
  CopyPasteCoder,
39
40
  HashLineCoder,
41
+ SubAgentCoder,
40
42
  ]
@@ -2,6 +2,7 @@ import asyncio
2
2
  import base64
3
3
  import json
4
4
  import locale
5
+ import logging
5
6
  import os
6
7
  import platform
7
8
  import random
@@ -14,6 +15,7 @@ from pathlib import Path
14
15
  from cecli import utils
15
16
  from cecli.change_tracker import ChangeTracker
16
17
  from cecli.helpers import nested, responses
18
+ from cecli.helpers.agents.service import AgentService
17
19
  from cecli.helpers.background_commands import BackgroundCommandManager
18
20
  from cecli.helpers.conversation import ConversationService, MessageTag
19
21
  from cecli.helpers.similarity import (
@@ -33,6 +35,8 @@ from .base_coder import Coder
33
35
 
34
36
  from cecli.helpers.coroutines import interruptible # isort:skip
35
37
 
38
+ logger = logging.getLogger(__name__)
39
+
36
40
 
37
41
  class AgentCoder(Coder):
38
42
  """Mode where the LLM autonomously manages which files are in context."""
@@ -40,6 +44,7 @@ class AgentCoder(Coder):
40
44
  edit_format = "agent"
41
45
  prompt_format = "agent"
42
46
  context_management_enabled = True
47
+
43
48
  hashlines = True
44
49
  stop_on_empty = False
45
50
 
@@ -92,11 +97,32 @@ class AgentCoder(Coder):
92
97
  self.skip_cli_confirmations = False
93
98
  self.agent_finished = False
94
99
  self.agent_config = self._get_agent_config()
100
+ self.max_sub_agents = self.agent_config.get("max_sub_agents", 3)
101
+ self.sub_agent_paths = self.agent_config.get("subagent_paths", [])
95
102
  self._setup_agent()
103
+
104
+ AgentService.build_registry(self.sub_agent_paths)
96
105
  ToolRegistry.build_registry(agent_config=self.agent_config)
106
+
97
107
  self.loaded_custom_tools = ToolRegistry.loaded_custom_tools
98
108
  super().__init__(*args, **kwargs)
99
109
 
110
+ def post_init(self):
111
+ super().post_init()
112
+ # Populate per-instance tool and server filters from config
113
+ self.registered_tools["included"] = set(
114
+ map(str.lower, self.agent_config.get("tools_includelist", []))
115
+ )
116
+ self.registered_tools["excluded"] = set(
117
+ map(str.lower, self.agent_config.get("tools_excludelist", []))
118
+ )
119
+ self.registered_servers["included"] = set(
120
+ map(str.lower, self.agent_config.get("servers_includelist", []))
121
+ )
122
+ self.registered_servers["excluded"] = set(
123
+ map(str.lower, self.agent_config.get("servers_excludelist", []))
124
+ )
125
+
100
126
  def _setup_agent(self):
101
127
  os.makedirs(".cecli/temp", exist_ok=True)
102
128
 
@@ -137,6 +163,12 @@ class AgentCoder(Coder):
137
163
  config, ["tools_excludelist", "tools_blacklist"], []
138
164
  )
139
165
 
166
+ config["servers_includelist"] = nested.getter(
167
+ config, ["servers_includelist", "servers_whitelist"], []
168
+ )
169
+ config["servers_excludelist"] = nested.getter(
170
+ config, ["servers_excludelist", "servers_blacklist"], []
171
+ )
140
172
  config["include_context_blocks"] = set(
141
173
  nested.getter(
142
174
  config,
@@ -148,6 +180,7 @@ class AgentCoder(Coder):
148
180
  # "git_status",
149
181
  # "symbol_outline",
150
182
  "todo_list",
183
+ "sub_agents",
151
184
  "skills",
152
185
  },
153
186
  )
@@ -352,6 +385,8 @@ class AgentCoder(Coder):
352
385
  content = self.get_skills_context()
353
386
  elif block_name == "loaded_skills":
354
387
  content = self.get_skills_content()
388
+ elif block_name == "sub_agents":
389
+ content = self.get_sub_agents_context()
355
390
  if content is not None:
356
391
  self.context_blocks_cache[block_name] = content
357
392
  return content
@@ -460,7 +495,22 @@ class AgentCoder(Coder):
460
495
  ConversationService.get_chunks(self).add_file_list_reminder()
461
496
 
462
497
  # Add system messages (including examples and reminder)
463
- ConversationService.get_chunks(self).add_system_messages()
498
+ # For sub-agents, use their specific system prompt via AgentService lookup
499
+ # For primary agents, use the default system messages flow
500
+ needs_system_prompts = True
501
+ if hasattr(self, "parent_uuid") and self.parent_uuid:
502
+ from cecli.helpers.agents.service import AgentService
503
+
504
+ service = AgentService.get_instance(self)
505
+ info = service.sub_agents.get(self.uuid)
506
+ if info:
507
+ config = AgentService.get_registry().get(info.name)
508
+ if config and config.prompt and config.prompt.strip():
509
+ ConversationService.get_chunks(self).add_system_message(config.prompt)
510
+ needs_system_prompts = False
511
+
512
+ if needs_system_prompts:
513
+ ConversationService.get_chunks(self).add_system_messages()
464
514
 
465
515
  # Add static context blocks (priority 50 - between SYSTEM and EXAMPLES)
466
516
  ConversationService.get_chunks(self).add_static_context_blocks()
@@ -808,6 +858,7 @@ class AgentCoder(Coder):
808
858
  # 1. Handle Tool Execution Follow-up (Reflection)
809
859
  if self.agent_finished:
810
860
  self.tool_usage_history = []
861
+ self.tool_call_vectors = []
811
862
  self.reflected_message = None
812
863
  if self.files_edited_by_tools:
813
864
  _ = await self.auto_commit(self.files_edited_by_tools)
@@ -860,11 +911,15 @@ class AgentCoder(Coder):
860
911
  self.tool_usage_history = []
861
912
  return True
862
913
 
863
- if content and not tool_calls_found and self.num_reflections < self.max_reflections:
864
- self.reflected_message = (
865
- "Continue with your task. If you have completed it, call the `Finished` tool."
866
- )
867
- return True
914
+ # 4. If we have called no tools (e.g. the first message)
915
+ # Allow early exiting
916
+ # If a model forgets a tool call, replay the request instead of stopping early
917
+ if self.tool_call_vectors:
918
+ if content and not tool_calls_found and self.num_reflections < self.max_reflections:
919
+ self.reflected_message = (
920
+ "Continue with your task. If you have completed it, call the `Finished` tool."
921
+ )
922
+ return True
868
923
 
869
924
  if tool_calls_found and self.num_reflections < self.max_reflections:
870
925
  self.tool_call_count = 0
@@ -1384,6 +1439,44 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1384
1439
  self.io.tool_error(f"Error generating skills content context: {str(e)}")
1385
1440
  return None
1386
1441
 
1442
+ def get_sub_agents_context(self):
1443
+ """
1444
+ Generate a context block for registered sub-agents.
1445
+ Only shown for primary coders (no parent_uuid).
1446
+
1447
+ Returns:
1448
+ Formatted context block string with sub-agent names and descriptions,
1449
+ or None if no sub-agents are registered or if called from a sub-agent.
1450
+ """
1451
+ if not self.use_enhanced_context:
1452
+ return None
1453
+ if hasattr(self, "parent_uuid") and self.parent_uuid:
1454
+ return None
1455
+ try:
1456
+ from cecli.helpers.agents.service import AgentService
1457
+
1458
+ registry = AgentService.get_registry()
1459
+ if not registry:
1460
+ return None
1461
+
1462
+ result = '<context name="sub_agents" from="agent">\n'
1463
+ result += "## Available Sub-Agents\n\n"
1464
+ result += f"Found {len(registry)} registered sub-agent(s):\n\n"
1465
+
1466
+ for name, config in sorted(registry.items()):
1467
+ result += f"**{name}**:\n"
1468
+ desc = config.metadata.get("description", "")
1469
+ if desc:
1470
+ result += f"{desc}\n"
1471
+ result += "\n"
1472
+
1473
+ result += "Use the `Delegate` tool with the sub-agent name to delegate tasks.\n"
1474
+ result += "</context>"
1475
+ return result
1476
+ except Exception as e:
1477
+ self.io.tool_error(f"Error generating sub-agents context: {str(e)}")
1478
+ return None
1479
+
1387
1480
  def get_background_command_output(self):
1388
1481
  """
1389
1482
  Get background command output to append after the main message.
@@ -42,7 +42,8 @@ from cecli.commands import Commands, SwitchCoderSignal
42
42
  from cecli.exceptions import LiteLLMExceptions
43
43
  from cecli.helpers import command_parser, coroutines, nested, responses
44
44
  from cecli.helpers.conversation import ConversationService, MessageTag
45
- from cecli.helpers.observations.manager import ObservationManager
45
+ from cecli.helpers.io_proxy import IOProxy
46
+ from cecli.helpers.observations.service import ObservationService
46
47
  from cecli.helpers.profiler import TokenProfiler
47
48
  from cecli.history import ChatSummary
48
49
  from cecli.hooks import HookIntegration
@@ -137,6 +138,7 @@ class Coder:
137
138
  partial_response_reasoning_content = ""
138
139
  partial_response_chunks = []
139
140
  partial_response_tool_calls = []
141
+ partial_response_consolidated = None
140
142
  commit_before_message = []
141
143
  message_cost = 0.0
142
144
  total_tokens_sent = 0
@@ -160,7 +162,8 @@ class Coder:
160
162
  suppress_announcements_for_next_prompt = False
161
163
  tool_reflection = False
162
164
  last_user_message = ""
163
- uuid = ""
165
+ uuid: str = ""
166
+ parent_uuid: str = ""
164
167
  model_kwargs = {}
165
168
  cost_multiplier = 1
166
169
  stop_on_empty = True
@@ -237,6 +240,7 @@ class Coder:
237
240
  file_watcher=from_coder.file_watcher,
238
241
  mcp_manager=from_coder.mcp_manager,
239
242
  uuid=from_coder.uuid,
243
+ parent_uuid=from_coder.parent_uuid,
240
244
  repo=from_coder.repo,
241
245
  )
242
246
  use_kwargs.update(update) # override to complete the switch
@@ -335,14 +339,23 @@ class Coder:
335
339
  repomap_in_memory=False,
336
340
  linear_output=False,
337
341
  security_config=None,
338
- uuid="",
342
+ uuid: str = "",
343
+ parent_uuid: str = "",
339
344
  ):
340
345
  # initialize from args.map_cache_dir
341
- self.interrupt_event = asyncio.Event()
342
346
  self.coroutines = coroutines
343
- self.uuid = generate_unique_id()
347
+ # Per-instance tool and server filtering dictionaries
348
+ # Each contains "included" and "excluded" sets that filter from the global singletons
349
+ self.registered_tools = {"included": set(), "excluded": set()}
350
+ self.registered_servers = {"included": set(), "excluded": set()}
351
+ self.interrupt_event = asyncio.Event()
352
+ self.uuid = str(generate_unique_id())
353
+
344
354
  if uuid:
345
- self.uuid = uuid
355
+ self.uuid = str(uuid)
356
+
357
+ if parent_uuid:
358
+ self.parent_uuid = str(parent_uuid)
346
359
 
347
360
  self.map_cache_dir = map_cache_dir
348
361
 
@@ -413,7 +426,15 @@ class Coder:
413
426
  self.abs_rules_fnames = set()
414
427
 
415
428
  self.io = io
416
- self.io.coder = weakref.ref(self)
429
+
430
+ # Wrap io with IOProxy for coder_uuid injection in output messages
431
+ # Always create a new IOProxy so sub-agents get their own _coder_uuid.
432
+ # Unwrap any existing IOProxy to avoid fragile nested proxy chains.
433
+ raw_io = IOProxy.unwrap(io)
434
+ self.io = IOProxy(raw_io, self)
435
+
436
+ if not self.parent_uuid:
437
+ self.io.coder = weakref.ref(self)
417
438
 
418
439
  self.manual_copy_paste = (
419
440
  nested.getter(main_model, "copy_paste_transport", "api") == "clipboard"
@@ -632,6 +653,11 @@ class Coder:
632
653
  self.io.tool_output("JSON Schema:")
633
654
  self.io.tool_output(json.dumps(self.functions, indent=4))
634
655
 
656
+ self.post_init()
657
+
658
+ def post_init(self):
659
+ pass
660
+
635
661
  @property
636
662
  def gpt_prompts(self):
637
663
  """Get prompts from the registry based on the coder type."""
@@ -758,8 +784,18 @@ class Coder:
758
784
  if self.mcp_tools:
759
785
  mcp_servers = []
760
786
  for server_name, server_tools in self.mcp_tools:
787
+ # Filter servers per instance configuration
788
+ if (
789
+ self.registered_servers["included"]
790
+ and server_name not in self.registered_servers["included"]
791
+ ):
792
+ continue
793
+ if server_name in self.registered_servers["excluded"]:
794
+ continue
761
795
  mcp_servers.append(server_name)
762
- lines.append(f"MCP servers configured: {', '.join(mcp_servers)}")
796
+
797
+ if mcp_servers:
798
+ lines.append(f"MCP servers configured: {', '.join(mcp_servers)}")
763
799
 
764
800
  for fname in self.abs_read_only_stubs_fnames:
765
801
  rel_fname = self.get_rel_fname(fname)
@@ -1309,7 +1345,8 @@ class Coder:
1309
1345
  await self.io.recreate_input()
1310
1346
  await self.io.input_task
1311
1347
  user_message = self.io.input_task.result()
1312
-
1348
+ if isinstance(user_message, tuple) and len(user_message) == 2:
1349
+ user_message, _ = user_message
1313
1350
  if (
1314
1351
  self.args
1315
1352
  and not self.args.tui
@@ -1419,7 +1456,12 @@ class Coder:
1419
1456
  # Wait for input task completion
1420
1457
  if self.io.input_task and self.io.input_task.done():
1421
1458
  try:
1422
- user_message = self.io.input_task.result()
1459
+ _result = self.io.input_task.result()
1460
+ user_message = (
1461
+ _result[0]
1462
+ if isinstance(_result, tuple) and len(_result) == 2
1463
+ else _result
1464
+ )
1423
1465
 
1424
1466
  # Defer to confirmation handler to fix Windows event loop race.
1425
1467
  if not self.io.confirmation_in_progress_event.is_set():
@@ -1583,7 +1625,7 @@ class Coder:
1583
1625
  if self.commands.is_run_command(inp):
1584
1626
  self.commands.cmd_running_event.clear() # Command is running
1585
1627
 
1586
- return await self.commands.run(inp)
1628
+ return await self.commands.run(inp, coder=self)
1587
1629
 
1588
1630
  await self.check_for_file_mentions(inp)
1589
1631
  inp = await self.check_for_urls(inp)
@@ -1751,7 +1793,7 @@ class Coder:
1751
1793
  return
1752
1794
 
1753
1795
  # Trigger background observation/reflection check
1754
- await ObservationManager.get_instance(self).check_and_trigger()
1796
+ await ObservationService.get_instance(self).check_and_trigger()
1755
1797
 
1756
1798
  manager = ConversationService.get_manager(self)
1757
1799
  done_messages = manager.get_messages_dict(MessageTag.DONE)
@@ -1788,8 +1830,8 @@ class Coder:
1788
1830
  if not text:
1789
1831
  raise ValueError(f"Summarization of {tag} messages returned empty.")
1790
1832
 
1791
- if ObservationManager.get_instance(self).observations:
1792
- obs_text = "\n".join(ObservationManager.get_instance(self).observations)
1833
+ if ObservationService.get_instance(self).observations:
1834
+ obs_text = "\n".join(ObservationService.get_instance(self).observations)
1793
1835
  text = f"HISTORICAL OBSERVATIONS:\n{obs_text}\n\n{text}"
1794
1836
 
1795
1837
  manager.clear_tag(tag)
@@ -2813,11 +2855,34 @@ class Coder:
2813
2855
  raise AttributeError("mcp_tools is read only.")
2814
2856
 
2815
2857
  def get_tool_list(self):
2816
- """Get a flattened list of all MCP tools with server prefixes."""
2858
+ """Get a flattened list of all MCP tools with server prefixes, filtered by registered_servers."""
2817
2859
  tool_list = []
2818
2860
  if self.mcp_tools:
2819
2861
  for server_name, server_tools in self.mcp_tools:
2862
+ # Apply per-instance server filtering
2863
+ if (
2864
+ self.registered_servers["included"]
2865
+ and server_name not in self.registered_servers["included"]
2866
+ ):
2867
+ continue
2868
+ if server_name in self.registered_servers["excluded"]:
2869
+ continue
2870
+
2820
2871
  for tool in server_tools:
2872
+ if server_name == "Local":
2873
+ # Apply per-instance tool name filtering
2874
+ tool_name = tool.get("function", {}).get("name", "")
2875
+ if (
2876
+ self.registered_tools["excluded"]
2877
+ and tool_name.lower() in self.registered_tools["excluded"]
2878
+ ):
2879
+ continue
2880
+ if (
2881
+ self.registered_tools["included"]
2882
+ and tool_name.lower() not in self.registered_tools["included"]
2883
+ ):
2884
+ continue
2885
+
2821
2886
  # Prefix the tool name with server name
2822
2887
  prefixed_tool = responses.prefix_tool_call(tool, server_name)
2823
2888
  tool_list.append(prefixed_tool)
@@ -2931,7 +2996,7 @@ class Coder:
2931
2996
  # but response.dict() is the Pydantic V1 method name.
2932
2997
  response_dict = dict(response)
2933
2998
  except TypeError:
2934
- print("Response parsing error.")
2999
+ self.io.tool_warning("Response parsing error.")
2935
3000
  return
2936
3001
 
2937
3002
  msg = response_dict["choices"][0]["message"]
@@ -3065,6 +3130,7 @@ class Coder:
3065
3130
  self.partial_response_chunks = []
3066
3131
  self.partial_response_tool_calls = []
3067
3132
  self.partial_response_function_call = dict()
3133
+ self.partial_response_consolidated = None
3068
3134
 
3069
3135
  completion = None
3070
3136
  self.token_profiler.start()
@@ -3081,11 +3147,20 @@ class Coder:
3081
3147
  interrupt_event=self.interrupt_event,
3082
3148
  )
3083
3149
 
3084
- (hash_object, completion), interrupted = await coroutines.interruptible(
3085
- completion_coro, self.interrupt_event
3086
- )
3150
+ try:
3151
+ (hash_object, completion), interrupted = await coroutines.interruptible(
3152
+ completion_coro, self.interrupt_event
3153
+ )
3154
+ except TypeError:
3155
+ self.io.tool_warning(
3156
+ "TypeError in interruptible() — this may indicate a bug "
3157
+ "in the LLM response handling. Converting to KeyboardInterrupt."
3158
+ )
3159
+ raise KeyboardInterrupt
3160
+
3087
3161
  if interrupted:
3088
3162
  raise KeyboardInterrupt
3163
+
3089
3164
  self.chat_completion_call_hashes.append(hash_object.hexdigest())
3090
3165
 
3091
3166
  if not isinstance(completion, ModelResponse):
@@ -3329,6 +3404,9 @@ class Coder:
3329
3404
  self.io.tool_warning("Empty response received from LLM. Check your provider account?")
3330
3405
 
3331
3406
  def consolidate_chunks(self):
3407
+ if self.partial_response_consolidated:
3408
+ return self.partial_response_consolidated
3409
+
3332
3410
  response = (
3333
3411
  self.partial_response_chunks[0]
3334
3412
  if not self.stream
@@ -3439,6 +3517,7 @@ class Coder:
3439
3517
  if extracted_calls:
3440
3518
  self.partial_response_tool_calls = extracted_calls
3441
3519
 
3520
+ self.partial_response_consolidated = (response, func_err, content_err)
3442
3521
  return response, func_err, content_err
3443
3522
 
3444
3523
  def stream_wrapper(self, content, final):
@@ -3810,7 +3889,7 @@ class Coder:
3810
3889
  return
3811
3890
 
3812
3891
  warn_number_of_files = 4
3813
- warn_number_of_tokens = 20 * 1024
3892
+ warn_number_of_tokens = 32 * 1024
3814
3893
 
3815
3894
  num_files = len(self.abs_fnames)
3816
3895
  if num_files < warn_number_of_files:
@@ -0,0 +1,22 @@
1
+ """SubAgentCoder - a Coder variant for sub-agents.
2
+
3
+ Extends AgentCoder but excludes the Delegate tool from its tool schemas
4
+ so sub-agents cannot spawn further sub-agents.
5
+ """
6
+
7
+ import logging
8
+
9
+ from cecli.coders.agent_coder import AgentCoder
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class SubAgentCoder(AgentCoder):
15
+ """Coder for sub-agents that disallows spawning further sub-agents."""
16
+
17
+ edit_format = "subagent"
18
+ prompt_format = "subagent"
19
+
20
+ def post_init(self):
21
+ super().post_init()
22
+ self.registered_tools["excluded"].add("delegate")
@@ -33,6 +33,7 @@ from .help import HelpCommand
33
33
  from .history_search import HistorySearchCommand
34
34
  from .hooks import HooksCommand
35
35
  from .include_skill import IncludeSkillCommand
36
+ from .invoke_agent import InvokeAgentCommand
36
37
  from .lint import LintCommand
37
38
  from .list_sessions import ListSessionsCommand
38
39
  from .list_skills import ListSkillsCommand
@@ -51,6 +52,7 @@ from .paste import PasteCommand
51
52
  from .quit import QuitCommand
52
53
  from .read_only import ReadOnlyCommand
53
54
  from .read_only_stub import ReadOnlyStubCommand
55
+ from .reap_agent import ReapAgentCommand
54
56
  from .reasoning_effort import ReasoningEffortCommand
55
57
  from .remove_hook import RemoveHookCommand
56
58
  from .remove_mcp import RemoveMcpCommand
@@ -62,6 +64,7 @@ from .run import RunCommand
62
64
  from .save import SaveCommand
63
65
  from .save_session import SaveSessionCommand
64
66
  from .settings import SettingsCommand
67
+ from .spawn_agent import SpawnAgentCommand
65
68
  from .terminal_setup import TerminalSetupCommand
66
69
  from .test import TestCommand
67
70
  from .think_tokens import ThinkTokensCommand
@@ -112,6 +115,9 @@ CommandRegistry.register(HashlineCommand)
112
115
  CommandRegistry.register(HelpCommand)
113
116
  CommandRegistry.register(HistorySearchCommand)
114
117
  CommandRegistry.register(HooksCommand)
118
+ CommandRegistry.register(InvokeAgentCommand)
119
+ CommandRegistry.register(ReapAgentCommand)
120
+ CommandRegistry.register(SpawnAgentCommand)
115
121
  CommandRegistry.register(IncludeSkillCommand)
116
122
  CommandRegistry.register(LintCommand)
117
123
  CommandRegistry.register(ListSessionsCommand)
@@ -188,8 +194,11 @@ __all__ = [
188
194
  "HashlineCommand",
189
195
  "HelpCommand",
190
196
  "HistorySearchCommand",
191
- "HookCommand",
197
+ "HooksCommand",
192
198
  "IncludeSkillCommand",
199
+ "InvokeAgentCommand",
200
+ "ReapAgentCommand",
201
+ "SpawnAgentCommand",
193
202
  "LintCommand",
194
203
  "ListSessionsCommand",
195
204
  "ListSkillsCommand",