cecli-dev 0.100.1rc1__tar.gz → 0.100.3__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 (666) hide show
  1. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/PKG-INFO +2 -1
  2. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/__init__.py +1 -1
  3. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/_version.py +3 -3
  4. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/args.py +28 -0
  5. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/agent_coder.py +79 -26
  6. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/base_coder.py +30 -8
  7. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/__init__.py +0 -3
  8. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/add.py +93 -6
  9. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/exclude_skill.py +1 -1
  10. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/include_skill.py +1 -1
  11. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_skill.py +2 -1
  12. cecli_dev-0.100.3/cecli/commands/reap_agent.py +160 -0
  13. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_skill.py +1 -1
  14. cecli_dev-0.100.3/cecli/commands/spawn_agent.py +61 -0
  15. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/config.py +7 -1
  16. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/service.py +360 -44
  17. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/integration.py +41 -1
  18. cecli_dev-0.100.3/cecli/helpers/crypto.py +125 -0
  19. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/observations/service.py +19 -10
  20. cecli_dev-0.100.3/cecli/helpers/responses.py +596 -0
  21. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/skills.py +16 -4
  22. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/history.py +4 -2
  23. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/io.py +1 -1
  24. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/main.py +1 -1
  25. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/models.py +26 -3
  26. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/agent.yml +3 -3
  27. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/base.yml +8 -5
  28. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/subagent.yml +6 -5
  29. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/repomap.py +12 -4
  30. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/model-metadata.json +1519 -282
  31. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/sessions.py +102 -19
  32. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/__init__.py +2 -2
  33. cecli_dev-0.100.3/cecli/tools/_yield.py +164 -0
  34. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/delegate.py +21 -23
  35. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/edit_text.py +1 -0
  36. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/explore_code.py +1 -0
  37. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/grep.py +1 -0
  38. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/load_skill.py +1 -1
  39. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/read_range.py +1 -0
  40. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/remove_skill.py +1 -1
  41. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/update_todo_list.py +1 -0
  42. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/base_tool.py +8 -1
  43. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/helpers.py +45 -0
  44. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/registry.py +1 -1
  45. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/app.py +71 -15
  46. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/io.py +18 -10
  47. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/footer.py +8 -3
  48. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/status_bar.py +15 -3
  49. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/worker.py +5 -4
  50. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/utils.py +2 -3
  51. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/agent-mode.md +3 -3
  52. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/subagents.md +32 -11
  53. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/sessions.md +11 -0
  54. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/PKG-INFO +2 -1
  55. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/SOURCES.txt +8 -2
  56. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/requires.txt +1 -0
  57. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/pyproject.toml +3 -0
  58. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/common-constraints.txt +3 -1
  59. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements.in +1 -0
  60. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements.txt +1 -0
  61. cecli_dev-0.100.3/tests/basic/conftest.py +24 -0
  62. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_commands.py +17 -0
  63. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_models.py +2 -0
  64. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_repomap.py +14 -0
  65. cecli_dev-0.100.3/tests/basic/test_session_args.py +31 -0
  66. cecli_dev-0.100.3/tests/basic/test_session_crypto.py +105 -0
  67. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sessions.py +27 -0
  68. cecli_dev-0.100.3/tests/basic/test_sessions_manager.py +219 -0
  69. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/observations/test_observation_service.py +2 -6
  70. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_commands.py +2 -109
  71. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_delegate.py +38 -20
  72. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_finished.py +10 -11
  73. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_service.py +39 -28
  74. cecli_dev-0.100.3/tests/tools/test_extractions.py +406 -0
  75. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_registry.py +8 -8
  76. cecli_dev-0.100.3/tests/tools/test_tool_arguments.py +298 -0
  77. cecli_dev-0.100.3/tests/tui/test_app.py +278 -0
  78. cecli_dev-0.100.1rc1/cecli/commands/invoke_agent.py +0 -54
  79. cecli_dev-0.100.1rc1/cecli/commands/reap_agent.py +0 -67
  80. cecli_dev-0.100.1rc1/cecli/commands/spawn_agent.py +0 -42
  81. cecli_dev-0.100.1rc1/cecli/helpers/responses.py +0 -245
  82. cecli_dev-0.100.1rc1/cecli/tools/finished.py +0 -86
  83. cecli_dev-0.100.1rc1/tests/tui/test_app.py +0 -37
  84. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.dockerignore +0 -0
  85. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.flake8 +0 -0
  86. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.gitattributes +0 -0
  87. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  88. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/check_pypi_version.yml +0 -0
  89. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/docker-build-test.yml +0 -0
  90. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/docker-release.yml +0 -0
  91. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/issues.yml +0 -0
  92. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/pages.yml +0 -0
  93. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/pre-commit.yml +0 -0
  94. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/release.yml +0 -0
  95. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/ubuntu-tests.yml +0 -0
  96. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/windows-tests.yml +0 -0
  97. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/windows_check_pypi_version.yml +0 -0
  98. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.gitignore +0 -0
  99. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.pre-commit-config.yaml +0 -0
  100. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CHANGELOG.md +0 -0
  101. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CNAME +0 -0
  102. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CONTRIBUTING.md +0 -0
  103. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/HISTORY.md +0 -0
  104. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/LICENSE.txt +0 -0
  105. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/MANIFEST.in +0 -0
  106. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/README.md +0 -0
  107. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/Dockerfile +0 -0
  108. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/README.md +0 -0
  109. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/__init__.py +0 -0
  110. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/benchmark.py +0 -0
  111. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/benchmark_classic.py +0 -0
  112. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/clone-exercism.sh +0 -0
  113. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/cpp-test.sh +0 -0
  114. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/docker.sh +0 -0
  115. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/docker_build.sh +0 -0
  116. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/install-docker-ubuntu.sh +0 -0
  117. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/npm-test.sh +0 -0
  118. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/over_time.py +0 -0
  119. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/plot.sh +0 -0
  120. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/plots.py +0 -0
  121. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/problem_stats.py +0 -0
  122. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/prompts.py +0 -0
  123. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/refactor_tools.py +0 -0
  124. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/rsync.sh +0 -0
  125. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/rungrid.py +0 -0
  126. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe-bench-lite.txt +0 -0
  127. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe-bench.txt +0 -0
  128. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe_bench.py +0 -0
  129. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/test_benchmark.py +0 -0
  130. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.1.sh +0 -0
  131. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.2.sh +0 -0
  132. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.3.sh +0 -0
  133. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.4.sh +0 -0
  134. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/__main__.py +0 -0
  135. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/args_formatter.py +0 -0
  136. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/change_tracker.py +0 -0
  137. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/__init__.py +0 -0
  138. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/architect_coder.py +0 -0
  139. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/ask_coder.py +0 -0
  140. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/chat_chunks.py +0 -0
  141. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/context_coder.py +0 -0
  142. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/copypaste_coder.py +0 -0
  143. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_coder.py +0 -0
  144. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_fenced_coder.py +0 -0
  145. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_func_coder.py +0 -0
  146. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  147. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_editblock_coder.py +0 -0
  148. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_whole_coder.py +0 -0
  149. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/hashline_coder.py +0 -0
  150. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/help_coder.py +0 -0
  151. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/patch_coder.py +0 -0
  152. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/search_replace.py +0 -0
  153. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/shell.py +0 -0
  154. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/single_wholefile_func_coder.py +0 -0
  155. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/sub_agent_coder.py +0 -0
  156. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/udiff_coder.py +0 -0
  157. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/udiff_simple.py +0 -0
  158. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/wholefile_coder.py +0 -0
  159. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/wholefile_func_coder.py +0 -0
  160. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/agent.py +0 -0
  161. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/agent_model.py +0 -0
  162. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/architect.py +0 -0
  163. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/ask.py +0 -0
  164. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/chat_mode.py +0 -0
  165. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/clear.py +0 -0
  166. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/code.py +0 -0
  167. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/command_prefix.py +0 -0
  168. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/commit.py +0 -0
  169. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/compact.py +0 -0
  170. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context.py +0 -0
  171. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context_blocks.py +0 -0
  172. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context_management.py +0 -0
  173. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/copy.py +0 -0
  174. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/copy_context.py +0 -0
  175. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/core.py +0 -0
  176. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/diff.py +0 -0
  177. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/drop.py +0 -0
  178. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/editor.py +0 -0
  179. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/editor_model.py +0 -0
  180. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/exit.py +0 -0
  181. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/git.py +0 -0
  182. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/hashline.py +0 -0
  183. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/help.py +0 -0
  184. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/history_search.py +0 -0
  185. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/hooks.py +0 -0
  186. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/lint.py +0 -0
  187. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/list_sessions.py +0 -0
  188. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/list_skills.py +0 -0
  189. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load.py +0 -0
  190. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_hook.py +0 -0
  191. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_mcp.py +0 -0
  192. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_session.py +0 -0
  193. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/ls.py +0 -0
  194. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/map.py +0 -0
  195. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/map_refresh.py +0 -0
  196. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/merge.py +0 -0
  197. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/model.py +0 -0
  198. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/models.py +0 -0
  199. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/multiline_mode.py +0 -0
  200. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/paste.py +0 -0
  201. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/quit.py +0 -0
  202. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/read_only.py +0 -0
  203. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/read_only_stub.py +0 -0
  204. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/reasoning_effort.py +0 -0
  205. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_hook.py +0 -0
  206. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_mcp.py +0 -0
  207. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/report.py +0 -0
  208. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/reset.py +0 -0
  209. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/rules.py +0 -0
  210. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/run.py +0 -0
  211. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/save.py +0 -0
  212. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/save_session.py +0 -0
  213. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/settings.py +0 -0
  214. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/switch_agent.py +0 -0
  215. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/terminal_data/linux.keytab +0 -0
  216. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/terminal_setup.py +0 -0
  217. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/test.py +0 -0
  218. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/think_tokens.py +0 -0
  219. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/tokens.py +0 -0
  220. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/undo.py +0 -0
  221. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/__init__.py +0 -0
  222. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/base_command.py +0 -0
  223. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/helpers.py +0 -0
  224. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/registry.py +0 -0
  225. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/save_load_manager.py +0 -0
  226. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/voice.py +0 -0
  227. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/weak_model.py +0 -0
  228. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/web.py +0 -0
  229. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/workspace.py +0 -0
  230. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/deprecated_args.py +0 -0
  231. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/diffs.py +0 -0
  232. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/dump.py +0 -0
  233. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/editor.py +0 -0
  234. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/exceptions.py +0 -0
  235. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/format_settings.py +0 -0
  236. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/help.py +0 -0
  237. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/help_pats.py +0 -0
  238. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/__init__.py +0 -0
  239. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/__init__.py +0 -0
  240. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/background_commands.py +0 -0
  241. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/command_parser.py +0 -0
  242. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/__init__.py +0 -0
  243. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/base_message.py +0 -0
  244. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/files.py +0 -0
  245. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/manager.py +0 -0
  246. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/service.py +0 -0
  247. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/tags.py +0 -0
  248. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/utils.py +0 -0
  249. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/copypaste.py +0 -0
  250. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/coroutines.py +0 -0
  251. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/file_searcher.py +0 -0
  252. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/__init__.py +0 -0
  253. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/dump.py +0 -0
  254. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  255. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/main.py +0 -0
  256. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/parsers.py +0 -0
  257. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/tsl.py +0 -0
  258. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashline.py +0 -0
  259. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashpos/__init__.py +0 -0
  260. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashpos/hashpos.py +0 -0
  261. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/io_proxy.py +0 -0
  262. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/leak_detect.py +0 -0
  263. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/model_providers.py +0 -0
  264. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/__init__.py +0 -0
  265. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/config.py +0 -0
  266. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/project.py +0 -0
  267. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/workspace.py +0 -0
  268. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/worktree.py +0 -0
  269. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/nested.py +0 -0
  270. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/observations/__init__.py +0 -0
  271. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/plugin_manager.py +0 -0
  272. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/profiler.py +0 -0
  273. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/requests.py +0 -0
  274. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/similarity.py +0 -0
  275. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/__init__.py +0 -0
  276. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/base.py +0 -0
  277. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/integration.py +0 -0
  278. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/manager.py +0 -0
  279. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/registry.py +0 -0
  280. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/service.py +0 -0
  281. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/types.py +0 -0
  282. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/interruptible_input.py +0 -0
  283. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/linter.py +0 -0
  284. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/llm.py +0 -0
  285. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/__init__.py +0 -0
  286. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/manager.py +0 -0
  287. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/oauth.py +0 -0
  288. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/server.py +0 -0
  289. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/utils.py +0 -0
  290. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mdstream.py +0 -0
  291. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/onboarding.py +0 -0
  292. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/__init__.py +0 -0
  293. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/architect.yml +0 -0
  294. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/ask.yml +0 -0
  295. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/context.yml +0 -0
  296. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/copypaste.yml +0 -0
  297. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock.yml +0 -0
  298. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock_fenced.yml +0 -0
  299. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock_func.yml +0 -0
  300. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_diff_fenced.yml +0 -0
  301. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_editblock.yml +0 -0
  302. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_whole.yml +0 -0
  303. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/hashline.yml +0 -0
  304. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/help.yml +0 -0
  305. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/patch.yml +0 -0
  306. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/single_wholefile_func.yml +0 -0
  307. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/udiff.yml +0 -0
  308. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/udiff_simple.yml +0 -0
  309. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/__init__.py +0 -0
  310. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/registry.py +0 -0
  311. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/system.py +0 -0
  312. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/wholefile.yml +0 -0
  313. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/wholefile_func.yml +0 -0
  314. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  315. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  316. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  317. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  318. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  319. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  320. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  321. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  322. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  323. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  324. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  325. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  326. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  327. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  328. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  329. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  330. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  331. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  332. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  333. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  334. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  335. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  336. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  337. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  338. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  339. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  340. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  341. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  342. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  343. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  344. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  345. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  346. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/README.md +0 -0
  347. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  348. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  349. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  350. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  351. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  352. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  353. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  354. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  355. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  356. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  357. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  358. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  359. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  360. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  361. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  362. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  363. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  364. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  365. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  366. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  367. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  368. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  369. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  370. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  371. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  372. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  373. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  374. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/reasoning_tags.py +0 -0
  375. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/repo.py +0 -0
  376. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/report.py +0 -0
  377. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/__init__.py +0 -0
  378. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/model-settings.yml +0 -0
  379. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/providers.json +0 -0
  380. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/run_cmd.py +0 -0
  381. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/scrape.py +0 -0
  382. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/sendchat.py +0 -0
  383. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/special.py +0 -0
  384. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/command.py +0 -0
  385. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/command_interactive.py +0 -0
  386. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/context_manager.py +0 -0
  387. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_branch.py +0 -0
  388. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_diff.py +0 -0
  389. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_log.py +0 -0
  390. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_remote.py +0 -0
  391. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_show.py +0 -0
  392. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_status.py +0 -0
  393. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/ls.py +0 -0
  394. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/thinking.py +0 -0
  395. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/undo_change.py +0 -0
  396. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/output.py +0 -0
  397. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/__init__.py +0 -0
  398. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/styles.tcss +0 -0
  399. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/__init__.py +0 -0
  400. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/completion_bar.py +0 -0
  401. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/file_list.py +0 -0
  402. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/input_area.py +0 -0
  403. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/input_container.py +0 -0
  404. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/key_hints.py +0 -0
  405. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/output.py +0 -0
  406. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/subagent_pills.py +0 -0
  407. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/urls.py +0 -0
  408. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/versioncheck.py +0 -0
  409. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/voice.py +0 -0
  410. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/waiting.py +0 -0
  411. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/watch.py +0 -0
  412. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/watch_prompts.py +0 -0
  413. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/Gemfile +0 -0
  414. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/blame.md +0 -0
  415. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/get-started.md +0 -0
  416. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/help-tip.md +0 -0
  417. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/help.md +0 -0
  418. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/install.md +0 -0
  419. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/keys.md +0 -0
  420. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/model-warnings.md +0 -0
  421. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/multi-line.md +0 -0
  422. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/python-m-aider.md +0 -0
  423. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/recording.css +0 -0
  424. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/recording.md +0 -0
  425. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/works-best.md +0 -0
  426. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_features.scss +0 -0
  427. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_footer.scss +0 -0
  428. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_hero.scss +0 -0
  429. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_info.scss +0 -0
  430. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_layout.scss +0 -0
  431. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_reset.scss +0 -0
  432. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_testimonials.scss +0 -0
  433. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_typography.scss +0 -0
  434. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_variables.scss +0 -0
  435. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/custom/custom.scss +0 -0
  436. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/global-overrides.scss +0 -0
  437. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/adv-model-settings.md +0 -0
  438. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/aider_conf.md +0 -0
  439. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/api-keys.md +0 -0
  440. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/custom-commands.md +0 -0
  441. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  442. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/dotenv.md +0 -0
  443. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/editor.md +0 -0
  444. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/hooks.md +0 -0
  445. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/mcp.md +0 -0
  446. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/model-aliases.md +0 -0
  447. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/options.md +0 -0
  448. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/reasoning.md +0 -0
  449. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/security.md +0 -0
  450. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/skills.md +0 -0
  451. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/tui.md +0 -0
  452. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/workspaces.md +0 -0
  453. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config.md +0 -0
  454. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/faq.md +0 -0
  455. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/git.md +0 -0
  456. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/index.md +0 -0
  457. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install/docker.md +0 -0
  458. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install/optional.md +0 -0
  459. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install.md +0 -0
  460. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/languages.md +0 -0
  461. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  462. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/legal/privacy.md +0 -0
  463. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/anthropic.md +0 -0
  464. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/azure.md +0 -0
  465. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/bedrock.md +0 -0
  466. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/cohere.md +0 -0
  467. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/deepseek.md +0 -0
  468. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/gemini.md +0 -0
  469. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/github.md +0 -0
  470. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/groq.md +0 -0
  471. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/lm-studio.md +0 -0
  472. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/ollama.md +0 -0
  473. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openai-compat.md +0 -0
  474. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openai.md +0 -0
  475. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openrouter.md +0 -0
  476. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/other.md +0 -0
  477. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/vertex.md +0 -0
  478. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/warnings.md +0 -0
  479. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/xai.md +0 -0
  480. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms.md +0 -0
  481. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/analytics.md +0 -0
  482. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/edit-formats.md +0 -0
  483. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/infinite-output.md +0 -0
  484. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more-info.md +0 -0
  485. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/repomap.md +0 -0
  486. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/scripting.md +0 -0
  487. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  488. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  489. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/imports.md +0 -0
  490. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  491. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/support.md +0 -0
  492. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  493. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  494. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting.md +0 -0
  495. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/commands.md +0 -0
  496. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/conventions.md +0 -0
  497. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/copypaste.md +0 -0
  498. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/images-urls.md +0 -0
  499. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/lint-test.md +0 -0
  500. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/modes.md +0 -0
  501. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/not-code.md +0 -0
  502. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/notifications.md +0 -0
  503. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/tips.md +0 -0
  504. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/voice.md +0 -0
  505. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/watch.md +0 -0
  506. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage.md +0 -0
  507. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/share/index.md +0 -0
  508. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/dependency_links.txt +0 -0
  509. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/entry_points.txt +0 -0
  510. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/top_level.txt +0 -0
  511. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/docker/Dockerfile +0 -0
  512. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  513. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/pytest.ini +0 -0
  514. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-dev.in +0 -0
  515. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-dev.txt +0 -0
  516. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-help.in +0 -0
  517. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-help.txt +0 -0
  518. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-playwright.in +0 -0
  519. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-playwright.txt +0 -0
  520. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/tree-sitter.in +0 -0
  521. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/30k-image.py +0 -0
  522. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/Dockerfile.jekyll +0 -0
  523. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/__init__.py +0 -0
  524. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/blame.py +0 -0
  525. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/clean_metadata.py +0 -0
  526. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/cost_analyzer.py +0 -0
  527. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/cost_calculator.py +0 -0
  528. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/dl_icons.py +0 -0
  529. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/filter-chat-mode.js +0 -0
  530. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/generate_providers.py +0 -0
  531. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/get_contributor_list.js +0 -0
  532. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/get_hashline.py +0 -0
  533. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/history_prompts.py +0 -0
  534. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/homepage.py +0 -0
  535. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/issues.py +0 -0
  536. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/jekyll_build.sh +0 -0
  537. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/jekyll_run.sh +0 -0
  538. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/logo_svg.py +0 -0
  539. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/pip-compile.sh +0 -0
  540. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/recording_audio.py +0 -0
  541. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/redact-cast.py +0 -0
  542. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/rename_to_cecli.py +0 -0
  543. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/tmux_record.sh +0 -0
  544. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/tsl_pack_langs.py +0 -0
  545. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-blame.sh +0 -0
  546. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-docs.sh +0 -0
  547. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-history.py +0 -0
  548. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/versionbump.py +0 -0
  549. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/yank-old-versions.py +0 -0
  550. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/setup.cfg +0 -0
  551. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/shim.pyproject.toml +0 -0
  552. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/__init__.py +0 -0
  553. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/__init__.py +0 -0
  554. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_aws_credentials.py +0 -0
  555. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_background_commands.py +0 -0
  556. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_coder.py +0 -0
  557. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_custom_commands.py +0 -0
  558. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_deprecated.py +0 -0
  559. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_editblock.py +0 -0
  560. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_editor.py +0 -0
  561. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_exceptions.py +0 -0
  562. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_find_or_blocks.py +0 -0
  563. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_hashline.py +0 -0
  564. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_history.py +0 -0
  565. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_io.py +0 -0
  566. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_linter.py +0 -0
  567. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_main.py +0 -0
  568. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_model_info_manager.py +0 -0
  569. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_model_provider_manager.py +0 -0
  570. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_onboarding.py +0 -0
  571. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_plugin_manager.py +0 -0
  572. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_prompts.py +0 -0
  573. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_reasoning.py +0 -0
  574. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_repo.py +0 -0
  575. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_run_cmd.py +0 -0
  576. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sanity_check_repo.py +0 -0
  577. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_scripting.py +0 -0
  578. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sendchat.py +0 -0
  579. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_skills.py +0 -0
  580. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_special.py +0 -0
  581. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_ssl_verification.py +0 -0
  582. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_udiff.py +0 -0
  583. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_urls.py +0 -0
  584. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_voice.py +0 -0
  585. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_watch.py +0 -0
  586. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_wholefile.py +0 -0
  587. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/coders/test_coder_switching.py +0 -0
  588. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/coders/test_copypaste_coder.py +0 -0
  589. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/commands/test_compaction.py +0 -0
  590. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/commands/test_switch_agent.py +0 -0
  591. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conftest.py +0 -0
  592. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conversations/test_conversation_integration.py +0 -0
  593. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conversations/test_conversation_system.py +0 -0
  594. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  595. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/chat-history.md +0 -0
  596. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/arduino/test.ino +0 -0
  597. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/bash/test.sh +0 -0
  598. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/c/test.c +0 -0
  599. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/chatito/test.chatito +0 -0
  600. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/clojure/test.clj +0 -0
  601. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  602. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/cpp/test.cpp +0 -0
  603. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/csharp/test.cs +0 -0
  604. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/d/test.d +0 -0
  605. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/dart/test.dart +0 -0
  606. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elisp/test.el +0 -0
  607. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elixir/test.ex +0 -0
  608. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elm/test.elm +0 -0
  609. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/gleam/test.gleam +0 -0
  610. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/go/test.go +0 -0
  611. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/haskell/test.hs +0 -0
  612. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/hcl/test.tf +0 -0
  613. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/java/test.java +0 -0
  614. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/javascript/test.js +0 -0
  615. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/kotlin/test.kt +0 -0
  616. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/lua/test.lua +0 -0
  617. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/matlab/test.m +0 -0
  618. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ocaml/test.ml +0 -0
  619. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  620. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/php/test.php +0 -0
  621. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/pony/test.pony +0 -0
  622. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/properties/test.properties +0 -0
  623. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/python/test.py +0 -0
  624. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ql/test.ql +0 -0
  625. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/r/test.r +0 -0
  626. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/racket/test.rkt +0 -0
  627. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ruby/test.rb +0 -0
  628. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/rust/test.rs +0 -0
  629. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/scala/test.scala +0 -0
  630. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/solidity/test.sol +0 -0
  631. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/swift/test.swift +0 -0
  632. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/tsx/test.tsx +0 -0
  633. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/typescript/test.ts +0 -0
  634. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/udev/test.rules +0 -0
  635. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/zig/test.zig +0 -0
  636. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base/sample.js +0 -0
  637. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base/sample.py +0 -0
  638. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  639. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.js +0 -0
  640. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.lisp +0 -0
  641. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.py +0 -0
  642. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch_question.js +0 -0
  643. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/help/test_help.py +0 -0
  644. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_config.py +0 -0
  645. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_config_active.py +0 -0
  646. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  647. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  648. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_workspace.py +0 -0
  649. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/__init__.py +0 -0
  650. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_base.py +0 -0
  651. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_manager.py +0 -0
  652. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_registry.py +0 -0
  653. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/mcp/__init__.py +0 -0
  654. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/mcp/test_manager.py +0 -0
  655. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/scrape/test_playwright_disable.py +0 -0
  656. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/scrape/test_scrape.py +0 -0
  657. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/__init__.py +0 -0
  658. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/conftest.py +0 -0
  659. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_config.py +0 -0
  660. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_io_proxy.py +0 -0
  661. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_sub_agent_coder.py +0 -0
  662. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_get_lines.py +0 -0
  663. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_git_branch.py +0 -0
  664. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_git_diff.py +0 -0
  665. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_grep.py +0 -0
  666. {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_insert_block.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 0.100.1rc1
3
+ Version: 0.100.3
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
@@ -52,6 +52,7 @@ Requires-Dist: tomlkit>=0.14.0
52
52
  Requires-Dist: truststore
53
53
  Requires-Dist: xxhash>=3.6.0
54
54
  Requires-Dist: py-cymbal>=0.1.24
55
+ Requires-Dist: cryptography>=42.0.0
55
56
  Requires-Dist: rustworkx>=0.15.0
56
57
  Requires-Dist: scipy>=1.15.3
57
58
  Requires-Dist: importlib-metadata>=7.2.1
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.99.12.dev"
3
+ __version__ = "0.100.2.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.1rc1'
22
- __version_tuple__ = version_tuple = (0, 100, 1, 'rc1')
21
+ __version__ = version = '0.100.3'
22
+ __version_tuple__ = version_tuple = (0, 100, 3)
23
23
 
24
- __commit_id__ = commit_id = 'gf29b57571'
24
+ __commit_id__ = commit_id = 'ge53c2cd27'
@@ -370,6 +370,24 @@ def get_parser(default_config_files, git_root):
370
370
  " (default: False)"
371
371
  ),
