cecli-dev 0.99.11__tar.gz → 0.100.0__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 (658) hide show
  1. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/release.yml +1 -1
  2. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/PKG-INFO +9 -8
  3. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/README.md +6 -5
  4. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/__init__.py +1 -1
  5. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/_version.py +3 -3
  6. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/args.py +1 -1
  7. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/__init__.py +2 -0
  8. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/agent_coder.py +137 -18
  9. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/base_coder.py +341 -157
  10. cecli_dev-0.100.0/cecli/coders/sub_agent_coder.py +23 -0
  11. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/__init__.py +16 -1
  12. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/add.py +1 -0
  13. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/agent_model.py +1 -0
  14. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/clear.py +3 -1
  15. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/context_blocks.py +1 -0
  16. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/context_management.py +1 -0
  17. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/copy.py +1 -0
  18. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/copy_context.py +1 -0
  19. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/core.py +22 -12
  20. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/diff.py +1 -0
  21. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/drop.py +1 -0
  22. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/editor.py +1 -0
  23. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/editor_model.py +1 -0
  24. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/exclude_skill.py +1 -0
  25. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/exit.py +1 -0
  26. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/hooks.py +3 -2
  27. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/include_skill.py +1 -0
  28. cecli_dev-0.100.0/cecli/commands/invoke_agent.py +54 -0
  29. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/lint.py +1 -1
  30. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/list_sessions.py +1 -0
  31. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/list_skills.py +1 -0
  32. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/load.py +1 -0
  33. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/load_hook.py +4 -3
  34. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/load_mcp.py +1 -0
  35. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/load_session.py +1 -0
  36. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/load_skill.py +1 -0
  37. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/ls.py +4 -3
  38. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/map.py +1 -0
  39. cecli_dev-0.100.0/cecli/commands/merge.py +194 -0
  40. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/model.py +1 -0
  41. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/models.py +1 -0
  42. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/paste.py +1 -0
  43. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/read_only.py +1 -0
  44. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/read_only_stub.py +1 -0
  45. cecli_dev-0.100.0/cecli/commands/reap_agent.py +67 -0
  46. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/remove_hook.py +4 -3
  47. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/remove_mcp.py +1 -0
  48. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/remove_skill.py +1 -0
  49. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/reset.py +3 -1
  50. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/run.py +3 -5
  51. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/save.py +1 -0
  52. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/save_session.py +1 -0
  53. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/settings.py +1 -0
  54. cecli_dev-0.100.0/cecli/commands/spawn_agent.py +42 -0
  55. cecli_dev-0.100.0/cecli/commands/switch_agent.py +122 -0
  56. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/think_tokens.py +1 -0
  57. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/tokens.py +1 -0
  58. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/undo.py +1 -0
  59. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/utils/base_command.py +1 -0
  60. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/voice.py +1 -0
  61. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/weak_model.py +1 -0
  62. cecli_dev-0.100.0/cecli/helpers/agents/__init__.py +7 -0
  63. cecli_dev-0.100.0/cecli/helpers/agents/config.py +84 -0
  64. cecli_dev-0.100.0/cecli/helpers/agents/service.py +551 -0
  65. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/files.py +29 -11
  66. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/integration.py +69 -13
  67. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/manager.py +29 -11
  68. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/service.py +1 -2
  69. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/coroutines.py +38 -0
  70. cecli_dev-0.100.0/cecli/helpers/io_proxy.py +256 -0
  71. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/leak_detect.py +42 -0
  72. cecli_dev-0.99.11/cecli/helpers/observations/manager.py → cecli_dev-0.100.0/cecli/helpers/observations/service.py +56 -19
  73. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/skills.py +27 -3
  74. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/__init__.py +2 -0
  75. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/integration.py +28 -14
  76. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/manager.py +56 -88
  77. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/registry.py +62 -5
  78. cecli_dev-0.100.0/cecli/hooks/service.py +65 -0
  79. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/io.py +30 -20
  80. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/linter.py +36 -36
  81. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/main.py +33 -25
  82. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/models.py +25 -1
  83. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/agent.yml +1 -1
  84. cecli_dev-0.100.0/cecli/prompts/subagent.yml +62 -0
  85. cecli_dev-0.100.0/cecli/queries/tree-sitter-language-pack/bash-tags.scm +8 -0
  86. cecli_dev-0.100.0/cecli/queries/tree-sitter-languages/bash-tags.scm +8 -0
  87. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/repomap.py +30 -7
  88. cecli_dev-0.100.0/cecli/run_cmd.py +284 -0
  89. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/sessions.py +2 -2
  90. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/__init__.py +2 -0
  91. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/command.py +5 -3
  92. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/context_manager.py +52 -7
  93. cecli_dev-0.100.0/cecli/tools/delegate.py +125 -0
  94. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/edit_text.py +3 -3
  95. cecli_dev-0.100.0/cecli/tools/finished.py +86 -0
  96. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/load_skill.py +1 -4
  97. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/read_range.py +119 -31
  98. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/remove_skill.py +1 -4
  99. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/thinking.py +2 -2
  100. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/utils/base_tool.py +2 -2
  101. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/utils/registry.py +11 -0
  102. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/app.py +430 -49
  103. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/io.py +185 -55
  104. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/styles.tcss +2 -1
  105. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/__init__.py +2 -0
  106. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/file_list.py +12 -2
  107. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/footer.py +61 -4
  108. cecli_dev-0.100.0/cecli/tui/widgets/input_container.py +139 -0
  109. cecli_dev-0.100.0/cecli/tui/widgets/subagent_pills.py +164 -0
  110. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/worker.py +33 -7
  111. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/agent-mode.md +28 -28
  112. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/hooks.md +11 -1
  113. cecli_dev-0.100.0/cecli/website/docs/config/subagents.md +241 -0
  114. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/commands.md +1 -0
  115. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/PKG-INFO +9 -8
  116. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/SOURCES.txt +32 -2
  117. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/requires.txt +4 -3
  118. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/pyproject.toml +0 -1
  119. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/pytest.ini +1 -0
  120. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/common-constraints.txt +3 -1
  121. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-dev.in +2 -1
  122. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-dev.txt +25 -9
  123. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-help.txt +20 -18
  124. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-playwright.txt +1 -1
  125. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/pip-compile.sh +1 -0
  126. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_coder.py +17 -9
  127. cecli_dev-0.100.0/tests/basic/test_linter.py +74 -0
  128. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_models.py +52 -0
  129. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_reasoning.py +4 -4
  130. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_repomap.py +3 -0
  131. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_run_cmd.py +2 -2
  132. cecli_dev-0.100.0/tests/coders/test_coder_switching.py +74 -0
  133. cecli_dev-0.100.0/tests/commands/test_compaction.py +105 -0
  134. cecli_dev-0.100.0/tests/commands/test_switch_agent.py +104 -0
  135. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/conversations/test_conversation_integration.py +1 -1
  136. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/conversations/test_conversation_system.py +1 -1
  137. cecli_dev-0.100.0/tests/fixtures/languages/bash/test.sh +19 -0
  138. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_repomap_workspace.py +4 -0
  139. cecli_dev-0.99.11/tests/helpers/observations/test_observation_manager.py → cecli_dev-0.100.0/tests/helpers/observations/test_observation_service.py +7 -9
  140. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/hooks/test_manager.py +116 -83
  141. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/hooks/test_registry.py +25 -13
  142. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/scrape/test_playwright_disable.py +2 -0
  143. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/scrape/test_scrape.py +2 -0
  144. cecli_dev-0.100.0/tests/subagents/__init__.py +0 -0
  145. cecli_dev-0.100.0/tests/subagents/conftest.py +60 -0
  146. cecli_dev-0.100.0/tests/subagents/test_commands.py +238 -0
  147. cecli_dev-0.100.0/tests/subagents/test_config.py +109 -0
  148. cecli_dev-0.100.0/tests/subagents/test_delegate.py +124 -0
  149. cecli_dev-0.100.0/tests/subagents/test_finished.py +109 -0
  150. cecli_dev-0.100.0/tests/subagents/test_io_proxy.py +187 -0
  151. cecli_dev-0.100.0/tests/subagents/test_service.py +653 -0
  152. cecli_dev-0.100.0/tests/subagents/test_sub_agent_coder.py +153 -0
  153. cecli_dev-0.99.11/cecli/run_cmd.py +0 -143
  154. cecli_dev-0.99.11/cecli/tools/finished.py +0 -41
  155. cecli_dev-0.99.11/cecli/tui/widgets/input_container.py +0 -24
  156. cecli_dev-0.99.11/tests/basic/test_linter.py +0 -92
  157. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.dockerignore +0 -0
  158. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.flake8 +0 -0
  159. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.gitattributes +0 -0
  160. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  161. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/check_pypi_version.yml +0 -0
  162. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/docker-build-test.yml +0 -0
  163. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/docker-release.yml +0 -0
  164. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/issues.yml +0 -0
  165. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/pages.yml +0 -0
  166. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/pre-commit.yml +0 -0
  167. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/ubuntu-tests.yml +0 -0
  168. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/windows-tests.yml +0 -0
  169. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  170. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.gitignore +0 -0
  171. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/.pre-commit-config.yaml +0 -0
  172. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/CHANGELOG.md +0 -0
  173. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/CNAME +0 -0
  174. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/CONTRIBUTING.md +0 -0
  175. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/HISTORY.md +0 -0
  176. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/LICENSE.txt +0 -0
  177. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/MANIFEST.in +0 -0
  178. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/Dockerfile +0 -0
  179. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/README.md +0 -0
  180. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/__init__.py +0 -0
  181. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/benchmark.py +0 -0
  182. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/benchmark_classic.py +0 -0
  183. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/clone-exercism.sh +0 -0
  184. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/cpp-test.sh +0 -0
  185. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/docker.sh +0 -0
  186. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/docker_build.sh +0 -0
  187. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/install-docker-ubuntu.sh +0 -0
  188. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/npm-test.sh +0 -0
  189. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/over_time.py +0 -0
  190. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/plot.sh +0 -0
  191. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/plots.py +0 -0
  192. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/problem_stats.py +0 -0
  193. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/prompts.py +0 -0
  194. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/refactor_tools.py +0 -0
  195. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/rsync.sh +0 -0
  196. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/rungrid.py +0 -0
  197. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/swe-bench-lite.txt +0 -0
  198. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/swe-bench.txt +0 -0
  199. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/swe_bench.py +0 -0
  200. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/test_benchmark.py +0 -0
  201. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/variations.1.sh +0 -0
  202. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/variations.2.sh +0 -0
  203. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/variations.3.sh +0 -0
  204. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/benchmark/variations.4.sh +0 -0
  205. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/__main__.py +0 -0
  206. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/args_formatter.py +0 -0
  207. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/change_tracker.py +0 -0
  208. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/architect_coder.py +0 -0
  209. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/ask_coder.py +0 -0
  210. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/chat_chunks.py +0 -0
  211. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/context_coder.py +0 -0
  212. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/copypaste_coder.py +0 -0
  213. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editblock_coder.py +0 -0
  214. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  215. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editblock_func_coder.py +0 -0
  216. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  217. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editor_editblock_coder.py +0 -0
  218. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/editor_whole_coder.py +0 -0
  219. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/hashline_coder.py +0 -0
  220. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/help_coder.py +0 -0
  221. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/patch_coder.py +0 -0
  222. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/search_replace.py +0 -0
  223. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/shell.py +0 -0
  224. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  225. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/udiff_coder.py +0 -0
  226. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/udiff_simple.py +0 -0
  227. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/wholefile_coder.py +0 -0
  228. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/coders/wholefile_func_coder.py +0 -0
  229. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/agent.py +0 -0
  230. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/architect.py +0 -0
  231. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/ask.py +0 -0
  232. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/chat_mode.py +0 -0
  233. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/code.py +0 -0
  234. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/command_prefix.py +0 -0
  235. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/commit.py +0 -0
  236. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/compact.py +0 -0
  237. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/context.py +0 -0
  238. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/git.py +0 -0
  239. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/hashline.py +0 -0
  240. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/help.py +0 -0
  241. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/history_search.py +0 -0
  242. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/map_refresh.py +0 -0
  243. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/multiline_mode.py +0 -0
  244. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/quit.py +0 -0
  245. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/reasoning_effort.py +0 -0
  246. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/report.py +0 -0
  247. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/rules.py +0 -0
  248. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  249. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/terminal_setup.py +0 -0
  250. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/test.py +0 -0
  251. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/utils/__init__.py +0 -0
  252. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/utils/helpers.py +0 -0
  253. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/utils/registry.py +0 -0
  254. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/utils/save_load_manager.py +0 -0
  255. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/web.py +0 -0
  256. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/commands/workspace.py +0 -0
  257. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/deprecated_args.py +0 -0
  258. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/diffs.py +0 -0
  259. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/dump.py +0 -0
  260. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/editor.py +0 -0
  261. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/exceptions.py +0 -0
  262. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/format_settings.py +0 -0
  263. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/help.py +0 -0
  264. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/help_pats.py +0 -0
  265. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/__init__.py +0 -0
  266. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/background_commands.py +0 -0
  267. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/command_parser.py +0 -0
  268. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/__init__.py +0 -0
  269. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/base_message.py +0 -0
  270. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/tags.py +0 -0
  271. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/conversation/utils.py +0 -0
  272. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/copypaste.py +0 -0
  273. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/file_searcher.py +0 -0
  274. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  275. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/dump.py +0 -0
  276. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  277. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/main.py +0 -0
  278. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  279. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  280. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/hashline.py +0 -0
  281. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/hashpos/__init__.py +0 -0
  282. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  283. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/model_providers.py +0 -0
  284. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/monorepo/__init__.py +0 -0
  285. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/monorepo/config.py +0 -0
  286. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/monorepo/project.py +0 -0
  287. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/monorepo/workspace.py +0 -0
  288. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/monorepo/worktree.py +0 -0
  289. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/nested.py +0 -0
  290. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/observations/__init__.py +0 -0
  291. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/plugin_manager.py +0 -0
  292. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/profiler.py +0 -0
  293. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/requests.py +0 -0
  294. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/responses.py +0 -0
  295. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/helpers/similarity.py +0 -0
  296. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/history.py +0 -0
  297. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/base.py +0 -0
  298. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/hooks/types.py +0 -0
  299. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/interruptible_input.py +0 -0
  300. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/llm.py +0 -0
  301. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mcp/__init__.py +0 -0
  302. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mcp/manager.py +0 -0
  303. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mcp/oauth.py +0 -0
  304. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mcp/server.py +0 -0
  305. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mcp/utils.py +0 -0
  306. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/mdstream.py +0 -0
  307. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/onboarding.py +0 -0
  308. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/__init__.py +0 -0
  309. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/architect.yml +0 -0
  310. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/ask.yml +0 -0
  311. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/base.yml +0 -0
  312. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/context.yml +0 -0
  313. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/copypaste.yml +0 -0
  314. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editblock.yml +0 -0
  315. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editblock_fenced.yml +0 -0
  316. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editblock_func.yml +0 -0
  317. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  318. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editor_editblock.yml +0 -0
  319. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/editor_whole.yml +0 -0
  320. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/hashline.yml +0 -0
  321. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/help.yml +0 -0
  322. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/patch.yml +0 -0
  323. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  324. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/udiff.yml +0 -0
  325. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/udiff_simple.yml +0 -0
  326. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/utils/__init__.py +0 -0
  327. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/utils/registry.py +0 -0
  328. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/utils/system.py +0 -0
  329. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/wholefile.yml +0 -0
  330. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/prompts/wholefile_func.yml +0 -0
  331. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  332. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  333. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  334. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  335. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  336. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  337. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  338. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  339. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  340. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  341. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  342. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  343. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  344. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  345. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  346. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  347. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  348. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  349. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  350. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  351. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  352. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  353. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  354. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  355. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  356. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  357. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  358. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  359. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  360. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  361. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  362. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  363. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  364. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  365. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  366. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  367. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  368. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  369. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  370. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  371. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  372. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  373. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  374. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  375. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  376. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  377. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  378. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  379. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  380. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  381. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  382. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  383. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  384. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  385. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  386. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  387. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  388. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  389. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/reasoning_tags.py +0 -0
  390. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/repo.py +0 -0
  391. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/report.py +0 -0
  392. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/resources/__init__.py +0 -0
  393. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/resources/model-metadata.json +0 -0
  394. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/resources/model-settings.yml +0 -0
  395. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/resources/providers.json +0 -0
  396. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/scrape.py +0 -0
  397. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/sendchat.py +0 -0
  398. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/special.py +0 -0
  399. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/command_interactive.py +0 -0
  400. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/explore_code.py +0 -0
  401. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_branch.py +0 -0
  402. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_diff.py +0 -0
  403. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_log.py +0 -0
  404. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_remote.py +0 -0
  405. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_show.py +0 -0
  406. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/git_status.py +0 -0
  407. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/grep.py +0 -0
  408. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/ls.py +0 -0
  409. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/undo_change.py +0 -0
  410. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/update_todo_list.py +0 -0
  411. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/utils/helpers.py +0 -0
  412. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tools/utils/output.py +0 -0
  413. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/__init__.py +0 -0
  414. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/completion_bar.py +0 -0
  415. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/input_area.py +0 -0
  416. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/key_hints.py +0 -0
  417. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/output.py +0 -0
  418. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/tui/widgets/status_bar.py +0 -0
  419. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/urls.py +0 -0
  420. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/utils.py +0 -0
  421. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/versioncheck.py +0 -0
  422. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/voice.py +0 -0
  423. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/waiting.py +0 -0
  424. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/watch.py +0 -0
  425. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/watch_prompts.py +0 -0
  426. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/Gemfile +0 -0
  427. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/blame.md +0 -0
  428. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/get-started.md +0 -0
  429. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/help-tip.md +0 -0
  430. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/help.md +0 -0
  431. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/install.md +0 -0
  432. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/keys.md +0 -0
  433. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/model-warnings.md +0 -0
  434. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/multi-line.md +0 -0
  435. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/python-m-aider.md +0 -0
  436. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/recording.css +0 -0
  437. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/recording.md +0 -0
  438. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_includes/works-best.md +0 -0
  439. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_features.scss +0 -0
  440. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_footer.scss +0 -0
  441. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_hero.scss +0 -0
  442. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_info.scss +0 -0
  443. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_layout.scss +0 -0
  444. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_reset.scss +0 -0
  445. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_testimonials.scss +0 -0
  446. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_typography.scss +0 -0
  447. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/_variables.scss +0 -0
  448. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/custom/custom.scss +0 -0
  449. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/_sass/global-overrides.scss +0 -0
  450. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  451. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/aider_conf.md +0 -0
  452. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/api-keys.md +0 -0
  453. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/custom-commands.md +0 -0
  454. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  455. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/dotenv.md +0 -0
  456. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/editor.md +0 -0
  457. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/mcp.md +0 -0
  458. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/model-aliases.md +0 -0
  459. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/options.md +0 -0
  460. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/reasoning.md +0 -0
  461. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/security.md +0 -0
  462. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/skills.md +0 -0
  463. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/tui.md +0 -0
  464. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config/workspaces.md +0 -0
  465. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/config.md +0 -0
  466. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/faq.md +0 -0
  467. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/git.md +0 -0
  468. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/index.md +0 -0
  469. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/install/docker.md +0 -0
  470. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/install/optional.md +0 -0
  471. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/install.md +0 -0
  472. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/languages.md +0 -0
  473. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  474. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/legal/privacy.md +0 -0
  475. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/anthropic.md +0 -0
  476. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/azure.md +0 -0
  477. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/bedrock.md +0 -0
  478. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/cohere.md +0 -0
  479. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/deepseek.md +0 -0
  480. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/gemini.md +0 -0
  481. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/github.md +0 -0
  482. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/groq.md +0 -0
  483. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  484. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/ollama.md +0 -0
  485. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  486. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/openai.md +0 -0
  487. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/openrouter.md +0 -0
  488. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/other.md +0 -0
  489. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/vertex.md +0 -0
  490. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/warnings.md +0 -0
  491. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms/xai.md +0 -0
  492. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/llms.md +0 -0
  493. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/more/analytics.md +0 -0
  494. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/more/edit-formats.md +0 -0
  495. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/more/infinite-output.md +0 -0
  496. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/more-info.md +0 -0
  497. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/repomap.md +0 -0
  498. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/scripting.md +0 -0
  499. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  500. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  501. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  502. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  503. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  504. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  505. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  506. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting.md +0 -0
  507. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/conventions.md +0 -0
  508. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/copypaste.md +0 -0
  509. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/images-urls.md +0 -0
  510. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/lint-test.md +0 -0
  511. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/modes.md +0 -0
  512. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/not-code.md +0 -0
  513. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/notifications.md +0 -0
  514. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/sessions.md +0 -0
  515. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/tips.md +0 -0
  516. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/voice.md +0 -0
  517. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage/watch.md +0 -0
  518. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/docs/usage.md +0 -0
  519. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli/website/share/index.md +0 -0
  520. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  521. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  522. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/cecli_dev.egg-info/top_level.txt +0 -0
  523. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/docker/Dockerfile +0 -0
  524. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  525. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-help.in +0 -0
  526. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements-playwright.in +0 -0
  527. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/requirements.in +0 -0
  528. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements/tree-sitter.in +0 -0
  529. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/requirements.txt +0 -0
  530. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/30k-image.py +0 -0
  531. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/Dockerfile.jekyll +0 -0
  532. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/__init__.py +0 -0
  533. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/blame.py +0 -0
  534. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/clean_metadata.py +0 -0
  535. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/cost_analyzer.py +0 -0
  536. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/cost_calculator.py +0 -0
  537. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/dl_icons.py +0 -0
  538. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/filter-chat-mode.js +0 -0
  539. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/generate_providers.py +0 -0
  540. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/get_contributor_list.js +0 -0
  541. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/get_hashline.py +0 -0
  542. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/history_prompts.py +0 -0
  543. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/homepage.py +0 -0
  544. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/issues.py +0 -0
  545. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/jekyll_build.sh +0 -0
  546. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/jekyll_run.sh +0 -0
  547. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/logo_svg.py +0 -0
  548. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/recording_audio.py +0 -0
  549. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/redact-cast.py +0 -0
  550. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/rename_to_cecli.py +0 -0
  551. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/tmux_record.sh +0 -0
  552. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/tsl_pack_langs.py +0 -0
  553. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/update-blame.sh +0 -0
  554. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/update-docs.sh +0 -0
  555. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/update-history.py +0 -0
  556. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/versionbump.py +0 -0
  557. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/scripts/yank-old-versions.py +0 -0
  558. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/setup.cfg +0 -0
  559. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/shim.pyproject.toml +0 -0
  560. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/__init__.py +0 -0
  561. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/__init__.py +0 -0
  562. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_aws_credentials.py +0 -0
  563. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_background_commands.py +0 -0
  564. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_commands.py +0 -0
  565. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_custom_commands.py +0 -0
  566. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_deprecated.py +0 -0
  567. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_editblock.py +0 -0
  568. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_editor.py +0 -0
  569. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_exceptions.py +0 -0
  570. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_find_or_blocks.py +0 -0
  571. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_hashline.py +0 -0
  572. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_history.py +0 -0
  573. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_io.py +0 -0
  574. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_main.py +0 -0
  575. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_model_info_manager.py +0 -0
  576. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_model_provider_manager.py +0 -0
  577. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_onboarding.py +0 -0
  578. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_plugin_manager.py +0 -0
  579. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_prompts.py +0 -0
  580. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_repo.py +0 -0
  581. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_sanity_check_repo.py +0 -0
  582. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_scripting.py +0 -0
  583. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_sendchat.py +0 -0
  584. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_sessions.py +0 -0
  585. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_skills.py +0 -0
  586. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_special.py +0 -0
  587. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_ssl_verification.py +0 -0
  588. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_udiff.py +0 -0
  589. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_urls.py +0 -0
  590. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_voice.py +0 -0
  591. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_watch.py +0 -0
  592. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/basic/test_wholefile.py +0 -0
  593. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/coders/test_copypaste_coder.py +0 -0
  594. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/conftest.py +0 -0
  595. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  596. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/chat-history.md +0 -0
  597. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  598. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/c/test.c +0 -0
  599. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  600. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  601. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  602. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  603. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  604. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/d/test.d +0 -0
  605. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/dart/test.dart +0 -0
  606. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/elisp/test.el +0 -0
  607. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  608. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/elm/test.elm +0 -0
  609. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  610. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/go/test.go +0 -0
  611. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  612. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  613. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/java/test.java +0 -0
  614. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/javascript/test.js +0 -0
  615. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  616. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/lua/test.lua +0 -0
  617. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/matlab/test.m +0 -0
  618. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  619. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  620. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/php/test.php +0 -0
  621. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/pony/test.pony +0 -0
  622. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/properties/test.properties +0 -0
  623. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/python/test.py +0 -0
  624. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/ql/test.ql +0 -0
  625. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/r/test.r +0 -0
  626. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  627. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  628. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/rust/test.rs +0 -0
  629. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/scala/test.scala +0 -0
  630. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  631. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/swift/test.swift +0 -0
  632. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  633. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  634. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/udev/test.rules +0 -0
  635. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/languages/zig/test.zig +0 -0
  636. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  637. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  638. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  639. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/watch.js +0 -0
  640. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/watch.lisp +0 -0
  641. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/watch.py +0 -0
  642. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/fixtures/watch_question.js +0 -0
  643. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/help/test_help.py +0 -0
  644. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_config.py +0 -0
  645. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_config_active.py +0 -0
  646. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  647. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_workspace.py +0 -0
  648. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/hooks/__init__.py +0 -0
  649. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/hooks/test_base.py +0 -0
  650. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/mcp/__init__.py +0 -0
  651. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/mcp/test_manager.py +0 -0
  652. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_get_lines.py +0 -0
  653. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_git_branch.py +0 -0
  654. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_git_diff.py +0 -0
  655. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_grep.py +0 -0
  656. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_insert_block.py +0 -0
  657. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tools/test_registry.py +0 -0
  658. {cecli_dev-0.99.11 → cecli_dev-0.100.0}/tests/tui/test_app.py +0 -0
