cecli-dev 0.100.7rc2__tar.gz → 0.100.8__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 (678) hide show
  1. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/PKG-INFO +1 -1
  2. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/__init__.py +1 -1
  3. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/_version.py +3 -3
  4. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/agent_coder.py +30 -17
  5. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/base_coder.py +23 -6
  6. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/__init__.py +5 -1
  7. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/core.py +19 -0
  8. cecli_dev-0.100.8/cecli/commands/hot_reload.py +39 -0
  9. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/load_mcp.py +27 -1
  10. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/remove_mcp.py +33 -14
  11. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/run.py +1 -1
  12. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/spawn_agent.py +3 -1
  13. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/utils/helpers.py +87 -1
  14. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/agents/service.py +36 -6
  15. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/files.py +3 -3
  16. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/hashline.py +41 -4
  17. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/main.py +74 -9
  18. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/models.py +2 -7
  19. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/_yield.py +45 -1
  20. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/edit_text.py +5 -6
  21. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/read_range.py +11 -3
  22. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/__init__.py +14 -2
  23. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/app.py +8 -2
  24. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/io.py +1 -1
  25. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/completion_bar.py +1 -0
  26. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/input_area.py +16 -2
  27. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/worker.py +94 -37
  28. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/PKG-INFO +1 -1
  29. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/SOURCES.txt +1 -0
  30. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_hashline_closure.py +221 -0
  31. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_commands.py +3 -1
  32. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_get_lines.py +10 -0
  33. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_read_range_execute.py +9 -2
  34. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.dockerignore +0 -0
  35. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.flake8 +0 -0
  36. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.gitattributes +0 -0
  37. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  38. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/check_pypi_version.yml +0 -0
  39. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/docker-build-test.yml +0 -0
  40. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/docker-release.yml +0 -0
  41. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/issues.yml +0 -0
  42. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/pages.yml +0 -0
  43. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/pre-commit.yml +0 -0
  44. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/release.yml +0 -0
  45. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/ubuntu-tests.yml +0 -0
  46. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/windows-tests.yml +0 -0
  47. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.github/workflows/windows_check_pypi_version.yml +0 -0
  48. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.gitignore +0 -0
  49. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/.pre-commit-config.yaml +0 -0
  50. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/CHANGELOG.md +0 -0
  51. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/CNAME +0 -0
  52. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/CONTRIBUTING.md +0 -0
  53. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/HISTORY.md +0 -0
  54. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/LICENSE.txt +0 -0
  55. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/MANIFEST.in +0 -0
  56. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/README.md +0 -0
  57. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/Dockerfile +0 -0
  58. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/README.md +0 -0
  59. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/__init__.py +0 -0
  60. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/benchmark.py +0 -0
  61. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/benchmark_classic.py +0 -0
  62. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/clone-exercism.sh +0 -0
  63. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/cpp-test.sh +0 -0
  64. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/docker.sh +0 -0
  65. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/docker_build.sh +0 -0
  66. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/install-docker-ubuntu.sh +0 -0
  67. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/npm-test.sh +0 -0
  68. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/over_time.py +0 -0
  69. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/plot.sh +0 -0
  70. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/plots.py +0 -0
  71. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/problem_stats.py +0 -0
  72. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/prompts.py +0 -0
  73. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/refactor_tools.py +0 -0
  74. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/rsync.sh +0 -0
  75. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/rungrid.py +0 -0
  76. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/swe-bench-lite.txt +0 -0
  77. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/swe-bench.txt +0 -0
  78. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/swe_bench.py +0 -0
  79. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/test_benchmark.py +0 -0
  80. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/variations.1.sh +0 -0
  81. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/variations.2.sh +0 -0
  82. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/variations.3.sh +0 -0
  83. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/benchmark/variations.4.sh +0 -0
  84. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/__main__.py +0 -0
  85. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/args.py +0 -0
  86. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/args_formatter.py +0 -0
  87. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/change_tracker.py +0 -0
  88. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/__init__.py +0 -0
  89. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/architect_coder.py +0 -0
  90. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/ask_coder.py +0 -0
  91. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/chat_chunks.py +0 -0
  92. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/context_coder.py +0 -0
  93. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/copypaste_coder.py +0 -0
  94. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editblock_coder.py +0 -0
  95. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editblock_fenced_coder.py +0 -0
  96. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editblock_func_coder.py +0 -0
  97. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  98. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editor_editblock_coder.py +0 -0
  99. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/editor_whole_coder.py +0 -0
  100. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/hashline_coder.py +0 -0
  101. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/help_coder.py +0 -0
  102. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/patch_coder.py +0 -0
  103. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/search_replace.py +0 -0
  104. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/shell.py +0 -0
  105. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/single_wholefile_func_coder.py +0 -0
  106. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/sub_agent_coder.py +0 -0
  107. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/udiff_coder.py +0 -0
  108. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/udiff_simple.py +0 -0
  109. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/wholefile_coder.py +0 -0
  110. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/coders/wholefile_func_coder.py +0 -0
  111. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/add.py +0 -0
  112. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/agent.py +0 -0
  113. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/agent_model.py +0 -0
  114. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/architect.py +0 -0
  115. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/ask.py +0 -0
  116. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/chat_mode.py +0 -0
  117. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/clear.py +0 -0
  118. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/code.py +0 -0
  119. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/command_prefix.py +0 -0
  120. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/commit.py +0 -0
  121. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/compact.py +0 -0
  122. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/context.py +0 -0
  123. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/context_blocks.py +0 -0
  124. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/context_management.py +0 -0
  125. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/copy.py +0 -0
  126. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/copy_context.py +0 -0
  127. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/diff.py +0 -0
  128. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/drop.py +0 -0
  129. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/editor.py +0 -0
  130. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/editor_model.py +0 -0
  131. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/exclude_skill.py +0 -0
  132. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/exit.py +0 -0
  133. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/git.py +0 -0
  134. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/hashline.py +0 -0
  135. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/help.py +0 -0
  136. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/history_search.py +0 -0
  137. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/hooks.py +0 -0
  138. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/include_skill.py +0 -0
  139. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/lint.py +0 -0
  140. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/list_sessions.py +0 -0
  141. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/list_skills.py +0 -0
  142. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/load.py +0 -0
  143. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/load_hook.py +0 -0
  144. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/load_session.py +0 -0
  145. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/load_skill.py +0 -0
  146. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/ls.py +0 -0
  147. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/map.py +0 -0
  148. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/map_refresh.py +0 -0
  149. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/merge.py +0 -0
  150. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/model.py +0 -0
  151. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/models.py +0 -0
  152. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/multiline_mode.py +0 -0
  153. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/paste.py +0 -0
  154. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/quit.py +0 -0
  155. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/read_only.py +0 -0
  156. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/read_only_stub.py +0 -0
  157. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/reap_agent.py +0 -0
  158. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/reasoning_effort.py +0 -0
  159. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/remove_hook.py +0 -0
  160. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/remove_skill.py +0 -0
  161. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/report.py +0 -0
  162. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/reset.py +0 -0
  163. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/rules.py +0 -0
  164. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/save.py +0 -0
  165. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/save_session.py +0 -0
  166. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/settings.py +0 -0
  167. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/switch_agent.py +0 -0
  168. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/terminal_data/linux.keytab +0 -0
  169. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/terminal_setup.py +0 -0
  170. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/test.py +0 -0
  171. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/think_tokens.py +0 -0
  172. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/tokens.py +0 -0
  173. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/undo.py +0 -0
  174. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/utils/__init__.py +0 -0
  175. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/utils/base_command.py +0 -0
  176. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/utils/registry.py +0 -0
  177. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/utils/save_load_manager.py +0 -0
  178. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/voice.py +0 -0
  179. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/weak_model.py +0 -0
  180. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/web.py +0 -0
  181. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/commands/workspace.py +0 -0
  182. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/deprecated_args.py +0 -0
  183. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/diffs.py +0 -0
  184. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/dump.py +0 -0
  185. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/editor.py +0 -0
  186. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/exceptions.py +0 -0
  187. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/format_settings.py +0 -0
  188. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/help.py +0 -0
  189. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/help_pats.py +0 -0
  190. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/__init__.py +0 -0
  191. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/agents/__init__.py +0 -0
  192. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/agents/config.py +0 -0
  193. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/background_commands.py +0 -0
  194. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/command_parser.py +0 -0
  195. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/__init__.py +0 -0
  196. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/base_message.py +0 -0
  197. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/integration.py +0 -0
  198. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/manager.py +0 -0
  199. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/service.py +0 -0
  200. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/tags.py +0 -0
  201. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/conversation/utils.py +0 -0
  202. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/copypaste.py +0 -0
  203. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/coroutines.py +0 -0
  204. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/crypto.py +0 -0
  205. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_searcher.py +0 -0
  206. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/__init__.py +0 -0
  207. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/builders.py +0 -0
  208. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/ignore.py +0 -0
  209. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/ngram_index.py +0 -0
  210. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/service.py +0 -0
  211. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/file_system/trie_index.py +0 -0
  212. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/__init__.py +0 -0
  213. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/dump.py +0 -0
  214. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  215. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/main.py +0 -0
  216. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/parsers.py +0 -0
  217. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/grep_ast/tsl.py +0 -0
  218. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/hashpos/__init__.py +0 -0
  219. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/hashpos/hashpos.py +0 -0
  220. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  221. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/io_proxy.py +0 -0
  222. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/leak_detect.py +0 -0
  223. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/model_providers.py +0 -0
  224. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/__init__.py +0 -0
  225. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/config.py +0 -0
  226. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/local_workspace.py +0 -0
  227. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/project.py +0 -0
  228. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/workspace.py +0 -0
  229. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/monorepo/worktree.py +0 -0
  230. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/nested.py +0 -0
  231. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/observations/__init__.py +0 -0
  232. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/observations/service.py +0 -0
  233. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/plugin_manager.py +0 -0
  234. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/profiler.py +0 -0
  235. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/requests.py +0 -0
  236. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/responses.py +0 -0
  237. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/similarity.py +0 -0
  238. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/skills.py +0 -0
  239. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/helpers/threading.py +0 -0
  240. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/history.py +0 -0
  241. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/__init__.py +0 -0
  242. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/base.py +0 -0
  243. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/integration.py +0 -0
  244. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/manager.py +0 -0
  245. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/registry.py +0 -0
  246. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/service.py +0 -0
  247. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/hooks/types.py +0 -0
  248. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/interruptible_input.py +0 -0
  249. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/io.py +0 -0
  250. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/linter.py +0 -0
  251. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/llm.py +0 -0
  252. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mcp/__init__.py +0 -0
  253. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mcp/manager.py +0 -0
  254. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mcp/oauth.py +0 -0
  255. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mcp/server.py +0 -0
  256. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mcp/utils.py +0 -0
  257. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/mdstream.py +0 -0
  258. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/onboarding.py +0 -0
  259. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/__init__.py +0 -0
  260. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/agent.yml +0 -0
  261. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/architect.yml +0 -0
  262. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/ask.yml +0 -0
  263. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/base.yml +0 -0
  264. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/context.yml +0 -0
  265. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/copypaste.yml +0 -0
  266. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editblock.yml +0 -0
  267. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editblock_fenced.yml +0 -0
  268. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editblock_func.yml +0 -0
  269. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editor_diff_fenced.yml +0 -0
  270. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editor_editblock.yml +0 -0
  271. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/editor_whole.yml +0 -0
  272. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/hashline.yml +0 -0
  273. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/help.yml +0 -0
  274. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/patch.yml +0 -0
  275. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/single_wholefile_func.yml +0 -0
  276. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/subagent.yml +0 -0
  277. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/udiff.yml +0 -0
  278. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/udiff_simple.yml +0 -0
  279. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/utils/__init__.py +0 -0
  280. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/utils/registry.py +0 -0
  281. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/utils/system.py +0 -0
  282. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/wholefile.yml +0 -0
  283. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/prompts/wholefile_func.yml +0 -0
  284. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  285. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  286. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  287. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  288. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  289. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  290. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  291. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  292. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  293. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  294. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  295. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  296. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  297. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  298. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  299. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  300. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  301. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  302. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  303. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  304. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  305. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  306. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  307. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  308. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  309. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  310. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  311. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  312. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  313. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  314. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  315. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  316. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/README.md +0 -0
  317. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  318. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  319. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  320. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  321. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  322. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  323. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  324. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  325. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  326. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  327. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  328. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  329. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  330. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  331. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  332. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  333. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  334. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  335. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  336. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  337. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  338. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  339. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  340. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  341. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  342. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  343. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  344. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/reasoning_tags.py +0 -0
  345. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/repo.py +0 -0
  346. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/repomap.py +0 -0
  347. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/report.py +0 -0
  348. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/resources/__init__.py +0 -0
  349. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/resources/model-metadata.json +0 -0
  350. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/resources/model-settings.yml +0 -0
  351. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/resources/providers.json +0 -0
  352. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/run_cmd.py +0 -0
  353. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/scrape.py +0 -0
  354. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/sendchat.py +0 -0
  355. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/sessions.py +0 -0
  356. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/special.py +0 -0
  357. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/__init__.py +0 -0
  358. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/command.py +0 -0
  359. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/command_interactive.py +0 -0
  360. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/context_manager.py +0 -0
  361. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/delegate.py +0 -0
  362. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/explore_code.py +0 -0
  363. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_branch.py +0 -0
  364. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_diff.py +0 -0
  365. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_log.py +0 -0
  366. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_remote.py +0 -0
  367. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_show.py +0 -0
  368. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/git_status.py +0 -0
  369. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/grep.py +0 -0
  370. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/load_skill.py +0 -0
  371. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/ls.py +0 -0
  372. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/remove_skill.py +0 -0
  373. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/thinking.py +0 -0
  374. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/undo_change.py +0 -0
  375. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/update_todo_list.py +0 -0
  376. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/utils/base_tool.py +0 -0
  377. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/utils/helpers.py +0 -0
  378. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/utils/output.py +0 -0
  379. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/utils/registry.py +0 -0
  380. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/validations/__init__.py +0 -0
  381. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tools/validations/validations.py +0 -0
  382. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/styles.tcss +0 -0
  383. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/__init__.py +0 -0
  384. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/file_list.py +0 -0
  385. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/footer.py +0 -0
  386. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/input_container.py +0 -0
  387. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/key_hints.py +0 -0
  388. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/output.py +0 -0
  389. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/status_bar.py +0 -0
  390. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/tui/widgets/subagent_pills.py +0 -0
  391. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/urls.py +0 -0
  392. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/utils.py +0 -0
  393. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/versioncheck.py +0 -0
  394. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/voice.py +0 -0
  395. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/waiting.py +0 -0
  396. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/watch.py +0 -0
  397. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/watch_prompts.py +0 -0
  398. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/Gemfile +0 -0
  399. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/blame.md +0 -0
  400. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/get-started.md +0 -0
  401. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/help-tip.md +0 -0
  402. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/help.md +0 -0
  403. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/install.md +0 -0
  404. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/keys.md +0 -0
  405. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/model-warnings.md +0 -0
  406. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/multi-line.md +0 -0
  407. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/python-m-aider.md +0 -0
  408. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/recording.css +0 -0
  409. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/recording.md +0 -0
  410. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_includes/works-best.md +0 -0
  411. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_features.scss +0 -0
  412. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_footer.scss +0 -0
  413. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_hero.scss +0 -0
  414. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_info.scss +0 -0
  415. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_layout.scss +0 -0
  416. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_reset.scss +0 -0
  417. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_testimonials.scss +0 -0
  418. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_typography.scss +0 -0
  419. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/_variables.scss +0 -0
  420. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/custom/custom.scss +0 -0
  421. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/_sass/global-overrides.scss +0 -0
  422. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/adv-model-settings.md +0 -0
  423. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/agent-mode.md +0 -0
  424. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/aider_conf.md +0 -0
  425. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/api-keys.md +0 -0
  426. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/custom-commands.md +0 -0
  427. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  428. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/dotenv.md +0 -0
  429. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/editor.md +0 -0
  430. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/hooks.md +0 -0
  431. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/mcp.md +0 -0
  432. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/model-aliases.md +0 -0
  433. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/model-configuration.md +0 -0
  434. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/options.md +0 -0
  435. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/reasoning.md +0 -0
  436. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/security.md +0 -0
  437. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/skills.md +0 -0
  438. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/subagents.md +0 -0
  439. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/tui.md +0 -0
  440. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config/workspaces.md +0 -0
  441. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/config.md +0 -0
  442. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/faq.md +0 -0
  443. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/git.md +0 -0
  444. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/index.md +0 -0
  445. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/install/docker.md +0 -0
  446. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/install/optional.md +0 -0
  447. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/install.md +0 -0
  448. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/languages.md +0 -0
  449. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  450. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/legal/privacy.md +0 -0
  451. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/anthropic.md +0 -0
  452. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/azure.md +0 -0
  453. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/bedrock.md +0 -0
  454. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/cohere.md +0 -0
  455. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/deepseek.md +0 -0
  456. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/gemini.md +0 -0
  457. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/github.md +0 -0
  458. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/groq.md +0 -0
  459. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/lm-studio.md +0 -0
  460. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/ollama.md +0 -0
  461. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/openai-compat.md +0 -0
  462. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/openai.md +0 -0
  463. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/openrouter.md +0 -0
  464. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/other.md +0 -0
  465. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/vertex.md +0 -0
  466. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/warnings.md +0 -0
  467. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms/xai.md +0 -0
  468. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/llms.md +0 -0
  469. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/more/analytics.md +0 -0
  470. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/more/edit-formats.md +0 -0
  471. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/more/infinite-output.md +0 -0
  472. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/more-info.md +0 -0
  473. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/repomap.md +0 -0
  474. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/scripting.md +0 -0
  475. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  476. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  477. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/imports.md +0 -0
  478. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  479. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/support.md +0 -0
  480. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  481. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  482. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/troubleshooting.md +0 -0
  483. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/commands.md +0 -0
  484. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/conventions.md +0 -0
  485. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/copypaste.md +0 -0
  486. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/images-urls.md +0 -0
  487. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/lint-test.md +0 -0
  488. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/modes.md +0 -0
  489. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/not-code.md +0 -0
  490. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/notifications.md +0 -0
  491. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/sessions.md +0 -0
  492. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/tips.md +0 -0
  493. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/voice.md +0 -0
  494. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage/watch.md +0 -0
  495. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/docs/usage.md +0 -0
  496. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli/website/share/index.md +0 -0
  497. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/dependency_links.txt +0 -0
  498. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/entry_points.txt +0 -0
  499. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/requires.txt +0 -0
  500. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/cecli_dev.egg-info/top_level.txt +0 -0
  501. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/docker/Dockerfile +0 -0
  502. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  503. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/pyproject.toml +0 -0
  504. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/pytest.ini +0 -0
  505. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/common-constraints.txt +0 -0
  506. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-dev.in +0 -0
  507. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-dev.txt +0 -0
  508. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-help.in +0 -0
  509. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-help.txt +0 -0
  510. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-playwright.in +0 -0
  511. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements-playwright.txt +0 -0
  512. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/requirements.in +0 -0
  513. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements/tree-sitter.in +0 -0
  514. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/requirements.txt +0 -0
  515. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/30k-image.py +0 -0
  516. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/Dockerfile.jekyll +0 -0
  517. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/__init__.py +0 -0
  518. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/blame.py +0 -0
  519. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/clean_metadata.py +0 -0
  520. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/cost_analyzer.py +0 -0
  521. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/cost_calculator.py +0 -0
  522. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/dl_icons.py +0 -0
  523. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/filter-chat-mode.js +0 -0
  524. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/generate_providers.py +0 -0
  525. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/get_contributor_list.js +0 -0
  526. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/get_hashline.py +0 -0
  527. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/history_prompts.py +0 -0
  528. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/homepage.py +0 -0
  529. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/issues.py +0 -0
  530. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/jekyll_build.sh +0 -0
  531. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/jekyll_run.sh +0 -0
  532. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/logo_svg.py +0 -0
  533. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/pip-compile.sh +0 -0
  534. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/recording_audio.py +0 -0
  535. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/redact-cast.py +0 -0
  536. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/rename_to_cecli.py +0 -0
  537. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/tmux_record.sh +0 -0
  538. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/tsl_pack_langs.py +0 -0
  539. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/update-blame.sh +0 -0
  540. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/update-docs.sh +0 -0
  541. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/update-history.py +0 -0
  542. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/versionbump.py +0 -0
  543. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/scripts/yank-old-versions.py +0 -0
  544. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/setup.cfg +0 -0
  545. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/shim.pyproject.toml +0 -0
  546. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/__init__.py +0 -0
  547. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/__init__.py +0 -0
  548. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/conftest.py +0 -0
  549. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_aws_credentials.py +0 -0
  550. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_background_commands.py +0 -0
  551. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_coder.py +0 -0
  552. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_commands.py +0 -0
  553. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_custom_commands.py +0 -0
  554. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_deprecated.py +0 -0
  555. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_editblock.py +0 -0
  556. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_editor.py +0 -0
  557. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_exceptions.py +0 -0
  558. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_find_or_blocks.py +0 -0
  559. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_hashline.py +0 -0
  560. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_history.py +0 -0
  561. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_io.py +0 -0
  562. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_linter.py +0 -0
  563. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_main.py +0 -0
  564. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_model_info_manager.py +0 -0
  565. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_model_provider_manager.py +0 -0
  566. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_models.py +0 -0
  567. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_onboarding.py +0 -0
  568. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_plugin_manager.py +0 -0
  569. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_prompts.py +0 -0
  570. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_reasoning.py +0 -0
  571. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_repo.py +0 -0
  572. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_repomap.py +0 -0
  573. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_run_cmd.py +0 -0
  574. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_sanity_check_repo.py +0 -0
  575. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_scripting.py +0 -0
  576. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_sendchat.py +0 -0
  577. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_session_args.py +0 -0
  578. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_session_crypto.py +0 -0
  579. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_sessions.py +0 -0
  580. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_sessions_manager.py +0 -0
  581. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_skills.py +0 -0
  582. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_special.py +0 -0
  583. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_ssl_verification.py +0 -0
  584. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_udiff.py +0 -0
  585. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_urls.py +0 -0
  586. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_voice.py +0 -0
  587. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_watch.py +0 -0
  588. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/basic/test_wholefile.py +0 -0
  589. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/coders/test_coder_switching.py +0 -0
  590. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/coders/test_copypaste_coder.py +0 -0
  591. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/commands/test_compaction.py +0 -0
  592. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/commands/test_switch_agent.py +0 -0
  593. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/conftest.py +0 -0
  594. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/conversations/test_conversation_integration.py +0 -0
  595. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/conversations/test_conversation_system.py +0 -0
  596. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  597. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/chat-history.md +0 -0
  598. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/arduino/test.ino +0 -0
  599. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/bash/test.sh +0 -0
  600. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/c/test.c +0 -0
  601. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/chatito/test.chatito +0 -0
  602. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/clojure/test.clj +0 -0
  603. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  604. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/cpp/test.cpp +0 -0
  605. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/csharp/test.cs +0 -0
  606. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/d/test.d +0 -0
  607. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/dart/test.dart +0 -0
  608. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/elisp/test.el +0 -0
  609. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/elixir/test.ex +0 -0
  610. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/elm/test.elm +0 -0
  611. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/gleam/test.gleam +0 -0
  612. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/go/test.go +0 -0
  613. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/haskell/test.hs +0 -0
  614. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/hcl/test.tf +0 -0
  615. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/java/test.java +0 -0
  616. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/javascript/test.js +0 -0
  617. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/kotlin/test.kt +0 -0
  618. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/lua/test.lua +0 -0
  619. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/matlab/test.m +0 -0
  620. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/ocaml/test.ml +0 -0
  621. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  622. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/php/test.php +0 -0
  623. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/pony/test.pony +0 -0
  624. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/properties/test.properties +0 -0
  625. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/python/test.py +0 -0
  626. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/ql/test.ql +0 -0
  627. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/r/test.r +0 -0
  628. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/racket/test.rkt +0 -0
  629. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/ruby/test.rb +0 -0
  630. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/rust/test.rs +0 -0
  631. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/scala/test.scala +0 -0
  632. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/solidity/test.sol +0 -0
  633. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/swift/test.swift +0 -0
  634. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/tsx/test.tsx +0 -0
  635. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/typescript/test.ts +0 -0
  636. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/udev/test.rules +0 -0
  637. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/languages/zig/test.zig +0 -0
  638. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/sample-code-base/sample.js +0 -0
  639. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/sample-code-base/sample.py +0 -0
  640. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  641. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/watch.js +0 -0
  642. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/watch.lisp +0 -0
  643. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/watch.py +0 -0
  644. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/fixtures/watch_question.js +0 -0
  645. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/help/test_help.py +0 -0
  646. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  647. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_config.py +0 -0
  648. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_config_active.py +0 -0
  649. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  650. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  651. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  652. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/monorepo/test_workspace.py +0 -0
  653. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/helpers/observations/test_observation_service.py +0 -0
  654. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/hooks/__init__.py +0 -0
  655. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/hooks/test_base.py +0 -0
  656. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/hooks/test_manager.py +0 -0
  657. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/hooks/test_registry.py +0 -0
  658. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/mcp/__init__.py +0 -0
  659. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/mcp/test_manager.py +0 -0
  660. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/scrape/test_playwright_disable.py +0 -0
  661. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/scrape/test_scrape.py +0 -0
  662. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/__init__.py +0 -0
  663. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/conftest.py +0 -0
  664. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_config.py +0 -0
  665. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_delegate.py +0 -0
  666. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_finished.py +0 -0
  667. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_io_proxy.py +0 -0
  668. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_service.py +0 -0
  669. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/subagents/test_sub_agent_coder.py +0 -0
  670. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_extractions.py +0 -0
  671. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_git_branch.py +0 -0
  672. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_git_diff.py +0 -0
  673. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_grep.py +0 -0
  674. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_insert_block.py +0 -0
  675. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_registry.py +0 -0
  676. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/test_tool_arguments.py +0 -0
  677. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tools/validations.py +0 -0
  678. {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8}/tests/tui/test_app.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.7rc2
