cecli-dev 1.8.0__tar.gz → 1.8.1rc2__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 (901) hide show
  1. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/PKG-INFO +1 -1
  2. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/_version.py +3 -3
  3. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/base_coder.py +48 -3
  4. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/bedrock.py +1 -1
  5. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/litellm_compat.py +33 -18
  6. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/config.py +28 -3
  7. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/retries.md +1 -0
  8. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/scheduler.md +1 -1
  9. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/workflows.md +5 -3
  10. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/PKG-INFO +1 -1
  11. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/SOURCES.txt +1 -0
  12. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/scm_file_list.json +1 -0
  13. cecli_dev-1.8.1rc2/cecli_dev.egg-info/scm_version.json +8 -0
  14. cecli_dev-1.8.1rc2/tests/basic/test_empty_response.py +223 -0
  15. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/observations/test_observation_service.py +45 -0
  16. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_hyperscalers.py +13 -0
  17. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workflows/test_config.py +95 -0
  18. cecli_dev-1.8.0/cecli_dev.egg-info/scm_version.json +0 -8
  19. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.dockerignore +0 -0
  20. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.flake8 +0 -0
  21. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.gitattributes +0 -0
  22. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  23. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/check_pypi_version.yml +0 -0
  24. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/docker-build-test.yml +0 -0
  25. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/docker-release.yml +0 -0
  26. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/issues.yml +0 -0
  27. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/pages.yml +0 -0
  28. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/pre-commit.yml +0 -0
  29. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/release.yml +0 -0
  30. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/ubuntu-tests.yml +0 -0
  31. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/windows-tests.yml +0 -0
  32. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
  33. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.gitignore +0 -0
  34. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/.pre-commit-config.yaml +0 -0
  35. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/CHANGELOG.md +0 -0
  36. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/CNAME +0 -0
  37. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/CONTRIBUTING.md +0 -0
  38. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/HISTORY.md +0 -0
  39. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/LICENSE.txt +0 -0
  40. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/MANIFEST.in +0 -0
  41. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/README.md +0 -0
  42. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/Dockerfile +0 -0
  43. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/README.md +0 -0
  44. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/__init__.py +0 -0
  45. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/benchmark.py +0 -0
  46. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/benchmark_classic.py +0 -0
  47. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/clone-exercism.sh +0 -0
  48. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/cpp-test.sh +0 -0
  49. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/docker.sh +0 -0
  50. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/docker_build.sh +0 -0
  51. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/install-docker-ubuntu.sh +0 -0
  52. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/npm-test.sh +0 -0
  53. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/over_time.py +0 -0
  54. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/plot.sh +0 -0
  55. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/plots.py +0 -0
  56. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/problem_stats.py +0 -0
  57. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/prompts.py +0 -0
  58. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/refactor_tools.py +0 -0
  59. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/rsync.sh +0 -0
  60. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/rungrid.py +0 -0
  61. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/swe-bench-lite.txt +0 -0
  62. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/swe-bench.txt +0 -0
  63. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/swe_bench.py +0 -0
  64. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/test_benchmark.py +0 -0
  65. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/variations.1.sh +0 -0
  66. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/variations.2.sh +0 -0
  67. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/variations.3.sh +0 -0
  68. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/benchmark/variations.4.sh +0 -0
  69. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/__init__.py +0 -0
  70. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/__main__.py +0 -0
  71. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/args.py +0 -0
  72. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/args_formatter.py +0 -0
  73. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/change_tracker.py +0 -0
  74. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/__init__.py +0 -0
  75. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/agent_coder.py +0 -0
  76. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/architect_coder.py +0 -0
  77. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/ask_coder.py +0 -0
  78. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/chat_chunks.py +0 -0
  79. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/context_coder.py +0 -0
  80. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/copypaste_coder.py +0 -0
  81. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editblock_coder.py +0 -0
  82. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
  83. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editblock_func_coder.py +0 -0
  84. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  85. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editor_editblock_coder.py +0 -0
  86. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/editor_whole_coder.py +0 -0
  87. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/hashline_coder.py +0 -0
  88. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/help_coder.py +0 -0
  89. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/patch_coder.py +0 -0
  90. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/search_replace.py +0 -0
  91. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/shell.py +0 -0
  92. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
  93. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/sub_agent_coder.py +0 -0
  94. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/udiff_coder.py +0 -0
  95. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/udiff_simple.py +0 -0
  96. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/wholefile_coder.py +0 -0
  97. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/coders/wholefile_func_coder.py +0 -0
  98. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/__init__.py +0 -0
  99. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/add.py +0 -0
  100. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/agent.py +0 -0
  101. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/agent_model.py +0 -0
  102. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/agent_tree.py +0 -0
  103. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/architect.py +0 -0
  104. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/ask.py +0 -0
  105. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/auto_memory.py +0 -0
  106. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/chat_mode.py +0 -0
  107. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/clear.py +0 -0
  108. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/code.py +0 -0
  109. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/command_prefix.py +0 -0
  110. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/commit.py +0 -0
  111. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/compact.py +0 -0
  112. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/context.py +0 -0
  113. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/context_blocks.py +0 -0
  114. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/context_management.py +0 -0
  115. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/copy.py +0 -0
  116. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/copy_context.py +0 -0
  117. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/core.py +0 -0
  118. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/diff.py +0 -0
  119. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/drop.py +0 -0
  120. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/editor.py +0 -0
  121. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/editor_model.py +0 -0
  122. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/exclude_skill.py +0 -0
  123. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/exit.py +0 -0
  124. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/git.py +0 -0
  125. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/hashline.py +0 -0
  126. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/help.py +0 -0
  127. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/history_search.py +0 -0
  128. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/hooks.py +0 -0
  129. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/hot_reload.py +0 -0
  130. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/import_skill.py +0 -0
  131. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/include_skill.py +0 -0
  132. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/insert_queue.py +0 -0
  133. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/lint.py +0 -0
  134. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/list_mcp.py +0 -0
  135. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/list_queue.py +0 -0
  136. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/list_sessions.py +0 -0
  137. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/list_skills.py +0 -0
  138. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/load.py +0 -0
  139. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/load_hook.py +0 -0
  140. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/load_mcp.py +0 -0
  141. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/load_session.py +0 -0
  142. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/load_skill.py +0 -0
  143. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/ls.py +0 -0
  144. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/map.py +0 -0
  145. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/map_refresh.py +0 -0
  146. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/merge.py +0 -0
  147. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/model.py +0 -0
  148. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/models.py +0 -0
  149. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/multiline_mode.py +0 -0
  150. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/paste.py +0 -0
  151. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/queue.py +0 -0
  152. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/quit.py +0 -0
  153. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/read_only.py +0 -0
  154. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/read_only_stub.py +0 -0
  155. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/reap_agent.py +0 -0
  156. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/reasoning_effort.py +0 -0
  157. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/remove_hook.py +0 -0
  158. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/remove_mcp.py +0 -0
  159. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/remove_memory.py +0 -0
  160. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/remove_queue.py +0 -0
  161. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/remove_skill.py +0 -0
  162. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/report.py +0 -0
  163. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/reset.py +0 -0
  164. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/rules.py +0 -0
  165. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/run.py +0 -0
  166. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/save.py +0 -0
  167. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/save_session.py +0 -0
  168. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/search_memory.py +0 -0
  169. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/settings.py +0 -0
  170. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/spawn_agent.py +0 -0
  171. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/switch_agent.py +0 -0
  172. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
  173. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/terminal_setup.py +0 -0
  174. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/test.py +0 -0
  175. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/think_tokens.py +0 -0
  176. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/tokens.py +0 -0
  177. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/undo.py +0 -0
  178. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/utils/__init__.py +0 -0
  179. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/utils/base_command.py +0 -0
  180. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/utils/helpers.py +0 -0
  181. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/utils/registry.py +0 -0
  182. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/utils/save_load_manager.py +0 -0
  183. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/voice.py +0 -0
  184. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/weak_model.py +0 -0
  185. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/web.py +0 -0
  186. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/workflows.py +0 -0
  187. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/commands/workspace.py +0 -0
  188. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/decoding.py +0 -0
  189. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/deprecated_args.py +0 -0
  190. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/diffs.py +0 -0
  191. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/dump.py +0 -0
  192. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/editor.py +0 -0
  193. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/exceptions.py +0 -0
  194. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/format_settings.py +0 -0
  195. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/help.py +0 -0
  196. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/help_pats.py +0 -0
  197. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/__init__.py +0 -0
  198. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/__init__.py +0 -0
  199. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/config.py +0 -0
  200. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/defaults/__init__.py +0 -0
  201. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  202. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/defaults/worker.md +0 -0
  203. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/agents/service.py +0 -0
  204. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/background_commands.py +0 -0
  205. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/command_parser.py +0 -0
  206. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/command_queue.py +0 -0
  207. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/config_utils.py +0 -0
  208. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/__init__.py +0 -0
  209. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/base_message.py +0 -0
  210. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/files.py +0 -0
  211. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/integration.py +0 -0
  212. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/manager.py +0 -0
  213. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/service.py +0 -0
  214. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/tags.py +0 -0
  215. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/conversation/utils.py +0 -0
  216. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/copypaste.py +0 -0
  217. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/coroutines.py +0 -0
  218. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/crypto.py +0 -0
  219. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/extensions/__init__.py +0 -0
  220. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/extensions/skills_importer.py +0 -0
  221. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_searcher.py +0 -0
  222. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/__init__.py +0 -0
  223. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/builders.py +0 -0
  224. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/ignore.py +0 -0
  225. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
  226. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/service.py +0 -0
  227. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/file_system/trie_index.py +0 -0
  228. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
  229. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/dump.py +0 -0
  230. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  231. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/main.py +0 -0
  232. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
  233. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
  234. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/hashline.py +0 -0
  235. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/hashpos/__init__.py +0 -0
  236. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
  237. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  238. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/hashpos/transformations.py +0 -0
  239. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/io_proxy.py +0 -0
  240. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/leak_detect.py +0 -0
  241. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/__init__.py +0 -0
  242. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/aws_sigv4.py +0 -0
  243. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/config.py +0 -0
  244. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/constants.py +0 -0
  245. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/__init__.py +0 -0
  246. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/chat.py +0 -0
  247. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/gemini.py +0 -0
  248. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/messages.py +0 -0
  249. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/domains/responses.py +0 -0
  250. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/formatters/__init__.py +0 -0
  251. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  252. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/formatters/thinking.py +0 -0
  253. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/identifiers.py +0 -0
  254. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/pipeline.py +0 -0
  255. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/__init__.py +0 -0
  256. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/anthropic.py +0 -0
  257. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/azure.py +0 -0
  258. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/base.py +0 -0
  259. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/bedrock.py +0 -0
  260. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  261. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/deepseek.py +0 -0
  262. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/gemini.py +0 -0
  263. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  264. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/meta.py +0 -0
  265. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/mistral.py +0 -0
  266. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/ollama.py +0 -0
  267. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/openai.py +0 -0
  268. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/providers/openrouter.py +0 -0
  269. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/runtime.py +0 -0
  270. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/types.py +0 -0
  271. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/llms/utils.py +0 -0
  272. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/lock_detect.py +0 -0
  273. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/loop_detect.py +0 -0
  274. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/memory/__init__.py +0 -0
  275. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/memory/db.py +0 -0
  276. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/memory/utils.py +0 -0
  277. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/memory_control.py +0 -0
  278. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/__init__.py +0 -0
  279. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/agent.py +0 -0
  280. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/api.py +0 -0
  281. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  282. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  283. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  284. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/identifiers.py +0 -0
  285. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/llm.py +0 -0
  286. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/pipeline.py +0 -0
  287. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/registry.py +0 -0
  288. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_config/utils.py +0 -0
  289. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/model_providers.py +0 -0
  290. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/nested.py +0 -0
  291. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/observations/__init__.py +0 -0
  292. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/observations/service.py +0 -0
  293. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/onboarding/__init__.py +0 -0
  294. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/onboarding/app.py +0 -0
  295. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/onboarding/providers.py +0 -0
  296. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/__init__.py +0 -0
  297. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  298. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/environment.py +0 -0
  299. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/region_resolver.py +0 -0
  300. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/safe_methods.py +0 -0
  301. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/security.py +0 -0
  302. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/service.py +0 -0
  303. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  304. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/plugin_manager.py +0 -0
  305. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/profiler.py +0 -0
  306. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/queues.py +0 -0
  307. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/requests.py +0 -0
  308. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/responses.py +0 -0
  309. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/scheduler/__init__.py +0 -0
  310. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/scheduler/cron.py +0 -0
  311. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/scheduler/db.py +0 -0
  312. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/scheduler/lock.py +0 -0
  313. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/scheduler/service.py +0 -0
  314. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/__init__.py +0 -0
  315. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/acp/__init__.py +0 -0
  316. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/acp/bridge.py +0 -0
  317. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/acp/models.py +0 -0
  318. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/acp/protocol.py +0 -0
  319. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/signals.py +0 -0
  320. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/server/ws_server.py +0 -0
  321. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/__init__.py +0 -0
  322. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/layout.py +0 -0
  323. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/manager.py +0 -0
  324. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/payload.py +0 -0
  325. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/storage.py +0 -0
  326. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/sessions/subagents.py +0 -0
  327. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/similarity.py +0 -0
  328. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/skills.py +0 -0
  329. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/__init__.py +0 -0
  330. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/api.py +0 -0
  331. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/client.py +0 -0
  332. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/config.py +0 -0
  333. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/integrations.py +0 -0
  334. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/system_one/types.py +0 -0
  335. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/threading.py +0 -0
  336. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/__init__.py +0 -0
  337. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/logs.py +0 -0
  338. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/models.py +0 -0
  339. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/outputs.py +0 -0
  340. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/runner.py +0 -0
  341. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workflows/subagents.py +0 -0
  342. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workspaces/__init__.py +0 -0
  343. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workspaces/config.py +0 -0
  344. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workspaces/paths.py +0 -0
  345. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workspaces/subagents.py +0 -0
  346. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/helpers/workspaces/workspace.py +0 -0
  347. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/history.py +0 -0
  348. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/__init__.py +0 -0
  349. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/base.py +0 -0
  350. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/helpers.py +0 -0
  351. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/integration.py +0 -0
  352. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/manager.py +0 -0
  353. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/registry.py +0 -0
  354. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/service.py +0 -0
  355. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/hooks/types.py +0 -0
  356. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/http.py +0 -0
  357. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/interruptible_input.py +0 -0
  358. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/io.py +0 -0
  359. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/linter.py +0 -0
  360. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/llm.py +0 -0
  361. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/main.py +0 -0
  362. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mcp/__init__.py +0 -0
  363. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mcp/manager.py +0 -0
  364. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mcp/oauth.py +0 -0
  365. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mcp/server.py +0 -0
  366. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mcp/utils.py +0 -0
  367. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/mdstream.py +0 -0
  368. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/models.py +0 -0
  369. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/onboarding.py +0 -0
  370. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/__init__.py +0 -0
  371. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/agent.yml +0 -0
  372. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/architect.yml +0 -0
  373. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/ask.yml +0 -0
  374. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/base.yml +0 -0
  375. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/context.yml +0 -0
  376. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/copypaste.yml +0 -0
  377. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editblock.yml +0 -0
  378. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editblock_fenced.yml +0 -0
  379. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editblock_func.yml +0 -0
  380. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
  381. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editor_editblock.yml +0 -0
  382. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/editor_whole.yml +0 -0
  383. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/hashline.yml +0 -0
  384. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/help.yml +0 -0
  385. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/patch.yml +0 -0
  386. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
  387. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/subagent.yml +0 -0
  388. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/udiff.yml +0 -0
  389. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/udiff_simple.yml +0 -0
  390. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/utils/__init__.py +0 -0
  391. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/utils/registry.py +0 -0
  392. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/utils/system.py +0 -0
  393. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/wholefile.yml +0 -0
  394. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/prompts/wholefile_func.yml +0 -0
  395. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  396. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  397. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  398. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  399. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  400. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  401. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  402. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  403. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  404. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  405. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  406. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  407. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  408. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  409. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  410. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  411. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  412. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  413. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  414. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  415. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  416. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  417. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  418. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  419. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  420. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  421. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  422. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  423. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  424. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  425. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  426. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  427. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
  428. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  429. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  430. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  431. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  432. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  433. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  434. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  435. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  436. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  437. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  438. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  439. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  440. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  441. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  442. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  443. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  444. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  445. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  446. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  447. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  448. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  449. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  450. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  451. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  452. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  453. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  454. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  455. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/reasoning_tags.py +0 -0
  456. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/repo.py +0 -0
  457. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/repomap.py +0 -0
  458. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/report.py +0 -0
  459. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/__init__.py +0 -0
  460. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/model-metadata.ext.json +0 -0
  461. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/model-metadata.json +0 -0
  462. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/model-settings-condensed.yml +0 -0
  463. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/model-settings.yml +0 -0
  464. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/resources/providers.json +0 -0
  465. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/run_cmd.py +0 -0
  466. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/scrape.py +0 -0
  467. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/sendchat.py +0 -0
  468. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/signals.py +0 -0
  469. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/special.py +0 -0
  470. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tests/test_queue_commands.py +0 -0
  471. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/__init__.py +0 -0
  472. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/_yield.py +0 -0
  473. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/broadcast.py +0 -0
  474. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/command.py +0 -0
  475. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/delegate.py +0 -0
  476. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/edit_file.py +0 -0
  477. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/explore_code.py +0 -0
  478. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_branch.py +0 -0
  479. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_diff.py +0 -0
  480. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_log.py +0 -0
  481. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_remote.py +0 -0
  482. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_show.py +0 -0
  483. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/git_status.py +0 -0
  484. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/grep.py +0 -0
  485. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/ls.py +0 -0
  486. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/orchestrate.py +0 -0
  487. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/read_file.py +0 -0
  488. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/replace_facts.py +0 -0
  489. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/resource_manager.py +0 -0
  490. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/search_facts.py +0 -0
  491. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/thinking.py +0 -0
  492. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/undo_change.py +0 -0
  493. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/update_todo_list.py +0 -0
  494. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/__init__.py +0 -0
  495. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/base_tool.py +0 -0
  496. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/helpers.py +0 -0
  497. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/output.py +0 -0
  498. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/registry.py +0 -0
  499. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/utils/responses.py +0 -0
  500. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/validations/__init__.py +0 -0
  501. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tools/validations/validations.py +0 -0
  502. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/__init__.py +0 -0
  503. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/app.py +0 -0
  504. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/io.py +0 -0
  505. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/styles.tcss +0 -0
  506. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/__init__.py +0 -0
  507. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/completion_bar.py +0 -0
  508. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/file_list.py +0 -0
  509. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/footer.py +0 -0
  510. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/input_area.py +0 -0
  511. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/input_container.py +0 -0
  512. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/key_hints.py +0 -0
  513. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/output.py +0 -0
  514. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/output_alt.bak +0 -0
  515. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/selectable_log.py +0 -0
  516. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/status_bar.py +0 -0
  517. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
  518. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/widgets/thin_scrollbar.py +0 -0
  519. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/tui/worker.py +0 -0
  520. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/urls.py +0 -0
  521. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/utils.py +0 -0
  522. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/versioncheck.py +0 -0
  523. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/voice.py +0 -0
  524. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/waiting.py +0 -0
  525. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/watch.py +0 -0
  526. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/watch_prompts.py +0 -0
  527. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/blame.md +0 -0
  528. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/get-started.md +0 -0
  529. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/help-tip.md +0 -0
  530. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/help.md +0 -0
  531. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/install.md +0 -0
  532. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/keys.md +0 -0
  533. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/model-warnings.md +0 -0
  534. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/multi-line.md +0 -0
  535. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/python-m-aider.md +0 -0
  536. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/recording.css +0 -0
  537. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/recording.md +0 -0
  538. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_includes/works-best.md +0 -0
  539. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_features.scss +0 -0
  540. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_footer.scss +0 -0
  541. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_hero.scss +0 -0
  542. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_info.scss +0 -0
  543. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_layout.scss +0 -0
  544. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_reset.scss +0 -0
  545. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_testimonials.scss +0 -0
  546. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_typography.scss +0 -0
  547. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/_variables.scss +0 -0
  548. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/custom/custom.scss +0 -0
  549. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/_sass/global-overrides.scss +0 -0
  550. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docmd.config.json +0 -0
  551. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  552. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
  553. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/agent-mode.md +0 -0
  554. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/api-keys.md +0 -0
  555. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/api.md +0 -0
  556. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/conf.md +0 -0
  557. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/custom-commands.md +0 -0
  558. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  559. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/dotenv.md +0 -0
  560. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/editor.md +0 -0
  561. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/hooks.md +0 -0
  562. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/mcp.md +0 -0
  563. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/model-aliases.md +0 -0
  564. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/model-configuration.md +0 -0
  565. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/model-providers.md +0 -0
  566. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/options.md +0 -0
  567. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/persistent-memory.md +0 -0
  568. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/reasoning.md +0 -0
  569. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/security.md +0 -0
  570. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/skills.md +0 -0
  571. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/subagents.md +0 -0
  572. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/system-one.md +0 -0
  573. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/tui.md +0 -0
  574. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config/workspaces.md +0 -0
  575. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/config.md +0 -0
  576. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/git.md +0 -0
  577. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/index.md +0 -0
  578. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/install/docker.md +0 -0
  579. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/install.md +0 -0
  580. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/languages.md +0 -0
  581. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  582. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/legal/privacy.md +0 -0
  583. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/anthropic.md +0 -0
  584. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/azure.md +0 -0
  585. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/bedrock.md +0 -0
  586. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/cohere.md +0 -0
  587. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/deepseek.md +0 -0
  588. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/gemini.md +0 -0
  589. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/github.md +0 -0
  590. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/groq.md +0 -0
  591. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
  592. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/ollama.md +0 -0
  593. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
  594. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/openai.md +0 -0
  595. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/opencode-go.md +0 -0
  596. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/openrouter.md +0 -0
  597. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/other.md +0 -0
  598. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/vertex.md +0 -0
  599. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/warnings.md +0 -0
  600. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms/xai.md +0 -0
  601. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/llms.md +0 -0
  602. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/more/analytics.md +0 -0
  603. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/more/edit-formats.md +0 -0
  604. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/more/infinite-output.md +0 -0
  605. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/more-info.md +0 -0
  606. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/repomap.md +0 -0
  607. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/scripting.md +0 -0
  608. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  609. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  610. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
  611. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  612. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
  613. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  614. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  615. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/troubleshooting.md +0 -0
  616. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/commands.md +0 -0
  617. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/conventions.md +0 -0
  618. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/copypaste.md +0 -0
  619. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/images-urls.md +0 -0
  620. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/lint-test.md +0 -0
  621. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/modes.md +0 -0
  622. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/not-code.md +0 -0
  623. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/notifications.md +0 -0
  624. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/optional.md +0 -0
  625. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/sessions.md +0 -0
  626. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/voice.md +0 -0
  627. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage/watch.md +0 -0
  628. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/docs/usage.md +0 -0
  629. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/package-lock.json +0 -0
  630. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/package.json +0 -0
  631. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli/website/share/index.md +0 -0
  632. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
  633. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
  634. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/requires.txt +0 -0
  635. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/cecli_dev.egg-info/top_level.txt +0 -0
  636. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/docker/Dockerfile +0 -0
  637. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  638. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/pyproject.toml +0 -0
  639. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/pytest.ini +0 -0
  640. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/common-constraints.txt +0 -0
  641. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-dev.in +0 -0
  642. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-dev.txt +0 -0
  643. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-help.in +0 -0
  644. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-help.txt +0 -0
  645. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-playwright.in +0 -0
  646. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements-playwright.txt +0 -0
  647. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/requirements.in +0 -0
  648. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements/tree-sitter.in +0 -0
  649. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/requirements.txt +0 -0
  650. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/30k-image.py +0 -0
  651. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/__init__.py +0 -0
  652. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/blame.py +0 -0
  653. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/clean_metadata.py +0 -0
  654. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/compare-message-history.py +0 -0
  655. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/condense_model_settings.py +0 -0
  656. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/cost_analyzer.py +0 -0
  657. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/cost_calculator.py +0 -0
  658. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/dl_icons.py +0 -0
  659. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/docmd_build.sh +0 -0
  660. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/filter-chat-mode.js +0 -0
  661. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/generate_providers.py +0 -0
  662. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/get_contributor_list.js +0 -0
  663. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/get_hashline.py +0 -0
  664. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/history_prompts.py +0 -0
  665. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/homepage.py +0 -0
  666. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/issues.py +0 -0
  667. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/logo_svg.py +0 -0
  668. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/optimize_tokens.sh +0 -0
  669. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/pip-compile.sh +0 -0
  670. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/recording_audio.py +0 -0
  671. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/redact-cast.py +0 -0
  672. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/rename_to_cecli.py +0 -0
  673. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/tmux_record.sh +0 -0
  674. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/tsl_pack_langs.py +0 -0
  675. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/update-blame.sh +0 -0
  676. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/update-docs.sh +0 -0
  677. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/update-history.py +0 -0
  678. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/versionbump.py +0 -0
  679. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/scripts/yank-old-versions.py +0 -0
  680. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/setup.cfg +0 -0
  681. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/shim.pyproject.toml +0 -0
  682. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/__init__.py +0 -0
  683. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/__init__.py +0 -0
  684. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/conftest.py +0 -0
  685. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_agent_config_merge.py +0 -0
  686. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_aws_credentials.py +0 -0
  687. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_background_commands.py +0 -0
  688. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_coder.py +0 -0
  689. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_commands.py +0 -0
  690. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_custom_commands.py +0 -0
  691. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_deprecated.py +0 -0
  692. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_editblock.py +0 -0
  693. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_editor.py +0 -0
  694. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_exceptions.py +0 -0
  695. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_file_system_service.py +0 -0
  696. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_find_or_blocks.py +0 -0
  697. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_hashline.py +0 -0
  698. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_hashline_closure.py +0 -0
  699. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_history.py +0 -0
  700. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_io.py +0 -0
  701. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_linter.py +0 -0
  702. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_main.py +0 -0
  703. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_model_info_manager.py +0 -0
  704. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_model_provider_manager.py +0 -0
  705. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_models.py +0 -0
  706. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_onboarding.py +0 -0
  707. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_plugin_manager.py +0 -0
  708. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_prompts.py +0 -0
  709. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_reasoning.py +0 -0
  710. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_repo.py +0 -0
  711. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_repomap.py +0 -0
  712. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_retry_config.py +0 -0
  713. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_run_cmd.py +0 -0
  714. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_sanity_check_repo.py +0 -0
  715. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_scripting.py +0 -0
  716. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_select_selector.py +0 -0
  717. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_sendchat.py +0 -0
  718. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_session_args.py +0 -0
  719. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_session_crypto.py +0 -0
  720. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_sessions.py +0 -0
  721. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_sessions_manager.py +0 -0
  722. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_skills.py +0 -0
  723. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_special.py +0 -0
  724. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_spinner.py +0 -0
  725. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_ssl_verification.py +0 -0
  726. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_system_one.py +0 -0
  727. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_udiff.py +0 -0
  728. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_urls.py +0 -0
  729. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_voice.py +0 -0
  730. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_watch.py +0 -0
  731. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/basic/test_wholefile.py +0 -0
  732. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/coders/test_coder_switching.py +0 -0
  733. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/coders/test_copypaste_coder.py +0 -0
  734. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/coders/test_rate_limit.py +0 -0
  735. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/coders/test_tool_call_consolidation.py +0 -0
  736. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_auto_memory.py +0 -0
  737. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_compaction.py +0 -0
  738. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_remove_memory.py +0 -0
  739. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_search_memory.py +0 -0
  740. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_switch_agent.py +0 -0
  741. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_voice.py +0 -0
  742. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_workflows.py +0 -0
  743. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/commands/test_workspace.py +0 -0
  744. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/conftest.py +0 -0
  745. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/conversations/test_background_command_injection.py +0 -0
  746. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/conversations/test_conversation_integration.py +0 -0
  747. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/conversations/test_conversation_system.py +0 -0
  748. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  749. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/chat-history.md +0 -0
  750. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
  751. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/bash/test.sh +0 -0
  752. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/c/test.c +0 -0
  753. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
  754. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
  755. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  756. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
  757. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
  758. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/d/test.d +0 -0
  759. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/dart/test.dart +0 -0
  760. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/elisp/test.el +0 -0
  761. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
  762. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/elm/test.elm +0 -0
  763. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
  764. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/go/test.go +0 -0
  765. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
  766. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
  767. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/java/test.java +0 -0
  768. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/javascript/test.js +0 -0
  769. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
  770. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/lua/test.lua +0 -0
  771. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/matlab/test.m +0 -0
  772. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
  773. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  774. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/php/test.php +0 -0
  775. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/pony/test.pony +0 -0
  776. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/properties/test.properties +0 -0
  777. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/python/test.py +0 -0
  778. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/ql/test.ql +0 -0
  779. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/r/test.r +0 -0
  780. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
  781. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
  782. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/rust/test.rs +0 -0
  783. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/scala/test.scala +0 -0
  784. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
  785. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/swift/test.swift +0 -0
  786. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
  787. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
  788. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/udev/test.rules +0 -0
  789. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/languages/zig/test.zig +0 -0
  790. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
  791. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
  792. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  793. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/watch.js +0 -0
  794. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/watch.lisp +0 -0
  795. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/watch.py +0 -0
  796. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/fixtures/watch_question.js +0 -0
  797. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/help/test_help.py +0 -0
  798. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/scheduler/__init__.py +0 -0
  799. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/scheduler/test_cron.py +0 -0
  800. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/scheduler/test_db.py +0 -0
  801. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/scheduler/test_service.py +0 -0
  802. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/server/acp/__init__.py +0 -0
  803. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/server/acp/test_bridge.py +0 -0
  804. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/server/acp/test_dispatch.py +0 -0
  805. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/server/acp/test_models.py +0 -0
  806. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/server/acp/test_protocol.py +0 -0
  807. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_api_base.py +0 -0
  808. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  809. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_cache_control.py +0 -0
  810. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_gemini_auth.py +0 -0
  811. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  812. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_messages_stream.py +0 -0
  813. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_messages_wire.py +0 -0
  814. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  815. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_mistral_provider.py +0 -0
  816. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_ollama_native.py +0 -0
  817. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_providers_json.py +0 -0
  818. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_reasoning_config.py +0 -0
  819. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  820. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  821. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_llms_vision.py +0 -0
  822. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_loop_detect.py +0 -0
  823. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_memory_control.py +0 -0
  824. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_model_config.py +0 -0
  825. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_onboarding.py +0 -0
  826. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_orchestration.py +0 -0
  827. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/test_skills_importer.py +0 -0
  828. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workflows/__init__.py +0 -0
  829. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workflows/test_runner.py +0 -0
  830. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workflows/test_subagents.py +0 -0
  831. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workspaces/conftest.py +0 -0
  832. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workspaces/test_config.py +0 -0
  833. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workspaces/test_paths.py +0 -0
  834. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workspaces/test_subagents.py +0 -0
  835. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  836. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/hooks/__init__.py +0 -0
  837. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/hooks/test_base.py +0 -0
  838. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/hooks/test_manager.py +0 -0
  839. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/hooks/test_registry.py +0 -0
  840. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/integration/test_agent_mcp_management.py +0 -0
  841. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/integration/test_config_loading.py +0 -0
  842. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/integration/test_mcp_management.py +0 -0
  843. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/integration/test_workflows_e2e.py +0 -0
  844. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/__init__.py +0 -0
  845. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/conftest.py +0 -0
  846. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/mock_server.py +0 -0
  847. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_concurrency.py +0 -0
  848. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_config.py +0 -0
  849. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_integration.py +0 -0
  850. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_logging.py +0 -0
  851. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_resilience.py +0 -0
  852. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_keepalive_unit.py +0 -0
  853. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_manager.py +0 -0
  854. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_manager_retry.py +0 -0
  855. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_server_name_normalization.py +0 -0
  856. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_server_sdk_compat.py +0 -0
  857. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/mcp/test_tool_name_sanitization.py +0 -0
  858. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/scrape/test_playwright_disable.py +0 -0
  859. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/scrape/test_scrape.py +0 -0
  860. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/__init__.py +0 -0
  861. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/conftest.py +0 -0
  862. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_commands.py +0 -0
  863. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_config.py +0 -0
  864. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_delegate.py +0 -0
  865. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_finished.py +0 -0
  866. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_io_proxy.py +0 -0
  867. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_service.py +0 -0
  868. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
  869. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/test_requests.py +0 -0
  870. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_command_format_output.py +0 -0
  871. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_command_timeout_paging.py +0 -0
  872. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_edit_file_format_output.py +0 -0
  873. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_extractions.py +0 -0
  874. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_get_lines.py +0 -0
  875. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_git_branch.py +0 -0
  876. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_git_diff.py +0 -0
  877. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_grep.py +0 -0
  878. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_insert_block.py +0 -0
  879. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_read_range_execute.py +0 -0
  880. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_registry.py +0 -0
  881. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_remove_mcp_tool.py +0 -0
  882. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_resource_manager_paging.py +0 -0
  883. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_tool_arguments.py +0 -0
  884. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  885. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tools/validations.py +0 -0
  886. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tui/test_app.py +0 -0
  887. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tui/test_completion_bar.py +0 -0
  888. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/tui/test_output.py +0 -0
  889. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/conftest.py +0 -0
  890. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_deep_merge.py +0 -0
  891. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_edge_cases.py +0 -0
  892. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_load_mcp.py +0 -0
  893. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_performance.py +0 -0
  894. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_queues.py +0 -0
  895. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_remove_mcp.py +0 -0
  896. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_retry_backoff.py +0 -0
  897. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_shallow_merge.py +0 -0
  898. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_signals.py +0 -0
  899. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  900. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  901. {cecli_dev-1.8.0 → cecli_dev-1.8.1rc2}/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.0