372
372
  )
373
+ group.add_argument(
374
+ "--session-encrypt",
375
+ action=argparse.BooleanOptionalAction,
376
+ default=False,
377
+ help=(
378
+ "Encrypt saved sessions on disk (AES-256-GCM). Requires CECLI_SESSION_KEY or"
379
+ " --session-key-file (default: False)"
380
+ ),
381
+ )
382
+ group.add_argument(
383
+ "--session-key-file",
384
+ metavar="SESSION_KEY_FILE",
385
+ default=None,
386
+ help=(
387
+ "File containing a urlsafe-base64 32-byte session encryption key"
388
+ " (default: use CECLI_SESSION_KEY only)"
389
+ ),
390
+ ).complete = shtab.FILE
373
391
  group.add_argument(
374
392
  "--mcp-servers",
375
393
  metavar="MCP_CONFIG_JSON",
@@ -536,6 +554,16 @@ def get_parser(default_config_files, git_root):
536
554
  " False)"
537
555
  ),
538
556
  )
557
+ group.add_argument(
558
+ "--exempt-paths",
559
+ action="append",
560
+ default=[],
561
+ help=(
562
+ "Specify a regex pattern for paths that should be exempted from file creation. "
563
+ "When /add matches a path matching any exempt pattern, it will not offer to "
564
+ "create the file. Can be used multiple times."
565
+ ),
566
+ )
539
567
  ##########