3
+ Version: 0.100.8
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
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.100.6.dev"
3
+ __version__ = "0.100.8.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.100.7rc2'
22
- __version_tuple__ = version_tuple = (0, 100, 7, 'rc2')
21
+ __version__ = version = '0.100.8'
22
+ __version_tuple__ = version_tuple = (0, 100, 8)
23
23
 
24
- __commit_id__ = commit_id = 'g845b666e7'
24
+ __commit_id__ = commit_id = 'g01ae3e406'
@@ -51,6 +51,7 @@ class AgentCoder(Coder):
51
51
  if kwargs.get("uuid", None):
52
52
  self.uuid = kwargs.get("uuid")
53
53
 
54
+ self.start_up_errors = []
54
55
  self.recently_removed = {}
55
56
  self.tool_usage_history = []
56
57
  self.loaded_custom_tools = []
@@ -109,19 +110,26 @@ class AgentCoder(Coder):
109
110
 
110
111
  def post_init(self):
111
112
  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
- )
113
+
114
+ if not self._inherited_tools:
115
+ # Populate per-instance tool and server filters from config
116
+ self.registered_tools["included"] = set(
117
+ map(str.lower, self.agent_config.get("tools_includelist", []))
118
+ )
119
+ self.registered_tools["excluded"] = set(
120
+ map(str.lower, self.agent_config.get("tools_excludelist", []))
121
+ )
122
+ self.registered_servers["included"] = set(
123
+ map(str.lower, self.agent_config.get("servers_includelist", []))
124
+ )
125
+ self.registered_servers["excluded"] = set(
126
+ map(str.lower, self.agent_config.get("servers_excludelist", []))
127
+ )
128
+
129
+ for err in self.start_up_errors:
130
+ self.io.tool_warning(err)
131
+
132
+ self.start_up_errors = []
125
133
 