3
+ Version: 1.8.1rc2
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.0'
22
- __version_tuple__ = version_tuple = (1, 8, 0)
21
+ __version__ = version = '1.8.1rc2'
22
+ __version_tuple__ = version_tuple = (1, 8, 1, 'rc2')
23
23
 
24
- __commit_id__ = commit_id = 'gbf30ff4c0'
24
+ __commit_id__ = commit_id = 'g9c5114f1f'
@@ -2253,6 +2253,31 @@ class Coder(metaclass=UsageMeta):
2253
2253
  )
2254
2254
  return
2255
2255
 
2256
+ # Compaction can only shrink the conversation buckets counted above.
2257
+ # If the fixed context (files added to the chat, repo map, system
2258
+ # prompt, rules, tool schemas) already meets the limit on its own,
2259
+ # summarizing cannot bring the context under the limit. Bail out with
2260
+ # guidance instead of churning every turn, which is what a large file
2261
+ # added to the chat otherwise causes.
2262
+ non_compactable_tokens = all_tokens - compactable_tokens
2263
+
2264
+ if (
2265
+ self.context_compaction_max_tokens
2266
+ and non_compactable_tokens >= self.context_compaction_max_tokens
2267
+ ):
2268
+ if getattr(self, "_compaction_noop_warning_time", 0) + 300 < time.time():
2269
+ self._compaction_noop_warning_time = time.time()
2270
+ self.io.tool_warning(
2271
+ "Compaction cannot reduce the context: the fixed context (files in the"
2272
+ f" chat, repo map, prompts) is already ~{non_compactable_tokens:,}"
2273
+ f" tokens, at or above the ~{self.context_compaction_max_tokens:,} token"
2274
+ " compaction limit."
2275
+ )
2276
+ self.io.tool_output("- Use /drop to remove unneeded files from the chat")
2277
+ self.io.tool_output("- Use /clear to clear the chat history")
2278
+
2279
+ return
2280
+
2256
2281
  message_tokens = done_tokens + cur_tokens
