cecli-dev 0.99.12__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.12 → cecli_dev-0.100.0}/.github/workflows/release.yml +1 -1
  2. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/PKG-INFO +9 -8
  3. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/README.md +6 -5
  4. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/_version.py +3 -3
  5. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/args.py +1 -1
  6. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/__init__.py +2 -0
  7. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/agent_coder.py +121 -9
  8. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/base_coder.py +341 -155
  9. cecli_dev-0.100.0/cecli/coders/sub_agent_coder.py +23 -0
  10. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/__init__.py +16 -1
  11. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/add.py +1 -0
  12. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/agent_model.py +1 -0
  13. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/clear.py +3 -2
  14. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/context_blocks.py +1 -0
  15. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/context_management.py +1 -0
  16. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/copy.py +1 -0
  17. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/copy_context.py +1 -0
  18. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/core.py +22 -12
  19. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/diff.py +1 -0
  20. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/drop.py +1 -0
  21. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/editor.py +1 -0
  22. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/editor_model.py +1 -0
  23. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/exclude_skill.py +1 -0
  24. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/exit.py +1 -0
  25. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/hooks.py +3 -2
  26. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/include_skill.py +1 -0
  27. cecli_dev-0.100.0/cecli/commands/invoke_agent.py +54 -0
  28. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/lint.py +1 -1
  29. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/list_sessions.py +1 -0
  30. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/list_skills.py +1 -0
  31. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/load.py +1 -0
  32. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/load_hook.py +4 -3
  33. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/load_mcp.py +1 -0
  34. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/load_session.py +1 -0
  35. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/load_skill.py +1 -0
  36. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/ls.py +4 -3
  37. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/map.py +1 -0
  38. cecli_dev-0.100.0/cecli/commands/merge.py +194 -0
  39. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/model.py +1 -0
  40. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/models.py +1 -0
  41. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/paste.py +1 -0
  42. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/read_only.py +1 -0
  43. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/read_only_stub.py +1 -0
  44. cecli_dev-0.100.0/cecli/commands/reap_agent.py +67 -0
  45. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/remove_hook.py +4 -3
  46. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/remove_mcp.py +1 -0
  47. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/remove_skill.py +1 -0
  48. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/reset.py +3 -2
  49. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/run.py +3 -5
  50. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/save.py +1 -0
  51. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/save_session.py +1 -0
  52. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/settings.py +1 -0
  53. cecli_dev-0.100.0/cecli/commands/spawn_agent.py +42 -0
  54. cecli_dev-0.100.0/cecli/commands/switch_agent.py +122 -0
  55. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/think_tokens.py +1 -0
  56. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/tokens.py +1 -0
  57. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/undo.py +1 -0
  58. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/utils/base_command.py +1 -0
  59. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/voice.py +1 -0
  60. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/weak_model.py +1 -0
  61. cecli_dev-0.100.0/cecli/helpers/agents/__init__.py +7 -0
  62. cecli_dev-0.100.0/cecli/helpers/agents/config.py +84 -0
  63. cecli_dev-0.100.0/cecli/helpers/agents/service.py +551 -0
  64. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/files.py +29 -11
  65. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/integration.py +69 -13
  66. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/manager.py +29 -11
  67. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/service.py +1 -2
  68. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/coroutines.py +38 -0
  69. cecli_dev-0.100.0/cecli/helpers/io_proxy.py +256 -0
  70. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/leak_detect.py +42 -0
  71. cecli_dev-0.99.12/cecli/helpers/observations/manager.py → cecli_dev-0.100.0/cecli/helpers/observations/service.py +50 -16
  72. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/skills.py +27 -3
  73. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/__init__.py +2 -0
  74. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/integration.py +28 -14
  75. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/manager.py +56 -88
  76. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/registry.py +62 -5
  77. cecli_dev-0.100.0/cecli/hooks/service.py +65 -0
  78. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/io.py +27 -15
  79. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/linter.py +36 -36
  80. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/main.py +19 -17
  81. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/models.py +5 -1
  82. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/agent.yml +1 -1
  83. cecli_dev-0.100.0/cecli/prompts/subagent.yml +62 -0
  84. cecli_dev-0.100.0/cecli/queries/tree-sitter-language-pack/bash-tags.scm +8 -0
  85. cecli_dev-0.100.0/cecli/queries/tree-sitter-languages/bash-tags.scm +8 -0
  86. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/repomap.py +30 -7
  87. cecli_dev-0.100.0/cecli/run_cmd.py +284 -0
  88. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/__init__.py +2 -0
  89. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/command.py +5 -3
  90. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/context_manager.py +51 -5
  91. cecli_dev-0.100.0/cecli/tools/delegate.py +125 -0
  92. cecli_dev-0.100.0/cecli/tools/finished.py +86 -0
  93. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/read_range.py +95 -16
  94. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/utils/base_tool.py +2 -2
  95. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/app.py +430 -49
  96. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/io.py +185 -55
  97. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/styles.tcss +2 -1
  98. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/__init__.py +2 -0
  99. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/file_list.py +12 -2
  100. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/footer.py +61 -4
  101. cecli_dev-0.100.0/cecli/tui/widgets/input_container.py +139 -0
  102. cecli_dev-0.100.0/cecli/tui/widgets/subagent_pills.py +164 -0
  103. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/worker.py +33 -7
  104. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/agent-mode.md +28 -28
  105. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/hooks.md +11 -1
  106. cecli_dev-0.100.0/cecli/website/docs/config/subagents.md +241 -0
  107. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/commands.md +1 -0
  108. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/PKG-INFO +9 -8
  109. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/SOURCES.txt +32 -2
  110. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/requires.txt +4 -3
  111. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/pyproject.toml +0 -1
  112. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/pytest.ini +1 -0
  113. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/common-constraints.txt +3 -1
  114. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-dev.in +2 -1
  115. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-dev.txt +25 -9
  116. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-help.txt +20 -18
  117. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-playwright.txt +1 -1
  118. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/pip-compile.sh +1 -0
  119. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_coder.py +17 -9
  120. cecli_dev-0.100.0/tests/basic/test_linter.py +74 -0
  121. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_reasoning.py +4 -4
  122. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_repomap.py +3 -0
  123. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_run_cmd.py +2 -2
  124. cecli_dev-0.100.0/tests/coders/test_coder_switching.py +74 -0
  125. cecli_dev-0.100.0/tests/commands/test_compaction.py +105 -0
  126. cecli_dev-0.100.0/tests/commands/test_switch_agent.py +104 -0
  127. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/conversations/test_conversation_integration.py +1 -1
  128. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/conversations/test_conversation_system.py +1 -1
  129. cecli_dev-0.100.0/tests/fixtures/languages/bash/test.sh +19 -0
  130. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_repomap_workspace.py +4 -0
  131. cecli_dev-0.99.12/tests/helpers/observations/test_observation_manager.py → cecli_dev-0.100.0/tests/helpers/observations/test_observation_service.py +7 -7
  132. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/hooks/test_manager.py +116 -83
  133. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/hooks/test_registry.py +25 -13
  134. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/scrape/test_playwright_disable.py +2 -0
  135. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/scrape/test_scrape.py +2 -0
  136. cecli_dev-0.100.0/tests/subagents/__init__.py +0 -0
  137. cecli_dev-0.100.0/tests/subagents/conftest.py +60 -0
  138. cecli_dev-0.100.0/tests/subagents/test_commands.py +238 -0
  139. cecli_dev-0.100.0/tests/subagents/test_config.py +109 -0
  140. cecli_dev-0.100.0/tests/subagents/test_delegate.py +124 -0
  141. cecli_dev-0.100.0/tests/subagents/test_finished.py +109 -0
  142. cecli_dev-0.100.0/tests/subagents/test_io_proxy.py +187 -0
  143. cecli_dev-0.100.0/tests/subagents/test_service.py +653 -0
  144. cecli_dev-0.100.0/tests/subagents/test_sub_agent_coder.py +153 -0
  145. cecli_dev-0.99.12/cecli/run_cmd.py +0 -143
  146. cecli_dev-0.99.12/cecli/tools/finished.py +0 -41
  147. cecli_dev-0.99.12/cecli/tui/widgets/input_container.py +0 -24
  148. cecli_dev-0.99.12/tests/basic/test_linter.py +0 -92
  149. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.dockerignore +0 -0
  150. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.flake8 +0 -0
  151. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.gitattributes +0 -0
  152. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  153. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/check_pypi_version.yml +0 -0
  154. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/docker-build-test.yml +0 -0
  155. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/docker-release.yml +0 -0
  156. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/issues.yml +0 -0
  157. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/pages.yml +0 -0
  158. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/pre-commit.yml +0 -0
  159. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/ubuntu-tests.yml +0 -0
  160. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/windows-tests.yml +0 -0
  161. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  162. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.gitignore +0 -0
  163. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/.pre-commit-config.yaml +0 -0
  164. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/CHANGELOG.md +0 -0
  165. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/CNAME +0 -0
  166. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/CONTRIBUTING.md +0 -0
  167. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/HISTORY.md +0 -0
  168. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/LICENSE.txt +0 -0
  169. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/MANIFEST.in +0 -0
  170. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/Dockerfile +0 -0
  171. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/README.md +0 -0
  172. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/__init__.py +0 -0
  173. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/benchmark.py +0 -0
  174. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/benchmark_classic.py +0 -0
  175. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/clone-exercism.sh +0 -0
  176. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/cpp-test.sh +0 -0
  177. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/docker.sh +0 -0
  178. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/docker_build.sh +0 -0
  179. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/install-docker-ubuntu.sh +0 -0
  180. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/npm-test.sh +0 -0
  181. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/over_time.py +0 -0
  182. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/plot.sh +0 -0
  183. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/plots.py +0 -0
  184. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/problem_stats.py +0 -0
  185. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/prompts.py +0 -0
  186. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/refactor_tools.py +0 -0
  187. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/rsync.sh +0 -0
  188. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/rungrid.py +0 -0
  189. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/swe-bench-lite.txt +0 -0
  190. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/swe-bench.txt +0 -0
  191. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/swe_bench.py +0 -0
  192. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/test_benchmark.py +0 -0
  193. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/variations.1.sh +0 -0
  194. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/variations.2.sh +0 -0
  195. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/variations.3.sh +0 -0
  196. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/benchmark/variations.4.sh +0 -0
  197. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/__init__.py +0 -0
  198. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/__main__.py +0 -0
  199. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/args_formatter.py +0 -0
  200. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/change_tracker.py +0 -0
  201. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/architect_coder.py +0 -0
  202. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/ask_coder.py +0 -0
  203. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/chat_chunks.py +0 -0
  204. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/context_coder.py +0 -0
  205. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/copypaste_coder.py +0 -0
  206. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editblock_coder.py +0 -0
  207. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  208. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editblock_func_coder.py +0 -0
  209. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  210. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editor_editblock_coder.py +0 -0
  211. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/editor_whole_coder.py +0 -0
  212. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/hashline_coder.py +0 -0
  213. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/help_coder.py +0 -0
  214. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/patch_coder.py +0 -0
  215. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/search_replace.py +0 -0
  216. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/shell.py +0 -0
  217. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  218. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/udiff_coder.py +0 -0
  219. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/udiff_simple.py +0 -0
  220. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/wholefile_coder.py +0 -0
  221. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/coders/wholefile_func_coder.py +0 -0
  222. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/agent.py +0 -0
  223. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/architect.py +0 -0
  224. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/ask.py +0 -0
  225. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/chat_mode.py +0 -0
  226. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/code.py +0 -0
  227. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/command_prefix.py +0 -0
  228. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/commit.py +0 -0
  229. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/compact.py +0 -0
  230. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/context.py +0 -0
  231. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/git.py +0 -0
  232. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/hashline.py +0 -0
  233. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/help.py +0 -0
  234. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/history_search.py +0 -0
  235. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/map_refresh.py +0 -0
  236. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/multiline_mode.py +0 -0
  237. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/quit.py +0 -0
  238. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/reasoning_effort.py +0 -0
  239. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/report.py +0 -0
  240. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/rules.py +0 -0
  241. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  242. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/terminal_setup.py +0 -0
  243. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/test.py +0 -0
  244. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/utils/__init__.py +0 -0
  245. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/utils/helpers.py +0 -0
  246. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/utils/registry.py +0 -0
  247. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/utils/save_load_manager.py +0 -0
  248. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/web.py +0 -0
  249. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/commands/workspace.py +0 -0
  250. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/deprecated_args.py +0 -0
  251. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/diffs.py +0 -0
  252. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/dump.py +0 -0
  253. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/editor.py +0 -0
  254. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/exceptions.py +0 -0
  255. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/format_settings.py +0 -0
  256. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/help.py +0 -0
  257. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/help_pats.py +0 -0
  258. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/__init__.py +0 -0
  259. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/background_commands.py +0 -0
  260. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/command_parser.py +0 -0
  261. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/__init__.py +0 -0
  262. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/base_message.py +0 -0
  263. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/tags.py +0 -0
  264. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/conversation/utils.py +0 -0
  265. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/copypaste.py +0 -0
  266. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/file_searcher.py +0 -0
  267. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  268. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/dump.py +0 -0
  269. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  270. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/main.py +0 -0
  271. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  272. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  273. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/hashline.py +0 -0
  274. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/hashpos/__init__.py +0 -0
  275. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  276. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/model_providers.py +0 -0
  277. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/monorepo/__init__.py +0 -0
  278. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/monorepo/config.py +0 -0
  279. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/monorepo/project.py +0 -0
  280. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/monorepo/workspace.py +0 -0
  281. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/monorepo/worktree.py +0 -0
  282. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/nested.py +0 -0
  283. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/observations/__init__.py +0 -0
  284. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/plugin_manager.py +0 -0
  285. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/profiler.py +0 -0
  286. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/requests.py +0 -0
  287. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/responses.py +0 -0
  288. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/helpers/similarity.py +0 -0
  289. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/history.py +0 -0
  290. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/base.py +0 -0
  291. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/hooks/types.py +0 -0
  292. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/interruptible_input.py +0 -0
  293. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/llm.py +0 -0
  294. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mcp/__init__.py +0 -0
  295. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mcp/manager.py +0 -0
  296. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mcp/oauth.py +0 -0
  297. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mcp/server.py +0 -0
  298. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mcp/utils.py +0 -0
  299. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/mdstream.py +0 -0
  300. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/onboarding.py +0 -0
  301. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/__init__.py +0 -0
  302. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/architect.yml +0 -0
  303. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/ask.yml +0 -0
  304. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/base.yml +0 -0
  305. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/context.yml +0 -0
  306. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/copypaste.yml +0 -0
  307. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editblock.yml +0 -0
  308. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editblock_fenced.yml +0 -0
  309. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editblock_func.yml +0 -0
  310. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  311. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editor_editblock.yml +0 -0
  312. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/editor_whole.yml +0 -0
  313. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/hashline.yml +0 -0
  314. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/help.yml +0 -0
  315. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/patch.yml +0 -0
  316. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  317. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/udiff.yml +0 -0
  318. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/udiff_simple.yml +0 -0
  319. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/utils/__init__.py +0 -0
  320. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/utils/registry.py +0 -0
  321. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/utils/system.py +0 -0
  322. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/wholefile.yml +0 -0
  323. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/prompts/wholefile_func.yml +0 -0
  324. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  325. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  326. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  327. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  328. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  329. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  330. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  331. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  332. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  333. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  334. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  335. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  336. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  337. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  338. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  339. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  340. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  341. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  342. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  343. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  344. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  345. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  346. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  347. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  348. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  349. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  350. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  351. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  352. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  353. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  354. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  355. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  356. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  357. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  358. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  359. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  360. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  361. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  362. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  363. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  364. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  365. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  366. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  367. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  368. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  369. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  370. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  371. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  372. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  373. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  374. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  375. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  376. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  377. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  378. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  379. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  380. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  381. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  382. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/reasoning_tags.py +0 -0
  383. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/repo.py +0 -0
  384. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/report.py +0 -0
  385. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/resources/__init__.py +0 -0
  386. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/resources/model-metadata.json +0 -0
  387. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/resources/model-settings.yml +0 -0
  388. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/resources/providers.json +0 -0
  389. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/scrape.py +0 -0
  390. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/sendchat.py +0 -0
  391. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/sessions.py +0 -0
  392. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/special.py +0 -0
  393. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/command_interactive.py +0 -0
  394. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/edit_text.py +0 -0
  395. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/explore_code.py +0 -0
  396. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_branch.py +0 -0
  397. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_diff.py +0 -0
  398. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_log.py +0 -0
  399. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_remote.py +0 -0
  400. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_show.py +0 -0
  401. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/git_status.py +0 -0
  402. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/grep.py +0 -0
  403. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/load_skill.py +0 -0
  404. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/ls.py +0 -0
  405. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/remove_skill.py +0 -0
  406. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/thinking.py +0 -0
  407. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/undo_change.py +0 -0
  408. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/update_todo_list.py +0 -0
  409. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/utils/helpers.py +0 -0
  410. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/utils/output.py +0 -0
  411. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tools/utils/registry.py +0 -0
  412. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/__init__.py +0 -0
  413. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/completion_bar.py +0 -0
  414. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/input_area.py +0 -0
  415. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/key_hints.py +0 -0
  416. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/output.py +0 -0
  417. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/tui/widgets/status_bar.py +0 -0
  418. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/urls.py +0 -0
  419. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/utils.py +0 -0
  420. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/versioncheck.py +0 -0
  421. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/voice.py +0 -0
  422. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/waiting.py +0 -0
  423. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/watch.py +0 -0
  424. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/watch_prompts.py +0 -0
  425. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/Gemfile +0 -0
  426. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/blame.md +0 -0
  427. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/get-started.md +0 -0
  428. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/help-tip.md +0 -0
  429. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/help.md +0 -0
  430. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/install.md +0 -0
  431. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/keys.md +0 -0
  432. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/model-warnings.md +0 -0
  433. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/multi-line.md +0 -0
  434. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/python-m-aider.md +0 -0
  435. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/recording.css +0 -0
  436. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/recording.md +0 -0
  437. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_includes/works-best.md +0 -0
  438. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_features.scss +0 -0
  439. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_footer.scss +0 -0
  440. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_hero.scss +0 -0
  441. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_info.scss +0 -0
  442. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_layout.scss +0 -0
  443. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_reset.scss +0 -0
  444. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_testimonials.scss +0 -0
  445. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_typography.scss +0 -0
  446. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/_variables.scss +0 -0
  447. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/custom/custom.scss +0 -0
  448. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/_sass/global-overrides.scss +0 -0
  449. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  450. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/aider_conf.md +0 -0
  451. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/api-keys.md +0 -0
  452. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/custom-commands.md +0 -0
  453. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  454. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/dotenv.md +0 -0
  455. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/editor.md +0 -0
  456. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/mcp.md +0 -0
  457. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/model-aliases.md +0 -0
  458. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/options.md +0 -0
  459. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/reasoning.md +0 -0
  460. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/security.md +0 -0
  461. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/skills.md +0 -0
  462. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/tui.md +0 -0
  463. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config/workspaces.md +0 -0
  464. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/config.md +0 -0
  465. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/faq.md +0 -0
  466. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/git.md +0 -0
  467. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/index.md +0 -0
  468. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/install/docker.md +0 -0
  469. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/install/optional.md +0 -0
  470. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/install.md +0 -0
  471. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/languages.md +0 -0
  472. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  473. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/legal/privacy.md +0 -0
  474. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/anthropic.md +0 -0
  475. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/azure.md +0 -0
  476. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/bedrock.md +0 -0
  477. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/cohere.md +0 -0
  478. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/deepseek.md +0 -0
  479. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/gemini.md +0 -0
  480. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/github.md +0 -0
  481. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/groq.md +0 -0
  482. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  483. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/ollama.md +0 -0
  484. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  485. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/openai.md +0 -0
  486. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/openrouter.md +0 -0
  487. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/other.md +0 -0
  488. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/vertex.md +0 -0
  489. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/warnings.md +0 -0
  490. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms/xai.md +0 -0
  491. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/llms.md +0 -0
  492. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/more/analytics.md +0 -0
  493. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/more/edit-formats.md +0 -0
  494. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/more/infinite-output.md +0 -0
  495. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/more-info.md +0 -0
  496. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/repomap.md +0 -0
  497. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/scripting.md +0 -0
  498. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  499. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  500. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  501. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  502. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  503. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  504. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  505. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/troubleshooting.md +0 -0
  506. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/conventions.md +0 -0
  507. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/copypaste.md +0 -0
  508. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/images-urls.md +0 -0
  509. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/lint-test.md +0 -0
  510. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/modes.md +0 -0
  511. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/not-code.md +0 -0
  512. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/notifications.md +0 -0
  513. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/sessions.md +0 -0
  514. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/tips.md +0 -0
  515. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/voice.md +0 -0
  516. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage/watch.md +0 -0
  517. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/docs/usage.md +0 -0
  518. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli/website/share/index.md +0 -0
  519. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  520. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  521. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/cecli_dev.egg-info/top_level.txt +0 -0
  522. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/docker/Dockerfile +0 -0
  523. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  524. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-help.in +0 -0
  525. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements-playwright.in +0 -0
  526. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/requirements.in +0 -0
  527. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements/tree-sitter.in +0 -0
  528. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/requirements.txt +0 -0
  529. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/30k-image.py +0 -0
  530. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/Dockerfile.jekyll +0 -0
  531. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/__init__.py +0 -0
  532. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/blame.py +0 -0
  533. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/clean_metadata.py +0 -0
  534. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/cost_analyzer.py +0 -0
  535. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/cost_calculator.py +0 -0
  536. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/dl_icons.py +0 -0
  537. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/filter-chat-mode.js +0 -0
  538. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/generate_providers.py +0 -0
  539. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/get_contributor_list.js +0 -0
  540. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/get_hashline.py +0 -0
  541. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/history_prompts.py +0 -0
  542. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/homepage.py +0 -0
  543. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/issues.py +0 -0
  544. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/jekyll_build.sh +0 -0
  545. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/jekyll_run.sh +0 -0
  546. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/logo_svg.py +0 -0
  547. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/recording_audio.py +0 -0
  548. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/redact-cast.py +0 -0
  549. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/rename_to_cecli.py +0 -0
  550. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/tmux_record.sh +0 -0
  551. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/tsl_pack_langs.py +0 -0
  552. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/update-blame.sh +0 -0
  553. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/update-docs.sh +0 -0
  554. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/update-history.py +0 -0
  555. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/versionbump.py +0 -0
  556. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/scripts/yank-old-versions.py +0 -0
  557. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/setup.cfg +0 -0
  558. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/shim.pyproject.toml +0 -0
  559. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/__init__.py +0 -0
  560. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/__init__.py +0 -0
  561. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_aws_credentials.py +0 -0
  562. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_background_commands.py +0 -0
  563. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_commands.py +0 -0
  564. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_custom_commands.py +0 -0
  565. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_deprecated.py +0 -0
  566. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_editblock.py +0 -0
  567. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_editor.py +0 -0
  568. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_exceptions.py +0 -0
  569. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_find_or_blocks.py +0 -0
  570. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_hashline.py +0 -0
  571. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_history.py +0 -0
  572. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_io.py +0 -0
  573. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_main.py +0 -0
  574. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_model_info_manager.py +0 -0
  575. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_model_provider_manager.py +0 -0
  576. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_models.py +0 -0
  577. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_onboarding.py +0 -0
  578. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_plugin_manager.py +0 -0
  579. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_prompts.py +0 -0
  580. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_repo.py +0 -0
  581. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_sanity_check_repo.py +0 -0
  582. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_scripting.py +0 -0
  583. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_sendchat.py +0 -0
  584. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_sessions.py +0 -0
  585. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_skills.py +0 -0
  586. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_special.py +0 -0
  587. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_ssl_verification.py +0 -0
  588. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_udiff.py +0 -0
  589. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_urls.py +0 -0
  590. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_voice.py +0 -0
  591. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_watch.py +0 -0
  592. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/basic/test_wholefile.py +0 -0
  593. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/coders/test_copypaste_coder.py +0 -0
  594. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/conftest.py +0 -0
  595. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  596. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/chat-history.md +0 -0
  597. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  598. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/c/test.c +0 -0
  599. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  600. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  601. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  602. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  603. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  604. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/d/test.d +0 -0
  605. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/dart/test.dart +0 -0
  606. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/elisp/test.el +0 -0
  607. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  608. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/elm/test.elm +0 -0
  609. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  610. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/go/test.go +0 -0
  611. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  612. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  613. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/java/test.java +0 -0
  614. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/javascript/test.js +0 -0
  615. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  616. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/lua/test.lua +0 -0
  617. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/matlab/test.m +0 -0
  618. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  619. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  620. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/php/test.php +0 -0
  621. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/pony/test.pony +0 -0
  622. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/properties/test.properties +0 -0
  623. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/python/test.py +0 -0
  624. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/ql/test.ql +0 -0
  625. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/r/test.r +0 -0
  626. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  627. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  628. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/rust/test.rs +0 -0
  629. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/scala/test.scala +0 -0
  630. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  631. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/swift/test.swift +0 -0
  632. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  633. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  634. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/udev/test.rules +0 -0
  635. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/languages/zig/test.zig +0 -0
  636. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  637. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  638. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  639. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/watch.js +0 -0
  640. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/watch.lisp +0 -0
  641. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/watch.py +0 -0
  642. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/fixtures/watch_question.js +0 -0
  643. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/help/test_help.py +0 -0
  644. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_config.py +0 -0
  645. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_config_active.py +0 -0
  646. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  647. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/helpers/monorepo/test_workspace.py +0 -0
  648. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/hooks/__init__.py +0 -0
  649. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/hooks/test_base.py +0 -0
  650. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/mcp/__init__.py +0 -0
  651. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/mcp/test_manager.py +0 -0
  652. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_get_lines.py +0 -0
  653. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_git_branch.py +0 -0
  654. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_git_diff.py +0 -0
  655. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_grep.py +0 -0
  656. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_insert_block.py +0 -0
  657. {cecli_dev-0.99.12 → cecli_dev-0.100.0}/tests/tools/test_registry.py +0 -0
  658. {cecli_dev-0.99.12 → 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.12
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:
@@ -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.0'
22
+ __version_tuple__ = version_tuple = (0, 100, 0)
23
23
 
24
- __commit_id__ = commit_id = 'gdd84a43a9'
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 = []
@@ -317,6 +359,7 @@ class AgentCoder(Coder):
317
359
  "git_status",
318
360
  "symbol_outline",
319
361
  "skills",
362
+ "sub_agents",
320
363
  "loaded_skills",
321
364
  ]