126
134
  def _setup_agent(self):
127
135
  os.makedirs(".cecli/temp", exist_ok=True)
@@ -143,7 +151,7 @@ class AgentCoder(Coder):
143
151
  try:
144
152
  config = json.loads(self.args.agent_config)
145
153
  except (json.JSONDecodeError, TypeError) as e:
146
- self.io.tool_warning(f"Failed to parse agent-config JSON: {e}")
154
+ self.start_up_errors.append(f"Failed to parse agent-config JSON: {e}")
147
155
  return {}
148
156
 
149
157
  config["large_file_token_threshold"] = nested.getter(
@@ -1531,15 +1539,20 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1531
1539
  try:
1532
1540
  service = AgentService.get_instance(self)
1533
1541
  children = service.get_children(self)
1534
-
1535
1542
  if not children:
1536
1543
  return None
1537
1544
 
1545
+ # Filter to non-independent children only
1546
+ dependent_children = [info for info in children if not info.independent]
1547
+
1548
+ if not dependent_children:
1549
+ return None
1550
+
1538
1551
  result = '<context name="sub_agent_states" from="agent">\n'
1539
1552
  result += "## Active Sub-Agent States\n\n"
1540
- result += f"Found {len(children)} active child sub-agent(s):\n\n"
1553
+ result += f"Found {len(dependent_children)} active child sub-agent(s):\n\n"
1541
1554
 
1542
- for info in children:
1555
+ for info in dependent_children:
1543
1556
  result += f"**{info.name}**:\n"
1544
1557
  result += f" - UUID: `{info.coder.uuid}`\n"
1545
1558
  result += f" - Status: {info.status.value}\n"
@@ -2,6 +2,7 @@
2
2
 
3
3
  import asyncio
4
4
  import base64
5
+ import copy
5
6
  import hashlib
6
7
  import json
7
8
  import locale
@@ -314,6 +315,8 @@ class Coder(metaclass=UsageMeta):
314
315
  ignore_mentions=from_coder.ignore_mentions,
315
316
  file_watcher=from_coder.file_watcher,
316
317
  mcp_manager=from_coder.mcp_manager,
318
+ registered_tools=copy.deepcopy(from_coder.registered_tools),
319
+ registered_servers=copy.deepcopy(from_coder.registered_servers),
317
320
  uuid=from_coder.uuid,
318
321
  parent_uuid=from_coder.parent_uuid,
319
322
  repo=from_coder.repo,
@@ -416,15 +419,26 @@ class Coder(metaclass=UsageMeta):
416
419
  repomap_in_memory=False,
417
420
  linear_output=False,
418
421
  security_config=None,
422
+ registered_tools=None,
423
+ registered_servers=None,
419
424
  uuid: str = "",
420
425
  parent_uuid: str = "",
421
426
  ):