2257
2282
  file_tokens = diff_tokens + file_context_tokens
2258
2283
  combined_tokens = done_tokens + cur_tokens + diff_tokens + file_context_tokens
@@ -3996,7 +4021,7 @@ class Coder(metaclass=UsageMeta):
3996
4021
  if (
3997
4022
  not len(self.partial_response_content)
3998
4023
  and not len(self.partial_response_tool_calls)
3999
- and not len(self.partial_response_reasoning_content)
4024
+ and not _is_meaningful_reasoning(self.partial_response_reasoning_content)
4000
4025
  ):
4001
4026
  self.empty_response = True
4002
4027
  return
@@ -4126,7 +4151,8 @@ class Coder(metaclass=UsageMeta):
4126
4151
 
4127
4152
  text += reasoning_content
4128
4153
  self.got_reasoning_content = True
4129
- received_content = True
4154
+ if _is_meaningful_reasoning(reasoning_content):
4155
+ received_content = True
4130
4156
 
4131
4157
  self.token_profiler.on_token()
4132
4158
  self.io.update_spinner_suffix(reasoning_content)
@@ -4202,7 +4228,14 @@ class Coder(metaclass=UsageMeta):
4202
4228
  self.io.tool_warning("Execution stopped by on message hook")
4203
4229
  return