@@ -4,7 +4,7 @@ on:
4
4
  workflow_dispatch:
5
5
  push:
6
6
  tags:
7
- - 'v[0-9]+.[0-9]+.[0-9]+'
7
+ - 'v[0-9]*.[0-9]*.[0-9]*'
8
8
 
9
9
  jobs:
10
10
  publish_cecli:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.99.11
3
+ Version: 0.100.0
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,16 +76,16 @@ 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"
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"
86
87
  Provides-Extra: playwright
87
88
  Requires-Dist: playwright; extra == "playwright"
88
- Provides-Extra: tui
89
89
  Dynamic: license-file
90
90
 
91
91
  ## Why `cecli`?
@@ -110,6 +110,7 @@ LLMs are a part of our lives from here on out so join us in learning about and c
110
110
  * [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
111
111
  * [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
112
112
  * [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
113
+ * [Subagents](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/subagents.md)
113
114
  * [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
114
115
  * [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
115
116
  * [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
@@ -232,7 +233,7 @@ The current priorities are to improve core capabilities and user experience of t
232
233
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
233
234
 
234
235
  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
236
+ * [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
236
237
  * [x] Add support for partial files and code snippets in model completion messages
237
238
  * [x] Update message request structure for optimal caching
238
239
 
@@ -251,12 +252,12 @@ The current priorities are to improve core capabilities and user experience of t
251
252
  * [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
252
253
 
253
254
  7. **Sub Agents**
254
- * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
255
+ * [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
255
256
  * [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
256
257
  * [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
257
258
  * [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
259
+ * [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
260
+ * [x] Add visibility into active sub agent calls in TUI
260
261
 
261
262
  8. **Hooks**
262
263
  * [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
@@ -270,7 +271,7 @@ The current priorities are to improve core capabilities and user experience of t
270
271
  * [x] Update internal file diff representation to support hashline propagation
271
272
 
272
273
  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
274
+ * [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
274
275
  * [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
275
276
  * [ ] Integrate RLM to extract information from decision records on disk and other definable notes
276
277
  * [ ] 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:
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.99.10.dev"
3
+ __version__ = "0.99.12.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.99.11'
22
- __version_tuple__ = version_tuple = (0, 99, 11)
21
+ __version__ = version = '0.100.0'
22
+ __version_tuple__ = version_tuple = (0, 100, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g2e5e3b75c'
24
+ __commit_id__ = commit_id = 'g8b6086f7f'
@@ -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
 
@@ -71,7 +76,7 @@ class AgentCoder(Coder):
71
76
  "edittext",
72
77
  "undochange",
73
78
  }
74
- self.edit_allowed = False
79
+ self.edit_allowed = True
75
80
  self.max_tool_calls = 10000
76
81
  self.large_file_token_threshold = 8192
77
82
  self.skills_manager = None
@@ -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
 
@@ -128,6 +154,7 @@ class AgentCoder(Coder):
128
154
  )
129
155
  config["command_timeout"] = nested.getter(config, "command_timeout", 30)
130
156
  config["hot_reload"] = nested.getter(config, "hot_reload", False)
157
+ config["allow_nested_delegation"] = nested.getter(config, "allow_nested_delegation", False)
131
158
 
132
159
  config["tools_paths"] = nested.getter(config, ["tools_paths", "tool_paths"], [])
133
160
  config["tools_includelist"] = nested.getter(
@@ -137,6 +164,12 @@ class AgentCoder(Coder):
137
164
  config, ["tools_excludelist", "tools_blacklist"], []
138
165
  )
139
166
 
167
+ config["servers_includelist"] = nested.getter(
168
+ config, ["servers_includelist", "servers_whitelist"], []
169
+ )
170
+ config["servers_excludelist"] = nested.getter(
171
+ config, ["servers_excludelist", "servers_blacklist"], []
172
+ )
140
173
  config["include_context_blocks"] = set(
141
174
  nested.getter(
142
175
  config,
@@ -148,6 +181,7 @@ class AgentCoder(Coder):
148
181
  # "git_status",
149
182
  # "symbol_outline",
150
183
  "todo_list",
184
+ "sub_agents",
151
185
  "skills",
152
186
  },
153
187
  )
@@ -173,6 +207,7 @@ class AgentCoder(Coder):
173
207
  config["skills_excludelist"] = nested.getter(
174
208
  config, ["skills_excludelist", "skills_blacklist"], []
175
209
  )
210
+ config["skills_init"] = nested.getter(config, ["skills_init", "skills_startup"], [])
176
211
 
177
212
  if "skills" not in self.allowed_context_blocks or not nested.getter(
178
213
  config, "skills_paths", []
@@ -193,6 +228,7 @@ class AgentCoder(Coder):
193
228
  directory_paths=config.get("skills_paths", []),
194
229
  include_list=config.get("skills_includelist", []),
195
230
  exclude_list=config.get("skills_excludelist", []),
231
+ initialize_list=config.get("skills_init", []),
196
232
  git_root=git_root,
197
233
  coder=self,
198
234
  )
@@ -212,6 +248,12 @@ class AgentCoder(Coder):
212
248
  joined_skills = ", ".join(skills_list)
213
249
  self.io.tool_output(f"Available Skills: {joined_skills}")
214
250
 
251
+ registry = AgentService.get_registry()
252
+ if registry:
253
+ names = sorted(registry.keys())
254
+ joined_names = ", ".join(names)
255
+ self.io.tool_output(f"Available Subagents: {joined_names}")
256
+
215
257
  def get_local_tool_schemas(self):
216
258
  """Returns the JSON schemas for all local tools using the tool registry."""
217
259
  schemas = []
@@ -282,9 +324,7 @@ class AgentCoder(Coder):
282
324
  content_parts.append(item.text)
283
325
  return "".join(content_parts)
284
326
  except Exception as e:
285
- self.io.tool_warning(
286
- (f"Executing {tool_name} on {server.name} failed:\nError: {e}")
287
- )
327
+ self.io.tool_warning(f"Executing {tool_name} on {server.name} failed:\nError: {e}")
288
328
  return f"Error executing tool call {tool_name}: {e}"
289
329
 
290
330
  result, interrupted = await interruptible(_exec_async(), self.interrupt_event)
@@ -319,6 +359,7 @@ class AgentCoder(Coder):
319
359
  "git_status",
320
360
  "symbol_outline",
321
361
  "skills",
362
+ "sub_agents",
322
363
  "loaded_skills",
323
364
  ]
324
365
  for block_type in block_types:
@@ -354,6 +395,10 @@ class AgentCoder(Coder):
354
395
  content = self.get_skills_context()
355
396
  elif block_name == "loaded_skills":
356
397
  content = self.get_skills_content()
398
+ elif block_name == "sub_agents" and (
399
+ not self.parent_uuid or self.agent_config.get("allow_nested_delegation", False)
400
+ ):
401
+ content = self.get_sub_agents_context()
357
402
  if content is not None:
358
403
  self.context_blocks_cache[block_name] = content
359
404
  return content
@@ -381,7 +426,10 @@ class AgentCoder(Coder):
381
426
  try:
382
427
  result = '<context name="symbol_outline" from="agent">\n'
383
428
  result += "## Symbol Outline (Current Context)\n\n"
384
- result += "Code definitions (classes, functions, methods, etc.) found in files currently in chat context."
429
+ result += (
430
+ "Code definitions (classes, functions, methods, etc.) found in files currently in"
431
+ " chat context."
432
+ )
385
433
  result += "\n\n"
386
434
  files_to_outline = list(self.abs_fnames) + list(self.abs_read_only_fnames)
387
435
  if not files_to_outline:
@@ -459,7 +507,20 @@ class AgentCoder(Coder):
459
507
  ConversationService.get_chunks(self).add_file_list_reminder()
460
508
 
461
509
  # Add system messages (including examples and reminder)
462
- ConversationService.get_chunks(self).add_system_messages()
510
+ # For sub-agents, use their specific system prompt via AgentService lookup
511
+ # For primary agents, use the default system messages flow
512
+ needs_system_prompts = True
513
+ if hasattr(self, "parent_uuid") and self.parent_uuid:
514
+ service = AgentService.get_instance(self)
515
+ info = service.sub_agents.get(self.uuid)
516
+ if info:
517
+ config = AgentService.get_registry().get(info.name)
518
+ if config and config.prompt and config.prompt.strip():
519
+ ConversationService.get_chunks(self).add_system_message(config.prompt)
520
+ needs_system_prompts = False
521
+
522
+ if needs_system_prompts:
523
+ ConversationService.get_chunks(self).add_system_messages()
463
524
 
464
525
  # Add static context blocks (priority 50 - between SYSTEM and EXAMPLES)
465
526
  ConversationService.get_chunks(self).add_static_context_blocks()
@@ -522,7 +583,10 @@ class AgentCoder(Coder):
522
583
  )
523
584
  if editable_files:
524
585
  result += "\n".join(editable_files) + "\n\n"
525
- result += f"**Total editable: {len(editable_files)} files, {editable_tokens:,} tokens**\n\n"
586
+ result += (
587
+ f"**Total editable: {len(editable_files)} files,"
588
+ f" {editable_tokens:,} tokens**\n\n"
589
+ )
526
590
  else:
527
591
  result += "No editable files in context\n\n"
528
592
  if self.abs_read_only_fnames:
@@ -542,7 +606,10 @@ class AgentCoder(Coder):
542
606
  )
543
607
  if readonly_files:
544
608
  result += "\n".join(readonly_files) + "\n\n"
545
- result += f"**Total read-only: {len(readonly_files)} files, {readonly_tokens:,} tokens**\n\n"
609
+ result += (
610
+ f"**Total read-only: {len(readonly_files)} files,"
611
+ f" {readonly_tokens:,} tokens**\n\n"
612
+ )
546
613
  else:
547
614
  result += "No read-only files in context\n\n"
548
615
  extra_tokens = sum(self.context_block_tokens.values())
@@ -730,7 +797,7 @@ class AgentCoder(Coder):
730
797
  self.model_kwargs = {}
731
798
  result_message = f"Error executing {tool_name}: {e}"
732
799
  self.io.tool_error(
733
- (f"Error during {tool_name} execution: {e}\n{traceback.format_exc()}")
800
+ f"Error during {tool_name} execution: {e}\n{traceback.format_exc()}"
734
801
  )
735
802
  tool_responses.append(
736
803
  {"role": "tool", "tool_call_id": tool_call.id, "content": result_message}
@@ -738,7 +805,13 @@ class AgentCoder(Coder):
738
805
 
739
806
  if self.auto_lint and used_write_tool:
740
807
  edited = list(self.files_edited_by_tools)
741
- lint_errors = self.lint_edited(edited, show_output=False)
808
+ lint_coro = self.lint_edited(edited, show_output=False)
809
+ lint_errors, interrupted = await self.coroutines.interruptible(
810
+ lint_coro, self.interrupt_event
811
+ )
812
+ if interrupted:
813
+ raise KeyboardInterrupt("Interrupted during linting")
814
+
742
815
  self.lint_outcome = not lint_errors
743
816
 
744
817
  if lint_errors:
@@ -801,6 +874,7 @@ class AgentCoder(Coder):
801
874
  # 1. Handle Tool Execution Follow-up (Reflection)
802
875
  if self.agent_finished:
803
876
  self.tool_usage_history = []
877
+ self.tool_call_vectors = []
804
878
  self.reflected_message = None
805
879
  if self.files_edited_by_tools:
806
880
  _ = await self.auto_commit(self.files_edited_by_tools)
@@ -840,7 +914,12 @@ class AgentCoder(Coder):
840
914
  " its outputs are no longer necessary"
841
915
  )
842
916
  self.io.tool_output(waiting_msg)
843
- await asyncio.sleep(command_timeout / 2)
917
+ sleep_coro = asyncio.sleep(command_timeout / 2)
918
+ _res, interrupted = await self.coroutines.interruptible(
919
+ sleep_coro, self.interrupt_event
920
+ )
921
+ if interrupted:
922
+ raise KeyboardInterrupt("Interrupted while waiting for background commands")
844
923
  return True
845
924
 
846
925
  # Check for recently finished commands that need reflection
@@ -853,11 +932,15 @@ class AgentCoder(Coder):
853
932
  self.tool_usage_history = []
854
933
  return True
855
934
 
856
- if content and not tool_calls_found and self.num_reflections < self.max_reflections:
857
- self.reflected_message = (
858
- "Continue with your task. If you have completed it, call the `Finished` tool."
859
- )
860
- return True
935
+ # 4. If we have called no tools (e.g. the first message)
936
+ # Allow early exiting
937
+ # If a model forgets a tool call, replay the request instead of stopping early
938
+ if self.tool_call_vectors:
939
+ if content and not tool_calls_found and self.num_reflections < self.max_reflections:
940
+ self.reflected_message = (
941
+ "Continue with your task. If you have completed it, call the `Finished` tool."
942
+ )
943
+ return True
861
944
 
862
945
  if tool_calls_found and self.num_reflections < self.max_reflections:
863
946
  self.tool_call_count = 0
@@ -1020,8 +1103,8 @@ class AgentCoder(Coder):
1020
1103
  context_parts.append("## File Editing Tools Disabled")
1021
1104
  context_parts.append(
1022
1105
  "File editing tools are currently disabled. Use `ReadRange` to determine the"
1023
- " current content hash prefixes needed to perform an edit and activate them when you"
1024
- " are ready to edit a file."
1106
+ " current content hash prefixes needed to perform an edit and activate them when"
1107
+ " you are ready to edit a file."
1025
1108
  )
1026
1109
 
1027
1110
  context_parts.append("\n\n")
@@ -1377,6 +1460,42 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1377
1460
  self.io.tool_error(f"Error generating skills content context: {str(e)}")
1378
1461
  return None
1379
1462
 
1463
+ def get_sub_agents_context(self):
1464
+ """
1465
+ Generate a context block for registered sub-agents.
1466
+ Only shown for primary coders (no parent_uuid).
1467
+
1468
+ Returns:
1469
+ Formatted context block string with sub-agent names and descriptions,
1470
+ or None if no sub-agents are registered or if called from a sub-agent.
1471
+ """
1472
+ if not self.use_enhanced_context:
1473
+ return None
1474
+ if hasattr(self, "parent_uuid") and self.parent_uuid:
1475
+ return None
1476
+ try:
1477
+ registry = AgentService.get_registry()
1478
+ if not registry:
1479
+ return None
1480
+
1481
+ result = '<context name="sub_agents" from="agent">\n'
1482
+ result += "## Available Sub-Agents\n\n"
1483
+ result += f"Found {len(registry)} registered sub-agent(s):\n\n"
1484
+
1485
+ for name, config in sorted(registry.items()):
1486
+ result += f"**{name}**:\n"
1487
+ desc = config.metadata.get("description", "")
1488
+ if desc:
1489
+ result += f"{desc}\n"
1490
+ result += "\n"
1491
+
1492
+ result += "Use the `Delegate` tool with the sub-agent name to delegate tasks.\n"
1493
+ result += "</context>"
1494
+ return result
1495
+ except Exception as e:
1496
+ self.io.tool_error(f"Error generating sub-agents context: {str(e)}")
1497
+ return None
1498
+
1380
1499
  def get_background_command_output(self):
1381
1500
  """
1382
1501
  Get background command output to append after the main message.