427
+ from cecli.helpers.agents.service import AgentService
428
+
422
429
  # initialize from args.map_cache_dir
423
430
  self.coroutines = coroutines
424
431
  # Per-instance tool and server filtering dictionaries
425
432
  # Each contains "included" and "excluded" sets that filter from the global singletons
426
433
  self.registered_tools = {"included": set(), "excluded": set()}
427
434
  self.registered_servers = {"included": set(), "excluded": set()}
435
+ self._inherited_tools = False
436
+
437
+ if registered_tools is not None or registered_servers is not None:
438
+ self.registered_tools = registered_tools
439
+ self.registered_servers = registered_servers
440
+ self._inherited_tools = True
441
+
428
442
  self.interrupt_event = ThreadSafeEvent()
429
443
  self.uuid = str(generate_unique_id())
430
444
  self.reflected_message = None
@@ -544,8 +558,10 @@ class Coder(metaclass=UsageMeta):
544
558
 
545
559
  self.show_diffs = show_diffs
546
560
 
547
- # Initialize conversation system if enabled
561
+ # Initialize all registry sub systems
562
+ AgentService.get_instance(self)
548
563
  ConversationService.get_chunks(self).initialize_conversation_system()
564
+ ObservationService.get_instance(self)
549
565
 
550
566
  self.commands = commands or Commands(self.io, self, args=args)
