cecli-dev 1.8.1rc3__tar.gz → 1.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (912) hide show
  1. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/PKG-INFO +1 -1
  2. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/_version.py +3 -3
  3. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/args.py +19 -0
  4. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/agent_coder.py +1 -0
  5. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/base_coder.py +87 -19
  6. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/__init__.py +3 -0
  7. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/core.py +4 -1
  8. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/insert_queue.py +16 -3
  9. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/list_queue.py +1 -1
  10. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/queue.py +8 -3
  11. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/remove_queue.py +1 -1
  12. cecli_dev-1.9.0/cecli/commands/run_queue.py +79 -0
  13. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/service.py +115 -1
  14. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/command_queue.py +80 -0
  15. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/io_proxy.py +6 -0
  16. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/onboarding/providers.py +16 -6
  17. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/__init__.py +30 -0
  18. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/agent.py +760 -0
  19. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/config.py +327 -0
  20. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/io.py +201 -0
  21. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/mcp.py +94 -0
  22. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/transport.py +158 -0
  23. cecli_dev-1.9.0/cecli/helpers/server/acp/agent/updates.py +463 -0
  24. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/runner.py +3 -0
  25. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/io.py +34 -1
  26. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/main.py +42 -1
  27. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/_yield.py +2 -1
  28. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/broadcast.py +4 -0
  29. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/app.py +23 -14
  30. cecli_dev-1.9.0/cecli/website/docs/config/acp.md +117 -0
  31. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/commands.md +33 -19
  32. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/PKG-INFO +1 -1
  33. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/SOURCES.txt +11 -1
  34. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/scm_file_list.json +11 -1
  35. cecli_dev-1.9.0/cecli_dev.egg-info/scm_version.json +8 -0
  36. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_main.py +18 -1
  37. {cecli_dev-1.8.1rc3/cecli/tests → cecli_dev-1.9.0/tests/commands}/test_queue_commands.py +681 -35
  38. cecli_dev-1.9.0/tests/helpers/server/acp/test_agent.py +1010 -0
  39. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_onboarding.py +8 -0
  40. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workflows/test_runner.py +30 -2
  41. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_service.py +90 -0
  42. cecli_dev-1.8.1rc3/cecli_dev.egg-info/scm_version.json +0 -8
  43. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.dockerignore +0 -0
  44. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.flake8 +0 -0
  45. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.gitattributes +0 -0
  46. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  47. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/check_pypi_version.yml +0 -0
  48. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/docker-build-test.yml +0 -0
  49. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/docker-release.yml +0 -0
  50. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/issues.yml +0 -0
  51. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/pages.yml +0 -0
  52. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/pre-commit.yml +0 -0
  53. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/release.yml +0 -0
  54. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/ubuntu-tests.yml +0 -0
  55. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/windows-tests.yml +0 -0
  56. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  57. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.gitignore +0 -0
  58. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/.pre-commit-config.yaml +0 -0
  59. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/CHANGELOG.md +0 -0
  60. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/CNAME +0 -0
  61. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/CONTRIBUTING.md +0 -0
  62. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/HISTORY.md +0 -0
  63. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/LICENSE.txt +0 -0
  64. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/MANIFEST.in +0 -0
  65. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/README.md +0 -0
  66. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/Dockerfile +0 -0
  67. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/README.md +0 -0
  68. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/__init__.py +0 -0
  69. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/benchmark.py +0 -0
  70. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/benchmark_classic.py +0 -0
  71. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/clone-exercism.sh +0 -0
  72. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/cpp-test.sh +0 -0
  73. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/docker.sh +0 -0
  74. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/docker_build.sh +0 -0
  75. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/install-docker-ubuntu.sh +0 -0
  76. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/npm-test.sh +0 -0
  77. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/over_time.py +0 -0
  78. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/plot.sh +0 -0
  79. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/plots.py +0 -0
  80. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/problem_stats.py +0 -0
  81. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/prompts.py +0 -0
  82. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/refactor_tools.py +0 -0
  83. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/rsync.sh +0 -0
  84. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/rungrid.py +0 -0
  85. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/swe-bench-lite.txt +0 -0
  86. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/swe-bench.txt +0 -0
  87. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/swe_bench.py +0 -0
  88. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/test_benchmark.py +0 -0
  89. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/variations.1.sh +0 -0
  90. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/variations.2.sh +0 -0
  91. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/variations.3.sh +0 -0
  92. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/benchmark/variations.4.sh +0 -0
  93. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/__init__.py +0 -0
  94. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/__main__.py +0 -0
  95. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/args_formatter.py +0 -0
  96. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/change_tracker.py +0 -0
  97. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/__init__.py +0 -0
  98. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/architect_coder.py +0 -0
  99. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/ask_coder.py +0 -0
  100. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/chat_chunks.py +0 -0
  101. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/context_coder.py +0 -0
  102. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/copypaste_coder.py +0 -0
  103. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editblock_coder.py +0 -0
  104. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  105. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editblock_func_coder.py +0 -0
  106. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  107. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editor_editblock_coder.py +0 -0
  108. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/editor_whole_coder.py +0 -0
  109. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/hashline_coder.py +0 -0
  110. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/help_coder.py +0 -0
  111. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/patch_coder.py +0 -0
  112. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/search_replace.py +0 -0
  113. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/shell.py +0 -0
  114. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  115. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/sub_agent_coder.py +0 -0
  116. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/udiff_coder.py +0 -0
  117. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/udiff_simple.py +0 -0
  118. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/wholefile_coder.py +0 -0
  119. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/coders/wholefile_func_coder.py +0 -0
  120. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/add.py +0 -0
  121. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/agent.py +0 -0
  122. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/agent_model.py +0 -0
  123. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/agent_tree.py +0 -0
  124. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/architect.py +0 -0
  125. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/ask.py +0 -0
  126. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/auto_memory.py +0 -0
  127. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/chat_mode.py +0 -0
  128. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/clear.py +0 -0
  129. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/code.py +0 -0
  130. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/command_prefix.py +0 -0
  131. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/commit.py +0 -0
  132. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/compact.py +0 -0
  133. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/context.py +0 -0
  134. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/context_blocks.py +0 -0
  135. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/context_management.py +0 -0
  136. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/copy.py +0 -0
  137. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/copy_context.py +0 -0
  138. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/diff.py +0 -0
  139. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/drop.py +0 -0
  140. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/editor.py +0 -0
  141. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/editor_model.py +0 -0
  142. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/exclude_skill.py +0 -0
  143. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/exit.py +0 -0
  144. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/git.py +0 -0
  145. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/hashline.py +0 -0
  146. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/help.py +0 -0
  147. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/history_search.py +0 -0
  148. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/hooks.py +0 -0
  149. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/hot_reload.py +0 -0
  150. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/import_skill.py +0 -0
  151. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/include_skill.py +0 -0
  152. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/lint.py +0 -0
  153. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/list_mcp.py +0 -0
  154. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/list_sessions.py +0 -0
  155. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/list_skills.py +0 -0
  156. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/load.py +0 -0
  157. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/load_hook.py +0 -0
  158. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/load_mcp.py +0 -0
  159. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/load_session.py +0 -0
  160. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/load_skill.py +0 -0
  161. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/ls.py +0 -0
  162. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/map.py +0 -0
  163. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/map_refresh.py +0 -0
  164. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/merge.py +0 -0
  165. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/model.py +0 -0
  166. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/models.py +0 -0
  167. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/multiline_mode.py +0 -0
  168. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/paste.py +0 -0
  169. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/quit.py +0 -0
  170. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/read_only.py +0 -0
  171. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/read_only_stub.py +0 -0
  172. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/reap_agent.py +0 -0
  173. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/reasoning_effort.py +0 -0
  174. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/remove_hook.py +0 -0
  175. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/remove_mcp.py +0 -0
  176. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/remove_memory.py +0 -0
  177. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/remove_skill.py +0 -0
  178. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/report.py +0 -0
  179. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/reset.py +0 -0
  180. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/rules.py +0 -0
  181. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/run.py +0 -0
  182. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/save.py +0 -0
  183. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/save_session.py +0 -0
  184. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/search_memory.py +0 -0
  185. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/settings.py +0 -0
  186. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/spawn_agent.py +0 -0
  187. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/switch_agent.py +0 -0
  188. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  189. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/terminal_setup.py +0 -0
  190. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/test.py +0 -0
  191. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/think_tokens.py +0 -0
  192. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/tokens.py +0 -0
  193. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/undo.py +0 -0
  194. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/utils/__init__.py +0 -0
  195. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/utils/base_command.py +0 -0
  196. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/utils/helpers.py +0 -0
  197. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/utils/registry.py +0 -0
  198. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/utils/save_load_manager.py +0 -0
  199. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/voice.py +0 -0
  200. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/weak_model.py +0 -0
  201. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/web.py +0 -0
  202. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/workflows.py +0 -0
  203. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/commands/workspace.py +0 -0
  204. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/decoding.py +0 -0
  205. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/deprecated_args.py +0 -0
  206. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/diffs.py +0 -0
  207. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/dump.py +0 -0
  208. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/editor.py +0 -0
  209. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/exceptions.py +0 -0
  210. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/format_settings.py +0 -0
  211. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/help.py +0 -0
  212. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/help_pats.py +0 -0
  213. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/__init__.py +0 -0
  214. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/__init__.py +0 -0
  215. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/config.py +0 -0
  216. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/defaults/__init__.py +0 -0
  217. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  218. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/agents/defaults/worker.md +0 -0
  219. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/background_commands.py +0 -0
  220. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/command_parser.py +0 -0
  221. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/config_utils.py +0 -0
  222. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/__init__.py +0 -0
  223. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/base_message.py +0 -0
  224. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/files.py +0 -0
  225. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/integration.py +0 -0
  226. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/manager.py +0 -0
  227. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/service.py +0 -0
  228. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/tags.py +0 -0
  229. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/conversation/utils.py +0 -0
  230. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/copypaste.py +0 -0
  231. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/coroutines.py +0 -0
  232. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/crypto.py +0 -0
  233. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/extensions/__init__.py +0 -0
  234. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/extensions/skills_importer.py +0 -0
  235. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_searcher.py +0 -0
  236. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/__init__.py +0 -0
  237. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/builders.py +0 -0
  238. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/ignore.py +0 -0
  239. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/ngram_index.py +0 -0
  240. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/service.py +0 -0
  241. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/file_system/trie_index.py +0 -0
  242. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  243. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/dump.py +0 -0
  244. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  245. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/main.py +0 -0
  246. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  247. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  248. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/hashline.py +0 -0
  249. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/hashpos/__init__.py +0 -0
  250. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  251. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  252. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/hashpos/transformations.py +0 -0
  253. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/leak_detect.py +0 -0
  254. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/__init__.py +0 -0
  255. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/aws_sigv4.py +0 -0
  256. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/config.py +0 -0
  257. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/constants.py +0 -0
  258. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/__init__.py +0 -0
  259. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/bedrock.py +0 -0
  260. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/chat.py +0 -0
  261. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/gemini.py +0 -0
  262. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/messages.py +0 -0
  263. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/domains/responses.py +0 -0
  264. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/formatters/__init__.py +0 -0
  265. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  266. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/formatters/thinking.py +0 -0
  267. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/identifiers.py +0 -0
  268. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/litellm_compat.py +0 -0
  269. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/pipeline.py +0 -0
  270. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/__init__.py +0 -0
  271. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/anthropic.py +0 -0
  272. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/azure.py +0 -0
  273. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/base.py +0 -0
  274. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/bedrock.py +0 -0
  275. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  276. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/deepseek.py +0 -0
  277. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/gemini.py +0 -0
  278. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  279. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/meta.py +0 -0
  280. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/mistral.py +0 -0
  281. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/ollama.py +0 -0
  282. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/openai.py +0 -0
  283. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/providers/openrouter.py +0 -0
  284. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/runtime.py +0 -0
  285. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/types.py +0 -0
  286. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/llms/utils.py +0 -0
  287. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/lock_detect.py +0 -0
  288. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/loop_detect.py +0 -0
  289. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/memory/__init__.py +0 -0
  290. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/memory/db.py +0 -0
  291. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/memory/utils.py +0 -0
  292. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/memory_control.py +0 -0
  293. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/__init__.py +0 -0
  294. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/agent.py +0 -0
  295. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/api.py +0 -0
  296. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  297. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  298. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  299. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/identifiers.py +0 -0
  300. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/llm.py +0 -0
  301. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/pipeline.py +0 -0
  302. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/registry.py +0 -0
  303. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_config/utils.py +0 -0
  304. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/model_providers.py +0 -0
  305. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/nested.py +0 -0
  306. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/observations/__init__.py +0 -0
  307. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/observations/service.py +0 -0
  308. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/onboarding/__init__.py +0 -0
  309. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/onboarding/app.py +0 -0
  310. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/__init__.py +0 -0
  311. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  312. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/environment.py +0 -0
  313. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/region_resolver.py +0 -0
  314. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/safe_methods.py +0 -0
  315. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/security.py +0 -0
  316. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/service.py +0 -0
  317. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  318. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/plugin_manager.py +0 -0
  319. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/profiler.py +0 -0
  320. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/queues.py +0 -0
  321. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/requests.py +0 -0
  322. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/responses.py +0 -0
  323. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/scheduler/__init__.py +0 -0
  324. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/scheduler/cron.py +0 -0
  325. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/scheduler/db.py +0 -0
  326. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/scheduler/lock.py +0 -0
  327. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/scheduler/service.py +0 -0
  328. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/__init__.py +0 -0
  329. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/acp/__init__.py +0 -0
  330. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/acp/bridge.py +0 -0
  331. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/acp/models.py +0 -0
  332. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/acp/protocol.py +0 -0
  333. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/signals.py +0 -0
  334. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/server/ws_server.py +0 -0
  335. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/__init__.py +0 -0
  336. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/layout.py +0 -0
  337. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/manager.py +0 -0
  338. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/payload.py +0 -0
  339. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/storage.py +0 -0
  340. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/sessions/subagents.py +0 -0
  341. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/similarity.py +0 -0
  342. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/skills.py +0 -0
  343. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/__init__.py +0 -0
  344. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/api.py +0 -0
  345. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/client.py +0 -0
  346. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/config.py +0 -0
  347. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/integrations.py +0 -0
  348. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/system_one/types.py +0 -0
  349. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/threading.py +0 -0
  350. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/__init__.py +0 -0
  351. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/config.py +0 -0
  352. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/logs.py +0 -0
  353. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/models.py +0 -0
  354. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/outputs.py +0 -0
  355. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workflows/subagents.py +0 -0
  356. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workspaces/__init__.py +0 -0
  357. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workspaces/config.py +0 -0
  358. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workspaces/paths.py +0 -0
  359. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workspaces/subagents.py +0 -0
  360. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/helpers/workspaces/workspace.py +0 -0
  361. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/history.py +0 -0
  362. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/__init__.py +0 -0
  363. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/base.py +0 -0
  364. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/helpers.py +0 -0
  365. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/integration.py +0 -0
  366. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/manager.py +0 -0
  367. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/registry.py +0 -0
  368. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/service.py +0 -0
  369. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/hooks/types.py +0 -0
  370. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/http.py +0 -0
  371. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/interruptible_input.py +0 -0
  372. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/linter.py +0 -0
  373. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/llm.py +0 -0
  374. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mcp/__init__.py +0 -0
  375. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mcp/manager.py +0 -0
  376. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mcp/oauth.py +0 -0
  377. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mcp/server.py +0 -0
  378. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mcp/utils.py +0 -0
  379. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/mdstream.py +0 -0
  380. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/models.py +0 -0
  381. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/onboarding.py +0 -0
  382. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/__init__.py +0 -0
  383. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/agent.yml +0 -0
  384. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/architect.yml +0 -0
  385. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/ask.yml +0 -0
  386. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/base.yml +0 -0
  387. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/context.yml +0 -0
  388. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/copypaste.yml +0 -0
  389. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editblock.yml +0 -0
  390. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editblock_fenced.yml +0 -0
  391. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editblock_func.yml +0 -0
  392. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  393. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editor_editblock.yml +0 -0
  394. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/editor_whole.yml +0 -0
  395. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/hashline.yml +0 -0
  396. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/help.yml +0 -0
  397. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/patch.yml +0 -0
  398. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  399. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/subagent.yml +0 -0
  400. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/udiff.yml +0 -0
  401. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/udiff_simple.yml +0 -0
  402. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/utils/__init__.py +0 -0
  403. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/utils/registry.py +0 -0
  404. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/utils/system.py +0 -0
  405. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/wholefile.yml +0 -0
  406. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/prompts/wholefile_func.yml +0 -0
  407. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  408. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  409. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  410. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  411. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  412. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  413. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  414. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  415. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  416. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  417. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  418. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  419. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  420. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  421. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  422. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  423. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  424. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  425. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  426. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  427. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  428. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  429. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  430. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  431. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  432. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  433. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  434. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  435. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  436. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  437. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  438. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  439. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  440. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  441. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  442. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  443. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  444. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  445. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  446. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  447. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  448. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  449. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  450. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  451. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  452. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  453. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  454. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  455. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  456. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  457. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  458. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  459. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  460. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  461. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  462. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  463. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  464. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  465. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  466. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  467. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/reasoning_tags.py +0 -0
  468. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/repo.py +0 -0
  469. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/repomap.py +0 -0
  470. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/report.py +0 -0
  471. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/__init__.py +0 -0
  472. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/model-metadata.ext.json +0 -0
  473. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/model-metadata.json +0 -0
  474. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/model-settings-condensed.yml +0 -0
  475. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/model-settings.yml +0 -0
  476. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/resources/providers.json +0 -0
  477. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/run_cmd.py +0 -0
  478. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/scrape.py +0 -0
  479. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/sendchat.py +0 -0
  480. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/signals.py +0 -0
  481. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/special.py +0 -0
  482. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/__init__.py +0 -0
  483. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/command.py +0 -0
  484. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/delegate.py +0 -0
  485. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/edit_file.py +0 -0
  486. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/explore_code.py +0 -0
  487. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_branch.py +0 -0
  488. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_diff.py +0 -0
  489. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_log.py +0 -0
  490. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_remote.py +0 -0
  491. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_show.py +0 -0
  492. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/git_status.py +0 -0
  493. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/grep.py +0 -0
  494. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/ls.py +0 -0
  495. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/orchestrate.py +0 -0
  496. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/read_file.py +0 -0
  497. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/replace_facts.py +0 -0
  498. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/resource_manager.py +0 -0
  499. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/search_facts.py +0 -0
  500. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/thinking.py +0 -0
  501. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/undo_change.py +0 -0
  502. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/update_todo_list.py +0 -0
  503. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/__init__.py +0 -0
  504. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/base_tool.py +0 -0
  505. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/helpers.py +0 -0
  506. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/output.py +0 -0
  507. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/registry.py +0 -0
  508. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/utils/responses.py +0 -0
  509. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/validations/__init__.py +0 -0
  510. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tools/validations/validations.py +0 -0
  511. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/__init__.py +0 -0
  512. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/io.py +0 -0
  513. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/styles.tcss +0 -0
  514. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/__init__.py +0 -0
  515. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/completion_bar.py +0 -0
  516. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/file_list.py +0 -0
  517. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/footer.py +0 -0
  518. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/input_area.py +0 -0
  519. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/input_container.py +0 -0
  520. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/key_hints.py +0 -0
  521. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/output.py +0 -0
  522. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/output_alt.bak +0 -0
  523. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/selectable_log.py +0 -0
  524. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/status_bar.py +0 -0
  525. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/subagent_pills.py +0 -0
  526. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/widgets/thin_scrollbar.py +0 -0
  527. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/tui/worker.py +0 -0
  528. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/urls.py +0 -0
  529. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/utils.py +0 -0
  530. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/versioncheck.py +0 -0
  531. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/voice.py +0 -0
  532. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/waiting.py +0 -0
  533. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/watch.py +0 -0
  534. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/watch_prompts.py +0 -0
  535. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/blame.md +0 -0
  536. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/get-started.md +0 -0
  537. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/help-tip.md +0 -0
  538. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/help.md +0 -0
  539. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/install.md +0 -0
  540. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/keys.md +0 -0
  541. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/model-warnings.md +0 -0
  542. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/multi-line.md +0 -0
  543. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/python-m-aider.md +0 -0
  544. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/recording.css +0 -0
  545. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/recording.md +0 -0
  546. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_includes/works-best.md +0 -0
  547. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_features.scss +0 -0
  548. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_footer.scss +0 -0
  549. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_hero.scss +0 -0
  550. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_info.scss +0 -0
  551. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_layout.scss +0 -0
  552. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_reset.scss +0 -0
  553. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_testimonials.scss +0 -0
  554. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_typography.scss +0 -0
  555. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/_variables.scss +0 -0
  556. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/custom/custom.scss +0 -0
  557. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/_sass/global-overrides.scss +0 -0
  558. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docmd.config.json +0 -0
  559. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  560. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  561. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/agent-mode.md +0 -0
  562. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/api-keys.md +0 -0
  563. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/api.md +0 -0
  564. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/conf.md +0 -0
  565. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/custom-commands.md +0 -0
  566. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  567. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/dotenv.md +0 -0
  568. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/editor.md +0 -0
  569. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/hooks.md +0 -0
  570. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/mcp.md +0 -0
  571. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/model-aliases.md +0 -0
  572. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/model-configuration.md +0 -0
  573. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/model-providers.md +0 -0
  574. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/options.md +0 -0
  575. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/persistent-memory.md +0 -0
  576. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/reasoning.md +0 -0
  577. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/retries.md +0 -0
  578. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/scheduler.md +0 -0
  579. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/security.md +0 -0
  580. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/skills.md +0 -0
  581. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/subagents.md +0 -0
  582. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/system-one.md +0 -0
  583. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/tui.md +0 -0
  584. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/workflows.md +0 -0
  585. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config/workspaces.md +0 -0
  586. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/config.md +0 -0
  587. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/git.md +0 -0
  588. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/index.md +0 -0
  589. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/install/docker.md +0 -0
  590. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/install.md +0 -0
  591. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/languages.md +0 -0
  592. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  593. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/legal/privacy.md +0 -0
  594. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/anthropic.md +0 -0
  595. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/azure.md +0 -0
  596. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/bedrock.md +0 -0
  597. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/cohere.md +0 -0
  598. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/deepseek.md +0 -0
  599. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/gemini.md +0 -0
  600. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/github.md +0 -0
  601. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/groq.md +0 -0
  602. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  603. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/ollama.md +0 -0
  604. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  605. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/openai.md +0 -0
  606. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/opencode-go.md +0 -0
  607. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/openrouter.md +0 -0
  608. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/other.md +0 -0
  609. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/vertex.md +0 -0
  610. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/warnings.md +0 -0
  611. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms/xai.md +0 -0
  612. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/llms.md +0 -0
  613. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/more/analytics.md +0 -0
  614. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/more/edit-formats.md +0 -0
  615. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/more/infinite-output.md +0 -0
  616. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/more-info.md +0 -0
  617. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/repomap.md +0 -0
  618. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/scripting.md +0 -0
  619. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  620. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  621. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  622. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  623. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  624. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  625. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  626. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/troubleshooting.md +0 -0
  627. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/conventions.md +0 -0
  628. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/copypaste.md +0 -0
  629. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/images-urls.md +0 -0
  630. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/lint-test.md +0 -0
  631. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/modes.md +0 -0
  632. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/not-code.md +0 -0
  633. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/notifications.md +0 -0
  634. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/optional.md +0 -0
  635. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/sessions.md +0 -0
  636. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/voice.md +0 -0
  637. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage/watch.md +0 -0
  638. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/docs/usage.md +0 -0
  639. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/package-lock.json +0 -0
  640. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/package.json +0 -0
  641. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli/website/share/index.md +0 -0
  642. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  643. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  644. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/requires.txt +0 -0
  645. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/cecli_dev.egg-info/top_level.txt +0 -0
  646. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/docker/Dockerfile +0 -0
  647. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  648. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/pyproject.toml +0 -0
  649. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/pytest.ini +0 -0
  650. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/common-constraints.txt +0 -0
  651. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-dev.in +0 -0
  652. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-dev.txt +0 -0
  653. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-help.in +0 -0
  654. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-help.txt +0 -0
  655. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-playwright.in +0 -0
  656. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements-playwright.txt +0 -0
  657. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/requirements.in +0 -0
  658. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements/tree-sitter.in +0 -0
  659. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/requirements.txt +0 -0
  660. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/30k-image.py +0 -0
  661. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/__init__.py +0 -0
  662. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/blame.py +0 -0
  663. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/clean_metadata.py +0 -0
  664. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/compare-message-history.py +0 -0
  665. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/condense_model_settings.py +0 -0
  666. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/cost_analyzer.py +0 -0
  667. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/cost_calculator.py +0 -0
  668. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/dl_icons.py +0 -0
  669. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/docmd_build.sh +0 -0
  670. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/filter-chat-mode.js +0 -0
  671. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/generate_providers.py +0 -0
  672. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/get_contributor_list.js +0 -0
  673. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/get_hashline.py +0 -0
  674. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/history_prompts.py +0 -0
  675. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/homepage.py +0 -0
  676. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/issues.py +0 -0
  677. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/logo_svg.py +0 -0
  678. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/optimize_tokens.sh +0 -0
  679. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/pip-compile.sh +0 -0
  680. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/recording_audio.py +0 -0
  681. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/redact-cast.py +0 -0
  682. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/rename_to_cecli.py +0 -0
  683. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/tmux_record.sh +0 -0
  684. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/tsl_pack_langs.py +0 -0
  685. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/update-blame.sh +0 -0
  686. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/update-docs.sh +0 -0
  687. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/update-history.py +0 -0
  688. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/versionbump.py +0 -0
  689. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/scripts/yank-old-versions.py +0 -0
  690. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/setup.cfg +0 -0
  691. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/shim.pyproject.toml +0 -0
  692. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/__init__.py +0 -0
  693. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/__init__.py +0 -0
  694. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/conftest.py +0 -0
  695. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_agent_config_merge.py +0 -0
  696. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_aws_credentials.py +0 -0
  697. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_background_commands.py +0 -0
  698. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_coder.py +0 -0
  699. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_commands.py +0 -0
  700. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_custom_commands.py +0 -0
  701. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_deprecated.py +0 -0
  702. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_editblock.py +0 -0
  703. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_editor.py +0 -0
  704. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_empty_response.py +0 -0
  705. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_exceptions.py +0 -0
  706. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_file_system_service.py +0 -0
  707. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_find_or_blocks.py +0 -0
  708. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_hashline.py +0 -0
  709. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_hashline_closure.py +0 -0
  710. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_history.py +0 -0
  711. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_io.py +0 -0
  712. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_linter.py +0 -0
  713. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_model_info_manager.py +0 -0
  714. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_model_provider_manager.py +0 -0
  715. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_models.py +0 -0
  716. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_onboarding.py +0 -0
  717. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_plugin_manager.py +0 -0
  718. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_prompts.py +0 -0
  719. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_reasoning.py +0 -0
  720. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_repo.py +0 -0
  721. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_repomap.py +0 -0
  722. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_retry_config.py +0 -0
  723. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_run_cmd.py +0 -0
  724. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_sanity_check_repo.py +0 -0
  725. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_scheduler_config.py +0 -0
  726. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_scripting.py +0 -0
  727. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_select_selector.py +0 -0
  728. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_sendchat.py +0 -0
  729. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_session_args.py +0 -0
  730. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_session_crypto.py +0 -0
  731. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_sessions.py +0 -0
  732. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_sessions_manager.py +0 -0
  733. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_skills.py +0 -0
  734. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_special.py +0 -0
  735. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_spinner.py +0 -0
  736. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_ssl_verification.py +0 -0
  737. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_system_one.py +0 -0
  738. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_udiff.py +0 -0
  739. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_urls.py +0 -0
  740. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_voice.py +0 -0
  741. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_watch.py +0 -0
  742. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/basic/test_wholefile.py +0 -0
  743. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/coders/test_coder_switching.py +0 -0
  744. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/coders/test_copypaste_coder.py +0 -0
  745. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/coders/test_rate_limit.py +0 -0
  746. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/coders/test_tool_call_consolidation.py +0 -0
  747. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_auto_memory.py +0 -0
  748. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_compaction.py +0 -0
  749. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_remove_memory.py +0 -0
  750. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_search_memory.py +0 -0
  751. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_switch_agent.py +0 -0
  752. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_voice.py +0 -0
  753. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_workflows.py +0 -0
  754. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/commands/test_workspace.py +0 -0
  755. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/conftest.py +0 -0
  756. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/conversations/test_background_command_injection.py +0 -0
  757. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/conversations/test_conversation_integration.py +0 -0
  758. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/conversations/test_conversation_system.py +0 -0
  759. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  760. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/chat-history.md +0 -0
  761. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  762. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/bash/test.sh +0 -0
  763. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/c/test.c +0 -0
  764. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  765. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  766. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  767. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  768. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  769. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/d/test.d +0 -0
  770. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/dart/test.dart +0 -0
  771. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/elisp/test.el +0 -0
  772. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  773. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/elm/test.elm +0 -0
  774. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  775. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/go/test.go +0 -0
  776. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  777. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  778. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/java/test.java +0 -0
  779. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/javascript/test.js +0 -0
  780. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  781. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/lua/test.lua +0 -0
  782. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/matlab/test.m +0 -0
  783. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  784. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  785. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/php/test.php +0 -0
  786. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/pony/test.pony +0 -0
  787. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/properties/test.properties +0 -0
  788. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/python/test.py +0 -0
  789. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/ql/test.ql +0 -0
  790. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/r/test.r +0 -0
  791. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  792. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  793. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/rust/test.rs +0 -0
  794. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/scala/test.scala +0 -0
  795. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  796. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/swift/test.swift +0 -0
  797. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  798. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  799. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/udev/test.rules +0 -0
  800. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/languages/zig/test.zig +0 -0
  801. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  802. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  803. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  804. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/watch.js +0 -0
  805. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/watch.lisp +0 -0
  806. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/watch.py +0 -0
  807. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/fixtures/watch_question.js +0 -0
  808. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/help/test_help.py +0 -0
  809. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/observations/test_observation_service.py +0 -0
  810. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/scheduler/__init__.py +0 -0
  811. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/scheduler/test_cron.py +0 -0
  812. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/scheduler/test_db.py +0 -0
  813. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/scheduler/test_service.py +0 -0
  814. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/server/acp/__init__.py +0 -0
  815. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/server/acp/test_bridge.py +0 -0
  816. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/server/acp/test_dispatch.py +0 -0
  817. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/server/acp/test_models.py +0 -0
  818. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/server/acp/test_protocol.py +0 -0
  819. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_api_base.py +0 -0
  820. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  821. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_cache_control.py +0 -0
  822. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_gemini_auth.py +0 -0
  823. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  824. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_hyperscalers.py +0 -0
  825. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_messages_stream.py +0 -0
  826. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_messages_wire.py +0 -0
  827. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  828. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_mistral_provider.py +0 -0
  829. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_ollama_native.py +0 -0
  830. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_providers_json.py +0 -0
  831. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_reasoning_config.py +0 -0
  832. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  833. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  834. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_llms_vision.py +0 -0
  835. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_loop_detect.py +0 -0
  836. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_memory_control.py +0 -0
  837. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_model_config.py +0 -0
  838. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_orchestration.py +0 -0
  839. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/test_skills_importer.py +0 -0
  840. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workflows/__init__.py +0 -0
  841. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workflows/test_config.py +0 -0
  842. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workflows/test_subagents.py +0 -0
  843. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workspaces/conftest.py +0 -0
  844. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workspaces/test_config.py +0 -0
  845. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workspaces/test_paths.py +0 -0
  846. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workspaces/test_subagents.py +0 -0
  847. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  848. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/hooks/__init__.py +0 -0
  849. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/hooks/test_base.py +0 -0
  850. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/hooks/test_manager.py +0 -0
  851. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/hooks/test_registry.py +0 -0
  852. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/integration/test_agent_mcp_management.py +0 -0
  853. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/integration/test_config_loading.py +0 -0
  854. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/integration/test_mcp_management.py +0 -0
  855. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/integration/test_workflows_e2e.py +0 -0
  856. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/__init__.py +0 -0
  857. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/conftest.py +0 -0
  858. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/mock_server.py +0 -0
  859. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_concurrency.py +0 -0
  860. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_config.py +0 -0
  861. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_integration.py +0 -0
  862. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_logging.py +0 -0
  863. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_resilience.py +0 -0
  864. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_keepalive_unit.py +0 -0
  865. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_manager.py +0 -0
  866. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_manager_retry.py +0 -0
  867. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_server_name_normalization.py +0 -0
  868. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_server_sdk_compat.py +0 -0
  869. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/mcp/test_tool_name_sanitization.py +0 -0
  870. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/scrape/test_playwright_disable.py +0 -0
  871. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/scrape/test_scrape.py +0 -0
  872. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/__init__.py +0 -0
  873. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/conftest.py +0 -0
  874. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_commands.py +0 -0
  875. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_config.py +0 -0
  876. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_delegate.py +0 -0
  877. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_finished.py +0 -0
  878. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_io_proxy.py +0 -0
  879. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/subagents/test_sub_agent_coder.py +0 -0
  880. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/test_requests.py +0 -0
  881. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_command_format_output.py +0 -0
  882. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_command_timeout_paging.py +0 -0
  883. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_edit_file_format_output.py +0 -0
  884. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_extractions.py +0 -0
  885. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_get_lines.py +0 -0
  886. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_git_branch.py +0 -0
  887. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_git_diff.py +0 -0
  888. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_grep.py +0 -0
  889. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_insert_block.py +0 -0
  890. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_read_range_execute.py +0 -0
  891. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_registry.py +0 -0
  892. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_remove_mcp_tool.py +0 -0
  893. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_resource_manager_paging.py +0 -0
  894. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_tool_arguments.py +0 -0
  895. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  896. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tools/validations.py +0 -0
  897. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tui/test_app.py +0 -0
  898. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tui/test_completion_bar.py +0 -0
  899. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/tui/test_output.py +0 -0
  900. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/conftest.py +0 -0
  901. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_deep_merge.py +0 -0
  902. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_edge_cases.py +0 -0
  903. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_load_mcp.py +0 -0
  904. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_performance.py +0 -0
  905. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_queues.py +0 -0
  906. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_remove_mcp.py +0 -0
  907. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_retry_backoff.py +0 -0
  908. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_shallow_merge.py +0 -0
  909. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_signals.py +0 -0
  910. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  911. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  912. {cecli_dev-1.8.1rc3 → cecli_dev-1.9.0}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.8.1rc3