4204
4230
 
4205
- if not received_content and len(self.partial_response_tool_calls) == 0:
4231
+ # Treat the response as empty when nothing was received, or when the
4232
+ # only thing received was reasoning made entirely of non-alphanumeric
4233
+ # characters (e.g. moonshotai/kimi-k3 returning "!!!!").
4234
+ if (
4235
+ not received_content
4236
+ and len(self.partial_response_tool_calls) == 0
4237
+ and not _is_meaningful_reasoning(self.partial_response_reasoning_content)
4238
+ ):
4206
4239
  self.empty_response = True
4207
4240
  return
4208
4241
 
@@ -5391,3 +5424,15 @@ def _first_usage_tokens(usage: object, paths: list[str], default: int = 0) -> in
5391
5424
  if value is not None:
5392
5425
  return value
5393
5426
  return default
5427
+
5428
+
5429
+ def _is_meaningful_reasoning(text):
5430
+ """Return True if reasoning text contains at least one alphanumeric character.
5431
+
5432
+ Some providers (e.g. moonshotai/kimi-k3) occasionally return completions
5433
+ with empty ``content`` and a ``reasoning_content`` made entirely of
5434
+ punctuation (e.g. ``"!!!!"``). Those responses are effectively empty, so
5435
+ the empty-response detector only lets reasoning count as response
5436
+ content when it holds at least one alphanumeric character.
5437
+ """
5438
+ return bool(text) and any(ch.isalnum() for ch in text)
@@ -194,7 +194,7 @@ def bedrock_endpoint(resolved: Dict[str, Any]) -> str:
194
194
  )