551
567
  self.commands.coder = self
@@ -3675,10 +3691,11 @@ class Coder(metaclass=UsageMeta):
3675
3691
  func_err = None
3676
3692
  content_err = None
3677
3693
 
3678
- last_chunk = self.partial_response_chunks[len(self.partial_response_chunks) - 1]
3679
- if last_chunk:
3680
- if getattr(last_chunk, "usage", None):
3681
- response.usage = last_chunk.usage
3694
+ if len(self.partial_response_chunks):
3695
+ last_chunk = self.partial_response_chunks[len(self.partial_response_chunks) - 1]
3696
+ if last_chunk:
3697
+ if getattr(last_chunk, "usage", None):
3698
+ response.usage = last_chunk.usage
3682
3699
 
3683
3700
  # Collect provider-specific fields from chunks to preserve them
3684
3701
  # We need to track both by ID (primary) and index (fallback) since
@@ -4487,7 +4504,7 @@ class Coder(metaclass=UsageMeta):
4487
4504
  if output:
4488
4505
  accumulated_output += f"Output from {command}\n{output}\n"
4489
4506
 
4490
- print(accumulated_output)
4507
+ self.io.tool_output(accumulated_output)
4491
4508
 
4492
4509
  if accumulated_output.strip() and await self.io.confirm_ask(
4493
4510
  "Add command output to the chat?", allow_never=True
@@ -20,7 +20,7 @@ from .context_blocks import ContextBlocksCommand
20
20
  from .context_management import ContextManagementCommand
21
21
  from .copy import CopyCommand
22
22
  from .copy_context import CopyContextCommand
23
- from .core import Commands, SwitchCoderSignal
23
+ from .core import Commands, ReloadProgramSignal, SwitchCoderSignal
24
24
  from .diff import DiffCommand
25
25
  from .drop import DropCommand
26
26
  from .editor import EditCommand, EditorCommand
@@ -32,6 +32,7 @@ from .hashline import HashlineCommand
32
32
  from .help import HelpCommand
33
33
  from .history_search import HistorySearchCommand
34
34
  from .hooks import HooksCommand
35
+ from .hot_reload import HotReloadCommand
35
36
  from .include_skill import IncludeSkillCommand
36
37
  from .lint import LintCommand
37
38
  from .list_sessions import ListSessionsCommand
@@ -116,6 +117,7 @@ CommandRegistry.register(HashlineCommand)
116
117
  CommandRegistry.register(HelpCommand)
117
118
  CommandRegistry.register(HistorySearchCommand)
118
119
  CommandRegistry.register(HooksCommand)
120
+ CommandRegistry.register(HotReloadCommand)
119
121
  CommandRegistry.register(ReapAgentCommand)
120
122
  CommandRegistry.register(SpawnAgentCommand)
121
123
  CommandRegistry.register(SwitchAgentCommand)
@@ -197,6 +199,7 @@ __all__ = [
197
199
  "HelpCommand",
198
200
  "HistorySearchCommand",
199
201
  "HooksCommand",
202
+ "HotReloadCommand",
200
203
  "IncludeSkillCommand",
201
204
  "ReapAgentCommand",
202
205
  "SpawnAgentCommand",
@@ -223,6 +226,7 @@ __all__ = [
223
226
  "ReadOnlyCommand",
224
227
  "ReadOnlyStubCommand",
225
228
  "ReasoningEffortCommand",
229
+ "ReloadProgramSignal",
226
230
  "RemoveHookCommand",
227
231
  "RemoveMcpCommand",
228
232
  "RemoveSkillCommand",
@@ -33,6 +33,25 @@ class SwitchCoderSignal(BaseException):
33
33
  super().__init__()
34
34
 
35
35
 
36
+ class ReloadProgramSignal(BaseException):
37
+ """
38
+ Signal to reload the entire program configuration.
39
+
40
+ This is NOT an error - it's a control flow signal used to trigger
41
+ a full program reload, re-parsing config files and re-initializing
42
+ all components. Useful for hot-reloading when configuration files
43
+ change.
44
+
45
+ Note: Inherits from BaseException (like KeyboardInterrupt and SystemExit)
46
+ to avoid being caught by generic `except Exception` handlers.
47
+ """
48
+
49
+ def __init__(self, message="Reloading program configuration...", **kwargs):
50
+ self.kwargs = kwargs
51
+ self.message = message
52
+ super().__init__(self.message)
53
+
54
+
36
55
  class Commands:
37
56
  scraper = None
38
57
 
@@ -0,0 +1,39 @@
1
+ from typing import List
2
+
3
+ from cecli.commands.core import ReloadProgramSignal
4
+ from cecli.commands.utils.base_command import BaseCommand
5
+
6
+
7
+ class HotReloadCommand(BaseCommand):
8
+ NORM_NAME = "hot-reload"
9
+ DESCRIPTION = "Hot-reload all configuration and restart the program"
10
+ show_completion_notification = False
11
+
12
+ @classmethod
13
+ async def execute(cls, io, coder, args, **kwargs):
14
+ """Raise ReloadProgramSignal to trigger a full program hot-reload.
15
+
16
+ Passes the current coder as from_coder so the new coder
17
+ preserves its UUID, edit_format, and other state across
18
+ the reload cycle.
19
+ """
20
+ io.tool_output("Hot-reloading program configuration...")
21
+ raise ReloadProgramSignal(
22
+ "User requested configuration reload",
23
+ from_coder=coder,
24
+ )
25
+
26
+ @classmethod
27
+ def get_completions(cls, io, coder, args) -> List[str]:
28
+ """Get completion options for hot-reload command."""
29
+ return []
30
+
31
+ @classmethod
32
+ def get_help(cls) -> str:
33
+ """Get help text for the hot-reload command."""
34
+ help_text = super().get_help()
35
+ help_text += "\nUsage:\n"
36
+ help_text += " /hot-reload # Hot-reload all configuration files and restart\n"
37
+ help_text += "\nThis will re-read config files, reinitialize the connection,"
38
+ help_text += " and restart the chat session with the updated configuration."
39
+ return help_text
@@ -1,7 +1,11 @@
1
1
  from typing import List
2
2
 
3
3
  from cecli.commands.utils.base_command import BaseCommand
4
- from cecli.commands.utils.helpers import format_command_result
4
+ from cecli.commands.utils.helpers import (
5
+ format_command_result,
6
+ iter_all_coders,
7
+ update_server_registration,
8
+ )
5
9
 
6
10
 
7
11
  class LoadMcpCommand(BaseCommand):
@@ -51,6 +55,20 @@ class LoadMcpCommand(BaseCommand):
51
55
  if not servers_to_load and results:
52
56
  return format_command_result(io, cls.NORM_NAME, "", "\n".join(results))
53
57
 
58
+ # Before connecting any new server, convert coders with empty included sets
59
+ # to explicit include lists of all currently connected MCP servers.
60
+ # This moves them from "implicitly include all" to explicit state-machine
61
+ # management, preventing the new server from being implicitly available
62
+ # to all coders.
63
+ connected_names = {s.name for s in coder.mcp_manager.connected_servers}
64
+ if connected_names:
65
+ for c in iter_all_coders(coder):
66
+ if not c.registered_servers["included"]:
67
+ included = set(connected_names) - c.registered_servers["excluded"]
68
+ if c.edit_format in ("agent", "subagent"):
69
+ included.add("Local") # "local" is always available
70
+ c.registered_servers["included"] = included
71
+
54
72
  # Process connections with interrupt support
55
73
  for server in servers_to_load:
56
74
  server_name = server.name
@@ -67,6 +85,14 @@ class LoadMcpCommand(BaseCommand):
67
85
  continue
68
86
 
69
87
  if did_connect:
88
+ # Force-include on the primary (active) coder
89
+ update_server_registration(coder, server_name, "include", force=True)
90
+
91
+ # Safe-exclude on all other coders (respects existing inclusions)
92
+ for other_coder in iter_all_coders(coder):
93
+ if other_coder is coder:
94
+ continue
95
+ update_server_registration(other_coder, server_name, "exclude", force=False)
70
96
  results.append(f"Loaded server: {server_name}")
71
97
  else:
72
98
  results.append(f"Unable to load server: {server_name}")
@@ -1,7 +1,11 @@
1
1
  from typing import List
2
2
 
3
3
  from cecli.commands.utils.base_command import BaseCommand
4
- from cecli.commands.utils.helpers import format_command_result
4
+ from cecli.commands.utils.helpers import (
5
+ format_command_result,
6
+ is_server_globally_excluded,
7
+ update_server_registration,
8
+ )
5
9
 
6
10
 
7
11
  class RemoveMcpCommand(BaseCommand):
@@ -44,22 +48,37 @@ class RemoveMcpCommand(BaseCommand):
44
48
  for item in servers_to_disconnect:
45
49
  server_name = item.name if hasattr(item, "name") else item
46
50
 
47
- coder.interrupt_event.clear()
48
-
49
- was_disconnected, interrupted = await coder.coroutines.interruptible(
50
- coder.mcp_manager.disconnect_server(server_name),
51
- coder.interrupt_event,
52
- )
53
-
54
- if interrupted:
55
- io.tool_warning(f"MCP disconnection interrupted: {server_name}")
56
- results.append(f"Interrupted: {server_name}")
51
+ # Never remove the "local" server
52
+ if server_name == "Local":
53
+ results.append("Cannot remove 'Local' server")
57
54
  continue
58
55
 
59
- if was_disconnected:
60
- results.append(f"Removed server: {server_name}")
56
+ # Force-exclude on the primary (active) coder
57
+ update_server_registration(coder, server_name, "exclude", force=True)
58
+ # Check if all coders in the hierarchy have this server excluded
59
+ all_excluded = is_server_globally_excluded(coder, server_name)
60
+
61
+ if all_excluded:
62
+ was_disconnected, interrupted = await coder.coroutines.interruptible(
63
+ coder.mcp_manager.disconnect_server(server_name),
64
+ coder.interrupt_event,
65
+ )
66
+
67
+ if interrupted:
68
+ io.tool_warning(f"MCP disconnection interrupted: {server_name}")
69
+ results.append(f"Interrupted: {server_name}")
70
+ continue
71
+
72
+ if was_disconnected:
73
+ results.append(f"Removed server: {server_name}")
74
+ else:
75
+ results.append(f"Unable to remove server: {server_name}")
61
76
  else:
62
- results.append(f"Unable to remove server: {server_name}")
77
+ io.tool_output(
78
+ f"Server '{server_name}' still in use by other coders, "
79
+ f"keeping connection active."
80
+ )
81
+ results.append(f"Removed from active coder, still active for others: {server_name}")
63
82
 
64
83
  io.tool_output("\n".join(results))
65
84
 
@@ -37,7 +37,7 @@ class RunCommand(BaseCommand):
37
37
  )
38
38
 
39
39
  if coder.args.tui:
40
- print(combined_output)
40
+ coder.io.tool_warning(combined_output)
41
41
  else:
42
42
  # This print statement, for whatever reason,
43
43
  # allows the thread to properly yield control of the terminal
@@ -27,7 +27,9 @@ class SpawnAgentCommand(BaseCommand):
27
27
 
28
28
  try:
29
29
  agent_service = AgentService.get_instance(coder)
30
- new_coder, info = await agent_service.spawn(name, prompt, parent=coder, auto_reap=False)
30
+ new_coder, info = await agent_service.spawn(
31
+ name, prompt, parent=coder, auto_reap=False, independent=True
32
+ )
31
33
 
32
34
  # Set the newly spawned agent as the foreground agent
33
35
  agent_service.foreground_uuid = info.coder.uuid
@@ -304,6 +304,92 @@ def expand_subdir(file_path: Path) -> List[Path]:
304
304
  for file in file_path.rglob("*"):
305
305
  if file.is_file():
306
306
  files.append(file)
307
- return files
308
307
 
309
308
  return []
309
+
310
+
311
+ def iter_all_coders(root_coder):
312
+ """
313
+ Recursively iterate over all coders in the agent/sub-agent hierarchy.
314
+
315
+ Yields the root coder first, then all sub-agents (and their sub-agents)
316
+ at every nesting level.
317
+
318
+ Args:
319
+ root_coder: The top-level coder instance to start from.
320
+
321
+ Yields:
322
+ Coder instances from the entire hierarchy.
323
+ """
324
+
325
+ try:
326
+ from cecli.helpers.agents.service import AgentService
327
+
328
+ for coder in AgentService.get_all_agents():
329
+ yield coder
330
+ except Exception:
331
+ pass
332
+
333
+
334
+ def update_server_registration(coder, server_name, operation, force=False):
335
+ """
336
+ Unify include/exclude server registration with optional force.
337
+
338
+ When *force* is True, the operation always succeeds and the
339
+ opposing set is cleaned up to be non-conflicting. When *force*
340
+ is False (safe mode), the operation is a no-op if the server
341
+ is already present in the opposing set.
342
+
343
+ Args:
344
+ coder: A coder instance with ``registered_servers`` attribute.
345
+ server_name: Name of the server to register.
346
+ operation: ``"include"`` or ``"exclude"``.
347
+ force: When True, always perform the operation.
348
+ When False, respect the opposing set (excluded wins
349
+ for include, included wins for exclude).
350
+ """
351
+ name = server_name
352
+ included = coder.registered_servers["included"]
353
+ excluded = coder.registered_servers["excluded"]
354
+
355
+ if operation == "include":
356
+ if force or name not in excluded:
357
+ included.add(name)
358
+ excluded.discard(name)
359
+ elif operation == "exclude":
360
+ if force or name not in included:
361
+ excluded.add(name)
362
+ included.discard(name)
363
+
364
+
365
+ def is_server_globally_excluded(coder, server_name):
366
+ """
367
+ Check whether *server_name* is excluded from *all* coders in the hierarchy.
368
+
369
+ A server is considered "globally excluded" when every coder in the tree
370
+ either:
371
+ - has it in ``registered_servers["excluded"]``, or
372
+ - does **not** have it in ``registered_servers["included"]``
373
+ (empty included means "include all", so the server would be available).
374
+
375
+ Args:
376
+ coder: Any coder in the hierarchy (used to discover the full tree).
377
+ server_name: Name of the MCP server to check.
378
+
379
+ Returns:
380
+ True if the server is excluded from every coder.
381
+ """
382
+ name = server_name
383
+ for other in iter_all_coders(coder):
384
+ incl = other.registered_servers["included"]
385
+ excl = other.registered_servers["excluded"]
386
+
387
+ # Empty included => implicitly includes all servers
388
+ if not incl:
389
+ if name not in excl:
390
+ return False
391
+ else:
392
+ if name in incl:
393
+ return False
394
+ # Non-empty included means it's an allowlist: not in included => excluded
395
+ return True
@@ -48,6 +48,7 @@ class SubAgentInfo:
48
48
  None # Track the generate() task for cancellation/monitoring
49
49
  )
50
50
  auto_reap: bool = True # If True, agent may be automatically reaped when FINISHED
51
+ independent: bool = False
51
52
 
52
53
 
53
54
  class AgentService:
@@ -126,6 +127,19 @@ class AgentService:
126
127
  """Return the global sub-agent registry (name -> config)."""
127
128
  return cls._global_registry
128
129
 
130
+ @classmethod
131
+ def get_all_agents(cls) -> List[Any]:
132
+ """Return all live coder instances tracked in the global uuid map.
133
+
134
+ Dereferences weakrefs, skipping any that have been garbage-collected.
135
+ """
136
+ agents = []
137
+ for ref in cls._uuid_coder_map.values():
138
+ coder = ref()
139
+ if coder is not None:
140
+ agents.append(coder)
141
+ return agents
142
+
129
143
  @classmethod
130
144
  def register_subagent(cls, name: str, config: Any) -> None:
131
145
  """Register a sub-agent config by name."""
@@ -405,7 +419,11 @@ class AgentService:
405
419
  )