540
568
  group = parser.add_argument_group("Output settings")
541
569
  group.add_argument(
@@ -12,7 +12,6 @@ from collections import defaultdict
12
12
  from datetime import datetime
13
13
  from pathlib import Path
14
14
 
15
- from cecli import utils
16
15
  from cecli.change_tracker import ChangeTracker
17
16
  from cecli.helpers import nested, responses
18
17
  from cecli.helpers.agents.service import AgentService
@@ -265,7 +264,8 @@ class AgentCoder(Coder):
265
264
 
266
265
  async def initialize_mcp_tools(self):
267
266
  if not self.mcp_manager:
268
- self.mcp_manager = McpServerManager([], self.io, self.args.verbose)
267
+ verbose = getattr(self.args, "verbose", False) if self.args else False
268
+ self.mcp_manager = McpServerManager([], self.io, verbose)
269
269
 
270
270
  server_name = "Local"
271
271
  server = self.mcp_manager.get_server(server_name)
@@ -540,6 +540,10 @@ class AgentCoder(Coder):
540
540
 
541
541
  # Add post-message context blocks (priority 250 - between CUR and REMINDER)
542
542
  ConversationService.get_chunks(self).add_post_message_context_blocks()
543
+
544
+ # Add sub-agent states context block (same priority as post-message blocks)
545
+ ConversationService.get_chunks(self).add_sub_agent_states()
546
+
543
547
  ConversationService.get_chunks(self).add_randomized_cta()
544
548
 
545
549
  return ConversationService.get_manager(self).get_messages_dict()
@@ -727,25 +731,23 @@ class AgentCoder(Coder):
727
731
  continue
728
732
 
729
733
  if args_string:
730
- json_chunks = utils.split_concatenated_json(args_string)
731
- for chunk in json_chunks:
732
- try:
733
- parsed_args_list.append(json.loads(chunk))
734
- except json.JSONDecodeError as e:
735
- self.model_kwargs = {}
736
- self.io.tool_warning(
737
- f"Malformed JSON arguments in tool {tool_name}: {chunk}"
738
- )
739
- tool_responses.append(
740
- {
741
- "role": "tool",
742
- "tool_call_id": tool_call.id,
743
- "content": (
744
- f"Malformed JSON arguments in tool {tool_name}: {str(e)}"
745
- ),
746
- }
747
- )
748
- continue
734
+ parsed = responses.parse_tool_arguments(args_string)
735
+ if isinstance(parsed, dict) and "@error" in parsed:
736
+ self.io.tool_warning(
737
+ f"Malformed JSON arguments in tool {tool_name}: {parsed['@error']}"
738
+ )
739
+ tool_responses.append(
740
+ {
741
+ "role": "tool",
742
+ "tool_call_id": tool_call.id,
743
+ "content": (
744
+ f"Malformed JSON arguments in tool {tool_name}: {parsed['@error']}"
745
+ ),
746
+ }
747
+ )
748
+ continue
749
+ parsed_args_list = [parsed]
750
+
749
751
  if not parsed_args_list and not args_string:
750
752
  parsed_args_list.append({})
751
753
  all_results_content = []
@@ -837,20 +839,22 @@ class AgentCoder(Coder):
837
839
 
838
840
  async def _execute_mcp_tools(self, server, tool_calls):
839
841
  """Execute MCP tools via LiteLLM."""
840
- responses = []
842
+ tool_responses = []
841
843
  for tool_call in tool_calls:
842
844
  # Use existing _execute_mcp_tool logic
843
845
  result = await self._execute_mcp_tool(
844
- server, tool_call.function.name, json.loads(tool_call.function.arguments)
846
+ server,
847
+ tool_call.function.name,
848
+ responses.parse_tool_arguments(tool_call.function.arguments),
845
849
  )
846
- responses.append(
850
+ tool_responses.append(
847
851
  {
848
852
  "role": "tool",
849
853
  "tool_call_id": tool_call.id,
850
854
  "content": result,
851
855
  }
852
856
  )
853
- return responses
857
+ return tool_responses
854
858
 
855
859
  def get_active_model(self):
856
860
  if self.main_model.agent_model:
@@ -871,6 +875,13 @@ class AgentCoder(Coder):
871
875
  content = self.partial_response_content
872
876
  tool_calls_found = bool(self.partial_response_tool_calls)
873
877
 
878
+ # Reap all finished sub-agents with auto_reap enabled
879
+ try:
880
+ service = AgentService.get_instance(self)
881
+ await service.reap_all_finished_agents(parent=service.get_parent(self))
882
+ except Exception:
883
+ logger.warning("Failed to reap finished sub-agents", exc_info=True)
884
+
874
885
  # 1. Handle Tool Execution Follow-up (Reflection)
875
886
  if self.agent_finished:
876
887
  self.tool_usage_history = []
@@ -878,6 +889,7 @@ class AgentCoder(Coder):
878
889
  self.reflected_message = None
879
890
  if self.files_edited_by_tools:
880
891
  _ = await self.auto_commit(self.files_edited_by_tools)
892
+
881
893
  return False
882
894
 
883
895
  # 2. Check for unfinished and recently finished background commands
@@ -938,7 +950,7 @@ class AgentCoder(Coder):
938
950
  if self.tool_call_vectors:
939
951
  if content and not tool_calls_found and self.num_reflections < self.max_reflections:
940
952
  self.reflected_message = (
941
- "Continue with your task. If you have completed it, call the `Finished` tool."
953
+ "Continue with your task. If you have completed it, call the `Yield` tool."
942
954
  )
943
955
  return True
944
956
 
@@ -1490,12 +1502,53 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1490
1502
  result += "\n"
1491
1503
 
1492
1504
  result += "Use the `Delegate` tool with the sub-agent name to delegate tasks.\n"
1505
+ result += "Use the `Yield` tool to wait for responses for all active sub agents.\n"
1493
1506
  result += "</context>"
1494
1507
  return result
1495
1508
  except Exception as e:
1496
1509
  self.io.tool_error(f"Error generating sub-agents context: {str(e)}")
1497
1510
  return None
1498
1511
 
1512
+ def get_child_agent_states(self):
1513
+ """Get the state of all active child sub-agents.
1514
+
1515
+ Returns a formatted context block with each child sub-agent's name,
1516
+ UUID, and current status, or None if no children exist.
1517
+ This is used by ConversationChunks.add_sub_agent_states() to provide
1518
+ the model with visibility into active sub-agent states.
1519
+ """
1520
+ if not self.use_enhanced_context:
1521
+ return None
1522
+
1523
+ # Sub-agents should only see child states when nested delegation is enabled
1524
+ if hasattr(self, "parent_uuid") and self.parent_uuid:
1525
+ if not self.agent_config.get("allow_nested_delegation", False):
1526
+ return None
1527
+
1528
+ try:
1529
+ service = AgentService.get_instance(self)
1530
+ children = service.get_children(self)
1531
+
1532
+ if not children:
1533
+ return None
1534
+
1535
+ result = '<context name="sub_agent_states" from="agent">\n'
1536
+ result += "## Active Sub-Agent States\n\n"
1537
+ result += f"Found {len(children)} active child sub-agent(s):\n\n"
1538
+
1539
+ for info in children:
1540
+ result += f"**{info.name}**:\n"
1541
+ result += f" - UUID: `{info.coder.uuid}`\n"
1542
+ result += f" - Status: {info.status.value}\n"
1543
+ if info.error:
1544
+ result += f" - Error: {info.error}\n"
1545
+ result += "\n"
1546
+ result += "</context>"
1547
+ return result
1548
+ except Exception as e:
1549
+ self.io.tool_error(f"Error generating child agent states: {str(e)}")
1550
+ return None
1551
+
1499
1552
  def get_background_command_output(self):
1500
1553
  """
1501
1554
  Get background command output to append after the main message.
@@ -1597,7 +1597,7 @@ class Coder(metaclass=UsageMeta):
1597
1597
  self.io.output_task = asyncio.create_task(self.generate(user_message, preproc))
1598
1598
 
1599
1599
  # Start spinner for output task
1600
- self.io.start_spinner("Processing...")
1600
+ self.io.start_spinner("Processing...", coder_uuid=getattr(self, "uuid", None))
1601
1601
  await self.io.recreate_input()
1602
1602
 
1603
1603
  # Monitor output task
@@ -1914,6 +1914,7 @@ class Coder(metaclass=UsageMeta):
1914
1914
  messages,
1915
1915
  compaction_prompt,
1916
1916
  self.context_compaction_summary_tokens,
1917
+ coder=self,
1917
1918
  )
1918
1919
  if not text:
1919
1920
  raise ValueError(f"Summarization of {tag} messages returned empty.")
@@ -2306,6 +2307,16 @@ class Coder(metaclass=UsageMeta):
2306
2307
  def get_active_model(self):
2307
2308
  return self.main_model
2308
2309
 
2310
+ def empty_llm_tool_warning(self) -> str:
2311
+ """Ollama-friendly copy for local models; cloud hint otherwise."""
2312
+ name = str(getattr(getattr(self, "main_model", None), "name", "") or "")
2313
+ if "ollama" in name.lower():
2314
+ return (
2315
+ "Empty response from the local model (Ollama). "
2316
+ "The model may have timed out, unloaded, or hit context limits."
2317
+ )
2318
+ return "Empty response received from LLM. Check API keys, quota, or provider status."
2319
+
2309
2320
  async def send_message(self, inp):
2310
2321
  # Notify IO that LLM processing is starting
2311
2322
  self.io.llm_started()
@@ -2365,7 +2376,7 @@ class Coder(metaclass=UsageMeta):
2365
2376
  if not self.tui:
2366
2377
  spinner_text += f" • ${self.format_cost(self.total_cost)} session"
2367
2378
 
2368
- self.io.start_spinner(spinner_text)
2379
+ self.io.start_spinner(spinner_text, coder_uuid=getattr(self, "uuid", None))
2369
2380
  if self.stream:
2370
2381
  self.mdstream = True
2371
2382
  else:
@@ -2452,9 +2463,7 @@ class Coder(metaclass=UsageMeta):
2452
2463
  self.mdstream = None
2453
2464
 
2454
2465
  # Ensure any waiting spinner is stopped
2455
- self.io.start_spinner("Processing Answer...")
2456
-
2457
- self.partial_response_content = self.get_multi_response_content_in_progress(True)
2466
+ self.io.start_spinner("Processing Answer...", coder_uuid=getattr(self, "uuid", None))
2458
2467
  self.remove_reasoning_content()
2459
2468
  self.multi_response_content = ""
2460
2469
 
@@ -2645,6 +2654,13 @@ class Coder(metaclass=UsageMeta):
2645
2654
  expanded_tool_calls.append(tool_call)
2646
2655
  continue
2647
2656
 
2657
+ merged = responses.merge_glued_json_objects(json_chunks)
2658
+ if merged is not None:
2659
+ new_tool_call = copy_tool_call(tool_call)
2660
+ new_tool_call.function.arguments = json.dumps(merged)
2661
+ expanded_tool_calls.append(new_tool_call)
2662
+ continue
2663
+
2648
2664
  # We have concatenated JSON, so expand it into multiple tool calls.
2649
2665
  for i, chunk in enumerate(json_chunks):
2650
2666
  if not chunk.strip():
@@ -3255,7 +3271,6 @@ class Coder(metaclass=UsageMeta):
3255
3271
  functions,
3256
3272
  self.stream,
3257
3273
  self.temperature,
3258
- # This could include any tools, but for now it is just MCP tools
3259
3274
  tools=tools,
3260
3275
  override_kwargs=self.model_kwargs.copy(),
3261
3276
  interrupt_event=self.interrupt_event,
@@ -3363,7 +3378,7 @@ class Coder(metaclass=UsageMeta):
3363
3378
  and not len(self.partial_response_tool_calls)
3364
3379
  and not len(self.partial_response_reasoning_content)
3365
3380
  ):
3366
- self.io.tool_warning("Empty response received from LLM. Check your provider account?")
3381
+ self.io.tool_warning(self.empty_llm_tool_warning())
3367
3382
 
3368
3383
  self.io.assistant_output(show_resp, pretty=self.show_pretty())
3369
3384
 
@@ -3520,7 +3535,7 @@ class Coder(metaclass=UsageMeta):
3520
3535
  return
3521
3536
 
3522
3537
  if not received_content and len(self.partial_response_tool_calls) == 0:
3523
- self.io.tool_warning("Empty response received from LLM. Check your provider account?")
3538
+ self.io.tool_warning(self.empty_llm_tool_warning())
3524
3539
 
3525
3540
  def consolidate_chunks(self):
3526
3541
  if self.partial_response_consolidated:
@@ -3628,12 +3643,19 @@ class Coder(metaclass=UsageMeta):
3628
3643
  extracted_calls = responses.extract_tools_from_content_json(
3629
3644
  self.partial_response_content
3630
3645
  )
3646
+
3631
3647
  if not extracted_calls:
3632
3648
  extracted_calls = responses.extract_tools_from_content_xml(
3633
3649
  self.partial_response_content
3634
3650
  )
3635
3651
 
3652
+ if not extracted_calls:
3653
+ extracted_calls = responses.extract_tools_from_pseudo_json(
3654
+ self.partial_response_content
3655
+ )
3656
+
3636
3657
  if extracted_calls:
3658
+ self.tool_reflection = True
3637
3659
  self.partial_response_tool_calls = extracted_calls
3638
3660
 
3639
3661
  self.partial_response_consolidated = (response, func_err, content_err)
@@ -33,7 +33,6 @@ from .help import HelpCommand
33
33
  from .history_search import HistorySearchCommand
34
34
  from .hooks import HooksCommand
35
35
  from .include_skill import IncludeSkillCommand
36
- from .invoke_agent import InvokeAgentCommand
37
36
  from .lint import LintCommand
38
37
  from .list_sessions import ListSessionsCommand
39
38
  from .list_skills import ListSkillsCommand
@@ -117,7 +116,6 @@ CommandRegistry.register(HashlineCommand)
117
116
  CommandRegistry.register(HelpCommand)
118
117
  CommandRegistry.register(HistorySearchCommand)
119
118
  CommandRegistry.register(HooksCommand)
120
- CommandRegistry.register(InvokeAgentCommand)
121
119
  CommandRegistry.register(ReapAgentCommand)
122
120
  CommandRegistry.register(SpawnAgentCommand)
123
121
  CommandRegistry.register(SwitchAgentCommand)
@@ -200,7 +198,6 @@ __all__ = [
200
198
  "HistorySearchCommand",
201
199
  "HooksCommand",
202
200
  "IncludeSkillCommand",
203
- "InvokeAgentCommand",
204
201
  "ReapAgentCommand",
205
202
  "SpawnAgentCommand",
206
203
  "SwitchAgentCommand",
@@ -71,6 +71,20 @@ class AddCommand(BaseCommand):
71
71
  if len(confirm_fname) > 64:
72
72
  confirm_fname = f".../{os.path.basename(confirm_fname)}"
73
73
 
74
+ # Check if the path matches any exempt-path regex patterns
75
+ exempt_paths = getattr(coder.args, "exempt_paths", None) or []
76
+ if exempt_paths:
77
+ try:
78
+ rel_norm = os.path.relpath(fname, coder.root).replace("\\", "/")
79
+ except ValueError:
80
+ rel_norm = str(fname).replace("\\", "/")
81
+ if any(re.search(p, rel_norm) for p in exempt_paths):
82
+ io.tool_error(
83
+ f"Path '{confirm_fname}' matches an exempt-path pattern. "
84
+ "Skipping file creation."
85
+ )
86
+ continue
87
+
74
88
  if await io.confirm_ask(
75
89
  f"No files matched '{confirm_fname}'. Do you want to create this file?"
76
90
  ):
@@ -84,12 +98,9 @@ class AddCommand(BaseCommand):
84
98
  for matched_file in sorted(all_matched_files):
85
99
  abs_file_path = coder.abs_root_path(matched_file)
86
100
 
87
- if (
88
- coder.repo
89
- and coder.repo.git_ignored_file(matched_file)
90
- and not coder.add_gitignore_files
91
- ):
92
- io.tool_error(f"Can't add {matched_file} which is in gitignore")
101
+ blocked = cls._add_blocked_message(coder, matched_file)
102
+ if blocked:
103
+ io.tool_error(blocked)
93
104
  continue
94
105
 
95
106
  if abs_file_path in coder.abs_fnames:
@@ -240,3 +251,79 @@ class AddCommand(BaseCommand):
240
251
  help_text += "Files can be moved from read-only to editable status.\n"
241
252
  help_text += "Image files can be added if the model supports vision.\n"
242
253
  return help_text
254
+
255
+ @staticmethod
256
+ def _display_add_path(matched_file: str) -> str:
257
+ try:
258
+ label = os.path.relpath(matched_file)
259
+ except ValueError:
260
+ label = matched_file
261
+ if len(label) > 64:
262
+ label = f".../{os.path.basename(label)}"
263
+ return label
264
+
265
+ @staticmethod
266
+ def _git_repo_for_add_check(coder, matched_file: str):
267
+ """Resolve the GitRepo used for ignore checks (RepoSet-aware)."""
268
+ repo = coder.repo
269
+ if not repo:
270
+ return None, matched_file
271
+ if hasattr(repo, "repo_for_rel_path"):
272
+ git_repo = repo.repo_for_rel_path(matched_file)
273
+ try:
274
+ rel = repo.path_relative_to_repo(matched_file, git_repo)
275
+ except (ValueError, OSError):
276
+ rel = matched_file
277
+ return git_repo, rel
278
+ return repo, matched_file
279
+
280
+ @classmethod
281
+ def _add_blocked_message(cls, coder, matched_file: str) -> str | None:
282
+ """
283
+ Explain why /add refused a path. Distinguishes .gitignore vs .cecli.ignore when possible.
284
+ """
285
+ if not coder.repo or coder.add_gitignore_files:
286
+ return None
287
+ if not coder.repo.git_ignored_file(matched_file):
288
+ return None
289
+
290
+ display = cls._display_add_path(matched_file)
291
+ git_repo, rel = cls._git_repo_for_add_check(coder, matched_file)
292
+ if not git_repo:
293
+ return (
294
+ f"Can't add {display}: excluded by ignore rules for this session. "
295
+ "Confirm Settings \u2192 project folder is the git root for this file."
296
+ )
297
+
298
+ gitignore_hit = False
299
+ cecli_hit = False
300
+ if hasattr(git_repo, "_is_gitignored_by_pathspec"):
301
+ try:
302
+ gitignore_hit = bool(git_repo._is_gitignored_by_pathspec(rel))
303
+ except (ValueError, OSError):
304
+ gitignore_hit = False
305
+
306
+ ignore_file = getattr(git_repo, "cecli_ignore_file", None) or getattr(
307
+ git_repo, "aider_ignore_file", None
308
+ )
309
+ if ignore_file and Path(ignore_file).is_file() and hasattr(git_repo, "ignored_file_raw"):
310
+ try:
311
+ cecli_hit = bool(git_repo.ignored_file_raw(rel))
312
+ except (ValueError, OSError):
313
+ cecli_hit = False
314
+
315
+ if cecli_hit and not gitignore_hit:
316
+ return (
317
+ f"Can't add {display}: blocked by {Path(ignore_file).name} "
318
+ "(cecli ignore rules), not .gitignore."
319
+ )
320
+ if gitignore_hit:
321
+ return (
322
+ f"Can't add {display}: matched .gitignore under the session workspace. "
323
+ "If this is normal tracked source, check the project folder in Settings."
324
+ )
325
+ return (
326
+ f"Can't add {display}: excluded by ignore rules for this session "
327
+ "(.gitignore and/or cecli ignore). "
328
+ "Confirm the project folder is the git root that contains this file."
329
+ )
@@ -19,7 +19,7 @@ class ExcludeSkillCommand(BaseCommand):
19
19
  skill_names = args.strip().split()
20
20
 
21
21
  # Check if we're in agent mode
22
- if not hasattr(coder, "edit_format") or coder.edit_format != "agent":
22
+ if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
23
23
  io.tool_output("Skill exclusion is only available in agent mode.")
24
24
  return format_command_result(
25
25
  io, "exclude-skill", "Skill exclusion is only available in agent mode"
@@ -19,7 +19,7 @@ class IncludeSkillCommand(BaseCommand):
19
19
  skill_names = args.strip().split()
20
20
 
21
21
  # Check if we're in agent mode
22
- if not hasattr(coder, "edit_format") or coder.edit_format != "agent":
22
+ if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
23
23
  io.tool_output("Skill inclusion is only available in agent mode.")
24
24
  return format_command_result(
25
25
  io, "include-skill", "Skill inclusion is only available in agent mode"
@@ -19,7 +19,8 @@ class LoadSkillCommand(BaseCommand):
19
19
  skill_names = args.strip().split()
20
20
 
21
21
  # Check if we're in agent mode
22
- if not hasattr(coder, "edit_format") or coder.edit_format != "agent":
22
+ io.tool_output(coder.edit_format)
23
+ if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
23
24
  io.tool_output("Skill loading is only available in agent mode.")
24
25
  return format_command_result(
25
26
  io, "load-skill", "Skill loading is only available in agent mode"