195
195
 
196
196
  route = resolved["route"]
197
- return f"https://bedrock-runtime.{region}.amazonaws.com/model/{route}/converse"
197
+ return f"{resolved['api_base']}/model/{route}/converse"
198
198
 
199
199
 
200
200
  def _signed_headers(
@@ -19,6 +19,7 @@ from __future__ import annotations
19
19
 
20
20
  import asyncio
21
21
  import json
22
+ import math
22
23
  import os
23
24
  import re
24
25
  import warnings
@@ -1096,15 +1097,11 @@ class _LiteLLMFacade:
1096
1097
  """Estimate tokens for ``text`` without loading a BPE tokenizer.
1097
1098
 
1098
1099
  tiktoken's cl100k_base/o200k_base encodings cost ~30-95MB of RSS the
1099
- first time they are loaded, so we approximate instead: roughly one token
1100
- per four ASCII characters (the classic rule of thumb), plus one token per
1101
- non-ASCII character (CJK/emoji tokenize at about one token per char), and
1102
- never fewer tokens than there are whitespace-delimited word/punctuation
1103
- runs (dense code with short tokens is otherwise undercounted).
1104
-
1105
- The estimate lands within ~±30% of cl100k_base on code and prose, which
1106
- is plenty for context-window checks, cost display, and file-size
1107
- warnings.
1100
+ first time they are loaded, so we approximate instead with a regex
1101
+ pre-tokenizer patterned on OpenAI's o200k_base (see
1102
+ ``_estimate_token_count``). The estimate lands within ~±30% of
1103
+ cl100k_base on code and prose, which is plenty for context-window
1104
+ checks, cost display, and file-size warnings.
1108
1105
 
1109
1106
  Returns a ``range`` whose length is the estimated token count; the
1110
1107
  individual values are dummy ids (callers only use ``len()``/iteration).
@@ -1244,23 +1241,41 @@ __all__ = ["litellm"]
1244
1241
  # Token-count estimator (tiktoken-free)
1245
1242
  # ---------------------------------------------------------------------------
1246
1243
 
1247
- _WORD_OR_PUNCT_RE = re.compile(r"\w+|[^\w\s]")
1248
- _NON_ASCII_RE = re.compile(r"[^\x00-\x7f]")
1244
+ # Standard ``re`` approximation of OpenAI's o200k_base pre-tokenizer pattern.
1245
+ # The letter class is Unicode-aware (``[^\W\d_]``) so non-Latin scripts are
1246
+ # counted rather than dropped.
1247
+ _O200K_APPROX_PATTERN = re.compile(
1248
+ r"""'(?:[sdmt]|ll|ve|re)| ?[^\W\d_]+| ?\d{1,3}| ?[^\s\w]+|\s+""", re.UNICODE
1249
+ )
1250
+
1251
+ #: Bytes charged per token for chunks too long to be a single token, calibrated
1252
+ #: against o200k_base (~5 bytes/token on code, prose and JSON).
1253
+ _CHARS_PER_TOKEN = 5.0
1249
1254
 