406
420
 
407
421
  async def _create_sub_agent_coder(
408
- self, name: str, parent: Any = None, auto_reap: Optional[bool] = None
422
+ self,
423
+ name: str,
424
+ parent: Any = None,
425
+ auto_reap: Optional[bool] = None,
426
+ independent: bool = False,
409
427
  ) -> Tuple[Any, SubAgentInfo]:
410
428
  """Create a sub-agent coder, register it, and set up its container and prompt.
411
429
 
@@ -489,6 +507,7 @@ class AgentService:
489
507
  parent_uuid=parent_coder.uuid,
490
508
  status=SubAgentStatus.CREATED,
491
509
  auto_reap=auto_reap,
510
+ independent=independent,
492
511
  )
493
512
  self.sub_agents[new_coder.uuid] = info
494
513
  self._sub_agent_order.append(new_coder.uuid)
@@ -571,22 +590,24 @@ class AgentService:
571
590
  Returns:
572
591
  The ``asyncio.Task`` wrapping ``generate()``.
573
592
  """
593
+ from cecli.commands import SwitchCoderSignal
574
594
 
575
595
  async def _run_generate():
576
596
  info.status = SubAgentStatus.RUNNING
577
597
  try:
578
598
  await info.coder.generate(user_message=user_message, preproc=True)