322
365
  for block_type in block_types:
@@ -352,6 +395,10 @@ class AgentCoder(Coder):
352
395
  content = self.get_skills_context()
353
396
  elif block_name == "loaded_skills":
354
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()
355
402
  if content is not None:
356
403
  self.context_blocks_cache[block_name] = content
357
404
  return content
@@ -460,7 +507,20 @@ class AgentCoder(Coder):
460
507
  ConversationService.get_chunks(self).add_file_list_reminder()
461
508
 
462
509
  # Add system messages (including examples and reminder)
463
- 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()
464
524
 
465
525
  # Add static context blocks (priority 50 - between SYSTEM and EXAMPLES)
466
526
  ConversationService.get_chunks(self).add_static_context_blocks()
@@ -745,7 +805,13 @@ class AgentCoder(Coder):
745
805
 
746
806
  if self.auto_lint and used_write_tool:
747
807
  edited = list(self.files_edited_by_tools)
748
- 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
+
749
815
  self.lint_outcome = not lint_errors
750
816
 
751
817
  if lint_errors:
@@ -808,6 +874,7 @@ class AgentCoder(Coder):
808
874
  # 1. Handle Tool Execution Follow-up (Reflection)
809
875
  if self.agent_finished:
810
876
  self.tool_usage_history = []
877
+ self.tool_call_vectors = []
811
878
  self.reflected_message = None
812
879
  if self.files_edited_by_tools:
813
880
  _ = await self.auto_commit(self.files_edited_by_tools)
@@ -847,7 +914,12 @@ class AgentCoder(Coder):
847
914
  " its outputs are no longer necessary"
848
915
  )
849
916
  self.io.tool_output(waiting_msg)
850
- 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")
851
923
  return True
852
924
 
853
925
  # Check for recently finished commands that need reflection
@@ -860,11 +932,15 @@ class AgentCoder(Coder):
860
932
  self.tool_usage_history = []
861
933
  return True
862
934
 
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
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
868
944
 
869
945
  if tool_calls_found and self.num_reflections < self.max_reflections:
870
946
  self.tool_call_count = 0
@@ -1384,6 +1460,42 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1384
1460
  self.io.tool_error(f"Error generating skills content context: {str(e)}")
1385
1461
  return None
1386
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
+
1387
1499
  def get_background_command_output(self):
1388
1500
  """
1389
1501
  Get background command output to append after the main message.