1250
1255
 
1251
1256
  def _estimate_token_count(text: str) -> int:
1252
1257
  """Estimate the number of tokens in ``text`` without a BPE tokenizer.
1253
1258
 
1254
- Uses the classic ~4 chars/token rule of thumb, lifted for non-ASCII text
1255
- (CJK/emoji tokenize at roughly one token per character) and floored by the
1256
- number of word/punctuation runs so dense code with many short tokens isn't
1257
- undercounted.
1259
+ Splits ``text`` with a regex approximation of OpenAI's o200k_base
1260
+ pre-tokenizer, then accumulates a fractional token weight per chunk:
1261
+ whitespace runs collapse to a single token, numbers and short chunks
1262
+ (<= 4 bytes) count as one, and longer chunks are charged at roughly
1263
+ ``_CHARS_PER_TOKEN`` bytes per token. The total is rounded up and floored
1264
+ at one token for any non-empty input.
1258
1265
  """
1259
1266
 
1260
1267
  if not text:
1261
1268
  return 0
1262
1269
 
1263
- units = len(_WORD_OR_PUNCT_RE.findall(text))
1264
- non_ascii = len(_NON_ASCII_RE.findall(text))
1270
+ tokens = 0.0
1271
+ for chunk in _O200K_APPROX_PATTERN.findall(text):
1272
+ byte_len = len(chunk.encode("utf-8"))
1273
+
1274
+ if chunk.isspace():
1275
+ tokens += 1.0
1276
+ elif chunk.strip().isdigit() or byte_len <= 4:
1277
+ tokens += 1.0
1278
+ else:
1279
+ tokens += max(1.0, byte_len / _CHARS_PER_TOKEN)
1265
1280
 