599
+ await self._inject_sub_agent_result(info)
579
600
  if info.status == SubAgentStatus.RUNNING:
580
601
  info.status = SubAgentStatus.FINISHED
581
602
  info.summary = info.summary or DEFAULT_SUMMARY_COMPLETED
582
- await self._inject_sub_agent_result(info)
583
603
  except asyncio.CancelledError:
604
+ await self._inject_sub_agent_result(info)
584
605
  info.status = SubAgentStatus.FINISHED
585
606
  info.summary = info.summary or DEFAULT_SUMMARY_INTERRUPTED
586
607
  logger.debug("Sub-agent %s generate cancelled (interrupted)", info.name)
587
- await self._inject_sub_agent_result(info)
588
608
  raise
589
609
  except Exception as exc:
610
+ await self._inject_sub_agent_result(info)
590
611
  info.status = SubAgentStatus.ERROR
591
612
  info.error = str(exc)
592
613
  logger.error(
@@ -595,7 +616,8 @@ class AgentService:
595
616
  exc,
596
617
  exc_info=True,
597
618
  )
598
- await self._inject_sub_agent_result(info)
619
+ raise
620
+ except SwitchCoderSignal:
599
621
  raise
600
622
 
601
623
  # Cancel any previous generate task to prevent duplicate concurrent generates