3
+ Version: 1.9.0
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -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 = '1.8.1rc3'
22
- __version_tuple__ = version_tuple = (1, 8, 1, 'rc3')
21
+ __version__ = version = '1.9.0'
22
+ __version_tuple__ = version_tuple = (1, 9, 0)
23
23
 
24
- __commit_id__ = commit_id = 'gb07a9f6ad'
24
+ __commit_id__ = commit_id = 'g2f5bc6842'
@@ -31,6 +31,7 @@ DEEP_MERGE_LIST_FIELDS: frozenset[str] = frozenset(
31
31
  "file",
32
32
  "read",
33
33
  "mcp_servers_files",
34
+ "acp_models",
34
35
  "set_env",
35
36
  "api_key",
36
37
  "alias",
@@ -1313,6 +1314,24 @@ def get_parser(default_config_files, git_root):
1313
1314
  help="Specify server configuration (WebSocket and headless) as a JSON/YAML string",
1314
1315
  default=None,
1315
1316
  )
1317
+ group.add_argument(
1318
+ "--acp",
1319
+ action="store_true",
1320
+ default=False,
1321
+ help=(
1322
+ "Run as an Agent Client Protocol (ACP) agent over stdio, for editors such as Zed"
1323
+ " (stdout carries the protocol)"
1324
+ ),
1325
+ )
1326
+ group.add_argument(
1327
+ "--acp-models",
1328
+ action="append",
1329
+ metavar="PATTERN",
1330
+ help=(
1331
+ "Limit the ACP model picker's provider lists to models matching this pattern,"
1332
+ " matched like /models (can be used multiple times)"
1333
+ ),
1334
+ )
1316
1335
 
1317
1336
  ##########
1318
1337
  group = parser.add_argument_group("Deprecated model settings")
@@ -842,6 +842,7 @@ class AgentCoder(Coder):
842
842
  for tool_call in tool_calls_list:
843
843
  tool_name = tool_call.function.name
844
844
  result_message = ""
845
+ self.io.tool_call_event(tool_call.id, "in_progress")
845
846
  try:
846
847
  if responses.unprefix_tool_name(tool_name)[1].lower() in self.write_tools:
847
848
  used_write_tool = True
@@ -291,8 +291,8 @@ class Coder(metaclass=UsageMeta):
291
291
  commit_language = None
292
292
  file_watcher = None
293
293
  mcp_manager = None
294
- run_one_completed = True
295
294
  compact_context_completed = True
295
+ _drain_queue_after_command = False
296
296
  suppress_announcements_for_next_prompt = False
297
297
  tool_reflection = False
298
298
  last_user_message = ""
@@ -684,6 +684,8 @@ class Coder(metaclass=UsageMeta):
684
684
  self._queue_counter = 0
685
685
  self._queue_lock = threading.Lock()
686
686
  self._processing_queue = False
687
+ self._active_queue_prompt = None
688
+ self._drain_queue_after_command = False
687
689
 
688
690
  self.data_cache = {
689
691
  "repo": {"last_key": "", "read_only_count": None},
@@ -1627,6 +1629,10 @@ class Coder(metaclass=UsageMeta):
1627
1629
  async for chunk in self.send_message(user_message):
1628
1630
  yield chunk
1629
1631
 
1632
+ # Stream-driven interfaces bypass run_one(), so drain the queue here
1633
+ # to keep queued prompts processing after the request completes.
1634
+ await self.process_prompt_queue()
1635
+
1630
1636
  def init_before_message(self):
1631
1637
  self.coder_edited_files = set()
1632
1638
  self.reflected_message = None
@@ -1946,14 +1952,12 @@ class Coder(metaclass=UsageMeta):
1946
1952
  await self.compact_context_if_needed()
1947
1953
  self.compact_context_completed = True
1948
1954
 
1949
- self.run_one_completed = False
1950
1955
  await self.run_one(user_message, preproc)
1951
1956
  self.show_undo_hint()
1952
1957
  except asyncio.CancelledError:
1953
1958
  # Don't show undo hint if cancelled
1954
1959
  raise
1955
1960
  finally:
1956
- self.run_one_completed = True
1957
1961
  self.compact_context_completed = True
1958
1962
  self.io.stop_spinner()
1959
1963
  # Trim memory in the background so it doesn't stall the event loop
@@ -2013,9 +2017,6 @@ class Coder(metaclass=UsageMeta):
2013
2017
  try:
2014
2018
  return await self.commands.run(inp, coder=self, **run_kwargs)
2015
2019
  finally:
2016
- # Dispatch can return early (unknown/ambiguous command) or
2017
- # raise without ever running a command; the gate must still be
2018
- # reopened or the input/output loops park forever.
2019
2020
  self.commands.cmd_running_event.set()
2020
2021
 
2021
2022
  await self.check_for_file_mentions(inp)
@@ -2026,6 +2027,67 @@ class Coder(metaclass=UsageMeta):
2026
2027
  def wrap_user_input(self, inp):
2027
2028
  return inp
2028
2029
 
2030
+ async def process_prompt_queue(self, preproc=True):
2031
+ """Drain the coder's prompt queue in FIFO order.
2032
+
2033
+ Re-entrant calls return immediately. Each item is activated before it
2034
+ runs so an interrupt can put it back at the front of the queue, and
2035
+ failures are isolated so one prompt does not abort the rest.
2036
+ """
2037
+ if self._processing_queue:
2038
+ return
2039
+
2040
+ def warn_paused():
2041
+ remaining = command_queue.get_queue_length(self)
2042
+ self.io.tool_warning(
2043
+ f"Queue processing interrupted. {remaining} prompt(s) remain"
2044
+ " queued; use /run-queue to resume."
2045
+ )
2046
+
2047
+ from cecli.helpers.agents.service import AgentService
2048
+
2049
+ self._processing_queue = True
2050
+ try:
2051
+ while True:
2052
+ item = command_queue.dequeue_for_processing(self)
2053
+ if item is None:
2054
+ break
2055
+
2056
+ self.io.tool_output(f"Processing queued prompt (id: {item['id']})...")
2057
+ try:
2058
+ await self.generate(item["text"], preproc)
2059
+ interrupt_event = getattr(self, "interrupt_event", None)
2060
+ if interrupt_event is not None and interrupt_event.is_set() is True:
2061
+ command_queue.requeue_active_prompt(self)
2062
+ warn_paused()
2063
+ break
2064
+ except (asyncio.CancelledError, KeyboardInterrupt):
2065
+ command_queue.requeue_active_prompt(self)
2066
+ warn_paused()
2067
+ raise
2068
+ except SwitchCoderSignal as switch:
2069
+ if not getattr(self, "parent_uuid", ""):
2070
+ raise
2071
+
2072
+ service = AgentService.get_instance(self)
2073
+ info = service.sub_agents.get(self.uuid)
2074
+ if info is None:
2075
+ raise
2076
+
2077
+ await service.switch_sub_agent_coder(info, switch, preproc)
2078
+ return
2079
+ except SystemExit:
2080
+ raise
2081
+ except Exception as e:
2082
+ command_queue.clear_active_prompt(self)
2083
+ self.io.tool_error(f"Error processing queued prompt (id: {item['id']}): {e}")
2084
+ continue
2085
+
2086
+ command_queue.clear_active_prompt(self)
2087
+ finally:
2088
+ self._drain_queue_after_command = False
2089
+ command_queue.finish_processing(self)
2090
+
2029
2091
  async def run_one(self, user_message, preproc):
2030
2092
  self.init_before_message()
2031
2093
 
@@ -2041,6 +2103,9 @@ class Coder(metaclass=UsageMeta):
2041
2103
  if self.commands.is_command(user_message) and not self.commands.is_test_command(
2042
2104
  user_message
2043
2105
  ):
2106
+ if self._processing_queue or self._drain_queue_after_command:
2107
+ self._drain_queue_after_command = False
2108
+ await self.process_prompt_queue(preproc)
2044
2109
  return
2045
2110
 
2046
2111
  if not self.commands.is_command(user_message):
@@ -2112,19 +2177,10 @@ class Coder(metaclass=UsageMeta):
2112
2177
 
2113
2178
  await self.auto_save_session(force=True)
2114
2179
 
2115
- # Move to the next queued prompt (CLI-33) only after the current message
2116
- # has fully completed, so the queue drains within run_one() instead of
2180
+ # Drain any queued prompts (CLI-33) only after the current message has
2181
+ # fully completed, so the queue is processed within run_one() instead of
2117
2182
  # being watched by the generation loops.
2118
- if self.prompt_queue and not self._processing_queue:
2119
- self._processing_queue = True
2120
- try:
2121
- item = command_queue.dequeue_prompt(self)
2122
- finally:
2123
- self._processing_queue = False
2124
-
2125
- if item is not None:
2126
- self.io.tool_output(f"Processing queued prompt (id: {item['id']})...")
2127
- await self.run_one(item["text"], preproc)
2183
+ await self.process_prompt_queue(preproc)
2128
2184
 
2129
2185
  if not await HookIntegration.call_end_hooks(self):
2130
2186
  self.io.tool_warning("Execution stopped by end hook")
@@ -3284,6 +3340,7 @@ class Coder(metaclass=UsageMeta):
3284
3340
  continue
3285
3341
 
3286
3342
  tool_id_set.add(tool_call.id)
3343
+ self.io.tool_call_event(tool_call.id, "in_progress")
3287
3344
 
3288
3345
  try:
3289
3346
  # Arguments can be a stream of JSON objects.
@@ -3490,6 +3547,11 @@ class Coder(metaclass=UsageMeta):
3490
3547
  for server, server_responses in tool_responses_by_server.items():
3491
3548
  for tool_response in server_responses:
3492
3549
  tool_responses.append(tool_response)
3550
+ self.io.tool_call_event(
3551
+ tool_response["tool_call_id"],
3552
+ "completed",
3553
+ result=tool_response.get("content"),
3554
+ )
3493
3555
 
3494
3556
  ConversationService.get_manager(self).add_message(
3495
3557
  message_dict=tool_response,
@@ -3507,6 +3569,12 @@ class Coder(metaclass=UsageMeta):
3507
3569
 
3508
3570
  for server, tool_calls in server_tool_calls.items():
3509
3571
  for tool_call in tool_calls:
3572
+ self.io.tool_call_event(
3573
+ tool_call.id,
3574
+ "pending",
3575
+ name=tool_call.function.name,
3576
+ arguments=tool_call.function.arguments,
3577
+ )
3510
3578
  try:
3511
3579
  if ToolRegistry.get_tool(tool_call.function.name.lower()):
3512
3580
  ToolRegistry.get_tool(tool_call.function.name.lower()).format_output(
@@ -4828,7 +4896,7 @@ class Coder(metaclass=UsageMeta):
4828
4896
  if self.tui and self.tui():
4829
4897
  self.tui().update_cost(self.usage_report.replace("\n", " "))
4830
4898
  else:
4831
- self.io.tool_output(self.usage_report)
4899
+ self.io.tool_output(self.usage_report, type="usage-report")
4832
4900
  self.io.rule()
4833
4901
 
4834
4902
  self.message_cost = 0.0
@@ -73,6 +73,7 @@ from .report import ReportCommand
73
73
  from .reset import ResetCommand
74
74
  from .rules import RulesCommand
75
75
  from .run import RunCommand
76
+ from .run_queue import RunQueueCommand
76
77
  from .save import SaveCommand
77
78
  from .save_session import SaveSessionCommand
78
79
  from .search_memory import SearchMemoryCommand
@@ -169,6 +170,7 @@ CommandRegistry.register(ReportCommand)
169
170
  CommandRegistry.register(ResetCommand)
170
171
  CommandRegistry.register(RulesCommand)
171
172
  CommandRegistry.register(RunCommand)
173
+ CommandRegistry.register(RunQueueCommand)
172
174
  CommandRegistry.register(SaveCommand)
173
175
  CommandRegistry.register(SaveSessionCommand)
174
176
  CommandRegistry.register(SearchMemoryCommand)
@@ -265,6 +267,7 @@ __all__ = [
265
267
  "ResetCommand",
266
268
  "RulesCommand",
267
269
  "RunCommand",
270
+ "RunQueueCommand",
268
271
  "SaveCommand",
269
272
  "SaveSessionCommand",
270
273
  "SearchMemoryCommand",
@@ -14,6 +14,9 @@ from cecli.signals import SwitchCoderSignal
14
14
  class Commands:
15
15
  scraper = None
16
16
 
17
+ # Commands that receive their full argument text for nested completion.
18
+ FULL_ARGS_COMPLETION_COMMANDS = ("/queue", "/insert-queue")
19
+
17
20
  def _get_coder(self):
18
21
  """Return coder via weak reference, or None if collected."""
19
22
  if self._coder_ref is not None:
@@ -90,7 +93,7 @@ class Commands:
90
93
  self.last_command_show_notification = True
91
94
 
92
95
  # Commands that should NOT trigger auto-processing of the queue
93
- self._MANAGEMENT_COMMANDS = {"queue", "list-queue", "remove-queue"}
96
+ self._MANAGEMENT_COMMANDS = {"queue", "list-queue", "remove-queue", "run-queue"}
94
97
 
95
98
  def _load_custom_commands(self, custom_commands):
96
99
  """
@@ -60,6 +60,7 @@ class InsertQueueCommand(BaseCommand):
60
60
  try:
61
61
  item = command_queue.insert_prompt(coder, prompt_text, index)
62
62
  io.tool_output(f"Prompt inserted at position {index + 1} (id: {item['id']})")
63
+
63
64
  return f"Successfully executed {cls.NORM_NAME}."
64
65
  except ValueError as e:
65
66
  return format_command_result(io, cls.NORM_NAME, "", error=str(e))
@@ -68,8 +69,20 @@ class InsertQueueCommand(BaseCommand):
68
69
 
69
70
  @classmethod
70
71
  def get_completions(cls, io, coder, args) -> List[str]:
71
- """Get completion options for insert-queue command."""
72
- return []
72
+ """Get completion options for insert-queue command.
73
+
74
+ Args are "<index> <prompt text>"; once the index token and a space
75
+ are present, mirror the nested prompt's completions (e.g. a nested
76
+ slash command delegates to the original command's completions).
77
+ """
78
+ text = args or ""
79
+ first_space = text.find(" ")
80
+ if first_space == -1:
81
+ # Still typing the index; suggest valid positions.
82
+ if not coder.commands:
83
+ return []
84
+ return [str(i) for i in range(1, command_queue.get_queue_length(coder) + 2)]
85
+ return command_queue.nested_command_completions(coder, text[first_space + 1 :])
73
86
 
74
87
  @classmethod
75
88
  def get_help(cls) -> str:
@@ -83,5 +96,5 @@ class InsertQueueCommand(BaseCommand):
83
96
  help_text += "\nExamples:\n"
84
97
  help_text += " /insert-queue 1 Review the changes in src/main.py\n"
85
98
  help_text += " /insert-queue 3 Write unit tests for the new feature\n"
86
- help_text += "\nSee also: /queue, /list-queue, /remove-queue\n"
99
+ help_text += "\nSee also: /queue, /list-queue, /remove-queue, /run-queue\n"
87
100
  return help_text
@@ -66,5 +66,5 @@ class ListQueueCommand(BaseCommand):
66
66
  help_text += " and the time it was queued.\n"
67
67
  help_text += "\nExamples:\n"
68
68
  help_text += " /list-queue # Shows all queued prompts\n"
69
- help_text += "\nSee also: /queue, /remove-queue\n"
69
+ help_text += "\nSee also: /queue, /insert-queue, /remove-queue, /run-queue\n"
70
70
  return help_text
@@ -59,6 +59,7 @@ class QueueCommand(BaseCommand):
59
59
  item = command_queue.enqueue_prompt(coder, prompt_text)
60
60
  position = command_queue.get_queue_length(coder)
61
61
  io.tool_output(f"Prompt queued at position {position} (id: {item['id']})")
62
+
62
63
  return f"Successfully executed {cls.NORM_NAME}."
63
64
  except ValueError as e:
64
65
  return format_command_result(io, cls.NORM_NAME, "", error=str(e))
@@ -67,8 +68,12 @@ class QueueCommand(BaseCommand):
67
68
 
68
69
  @classmethod
69
70
  def get_completions(cls, io, coder, args) -> List[str]:
70
- """Get completion options for queue command."""
71
- return []
71
+ """Get completion options for queue command.
72
+
73
+ When the queued prompt starts with a slash command, mirror the
74
+ original command's completions (e.g. /queue /add <tab> offers files).
75
+ """
76
+ return command_queue.nested_command_completions(coder, args)
72
77
 
73
78
  @classmethod
74
79
  def get_help(cls) -> str:
@@ -86,5 +91,5 @@ class QueueCommand(BaseCommand):
86
91
  help_text += "\nExamples:\n"
87
92
  help_text += " /queue Review the changes in src/main.py\n"
88
93
  help_text += " /queue Write unit tests for the new feature\n"
89
- help_text += "\nSee also: /list-queue, /remove-queue\n"
94
+ help_text += "\nSee also: /insert-queue, /list-queue, /remove-queue, /run-queue\n"
90
95
  return help_text
@@ -115,5 +115,5 @@ class RemoveQueueCommand(BaseCommand):
115
115
  help_text += " /remove-queue 1 # Remove the first queued prompt\n"
116
116
  help_text += " /remove-queue * # Clear the entire queue\n"
117
117
  help_text += " /remove-queue # Interactive mode\n"
118
- help_text += "\nSee also: /queue, /list-queue\n"
118
+ help_text += "\nSee also: /queue, /insert-queue, /list-queue, /run-queue\n"
119
119
  return help_text
@@ -0,0 +1,79 @@
1
+ """Run-queue command for CLI-33: processes queued prompts on demand.
2
+
3
+ Primary use: after cancelling an in-flight response (Ctrl+C), the in-flight
4
+ prompt is re-queued at the front. /run-queue resumes processing the queue.
5
+ """
6
+
7
+ import asyncio
8
+ from typing import List
9
+
10
+ from cecli.commands.utils.base_command import BaseCommand
11
+ from cecli.commands.utils.helpers import format_command_result
12
+ from cecli.helpers import command_queue
13
+ from cecli.signals import SwitchCoderSignal
14
+
15
+
16
+ class RunQueueCommand(BaseCommand):
17
+ NORM_NAME = "run-queue"
18
+ DESCRIPTION = "Process queued prompts in order"
19
+
20
+ @classmethod
21
+ async def execute(cls, io, coder, args, **kwargs):
22
+ """Execute the run-queue command with given parameters.
23
+
24
+ Args:
25
+ io: InputOutput instance
26
+ coder: Coder instance (may be None for some commands)
27
+ args: Command arguments (unused for run-queue)
28
+ **kwargs: Additional context
29
+
30
+ Returns:
31
+ Formatted result string
32
+ """
33
+ # Sad path: coder.commands is None
34
+ if not coder.commands:
35
+ return format_command_result(
36
+ io, cls.NORM_NAME, "", error="Command system not available. Cannot run queue."
37
+ )
38
+
39
+ # Resolve the target coder (sub-agent aware: use the foreground agent's queue)
40
+ target = command_queue.get_active_coder(coder)
41
+
42
+ # Sad path: empty queue
43
+ if command_queue.get_queue_length(target) == 0:
44
+ io.tool_output("Queue is empty. Use /queue <prompt> to add prompts first.")
45
+ return f"Successfully executed {cls.NORM_NAME}."
46
+
47
+ # Happy path: drain the queue
48
+ try:
49
+ await target.process_prompt_queue()
50
+ return f"Successfully executed {cls.NORM_NAME}."
51
+ except (KeyboardInterrupt, asyncio.CancelledError):
52
+ # The interrupted item was re-queued; let the user know the queue paused.
53
+ io.tool_output("Queue processing paused. Use /run-queue to resume.")
54
+ return f"Successfully executed {cls.NORM_NAME}."
55
+ except (SwitchCoderSignal, SystemExit):
56
+ raise
57
+ except Exception as e:
58
+ return format_command_result(io, cls.NORM_NAME, "", error=str(e))
59
+
60
+ @classmethod
61
+ def get_completions(cls, io, coder, args) -> List[str]:
62
+ """Get completion options for run-queue command."""
63
+ return []
64
+
65
+ @classmethod
66
+ def get_help(cls) -> str:
67
+ """Get help text for the run-queue command."""
68
+ help_text = super().get_help()
69
+ help_text += "\nUsage:\n"
70
+ help_text += " /run-queue # Process all queued prompts in FIFO order\n"
71
+ help_text += "\nDescription:\n"
72
+ help_text += " Processes every prompt currently in the queue, in order.\n"
73
+ help_text += " Queued prompts normally run automatically after the current\n"
74
+ help_text += " response finishes. Use /run-queue to resume a queue that was\n"
75
+ help_text += " paused (e.g. after cancelling an in-flight response with Ctrl+C).\n"
76
+ help_text += "\nExamples:\n"
77
+ help_text += " /run-queue # Drains the queue, processing each prompt in order\n"
78
+ help_text += "\nSee also: /queue, /insert-queue, /list-queue, /remove-queue\n"
79
+ return help_text
@@ -41,6 +41,25 @@ MODEL_SENTINEL_CURRENT = "<current>"
41
41
  AGENT_INHERIT_PREFIXES = ("ws:", "wf:")
42
42
 
43
43
 
44
+ def _subagent_event(coder: Any, agent_uuid: Any, event: str, **kwargs: Any) -> None:
45
+ """Report a sub-agent's lifecycle to the IO (see ``InputOutput.subagent_event``)."""
46
+ io = getattr(coder, "io", None)
47
+ if io is None:
48
+ return
49
+ try:
50
+ io.subagent_event(str(agent_uuid), event, **kwargs)
51
+ except Exception:
52
+ logger.warning("Failed to report sub-agent event %r", event, exc_info=True)
53
+
54
+
55
+ def _was_cancelled(info: "SubAgentInfo") -> bool:
56
+ """Whether the current run was cancelled, even if the coder absorbed it as a ^C."""
57
+ if info.cancel_requested:
58
+ return True
59
+ cancelling = getattr(asyncio.current_task(), "cancelling", None) # Python 3.11+
60
+ return bool(cancelling and cancelling())
61
+
62
+
44
63
  class SubAgentStatus(Enum):
45
64
  """Status of a sub-agent."""
46
65
 
@@ -66,6 +85,7 @@ class SubAgentInfo:
66
85
  auto_reap: bool = True # If True, agent may be automatically reaped when FINISHED
67
86
  independent: bool = False
68
87
  detached: bool = False
88
+ cancel_requested: bool = False # the current run was cancelled (see _was_cancelled)
69
89
 
70
90
 
71
91
  class AgentService:
@@ -522,6 +542,8 @@ class AgentService:
522
542
  except (AttributeError, RuntimeError):
523
543
  logger.warning("Failed to notify TUI to remove sub-agent container", exc_info=True)
524
544
 
545
+ _subagent_event(self.coder, info.coder.uuid, "removed")
546
+
525
547
  # Cancel any tracked generate task to avoid floating tasks
526
548
  if info.generate_task is not None and not info.generate_task.done():
527
549
  info.generate_task.cancel()
@@ -733,6 +755,16 @@ class AgentService:
733
755
  except Exception:
734
756
  logger.warning("Failed to notify TUI to create sub-agent container", exc_info=True)
735
757
 
758
+ _subagent_event(
759
+ parent_coder,
760
+ new_coder.uuid,
761
+ "created",
762
+ parent_uuid=str(parent_coder.uuid),
763
+ name=name,
764
+ description=metadata.get("description") if isinstance(metadata, dict) else None,
765
+ root=str(getattr(new_coder, "root", "") or ""),
766
+ )
767
+
736
768
  # Initialize system prompt from config
737
769
  system_prompt = getattr(config, "prompt", "")
738
770
  from cecli.helpers.conversation.service import ConversationService
@@ -774,6 +806,40 @@ class AgentService:
774
806
  # Public API
775
807
  # ------------------------------------------------------------------ #
776
808
 
809
+ async def switch_sub_agent_coder(self, info: SubAgentInfo, switch, preproc=True) -> Any:
810
+ """Atomically hand a sub-agent's remaining queue to a replacement coder.
811
+
812
+ Commands such as /add request a coder rebuild by raising SwitchCoderSignal.
813
+ A sub-agent must absorb that signal locally: letting it escape recreates the
814
+ primary coder from the sub-agent and leaves the main session in sub-agent
815
+ mode. The active prompt has already run, so only the remaining queue moves.
816
+ """
817
+ from cecli.coders import Coder
818
+ from cecli.helpers import command_queue
819
+
820
+ old_coder = info.coder
821
+ kwargs = dict(io=old_coder.io, from_coder=old_coder)
822
+ kwargs.update(switch.kwargs)
823
+ kwargs.pop("show_announcements", None)
824
+ kwargs["from_coder"] = old_coder
825
+ kwargs["args"] = old_coder.args
826
+ kwargs["summarize_from_coder"] = False
827
+
828
+ new_coder = await Coder.create(**kwargs)
829
+
830
+ new_coder.prompt_queue = list(old_coder.prompt_queue)
831
+ new_coder._queue_counter = old_coder._queue_counter
832
+ old_coder.prompt_queue.clear()
833
+
834
+ command_queue.clear_active_prompt(old_coder)
835
+
836
+ info.coder = new_coder
837
+ self.sub_agents[new_coder.uuid] = info
838
+ self._uuid_coder_map[new_coder.uuid] = weakref.ref(new_coder)
839
+
840
+ await new_coder.process_prompt_queue(preproc)
841
+ return new_coder
842
+
777
843
  def start_generate_task(self, info: SubAgentInfo, user_message: str) -> asyncio.Task:
778
844
  """Start a sub-agent's generate task in the background with status management.
779
845
 
@@ -807,8 +873,14 @@ class AgentService:
807
873
 
808
874
  async def _run_generate():
809
875
  info.status = SubAgentStatus.RUNNING
876
+ info.cancel_requested = False
877
+ _subagent_event(info.coder, info.coder.uuid, "running")
878
+ stop_reason, error = "end_turn", None
810
879
  try:
811
880
  await info.coder.generate(user_message=user_message, preproc=True)
881
+ if _was_cancelled(info):
882
+ stop_reason = "cancelled"
883
+ info.summary = info.summary or DEFAULT_SUMMARY_INTERRUPTED
812
884
  await self._inject_sub_agent_result(info)
813
885
  if info.status == SubAgentStatus.RUNNING:
814
886
  info.status = SubAgentStatus.FINISHED
@@ -831,12 +903,14 @@ class AgentService:
831
903
  fire_and_forget(_cleanup())
832
904
 
833
905
  except asyncio.CancelledError:
906
+ stop_reason = "cancelled"
834
907
  await self._inject_sub_agent_result(info)
835
908
  info.status = SubAgentStatus.FINISHED
836
909
  info.summary = info.summary or DEFAULT_SUMMARY_INTERRUPTED
837
910
  logger.debug("Sub-agent %s generate cancelled (interrupted)", info.name)
838
911
  raise
839
912
  except Exception as exc:
913
+ stop_reason, error = "error", str(exc) or exc.__class__.__name__
840
914
  await self._inject_sub_agent_result(info)
841
915
  info.status = SubAgentStatus.ERROR
842
916
  info.error = str(exc)
@@ -849,6 +923,10 @@ class AgentService:
849
923
  raise
850
924
  except SwitchCoderSignal:
851
925
  raise
926
+ finally:
927
+ _subagent_event(
928
+ info.coder, info.coder.uuid, "idle", stop_reason=stop_reason, error=error
929
+ )
852
930
 
853
931
  # Cancel any previous generate task to prevent duplicate concurrent generates
854
932
  if info.generate_task is not None and not info.generate_task.done():
@@ -986,6 +1064,10 @@ class AgentService:
986
1064
  force=True,
987
1065
  )
988
1066
 
1067
+ _subagent_event(
1068
+ parent_coder, parent_coder.uuid, "message", sender_uuid=coder_uuid, text=user_content
1069
+ )
1070
+
989
1071
  async def invoke(
990
1072
  self,
991
1073
  name: str,
@@ -1011,8 +1093,23 @@ class AgentService:
1011
1093
  return None
1012
1094
 
1013
1095
  # Blocking: run the sub-agent with the prompt using start_generate_task
1096
+ sender = parent if parent is not None else self.coder
1097
+ _subagent_event(
1098
+ sender, new_coder.uuid, "message", sender_uuid=str(sender.uuid), text=prompt
1099
+ )
1014
1100
  task = self.start_generate_task(info, prompt)
1015
- await task
1101
+ try:
1102
+ await asyncio.shield(task)
1103
+ except asyncio.CancelledError:
1104
+ if info.cancel_requested or task.cancelled():
1105
+ # The sub-agent was cancelled; wait for its interrupted summary
1106
+ await asyncio.gather(task, return_exceptions=True)
1107
+ return info.summary
1108
+
1109
+ # The caller was cancelled: stop the sub-agent it was waiting for
1110
+ info.cancel_requested = True
1111
+ task.cancel()
1112
+ raise
1016
1113
  return info.summary
1017
1114
 
1018
1115
  async def spawn(
@@ -1040,6 +1137,10 @@ class AgentService:
1040
1137
  name, auto_reap=auto_reap, parent=parent, independent=independent
1041
1138
  )
1042
1139
  if prompt:
1140
+ sender = parent if parent is not None else self.coder
1141
+ _subagent_event(
1142
+ sender, new_coder.uuid, "message", sender_uuid=str(sender.uuid), text=prompt
1143
+ )
1043
1144
  self.start_generate_task(info, prompt)
1044
1145
  return new_coder, info
1045
1146
 
@@ -1079,6 +1180,19 @@ class AgentService:
1079
1180
 
1080
1181
  return [info.summary for info in children]
1081
1182
 
1183
+ def cancel_sub_agent(self, agent_uuid: str) -> bool:
1184
+ """Stop a sub-agent's current work, leaving its parent running.
1185
+
1186
+ A parent waiting on it (a blocking delegation) gets the interrupted
1187
+ summary. Returns False if the sub-agent was not working.
1188
+ """
1189
+ info = self.sub_agents.get(str(agent_uuid))
1190
+ if info is None or info.generate_task is None or info.generate_task.done():
1191
+ return False
1192
+ info.cancel_requested = True
1193
+ info.generate_task.cancel()
1194
+ return True
1195
+
1082
1196
  def get_active_agents(self) -> List[Dict[str, Any]]:
1083
1197
  """Return list of active sub-agents for display."""
1084
1198
  return [