1266
- return max(1, len(text) // 4, units) + non_ascii
1281
+ return max(1, math.ceil(tokens - 1e-9))
@@ -10,8 +10,10 @@ Resolution order, highest precedence first:
10
10
  ``None``, ``''``, ``'{}'``, ``'[]'`` and ``'null'`` count as *absent* so that
11
11
  lower-precedence sources still load.
12
12
  2. ``<git_root or cwd>/.cecli.workflows.yml`` / ``.cecli.workflows.yaml``.
13
- 3. ``merged_config["workflows"]`` — the deep-merged ``.cecli.conf.yml`` value.
14
- 4. ``~/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
13
+ 3. ``<git_root or cwd>/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
14
+ 4. ``<git_root or cwd>/.agents/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
15
+ 5. ``merged_config["workflows"]`` — the deep-merged ``.cecli.conf.yml`` value.
16
+ 6. ``~/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
15
17
 
16
18
  Each source may hold a single workflow mapping or a ``workflows: [...]`` list.
17
19
  On a duplicate ``name`` the higher-precedence definition wins and the loser is
@@ -41,6 +43,8 @@ WORKFLOW_FILENAMES = (".cecli.workflows.yml", ".cecli.workflows.yaml")
41
43
 
42
44
  WORKFLOW_DIR = Path(".cecli") / "workflows"
43
45
 
46
+ AGENTS_WORKFLOW_DIR = Path(".agents") / "workflows"
47
+
44
48
  # Values argparse/deep-merge normalization leaves behind when nothing was set.
45
49
  _ABSENT_STRINGS = ("", "{}", "[]", "null", "~")
46
50
 
@@ -93,6 +97,8 @@ def resolve_workflow_configs(
93
97
  ordered += _entries_from_arg(str(config_arg))
94
98
 
95
99
  ordered += _entries_from_local(git_root)
100
+ ordered += _entries_from_local_dir(git_root)
101
+ ordered += _entries_from_local_agents_dir(git_root)
96
102
 
97
103
  if isinstance(merged_config, dict):
98
104
  ordered += _entries(merged_config.get("workflows"), None, _CONFIG_LABEL)
@@ -289,9 +295,28 @@ def _entries_from_local(git_root: Optional[Any]) -> List[_Discovered]:
289
295
  return []
290
296
 
291
297
 
298
+ def _entries_from_local_dir(git_root: Optional[Any]) -> List[_Discovered]:
299
+ """Resolve a repo-local ``.cecli/workflows/*.yml|*.yaml`` directory."""
300
+ base = Path(git_root).expanduser() if git_root else Path.cwd()
301
+
302
+ return _entries_from_dir(base / WORKFLOW_DIR)
303
+
304
+
305
+ def _entries_from_local_agents_dir(git_root: Optional[Any]) -> List[_Discovered]:
306
+ """Resolve a repo-local ``.agents/workflows/*.yml|*.yaml`` directory."""
307
+ base = Path(git_root).expanduser() if git_root else Path.cwd()
308
+
309
+ return _entries_from_dir(base / AGENTS_WORKFLOW_DIR)
310
+
311
+
292
312
  def _entries_from_home() -> List[_Discovered]:
293
313
  """Resolve ``~/.cecli/workflows/*.yml|*.yaml`` in stable sorted order."""
294
- root = Path.home() / WORKFLOW_DIR
314
+
315
+ return _entries_from_dir(Path.home() / WORKFLOW_DIR)
316
+
317
+
318
+ def _entries_from_dir(root: Path) -> List[_Discovered]:
319
+ """Resolve ``*.yml`` / ``*.yaml`` files under *root* in stable sorted order."""
295
320
  if not root.is_dir():
296
321
  return []
297
322
 
@@ -11,6 +11,7 @@ Cecli can be configured to retry failed API calls. This is useful for handling i
11
11
  - `retry-timeout`: The timeout in seconds for each retry.
12
12
  - `retry-backoff-factor`: The backoff factor to use between retries.
13
13
  - `retry-on-unavailable`: Whether to retry on 503 Service Unavailable errors.
14
+ - `retry-on-empty`: Whether to retry when the model returns an empty response. A response is considered empty when it has no content, no tool calls, and no *meaningful* reasoning. Reasoning that contains no alphanumeric characters (for example a `reasoning_content` of `"!!!!"`) does not count as a response, so it is retried like any other empty response.
14
15
  - `retry-on-unauthorized`: Whether to retry on 401 Unauthorized (and 403 Forbidden) errors. Default: false.
15
16
 
16
17
  Example usage in `.cecli.conf.yml`:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  parent: Configuration
3
3
  nav_order: 48
4
- description: The scheduler turns workflow schedule: entries into runs, coordinating any number of cecli instances through a shared SQLite database.
4
+ description: The scheduler turns workflow schedule entries into runs, coordinating any number of cecli instances through a shared SQLite database.
5
5
  ---
6
6
  # Scheduler
7
7
 
@@ -17,12 +17,14 @@ Preferred: one YAML file per workflow in `~/.cecli/workflows/`:
17
17
  morning-triage.yml
18
18
  ```
19
19
 
20
- Also supported: inline under a `workflows:` key in `.cecli.conf.yml`, or a repo-local `.cecli.workflows.yml`. Each source may hold a single workflow mapping, a `workflows: [...]` list, or a plain list of mappings. Resolution precedence (highest first):
20
+ Also supported: a repo-local `.cecli/workflows/` or `.agents/workflows/` directory (one YAML file per workflow), inline under a `workflows:` key in `.cecli.conf.yml`, or a repo-local `.cecli.workflows.yml`. Each source may hold a single workflow mapping, a `workflows: [...]` list, or a plain list of mappings. Resolution precedence (highest first):
21
21
 
22
22
  1. **CLI argument** — an inline JSON/YAML string or a file path passed to `--workflows`.
23
23
  2. **Local file** — `.cecli.workflows.yml` / `.cecli.workflows.yaml` in the git root (or working directory).
24
- 3. **Merged config** — the `workflows:` key in `.cecli.conf.yml`.
25
- 4. **Global files** — `~/.cecli/workflows/*.yml` / `*.yaml`, loaded in sorted order.
24
+ 3. **Local directory** — `.cecli/workflows/*.yml` / `*.yaml` in the git root (or working directory), loaded in sorted order.
25
+ 4. **Standard local directory** — `.agents/workflows/*.yml` / `*.yaml` in the git root (or working directory), loaded in sorted order.
26
+ 5. **Merged config** — the `workflows:` key in `.cecli.conf.yml`.
27
+ 6. **Global files** — `~/.cecli/workflows/*.yml` / `*.yaml`, loaded in sorted order.
26
28
 
27
29
  On a duplicate `name`, the higher-precedence definition wins and the loser is skipped with a warning. A source that fails to parse is skipped with a warning as well — a malformed workflows file never crashes startup.
28
30
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.8.0
3
+ Version: 1.8.1rc2
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
@@ -686,6 +686,7 @@ tests/basic/test_custom_commands.py
686
686
  tests/basic/test_deprecated.py
687
687
  tests/basic/test_editblock.py
688
688
  tests/basic/test_editor.py
689
+ tests/basic/test_empty_response.py
689
690
  tests/basic/test_exceptions.py
690
691
  tests/basic/test_file_system_service.py
691
692
  tests/basic/test_find_or_blocks.py
@@ -926,6 +926,7 @@
926
926
  "tests/basic/test_deprecated.py",
927
927
  "tests/basic/test_editblock.py",
928
928
  "tests/basic/test_editor.py",
929
+ "tests/basic/test_empty_response.py",
929
930
  "tests/basic/test_exceptions.py",
930
931
  "tests/basic/test_file_system_service.py",
931
932
  "tests/basic/test_find_or_blocks.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.8.1rc2",
3
+ "distance": 0,
4
+ "node": "g9c5114f1f4ccf75c0b68aca1830a9232d48f1ed0",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-14"
8
+ }
@@ -0,0 +1,223 @@
1
+ """Tests for empty-response detection with non-meaningful reasoning content.
2
+
3
+ Regression coverage for the ``retry-on-empty`` fix: a completion with empty
4
+ ``content``, no tool calls, and a ``reasoning_content`` made entirely of
5
+ non-alphanumeric characters (e.g. moonshotai/kimi-k3 returning ``"!!!!"``) must
6
+ be classified as an empty response so the existing retry loop engages.
7
+ """
8
+
9
+ from types import SimpleNamespace
10
+
11
+ import pytest
12
+
13
+ from cecli.coders.base_coder import Coder, _is_meaningful_reasoning
14
+ from cecli.helpers.threading import ThreadSafeEvent
15
+ from cecli.llm import litellm
16
+
17
+
18
+ # --------------------------------------------------------------------------- #
19
+ # Test doubles
20
+ # --------------------------------------------------------------------------- #
21
+ class _AlwaysSetEvent:
22
+ def is_set(self):
23
+ return True
24
+
25
+
26
+ class _FakeIO:
27
+ def __init__(self):
28
+ self.confirmation_in_progress_event = _AlwaysSetEvent()
29
+ self.assistant_outputs = []
30
+
31
+ def tool_error(self, *a, **k):
32
+ pass
33
+
34
+ def tool_warning(self, *a, **k):
35
+ pass
36
+
37
+ def update_spinner_suffix(self, *a, **k):
38
+ pass
39
+
40
+ def reset_streaming_response(self):
41
+ pass
42
+
43
+ def stream_output(self, *a, **k):
44
+ pass
45
+
46
+ def ai_output(self, *a, **k):
47
+ pass
48
+
49
+ def tool_output(self, *a, **k):
50
+ pass
51
+
52
+ def assistant_output(self, *a, **k):
53
+ self.assistant_outputs.append(a)
54
+
55
+
56
+ class _FakeTokenProfiler:
57
+ def start(self):
58
+ pass
59
+
60
+ def on_token(self):
61
+ pass
62
+
63
+ def on_error(self):
64
+ pass
65
+
66
+ def add_to_usage_report(self, *a, **k):
67
+ return a[0] if a else ""
68
+
69
+
70
+ def _make_coder(stream=False):
71
+ coder = Coder.__new__(Coder)
72
+ coder.stream = stream
73
+ coder.verbose = False
74
+ coder.args = SimpleNamespace(debug=False, show_thinking=False)
75
+ coder.io = _FakeIO()
76
+ coder.interrupt_event = ThreadSafeEvent()
77
+ coder.pretty = False
78
+ coder.reasoning_tag_name = "THINKING"
79
+ coder.got_reasoning_content = False
80
+ coder.ended_reasoning_content = False
81
+ coder.empty_response = False
82
+ coder.tool_reflection = False
83
+ coder.partial_response_content = ""
84
+ coder.partial_response_reasoning_content = ""
85
+ coder.partial_response_chunks = []
86
+ coder.partial_response_tool_calls = []
87
+ coder.partial_response_function_call = dict()
88
+ coder.partial_response_consolidated = None
89
+ coder.multi_response_content = ""
90
+ coder.chat_completion_response_hashes = []
91
+ coder._streaming_buffer_length = 0
92
+ coder.token_profiler = _FakeTokenProfiler()
93
+ coder._output_loop_detected = False
94
+ coder._output_loop_message = ""
95
+ coder._has_empty_reflected = False
96
+ coder.edit_format = "code"
97
+ return coder
98
+
99
+
100
+ def _tc(index, call_id, name, arguments):
101
+ return litellm.ChatCompletionMessageToolCall(
102
+ id=call_id,
103
+ function=litellm.Function(arguments=arguments or "", name=name),
104
+ type="function",
105
+ index=index,
106
+ )
107
+
108
+
109
+ def _non_streaming_completion(content="", reasoning=None, tool_calls=None):
110
+ message = {"role": "assistant", "content": content}
111
+ if reasoning is not None:
112
+ message["reasoning_content"] = reasoning
113
+ if tool_calls is not None:
114
+ message["tool_calls"] = tool_calls
115
+ return litellm.ModelResponse(
116
+ id="test-completion",
117
+ created=0,
118
+ model="gpt-test",
119
+ object="chat.completion",
120
+ choices=[{"finish_reason": "stop", "index": 0, "message": message}],
121
+ usage={"completion_tokens": 1, "prompt_tokens": 1, "total_tokens": 2},
122
+ )
123
+
124
+
125
+ def _reasoning_chunk(text):
126
+ delta = litellm.Delta(role="assistant", content=None, reasoning_content=text)
127
+ choice = litellm.StreamChoice(finish_reason=None, index=0, delta=delta)
128
+ return litellm.StreamChunk(
129
+ id="cmpl-test", created=1000, model="gpt-test", choices=[choice], usage=None
130
+ )
131
+
132
+
133
+ async def _agen(chunks):
134
+ for chunk in chunks:
135
+ yield chunk
136
+
137
+
138
+ # --------------------------------------------------------------------------- #
139
+ # _is_meaningful_reasoning unit tests
140
+ # --------------------------------------------------------------------------- #
141
+ def test_is_meaningful_reasoning_empty_and_none():
142
+ assert _is_meaningful_reasoning("") is False
143
+ assert _is_meaningful_reasoning(None) is False
144
+
145
+
146
+ def test_is_meaningful_reasoning_punctuation_only():
147
+ assert _is_meaningful_reasoning("!!!!") is False
148
+ assert _is_meaningful_reasoning("...?!,;:") is False
149
+
150
+
151
+ def test_is_meaningful_reasoning_whitespace_only():
152
+ assert _is_meaningful_reasoning(" \n\t ") is False
153
+
154
+
155
+ def test_is_meaningful_reasoning_normal_text():
156
+ assert _is_meaningful_reasoning("Let me think about this") is True
157
+
158
+
159
+ def test_is_meaningful_reasoning_mixed_punctuation_and_alnum():
160
+ assert _is_meaningful_reasoning("42?") is True
161
+ assert _is_meaningful_reasoning("!!!a!!!") is True
162
+
163
+
164
+ # --------------------------------------------------------------------------- #
165
+ # Non-streaming path (show_send_output)
166
+ # --------------------------------------------------------------------------- #
167
+ @pytest.mark.asyncio
168
+ async def test_junk_reasoning_is_empty_non_streaming():
169
+ coder = _make_coder(stream=False)
170
+ await coder.show_send_output(_non_streaming_completion(content="", reasoning="!" * 40))
171
+ assert coder.empty_response is True
172
+
173
+
174
+ @pytest.mark.asyncio
175
+ async def test_meaningful_reasoning_is_not_empty_non_streaming():
176
+ coder = _make_coder(stream=False)
177
+ await coder.show_send_output(
178
+ _non_streaming_completion(content="", reasoning="Let me think about this")
179
+ )
180
+ assert coder.empty_response is False
181
+
182
+
183
+ @pytest.mark.asyncio
184
+ async def test_tool_calls_are_not_empty_non_streaming():
185
+ coder = _make_coder(stream=False)
186
+ await coder.show_send_output(
187
+ _non_streaming_completion(
188
+ content="",
189
+ reasoning="",
190
+ tool_calls=[_tc(0, "call_1", "Local--ls", "{}")],
191
+ )
192
+ )
193
+ assert coder.empty_response is False
194
+
195
+
196
+ @pytest.mark.asyncio
197
+ async def test_mixed_reasoning_is_not_empty_non_streaming():
198
+ coder = _make_coder(stream=False)
199
+ await coder.show_send_output(_non_streaming_completion(content="", reasoning="42?"))
200
+ assert coder.empty_response is False
201
+
202
+
203
+ # --------------------------------------------------------------------------- #
204
+ # Streaming path (show_send_output_stream)
205
+ # --------------------------------------------------------------------------- #
206
+ @pytest.mark.asyncio
207
+ async def test_junk_reasoning_is_empty_streaming():
208
+ coder = _make_coder(stream=True)
209
+ coder.args.show_thinking = True
210
+ async for _ in coder.show_send_output_stream(_agen([_reasoning_chunk("!" * 40)])):
211
+ pass
212
+ assert coder.empty_response is True
213
+
214
+
215
+ @pytest.mark.asyncio
216
+ async def test_meaningful_reasoning_is_not_empty_streaming():
217
+ coder = _make_coder(stream=True)
218
+ coder.args.show_thinking = True
219
+ async for _ in coder.show_send_output_stream(
220
+ _agen([_reasoning_chunk("Let me think about this")])
221
+ ):
222
+ pass
223
+ assert coder.empty_response is False
@@ -247,3 +247,48 @@ async def test_run_observation_uses_formatted_chat_chunks():
247
247
  # The observation prompt is appended as the final user message
248
248
  assert sent_messages[-1]["role"] == "user"
249
249
  assert "Observation Prompt" in sent_messages[-1]["content"]
250
+
251
+
252
+ @pytest.mark.asyncio
253
+ async def test_compaction_bails_out_when_fixed_context_dominates():
254
+ """A large file in the chat cannot be compacted away, so bail instead of looping."""
255
+ from cecli.coders.base_coder import Coder
256
+
257
+ coder = MagicMock(spec=Coder)
258
+ coder.uuid = "test-coder-fixed-context"
259
+ coder.enable_context_compaction = True
260
+ coder.context_compaction_max_tokens = 1000
261
+ coder.context_compaction_summary_tokens = 100
262
+ coder.io = MagicMock()
263
+ coder.gpt_prompts = MagicMock()
264
+ coder._rate_limit_sleep = AsyncMock()
265
+
266
+ # done/cur/diff/file_context are empty, so the entire context is the fixed
267
+ # context (chat files, repo map, prompts). Summarizing cannot shrink it.
268
+ coder.summarizer = MagicMock()
269
+ coder.summarizer.count_tokens.side_effect = [0, 0, 0, 0, 6000]
270
+ coder.summarizer.summarize_all_as_text = AsyncMock(return_value="Summary Text")
271
+
272
+ mock_conv_manager = MagicMock()
273
+ mock_conv_manager.get_messages_dict.return_value = []
274
+
275
+ obs = MagicMock()
276
+ obs.check_and_trigger = AsyncMock()
277
+
278
+ with (
279
+ patch(
280
+ "cecli.coders.base_coder.ConversationService.get_manager",
281
+ return_value=mock_conv_manager,
282
+ ),
283
+ patch(
284
+ "cecli.coders.base_coder.ObservationService.get_instance",
285
+ return_value=obs,
286
+ ),
287
+ ):
288
+ await Coder.compact_context_if_needed(coder, force=True)
289
+
290
+ # Compaction must not summarize anything...
291
+ coder.summarizer.summarize_all_as_text.assert_not_called()
292
+ # ...and must tell the user why, with a remedy.
293
+ coder.io.tool_warning.assert_called_once()
294
+ coder.io.tool_output.assert_any_call("- Use /drop to remove unneeded files from the chat")
@@ -153,6 +153,19 @@ def test_bedrock_endpoint_requires_region():
153
153
  raise AssertionError("expected ValueError without a region")
154
154
 
155
155
 
156
+ def test_bedrock_endpoint_built_from_resolved_api_base(monkeypatch):
157
+ # The Converse URL is assembled from resolved["api_base"] verbatim rather
158
+ # than a hardcoded public host, so a custom endpoint (VPC endpoint, proxy,
159
+ # LocalStack, ...) resolved onto api_base is honored.
160
+ monkeypatch.setenv("AWS_REGION_NAME", "us-east-1")
161
+ resolved = {
162
+ "route": "anthropic.claude-sonnet",
163
+ "api_base": "https://bedrock.internal.example.com",
164
+ }
165
+ url = bedrock_endpoint(resolved)
166
+ assert url == ("https://bedrock.internal.example.com/model/anthropic.claude-sonnet/converse")
167
+
168
+
156
169
  # ---------------------------------------------------------------------------
157
170
  # Chat-family wiring: signer hook + extra_query
158
171
  # ---------------------------------------------------------------------------