@@ -604,8 +626,15 @@ class AgentService:
604
626
 
605
627
  task = asyncio.create_task(_run_generate())
606
628
  info.generate_task = task
629
+
630
+ def _raise_if_signal(exc):
631
+ if isinstance(exc, SwitchCoderSignal):
632
+ raise exc
633
+
607
634
  # Suppress "Task exception was never retrieved" for fire-and-forget tasks
608
- task.add_done_callback(lambda t: t.exception() if not t.cancelled() else None)
635
+ task.add_done_callback(
636
+ lambda t: _raise_if_signal(t.exception()) if not t.cancelled() else None
637
+ )
609
638
  return task
610
639
 
611
640
  async def _inject_sub_agent_result(self, info: SubAgentInfo) -> None:
@@ -712,6 +741,7 @@ class AgentService:
712
741
  prompt: Optional[str] = None,
713
742
  parent: Any = None,
714
743
  auto_reap: Optional[bool] = None,
744
+ independent: bool = False,
715
745
  ) -> Tuple[Any, SubAgentInfo]:
716
746
  """Spawn a sub-agent (non-blocking) that waits for user input.
717
747
 
@@ -727,7 +757,7 @@ class AgentService:
727
757
  with the sub-agent (e.g. call ``start_generate_task`` later).
728
758
  """
729
759
  new_coder, info = await self._create_sub_agent_coder(
730
- name, auto_reap=auto_reap, parent=parent
760
+ name, auto_reap=auto_reap, parent=parent, independent=independent
731
761
  )
732
762
  if prompt:
733
763
  self.start_generate_task(info, prompt)
@@ -107,7 +107,7 @@ class ConversationFiles:
107
107
  # Use coder.io.read_text() - coder should always be available
108
108
  coder = self.get_coder()
109
109
  try:
110
- content = coder.io.read_text(abs_fname)
110
+ content = coder.io.read_text(abs_fname, silent=True)
111
111
  if coder.hashlines:
112
112
  content = hashline(content)
113
113
  except Exception:
@@ -224,7 +224,7 @@ class ConversationFiles:
224
224
  coder = self.get_coder()
225
225
  rel_fname = coder.get_rel_fname(fname)
226
226
  try:
227
- current_content = coder.io.read_text(abs_fname)
227
+ current_content = coder.io.read_text(abs_fname, silent=True)
228
228
  if coder.hashlines:
229
229
  current_content = hashline(current_content)
230
230
  except Exception:
@@ -525,7 +525,7 @@ class ConversationFiles:
525
525
 
526
526
  # Read file content
527
527
  try:
528
- content = coder.io.read_text(abs_fname)
528
+ content = coder.io.read_text(abs_fname, silent=True)
529
529
  if not content:
530
530
  return ""
531
531
  except Exception: