cecli-dev 1.2.1__tar.gz → 1.2.2rc1__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 (828) hide show
  1. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/PKG-INFO +1 -1
  2. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/_version.py +3 -3
  3. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/base_coder.py +3 -7
  4. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/manager.py +1 -0
  5. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/config.py +36 -3
  6. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/chat.py +47 -3
  7. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/messages.py +160 -3
  8. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/litellm_compat.py +38 -4
  9. cecli_dev-1.2.2rc1/cecli/helpers/model_config/agent.py +73 -0
  10. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/pipeline.py +4 -1
  11. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/io.py +39 -34
  12. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/models.py +1 -0
  13. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/reasoning_tags.py +4 -3
  14. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/app.py +39 -0
  15. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/output.py +91 -51
  16. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/PKG-INFO +1 -1
  17. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/SOURCES.txt +1 -0
  18. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/scm_file_list.json +1 -0
  19. cecli_dev-1.2.2rc1/cecli_dev.egg-info/scm_version.json +8 -0
  20. cecli_dev-1.2.2rc1/tests/helpers/test_llms_api_base.py +268 -0
  21. cecli_dev-1.2.2rc1/tests/helpers/test_llms_cache_control.py +192 -0
  22. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_github_copilot_auth.py +26 -0
  23. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_hyperscalers.py +52 -0
  24. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_model_config.py +1 -0
  25. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tui/test_app.py +67 -1
  26. cecli_dev-1.2.1/cecli/helpers/model_config/agent.py +0 -40
  27. cecli_dev-1.2.1/cecli_dev.egg-info/scm_version.json +0 -8
  28. cecli_dev-1.2.1/tests/helpers/test_llms_api_base.py +0 -117
  29. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.dockerignore +0 -0
  30. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.flake8 +0 -0
  31. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.gitattributes +0 -0
  32. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  33. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/check_pypi_version.yml +0 -0
  34. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/docker-build-test.yml +0 -0
  35. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/docker-release.yml +0 -0
  36. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/issues.yml +0 -0
  37. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/pages.yml +0 -0
  38. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/pre-commit.yml +0 -0
  39. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/release.yml +0 -0
  40. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/ubuntu-tests.yml +0 -0
  41. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/windows-tests.yml +0 -0
  42. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
  43. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.gitignore +0 -0
  44. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/.pre-commit-config.yaml +0 -0
  45. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/CHANGELOG.md +0 -0
  46. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/CNAME +0 -0
  47. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/CONTRIBUTING.md +0 -0
  48. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/HISTORY.md +0 -0
  49. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/LICENSE.txt +0 -0
  50. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/MANIFEST.in +0 -0
  51. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/README.md +0 -0
  52. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/Dockerfile +0 -0
  53. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/README.md +0 -0
  54. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/__init__.py +0 -0
  55. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/benchmark.py +0 -0
  56. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/benchmark_classic.py +0 -0
  57. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/clone-exercism.sh +0 -0
  58. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/cpp-test.sh +0 -0
  59. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/docker.sh +0 -0
  60. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/docker_build.sh +0 -0
  61. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/install-docker-ubuntu.sh +0 -0
  62. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/npm-test.sh +0 -0
  63. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/over_time.py +0 -0
  64. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/plot.sh +0 -0
  65. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/plots.py +0 -0
  66. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/problem_stats.py +0 -0
  67. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/prompts.py +0 -0
  68. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/refactor_tools.py +0 -0
  69. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/rsync.sh +0 -0
  70. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/rungrid.py +0 -0
  71. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/swe-bench-lite.txt +0 -0
  72. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/swe-bench.txt +0 -0
  73. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/swe_bench.py +0 -0
  74. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/test_benchmark.py +0 -0
  75. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/variations.1.sh +0 -0
  76. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/variations.2.sh +0 -0
  77. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/variations.3.sh +0 -0
  78. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/benchmark/variations.4.sh +0 -0
  79. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/__init__.py +0 -0
  80. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/__main__.py +0 -0
  81. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/args.py +0 -0
  82. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/args_formatter.py +0 -0
  83. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/change_tracker.py +0 -0
  84. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/__init__.py +0 -0
  85. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/agent_coder.py +0 -0
  86. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/architect_coder.py +0 -0
  87. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/ask_coder.py +0 -0
  88. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/chat_chunks.py +0 -0
  89. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/context_coder.py +0 -0
  90. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/copypaste_coder.py +0 -0
  91. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editblock_coder.py +0 -0
  92. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
  93. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editblock_func_coder.py +0 -0
  94. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  95. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editor_editblock_coder.py +0 -0
  96. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/editor_whole_coder.py +0 -0
  97. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/hashline_coder.py +0 -0
  98. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/help_coder.py +0 -0
  99. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/patch_coder.py +0 -0
  100. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/search_replace.py +0 -0
  101. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/shell.py +0 -0
  102. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
  103. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/sub_agent_coder.py +0 -0
  104. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/udiff_coder.py +0 -0
  105. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/udiff_simple.py +0 -0
  106. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/wholefile_coder.py +0 -0
  107. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/coders/wholefile_func_coder.py +0 -0
  108. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/__init__.py +0 -0
  109. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/add.py +0 -0
  110. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/agent.py +0 -0
  111. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/agent_model.py +0 -0
  112. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/agent_tree.py +0 -0
  113. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/architect.py +0 -0
  114. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/ask.py +0 -0
  115. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/auto_memory.py +0 -0
  116. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/chat_mode.py +0 -0
  117. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/clear.py +0 -0
  118. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/code.py +0 -0
  119. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/command_prefix.py +0 -0
  120. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/commit.py +0 -0
  121. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/compact.py +0 -0
  122. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/context.py +0 -0
  123. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/context_blocks.py +0 -0
  124. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/context_management.py +0 -0
  125. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/copy.py +0 -0
  126. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/copy_context.py +0 -0
  127. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/core.py +0 -0
  128. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/diff.py +0 -0
  129. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/drop.py +0 -0
  130. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/editor.py +0 -0
  131. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/editor_model.py +0 -0
  132. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/exclude_skill.py +0 -0
  133. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/exit.py +0 -0
  134. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/git.py +0 -0
  135. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/hashline.py +0 -0
  136. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/help.py +0 -0
  137. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/history_search.py +0 -0
  138. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/hooks.py +0 -0
  139. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/hot_reload.py +0 -0
  140. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/include_skill.py +0 -0
  141. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/lint.py +0 -0
  142. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/list_mcp.py +0 -0
  143. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/list_queue.py +0 -0
  144. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/list_sessions.py +0 -0
  145. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/list_skills.py +0 -0
  146. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/load.py +0 -0
  147. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/load_hook.py +0 -0
  148. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/load_mcp.py +0 -0
  149. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/load_session.py +0 -0
  150. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/load_skill.py +0 -0
  151. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/ls.py +0 -0
  152. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/map.py +0 -0
  153. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/map_refresh.py +0 -0
  154. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/merge.py +0 -0
  155. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/model.py +0 -0
  156. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/models.py +0 -0
  157. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/multiline_mode.py +0 -0
  158. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/paste.py +0 -0
  159. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/queue.py +0 -0
  160. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/quit.py +0 -0
  161. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/read_only.py +0 -0
  162. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/read_only_stub.py +0 -0
  163. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/reap_agent.py +0 -0
  164. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/reasoning_effort.py +0 -0
  165. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/remove_hook.py +0 -0
  166. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/remove_mcp.py +0 -0
  167. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/remove_memory.py +0 -0
  168. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/remove_queue.py +0 -0
  169. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/remove_skill.py +0 -0
  170. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/report.py +0 -0
  171. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/reset.py +0 -0
  172. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/rules.py +0 -0
  173. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/run.py +0 -0
  174. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/save.py +0 -0
  175. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/save_session.py +0 -0
  176. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/search_memory.py +0 -0
  177. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/settings.py +0 -0
  178. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/spawn_agent.py +0 -0
  179. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/switch_agent.py +0 -0
  180. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
  181. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/terminal_setup.py +0 -0
  182. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/test.py +0 -0
  183. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/think_tokens.py +0 -0
  184. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/tokens.py +0 -0
  185. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/undo.py +0 -0
  186. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/utils/__init__.py +0 -0
  187. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/utils/base_command.py +0 -0
  188. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/utils/helpers.py +0 -0
  189. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/utils/registry.py +0 -0
  190. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/utils/save_load_manager.py +0 -0
  191. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/voice.py +0 -0
  192. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/weak_model.py +0 -0
  193. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/web.py +0 -0
  194. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/commands/workspace.py +0 -0
  195. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/decoding.py +0 -0
  196. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/deprecated_args.py +0 -0
  197. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/diffs.py +0 -0
  198. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/dump.py +0 -0
  199. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/editor.py +0 -0
  200. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/exceptions.py +0 -0
  201. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/format_settings.py +0 -0
  202. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/help.py +0 -0
  203. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/help_pats.py +0 -0
  204. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/__init__.py +0 -0
  205. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/__init__.py +0 -0
  206. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/config.py +0 -0
  207. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
  208. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  209. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
  210. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/agents/service.py +0 -0
  211. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/background_commands.py +0 -0
  212. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/command_parser.py +0 -0
  213. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/command_queue.py +0 -0
  214. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/config_utils.py +0 -0
  215. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/__init__.py +0 -0
  216. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/base_message.py +0 -0
  217. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/files.py +0 -0
  218. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/integration.py +0 -0
  219. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/service.py +0 -0
  220. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/tags.py +0 -0
  221. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/conversation/utils.py +0 -0
  222. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/copypaste.py +0 -0
  223. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/coroutines.py +0 -0
  224. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/crypto.py +0 -0
  225. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_searcher.py +0 -0
  226. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/__init__.py +0 -0
  227. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/builders.py +0 -0
  228. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/ignore.py +0 -0
  229. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
  230. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/service.py +0 -0
  231. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/file_system/trie_index.py +0 -0
  232. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
  233. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/dump.py +0 -0
  234. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  235. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/main.py +0 -0
  236. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
  237. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
  238. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/hashline.py +0 -0
  239. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/hashpos/__init__.py +0 -0
  240. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
  241. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  242. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/hashpos/transformations.py +0 -0
  243. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/io_proxy.py +0 -0
  244. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/leak_detect.py +0 -0
  245. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/__init__.py +0 -0
  246. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
  247. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
  248. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
  249. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
  250. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/domains/responses.py +0 -0
  251. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
  252. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  253. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
  254. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/identifiers.py +0 -0
  255. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/pipeline.py +0 -0
  256. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
  257. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
  258. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/azure.py +0 -0
  259. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/base.py +0 -0
  260. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
  261. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  262. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
  263. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
  264. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  265. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/meta.py +0 -0
  266. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/openai.py +0 -0
  267. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
  268. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/runtime.py +0 -0
  269. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/types.py +0 -0
  270. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/llms/utils.py +0 -0
  271. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/lock_detect.py +0 -0
  272. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/memory/__init__.py +0 -0
  273. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/memory/db.py +0 -0
  274. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/memory/utils.py +0 -0
  275. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/memory_control.py +0 -0
  276. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/__init__.py +0 -0
  277. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/api.py +0 -0
  278. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  279. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  280. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  281. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/identifiers.py +0 -0
  282. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/llm.py +0 -0
  283. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_config/utils.py +0 -0
  284. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/model_providers.py +0 -0
  285. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/__init__.py +0 -0
  286. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/config.py +0 -0
  287. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/local_workspace.py +0 -0
  288. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/project.py +0 -0
  289. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/workspace.py +0 -0
  290. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/monorepo/worktree.py +0 -0
  291. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/nested.py +0 -0
  292. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/observations/__init__.py +0 -0
  293. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/observations/service.py +0 -0
  294. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/__init__.py +0 -0
  295. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  296. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/environment.py +0 -0
  297. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
  298. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/safe_methods.py +0 -0
  299. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/security.py +0 -0
  300. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/service.py +0 -0
  301. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  302. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/plugin_manager.py +0 -0
  303. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/profiler.py +0 -0
  304. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/queues.py +0 -0
  305. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/requests.py +0 -0
  306. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/responses.py +0 -0
  307. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/__init__.py +0 -0
  308. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/acp/__init__.py +0 -0
  309. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/acp/bridge.py +0 -0
  310. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/acp/models.py +0 -0
  311. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/acp/protocol.py +0 -0
  312. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/signals.py +0 -0
  313. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/server/ws_server.py +0 -0
  314. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/similarity.py +0 -0
  315. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/skills.py +0 -0
  316. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/helpers/threading.py +0 -0
  317. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/history.py +0 -0
  318. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/__init__.py +0 -0
  319. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/base.py +0 -0
  320. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/helpers.py +0 -0
  321. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/integration.py +0 -0
  322. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/manager.py +0 -0
  323. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/registry.py +0 -0
  324. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/service.py +0 -0
  325. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/hooks/types.py +0 -0
  326. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/http.py +0 -0
  327. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/interruptible_input.py +0 -0
  328. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/linter.py +0 -0
  329. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/llm.py +0 -0
  330. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/main.py +0 -0
  331. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mcp/__init__.py +0 -0
  332. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mcp/manager.py +0 -0
  333. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mcp/oauth.py +0 -0
  334. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mcp/server.py +0 -0
  335. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mcp/utils.py +0 -0
  336. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/mdstream.py +0 -0
  337. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/onboarding.py +0 -0
  338. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/__init__.py +0 -0
  339. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/agent.yml +0 -0
  340. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/architect.yml +0 -0
  341. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/ask.yml +0 -0
  342. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/base.yml +0 -0
  343. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/context.yml +0 -0
  344. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/copypaste.yml +0 -0
  345. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editblock.yml +0 -0
  346. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editblock_fenced.yml +0 -0
  347. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editblock_func.yml +0 -0
  348. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
  349. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editor_editblock.yml +0 -0
  350. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/editor_whole.yml +0 -0
  351. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/hashline.yml +0 -0
  352. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/help.yml +0 -0
  353. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/patch.yml +0 -0
  354. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
  355. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/subagent.yml +0 -0
  356. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/udiff.yml +0 -0
  357. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/udiff_simple.yml +0 -0
  358. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/utils/__init__.py +0 -0
  359. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/utils/registry.py +0 -0
  360. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/utils/system.py +0 -0
  361. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/wholefile.yml +0 -0
  362. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/prompts/wholefile_func.yml +0 -0
  363. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  364. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  365. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  366. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  367. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  368. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  369. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  370. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  371. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  372. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  373. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  374. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  375. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  376. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  377. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  378. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  379. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  380. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  381. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  382. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  383. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  384. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  385. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  386. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  387. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  388. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  389. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  390. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  391. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  392. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  393. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  394. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  395. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
  396. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  397. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  398. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  399. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  400. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  401. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  402. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  403. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  404. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  405. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  406. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  407. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  408. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  409. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  410. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  411. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  412. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  413. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  414. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  415. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  416. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  417. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  418. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  419. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  420. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  421. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  422. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  423. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/repo.py +0 -0
  424. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/repomap.py +0 -0
  425. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/report.py +0 -0
  426. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/resources/__init__.py +0 -0
  427. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/resources/model-metadata.json +0 -0
  428. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/resources/model-settings-condensed.yml +0 -0
  429. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/resources/model-settings.yml +0 -0
  430. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/resources/providers.json +0 -0
  431. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/run_cmd.py +0 -0
  432. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/scrape.py +0 -0
  433. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/sendchat.py +0 -0
  434. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/sessions.py +0 -0
  435. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/signals.py +0 -0
  436. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/special.py +0 -0
  437. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tests/test_queue_commands.py +0 -0
  438. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/__init__.py +0 -0
  439. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/_yield.py +0 -0
  440. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/command.py +0 -0
  441. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/delegate.py +0 -0
  442. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/edit_file.py +0 -0
  443. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/explore_code.py +0 -0
  444. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_branch.py +0 -0
  445. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_diff.py +0 -0
  446. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_log.py +0 -0
  447. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_remote.py +0 -0
  448. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_show.py +0 -0
  449. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/git_status.py +0 -0
  450. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/grep.py +0 -0
  451. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/ls.py +0 -0
  452. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/orchestrate.py +0 -0
  453. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/read_file.py +0 -0
  454. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/replace_facts.py +0 -0
  455. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/resource_manager.py +0 -0
  456. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/search_facts.py +0 -0
  457. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/thinking.py +0 -0
  458. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/undo_change.py +0 -0
  459. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/update_todo_list.py +0 -0
  460. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/__init__.py +0 -0
  461. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/base_tool.py +0 -0
  462. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/helpers.py +0 -0
  463. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/output.py +0 -0
  464. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/registry.py +0 -0
  465. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/utils/responses.py +0 -0
  466. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/validations/__init__.py +0 -0
  467. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tools/validations/validations.py +0 -0
  468. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/__init__.py +0 -0
  469. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/io.py +0 -0
  470. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/styles.tcss +0 -0
  471. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/__init__.py +0 -0
  472. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/completion_bar.py +0 -0
  473. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/file_list.py +0 -0
  474. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/footer.py +0 -0
  475. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/input_area.py +0 -0
  476. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/input_container.py +0 -0
  477. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/key_hints.py +0 -0
  478. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/output_alt.bak +0 -0
  479. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/selectable_log.py +0 -0
  480. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/status_bar.py +0 -0
  481. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
  482. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/tui/worker.py +0 -0
  483. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/urls.py +0 -0
  484. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/utils.py +0 -0
  485. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/versioncheck.py +0 -0
  486. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/voice.py +0 -0
  487. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/waiting.py +0 -0
  488. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/watch.py +0 -0
  489. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/watch_prompts.py +0 -0
  490. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/blame.md +0 -0
  491. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/get-started.md +0 -0
  492. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/help-tip.md +0 -0
  493. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/help.md +0 -0
  494. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/install.md +0 -0
  495. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/keys.md +0 -0
  496. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/model-warnings.md +0 -0
  497. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/multi-line.md +0 -0
  498. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/python-m-aider.md +0 -0
  499. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/recording.css +0 -0
  500. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/recording.md +0 -0
  501. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_includes/works-best.md +0 -0
  502. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_features.scss +0 -0
  503. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_footer.scss +0 -0
  504. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_hero.scss +0 -0
  505. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_info.scss +0 -0
  506. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_layout.scss +0 -0
  507. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_reset.scss +0 -0
  508. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_testimonials.scss +0 -0
  509. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_typography.scss +0 -0
  510. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/_variables.scss +0 -0
  511. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/custom/custom.scss +0 -0
  512. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/_sass/global-overrides.scss +0 -0
  513. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docmd.config.json +0 -0
  514. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  515. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
  516. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/agent-mode.md +0 -0
  517. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/api-keys.md +0 -0
  518. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/api.md +0 -0
  519. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/conf.md +0 -0
  520. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/custom-commands.md +0 -0
  521. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  522. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/dotenv.md +0 -0
  523. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/editor.md +0 -0
  524. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/hooks.md +0 -0
  525. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/mcp.md +0 -0
  526. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/model-aliases.md +0 -0
  527. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/model-configuration.md +0 -0
  528. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/model-providers.md +0 -0
  529. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/options.md +0 -0
  530. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
  531. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/reasoning.md +0 -0
  532. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/retries.md +0 -0
  533. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/security.md +0 -0
  534. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/skills.md +0 -0
  535. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/subagents.md +0 -0
  536. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/tui.md +0 -0
  537. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config/workspaces.md +0 -0
  538. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/config.md +0 -0
  539. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/git.md +0 -0
  540. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/index.md +0 -0
  541. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/install/docker.md +0 -0
  542. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/install.md +0 -0
  543. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/languages.md +0 -0
  544. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  545. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/legal/privacy.md +0 -0
  546. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/anthropic.md +0 -0
  547. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/azure.md +0 -0
  548. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/bedrock.md +0 -0
  549. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/cohere.md +0 -0
  550. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/deepseek.md +0 -0
  551. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/gemini.md +0 -0
  552. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/github.md +0 -0
  553. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/groq.md +0 -0
  554. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
  555. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/ollama.md +0 -0
  556. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
  557. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/openai.md +0 -0
  558. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/openrouter.md +0 -0
  559. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/other.md +0 -0
  560. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/vertex.md +0 -0
  561. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/warnings.md +0 -0
  562. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms/xai.md +0 -0
  563. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/llms.md +0 -0
  564. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/more/analytics.md +0 -0
  565. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/more/edit-formats.md +0 -0
  566. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/more/infinite-output.md +0 -0
  567. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/more-info.md +0 -0
  568. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/repomap.md +0 -0
  569. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/scripting.md +0 -0
  570. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  571. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  572. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
  573. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  574. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
  575. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  576. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  577. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/troubleshooting.md +0 -0
  578. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/commands.md +0 -0
  579. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/conventions.md +0 -0
  580. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/copypaste.md +0 -0
  581. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/images-urls.md +0 -0
  582. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/lint-test.md +0 -0
  583. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/modes.md +0 -0
  584. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/not-code.md +0 -0
  585. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/notifications.md +0 -0
  586. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/optional.md +0 -0
  587. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/sessions.md +0 -0
  588. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/tips.md +0 -0
  589. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/voice.md +0 -0
  590. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage/watch.md +0 -0
  591. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/docs/usage.md +0 -0
  592. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/package-lock.json +0 -0
  593. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/package.json +0 -0
  594. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli/website/share/index.md +0 -0
  595. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
  596. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
  597. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/requires.txt +0 -0
  598. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/cecli_dev.egg-info/top_level.txt +0 -0
  599. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/docker/Dockerfile +0 -0
  600. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  601. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/pyproject.toml +0 -0
  602. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/pytest.ini +0 -0
  603. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/common-constraints.txt +0 -0
  604. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-dev.in +0 -0
  605. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-dev.txt +0 -0
  606. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-help.in +0 -0
  607. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-help.txt +0 -0
  608. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-playwright.in +0 -0
  609. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements-playwright.txt +0 -0
  610. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/requirements.in +0 -0
  611. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements/tree-sitter.in +0 -0
  612. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/requirements.txt +0 -0
  613. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/30k-image.py +0 -0
  614. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/__init__.py +0 -0
  615. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/blame.py +0 -0
  616. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/clean_metadata.py +0 -0
  617. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/compare-message-history.py +0 -0
  618. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/condense_model_settings.py +0 -0
  619. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/cost_analyzer.py +0 -0
  620. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/cost_calculator.py +0 -0
  621. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/dl_icons.py +0 -0
  622. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/docmd_build.sh +0 -0
  623. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/filter-chat-mode.js +0 -0
  624. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/generate_providers.py +0 -0
  625. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/get_contributor_list.js +0 -0
  626. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/get_hashline.py +0 -0
  627. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/history_prompts.py +0 -0
  628. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/homepage.py +0 -0
  629. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/issues.py +0 -0
  630. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/logo_svg.py +0 -0
  631. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/optimize_tokens.sh +0 -0
  632. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/pip-compile.sh +0 -0
  633. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/recording_audio.py +0 -0
  634. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/redact-cast.py +0 -0
  635. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/rename_to_cecli.py +0 -0
  636. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/tmux_record.sh +0 -0
  637. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/tsl_pack_langs.py +0 -0
  638. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/update-blame.sh +0 -0
  639. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/update-docs.sh +0 -0
  640. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/update-history.py +0 -0
  641. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/versionbump.py +0 -0
  642. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/scripts/yank-old-versions.py +0 -0
  643. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/setup.cfg +0 -0
  644. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/shim.pyproject.toml +0 -0
  645. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/__init__.py +0 -0
  646. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/__init__.py +0 -0
  647. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/conftest.py +0 -0
  648. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_agent_config_merge.py +0 -0
  649. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_aws_credentials.py +0 -0
  650. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_background_commands.py +0 -0
  651. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_coder.py +0 -0
  652. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_commands.py +0 -0
  653. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_custom_commands.py +0 -0
  654. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_deprecated.py +0 -0
  655. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_editblock.py +0 -0
  656. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_editor.py +0 -0
  657. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_exceptions.py +0 -0
  658. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_find_or_blocks.py +0 -0
  659. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_hashline.py +0 -0
  660. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_hashline_closure.py +0 -0
  661. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_history.py +0 -0
  662. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_io.py +0 -0
  663. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_linter.py +0 -0
  664. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_main.py +0 -0
  665. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_model_info_manager.py +0 -0
  666. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_model_provider_manager.py +0 -0
  667. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_models.py +0 -0
  668. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_onboarding.py +0 -0
  669. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_plugin_manager.py +0 -0
  670. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_prompts.py +0 -0
  671. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_reasoning.py +0 -0
  672. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_repo.py +0 -0
  673. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_repomap.py +0 -0
  674. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_run_cmd.py +0 -0
  675. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_sanity_check_repo.py +0 -0
  676. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_scripting.py +0 -0
  677. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_select_selector.py +0 -0
  678. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_sendchat.py +0 -0
  679. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_session_args.py +0 -0
  680. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_session_crypto.py +0 -0
  681. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_sessions.py +0 -0
  682. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_sessions_manager.py +0 -0
  683. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_skills.py +0 -0
  684. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_special.py +0 -0
  685. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_spinner.py +0 -0
  686. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_ssl_verification.py +0 -0
  687. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_udiff.py +0 -0
  688. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_urls.py +0 -0
  689. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_voice.py +0 -0
  690. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_watch.py +0 -0
  691. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/basic/test_wholefile.py +0 -0
  692. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/coders/test_coder_switching.py +0 -0
  693. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/coders/test_copypaste_coder.py +0 -0
  694. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/coders/test_tool_call_consolidation.py +0 -0
  695. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/commands/test_auto_memory.py +0 -0
  696. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/commands/test_compaction.py +0 -0
  697. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/commands/test_remove_memory.py +0 -0
  698. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/commands/test_search_memory.py +0 -0
  699. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/commands/test_switch_agent.py +0 -0
  700. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/conftest.py +0 -0
  701. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/conversations/test_conversation_integration.py +0 -0
  702. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/conversations/test_conversation_system.py +0 -0
  703. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  704. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/chat-history.md +0 -0
  705. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
  706. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/bash/test.sh +0 -0
  707. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/c/test.c +0 -0
  708. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
  709. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
  710. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  711. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
  712. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
  713. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/d/test.d +0 -0
  714. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/dart/test.dart +0 -0
  715. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/elisp/test.el +0 -0
  716. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
  717. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/elm/test.elm +0 -0
  718. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
  719. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/go/test.go +0 -0
  720. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
  721. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
  722. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/java/test.java +0 -0
  723. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/javascript/test.js +0 -0
  724. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
  725. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/lua/test.lua +0 -0
  726. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/matlab/test.m +0 -0
  727. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
  728. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  729. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/php/test.php +0 -0
  730. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/pony/test.pony +0 -0
  731. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/properties/test.properties +0 -0
  732. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/python/test.py +0 -0
  733. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/ql/test.ql +0 -0
  734. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/r/test.r +0 -0
  735. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
  736. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
  737. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/rust/test.rs +0 -0
  738. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/scala/test.scala +0 -0
  739. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
  740. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/swift/test.swift +0 -0
  741. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
  742. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
  743. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/udev/test.rules +0 -0
  744. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/languages/zig/test.zig +0 -0
  745. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
  746. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
  747. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  748. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/watch.js +0 -0
  749. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/watch.lisp +0 -0
  750. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/watch.py +0 -0
  751. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/fixtures/watch_question.js +0 -0
  752. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/help/test_help.py +0 -0
  753. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  754. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_config.py +0 -0
  755. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_config_active.py +0 -0
  756. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  757. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  758. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  759. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/monorepo/test_workspace.py +0 -0
  760. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/observations/test_observation_service.py +0 -0
  761. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/server/acp/__init__.py +0 -0
  762. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
  763. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
  764. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/server/acp/test_models.py +0 -0
  765. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
  766. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  767. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_providers_json.py +0 -0
  768. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
  769. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  770. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_llms_vision.py +0 -0
  771. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_memory_control.py +0 -0
  772. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/helpers/test_orchestration.py +0 -0
  773. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/hooks/__init__.py +0 -0
  774. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/hooks/test_base.py +0 -0
  775. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/hooks/test_manager.py +0 -0
  776. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/hooks/test_registry.py +0 -0
  777. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/integration/test_agent_mcp_management.py +0 -0
  778. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/integration/test_config_loading.py +0 -0
  779. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/integration/test_mcp_management.py +0 -0
  780. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/__init__.py +0 -0
  781. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/conftest.py +0 -0
  782. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/mock_server.py +0 -0
  783. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
  784. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_config.py +0 -0
  785. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_integration.py +0 -0
  786. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_logging.py +0 -0
  787. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
  788. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_keepalive_unit.py +0 -0
  789. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_manager.py +0 -0
  790. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_manager_retry.py +0 -0
  791. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/mcp/test_server_sdk_compat.py +0 -0
  792. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/scrape/test_playwright_disable.py +0 -0
  793. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/scrape/test_scrape.py +0 -0
  794. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/__init__.py +0 -0
  795. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/conftest.py +0 -0
  796. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_commands.py +0 -0
  797. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_config.py +0 -0
  798. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_delegate.py +0 -0
  799. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_finished.py +0 -0
  800. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_io_proxy.py +0 -0
  801. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_service.py +0 -0
  802. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
  803. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/test_requests.py +0 -0
  804. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_edit_file_format_output.py +0 -0
  805. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_extractions.py +0 -0
  806. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_get_lines.py +0 -0
  807. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_git_branch.py +0 -0
  808. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_git_diff.py +0 -0
  809. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_grep.py +0 -0
  810. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_insert_block.py +0 -0
  811. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_read_range_execute.py +0 -0
  812. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_registry.py +0 -0
  813. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
  814. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_tool_arguments.py +0 -0
  815. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  816. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/tools/validations.py +0 -0
  817. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/conftest.py +0 -0
  818. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_deep_merge.py +0 -0
  819. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_edge_cases.py +0 -0
  820. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_load_mcp.py +0 -0
  821. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_performance.py +0 -0
  822. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_queues.py +0 -0
  823. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_remove_mcp.py +0 -0
  824. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_shallow_merge.py +0 -0
  825. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_signals.py +0 -0
  826. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  827. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  828. {cecli_dev-1.2.1 → cecli_dev-1.2.2rc1}/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.2.1
3
+ Version: 1.2.2rc1
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.2.1'
22
- __version_tuple__ = version_tuple = (1, 2, 1)
21
+ __version__ = version = '1.2.2rc1'
22
+ __version_tuple__ = version_tuple = (1, 2, 2, 'rc1')
23
23
 
24
- __commit_id__ = commit_id = 'g9eedb354e'
24
+ __commit_id__ = commit_id = 'ga04dfe1c7'
@@ -4310,13 +4310,9 @@ class Coder(metaclass=UsageMeta):
4310
4310
  cache_write_tokens = getattr(completion.usage, "cache_creation_input_tokens", 0) or 0
4311
4311
  self.message_cached_tokens += cache_hit_tokens
4312
4312
 
4313
- if hasattr(completion.usage, "cache_read_input_tokens") or hasattr(
4314
- completion.usage, "cache_creation_input_tokens"
4315
- ):
4316
- self.message_tokens_sent += prompt_tokens
4317
- self.message_tokens_sent += cache_write_tokens
4318
- else:
4319
- self.message_tokens_sent += prompt_tokens
4313
+ # ``prompt_tokens`` is normalized to the full input (including any
4314
+ # cache read/write) for anthropic usage, so no separate add here.
4315
+ self.message_tokens_sent += prompt_tokens
4320
4316
 
4321
4317
  else:
4322
4318
  prompt_tokens = self.get_active_model().token_count(messages)
@@ -367,6 +367,7 @@ class ConversationManager:
367
367
  and coder.add_cache_headers
368
368
  and hasattr(coder, "main_model")
369
369
  and not coder.main_model.caches_by_default
370
+ and not getattr(coder.main_model, "uses_messages_api", False)
370
371
  ):
371
372
  messages_dict = self._add_cache_control(messages_dict)
372
373
  return messages_dict
@@ -40,10 +40,28 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
40
40
  cfg = get_default_config(model)
41
41
  llm_block = cfg.get("llm") or {}
42
42
  api_block = cfg.get("api") or {}
43
- provider = llm_block.get("litellm_provider") or (
44
- model.split("/", 1)[0] if "/" in model else None
45
- )
43
+ agent_block = dict(cfg.get("agent") or {})
44
+ prefix = model.split("/", 1)[0] if "/" in model else None
45
+ provider = llm_block.get("litellm_provider") or prefix
46
46
  route = model.split("/", 1)[1] if "/" in model else model
47
+ is_claude = "claude" in route.lower()
48
+
49
+ # Providers with dedicated routing semantics (authenticated session, AWS
50
+ # SigV4 signing, dedicated endpoint templates) win over the metadata
51
+ # record's ``litellm_provider`` for every model under their prefix, so a
52
+ # ``github_copilot/`` / ``bedrock/`` / ``bedrock_mantle/`` model never
53
+ # falls back to a bare (anthropic/openai) record (e.g.
54
+ # ``github_copilot/claude-sonnet-4-5`` resolving to the bare
55
+ # ``claude-sonnet-4-5`` anthropic entry).
56
+ if prefix in ("github_copilot", "bedrock", "bedrock_mantle"):
57
+ provider = prefix
58
+
59
+ # Anthropic models hosted by a third-party provider (openrouter, deepseek,
60
+ # ...) authenticate against THAT provider, not anthropic: ``{provider}/claude-*``
61
+ # must route through the provider prefix even when the record lookup lands
62
+ # on the bare anthropic entry (e.g. ``openrouter/claude-sonnet-5``).
63
+ elif prefix and prefix != "anthropic" and is_claude:
64
+ provider = prefix
47
65
 
48
66
  mpm = ModelProviderManager()
49
67
  pcfg = mpm.get_provider_config(provider) or {}
@@ -88,6 +106,12 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
88
106
  # Mantle is an OpenAI-compatible chat wire (SigV4-signed via the chat
89
107
  # family's signer hook); see providers/bedrock_mantle.py.
90
108
  family = "chat"
109
+ elif is_claude and provider != "anthropic":
110
+ # A claude model on a non-anthropic provider uses that provider's
111
+ # OpenAI-compatible chat completions wire (openrouter, deepseek,
112
+ # azure_ai, ...); only native anthropic (or copilot's anthropic-native
113
+ # /v1/messages proxy, handled above) speaks the messages API.
114
+ family = "chat"
91
115
  elif mode == "responses" or "/v1/responses" in endpoints:
92
116
  family = "responses"
93
117
  elif provider == "anthropic":
@@ -100,6 +124,14 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
100
124
  extra_headers = dict(pcfg.get("default_headers") or {})
101
125
  extra_body = dict(api_block.get("extra_body") or {})
102
126
 
127
+ # Effective cache flags for the domain adapters. Anthropic messages-API
128
+ # models never cache "by default": prompt caching only happens when the
129
+ # request carries explicit ``cache_control`` breakpoints, so the messages
130
+ # domain injects them (agent.cache_control True + caches_by_default False).
131
+ if family == "messages":
132
+ agent_block["cache_control"] = True
133
+ agent_block["caches_by_default"] = False
134
+
103
135
  return {
104
136
  "model": model,
105
137
  "provider": provider,
@@ -112,6 +144,7 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
112
144
  "extra_query": dict(pcfg.get("extra_query") or {}),
113
145
  "api_block": api_block,
114
146
  "llm_block": llm_block,
147
+ "agent_block": agent_block,
115
148
  }
116
149
 
117
150
 
@@ -5,12 +5,20 @@ is extracted via :func:`cecli.helpers.llms.utils.extract_reasoning` which
5
5
  handles the three wild shapes (reasoning_content / reasoning /
6
6
  reasoning_details). Reasoning tokens reported without streamed text are marked
7
7
  redacted (``Message.reasoning_redacted``).
8
+
9
+ At request time the ``OPENAI_API_BASE`` / ``OPENAI_API_KEY`` env vars
10
+ (docs/llms/openai-compat.md) can redirect the wire to any OpenAI-compatible
11
+ endpoint: ``OPENAI_API_BASE`` wins over the resolved base and
12
+ ``OPENAI_API_KEY`` replaces the provider key when the base is a well-formed
13
+ http(s) URL.
8
14
  """
9
15
 
10
16
  from __future__ import annotations
11
17
 
12
18
  import json
13
- from typing import Any, AsyncIterator, Dict, List, Optional
19
+ import os
20
+ from typing import Any, AsyncIterator, Dict, List, Optional, Tuple
21
+ from urllib.parse import urlparse
14
22
 
15
23
  from ..runtime import VERIFY_SSL, make_client
16
24
  from ..types import (
@@ -94,12 +102,18 @@ async def chat_complete(
94
102
  headers: Dict[str, str],
95
103
  kwargs: Dict[str, Any],
96
104
  ) -> CompletionResponse:
97
- url = f"{resolved['api_base']}/chat/completions"
105
+ env = _openai_env_override()
106
+ base = env[0] if env else resolved["api_base"]
107
+ url = f"{base}/chat/completions"
98
108
  payload = chat_payload(resolved, messages, tools, False, kwargs)
99
109
  hdrs = {"Content-Type": "application/json", **headers}
100
110
  body: Optional[bytes] = None
101
111
  signer = resolved.get("_signer")
102
112
 
113
+ if env and env[1]:
114
+ key = env[1]
115
+ hdrs["Authorization"] = f"Bearer {key}"
116
+
103
117
  if signer:
104
118
  url, hdrs, body = signer(url, payload, hdrs, key)
105
119
 
@@ -127,12 +141,18 @@ async def chat_stream(
127
141
  headers: Dict[str, str],
128
142
  kwargs: Dict[str, Any],
129
143
  ) -> AsyncIterator[CompletionChunk]:
130
- url = f"{resolved['api_base']}/chat/completions"
144
+ env = _openai_env_override()
145
+ base = env[0] if env else resolved["api_base"]
146
+ url = f"{base}/chat/completions"
131
147
  payload = chat_payload(resolved, messages, tools, True, kwargs)
132
148
  hdrs = {"Content-Type": "application/json", **headers}
133
149
  body: Optional[bytes] = None
134
150
  signer = resolved.get("_signer")
135
151
 
152
+ if env and env[1]:
153
+ key = env[1]
154
+ hdrs["Authorization"] = f"Bearer {key}"
155
+
136
156
  if signer:
137
157
  url, hdrs, body = signer(url, payload, hdrs, key)
138
158
 
@@ -364,6 +384,30 @@ def _map_reasoning_content(msg: Dict[str, Any]) -> str:
364
384
  return "\n".join(texts)
365
385
 
366
386
 
387
+ def _openai_env_override() -> Optional[Tuple[str, Optional[str]]]:
388
+ """Return (api_base, api_key) from the OPENAI_API_* env vars when the base
389
+ is a well-formed http(s) URL (docs/llms/openai-compat.md).
390
+
391
+ Lets a custom OpenAI-compatible endpoint take over the chat completions
392
+ wire at request time: the env base wins over the resolved provider base and
393
+ OPENAI_API_KEY replaces the provider's own key for that request. A base
394
+ that is not a well-formed URL (no http(s) scheme / host, e.g.
395
+ ``localhost:8000``) is ignored so unrelated OPENAI_API_* leftovers cannot
396
+ hijack requests.
397
+ """
398
+ raw = os.environ.get("OPENAI_API_BASE")
399
+
400
+ if not raw:
401
+ return None
402
+
403
+ parsed = urlparse(raw.strip())
404
+
405
+ if parsed.scheme not in ("http", "https") or not parsed.netloc:
406
+ return None
407
+
408
+ return (raw.strip().rstrip("/"), os.environ.get("OPENAI_API_KEY") or None)
409
+
410
+
367
411
  __all__ = [
368
412
  "chat_payload",
369
413
  "chat_complete",
@@ -33,6 +33,9 @@ from ..utils import split_data_url, sse_json_lines, system_prompt
33
33
 
34
34
  DEFAULT_TIMEOUT = 120.0
35
35
 
36
+ #: Anthropic allows at most 4 ``cache_control`` breakpoints per request.
37
+ MAX_CACHE_BREAKPOINTS = 4
38
+
36
39
 
37
40
  def anthropic_payload(
38
41
  resolved: Dict[str, Any],
@@ -58,6 +61,7 @@ def anthropic_payload(
58
61
  payload["tools"] = [anthropic_tool(t) for t in tools]
59
62
 
60
63
  api_block = resolved.get("api_block") or {}
64
+ agent_block = resolved.get("agent_block") or {}
61
65
 
62
66
  # Caller/system overrides ride in ``kwargs["extra_body"]`` (models.py's
63
67
  # ``set_reasoning_effort`` / ``set_thinking_tokens``). Merge them into the
@@ -90,6 +94,16 @@ def anthropic_payload(
90
94
  extra_body.pop("reasoning_effort", None)
91
95
  extra_body.pop("thinking", None)
92
96
  payload.update(extra_body)
97
+
98
+ # Anthropic prompt caching is a byte-exact prefix match: it only happens
99
+ # when the request carries explicit ``cache_control`` breakpoints. The
100
+ # model config flags messages-API models ``cache_control`` True and
101
+ # ``caches_by_default`` False (see config.resolve_model_config), so the
102
+ # messages domain owns the marking here rather than the conversation
103
+ # manager.
104
+ if agent_block.get("cache_control") and not agent_block.get("caches_by_default"):
105
+ _apply_anthropic_cache_control(payload)
106
+
93
107
  return payload
94
108
 
95
109
 
@@ -465,11 +479,20 @@ def _finish_reason(stop_reason: Optional[str]) -> Optional[str]:
465
479
 
466
480
 
467
481
  def _anthropic_usage(usage_raw: Dict[str, Any]) -> Usage:
468
- """Build a normalized Usage from an Anthropic usage block."""
482
+ """Build a normalized Usage from an Anthropic usage block.
483
+
484
+ Anthropic's ``input_tokens`` excludes cached input, so ``prompt_tokens``
485
+ is normalized to the full input (``input_tokens + cache_read +
486
+ cache_creation``) to match the OpenAI-style semantics
487
+ ``base_coder.calculate_and_show_tokens_and_cost`` expects: its hit-rate
488
+ and cost math rely on ``prompt_tokens`` being the total input
489
+ (``cache_creation + cache_read + input == total``).
490
+ """
469
491
  input_tokens = usage_raw.get("input_tokens") or 0
470
492
  output_tokens = usage_raw.get("output_tokens") or 0
471
493
  cache_read = usage_raw.get("cache_read_input_tokens") or 0
472
494
  cache_creation = usage_raw.get("cache_creation_input_tokens") or 0
495
+ prompt_tokens = input_tokens + cache_read + cache_creation
473
496
 
474
497
  details: Dict[str, Any] = {}
475
498
  output_details = usage_raw.get("output_tokens_details") or {}
@@ -484,9 +507,9 @@ def _anthropic_usage(usage_raw: Dict[str, Any]) -> Usage:
484
507
  details["service_tier"] = service_tier
485
508
 
486
509
  return Usage(
487
- prompt_tokens=input_tokens or None,
510
+ prompt_tokens=prompt_tokens or None,
488
511
  completion_tokens=output_tokens or None,
489
- total_tokens=(input_tokens + cache_read + cache_creation) or None,
512
+ total_tokens=prompt_tokens or None,
490
513
  cache_read_input_tokens=usage_raw.get("cache_read_input_tokens"),
491
514
  cache_creation_input_tokens=usage_raw.get("cache_creation_input_tokens"),
492
515
  completion_tokens_details=details or None,
@@ -586,6 +609,140 @@ def _anthropic_user_blocks(content: List[Dict[str, Any]]) -> List[Dict[str, Any]
586
609
  return blocks
587
610
 
588
611
 
612
+ def _apply_anthropic_cache_control(payload: Dict[str, Any]) -> None:
613
+ """Attach ephemeral ``cache_control`` breakpoints to a copy of the stream.
614
+
615
+ Anthropic prompt caching is a byte-exact prefix match: a breakpoint on the
616
+ last content block of a message caches every token up to and including it.
617
+ Following the conversation manager's placement (``manager.py
618
+ _add_cache_control``), we mark the three stable boundaries of a multi-turn
619
+ exchange:
620
+
621
+ - the last system block at the start of the stream (which also covers the
622
+ tool definitions rendered before it), and
623
+ - the last content block of the two most recent non-tool user/assistant
624
+ turns.
625
+
626
+ The message stream is copied and only the key messages are replaced, so
627
+ caller-owned lists are never mutated. Anthropic allows at most
628
+ ``MAX_CACHE_BREAKPOINTS`` breakpoints per request, so the marking stops
629
+ early once that budget (including any caller-supplied markers) is
630
+ exhausted.
631
+ """
632
+ import copy
633
+
634
+ budget = MAX_CACHE_BREAKPOINTS - _count_cache_breakpoints(payload)
635
+
636
+ if budget <= 0:
637
+ return
638
+
639
+ system = payload.get("system")
640
+
641
+ if isinstance(system, str):
642
+ payload["system"] = [
643
+ {"type": "text", "text": system, "cache_control": {"type": "ephemeral"}}
644
+ ]
645
+ budget -= 1
646
+
647
+ elif isinstance(system, list) and system:
648
+ system = list(system)
649
+ last = system[-1]
650
+
651
+ if isinstance(last, dict):
652
+ last = copy.deepcopy(last)
653
+ system[-1] = last
654
+
655
+ if _mark_cache_breakpoint(last):
656
+ budget -= 1
657
+
658
+ payload["system"] = system
659
+
660
+ messages = payload.get("messages") or []
661
+ result = list(messages)
662
+ marked = 0
663
+
664
+ for i in range(len(result) - 1, -1, -1):
665
+ if marked >= 2 or budget <= 0:
666
+ break
667
+
668
+ msg = result[i]
669
+
670
+ if _is_tool_turn(msg):
671
+ continue
672
+
673
+ content = msg.get("content")
674
+
675
+ if isinstance(content, str):
676
+ msg = copy.deepcopy(msg)
677
+ msg["content"] = [
678
+ {"type": "text", "text": content, "cache_control": {"type": "ephemeral"}}
679
+ ]
680
+ result[i] = msg
681
+ marked += 1
682
+ budget -= 1
683
+
684
+ elif isinstance(content, list) and content:
685
+ msg = copy.deepcopy(msg)
686
+ blocks = list(msg["content"])
687
+
688
+ if _mark_cache_breakpoint(blocks[-1]):
689
+ marked += 1
690
+ budget -= 1
691
+
692
+ msg["content"] = blocks
693
+ result[i] = msg
694
+
695
+ payload["messages"] = result
696
+
697
+
698
+ def _count_cache_breakpoints(payload: Dict[str, Any]) -> int:
699
+ """Count existing ``cache_control`` markers in a payload (system + messages)."""
700
+ count = 0
701
+ system = payload.get("system")
702
+
703
+ if isinstance(system, list):
704
+ count += sum(isinstance(block, dict) and "cache_control" in block for block in system)
705
+
706
+ for tool in payload.get("tools") or []:
707
+ if isinstance(tool, dict) and "cache_control" in tool:
708
+ count += 1
709
+
710
+ for msg in payload.get("messages") or []:
711
+ content = msg.get("content")
712
+
713
+ if isinstance(content, list):
714
+ count += sum(isinstance(block, dict) and "cache_control" in block for block in content)
715
+
716
+ return count
717
+
718
+
719
+ def _mark_cache_breakpoint(block: Any) -> bool:
720
+ """Add an ephemeral breakpoint to ``block`` unless it already has one."""
721
+ if not isinstance(block, dict) or "cache_control" in block:
722
+ return False
723
+
724
+ block["cache_control"] = {"type": "ephemeral"}
725
+
726
+ return True
727
+
728
+
729
+ def _is_tool_turn(msg: Dict[str, Any]) -> bool:
730
+ """True when a wire message is a tool turn (transient content).
731
+
732
+ Matches the conversation manager's placement, which skips tool messages
733
+ and assistant tool-call turns when choosing cache breakpoints.
734
+ """
735
+ content = msg.get("content")
736
+
737
+ if not isinstance(content, list) or not content:
738
+ return False
739
+
740
+ return any(
741
+ isinstance(block, dict) and block.get("type") in ("tool_result", "tool_use")
742
+ for block in content
743
+ )
744
+
745
+
589
746
  __all__ = [
590
747
  "anthropic_payload",
591
748
  "anthropic_message",
@@ -936,7 +936,12 @@ class _LiteLLMFacade:
936
936
  )
937
937
 
938
938
  def completion_cost(self, completion_response: Optional[Any] = None, **kwargs: Any) -> float:
939
- """Estimate cost from usage tokens and cecli's own model metadata."""
939
+ """Estimate cost from usage tokens and cecli's own model metadata.
940
+
941
+ Mirrors ``base_coder.compute_costs_from_tokens`` so normalized usage
942
+ (``prompt_tokens`` = full input including cache read/write) is billed
943
+ with the cache discounts instead of the plain input price.
944
+ """
940
945
  usage = getattr(completion_response, "usage", None)
941
946
  if not usage:
942
947
  return 0.0
@@ -945,9 +950,38 @@ class _LiteLLMFacade:
945
950
  info = self.get_model_info(model) if model else {}
946
951
  input_cost = info.get("input_cost_per_token") or 0.0
947
952
  output_cost = info.get("output_cost_per_token") or 0.0
948
- return (usage.prompt_tokens or 0) * input_cost + (
949
- usage.completion_tokens or 0
950
- ) * output_cost
953
+ cache_hit_cost = (
954
+ info.get("input_cost_per_token_cache_hit")
955
+ or info.get("cache_read_input_token_cost")
956
+ or 0.0
957
+ )
958
+ prompt = usage.prompt_tokens or 0
959
+ completion = usage.completion_tokens or 0
960
+ cache_hit = (
961
+ getattr(usage, "cache_read_input_tokens", None)
962
+ or getattr(usage, "prompt_cache_hit_tokens", None)
963
+ or 0
964
+ )
965
+ cache_write = getattr(usage, "cache_creation_input_tokens", None) or 0
966
+
967
+ if cache_hit_cost:
968
+ return (
969
+ cache_hit * cache_hit_cost
970
+ + (prompt - cache_hit) * input_cost
971
+ + completion * output_cost
972
+ )
973
+
974
+ if cache_hit or cache_write:
975
+ # Hard-coded Anthropic adjustments, no-ops for other providers
976
+ # since their cache fields are zero.
977
+ return (
978
+ cache_write * input_cost * 1.25
979
+ + cache_hit * input_cost * 0.10
980
+ + (prompt - cache_hit) * input_cost
981
+ + completion * output_cost
982
+ )
983
+
984
+ return prompt * input_cost + completion * output_cost
951
985
 
952
986
  # -- model metadata ---------------------------------------------------
953
987
 
@@ -0,0 +1,73 @@
1
+ """Derive the ``agent`` override block for a model.
2
+
3
+ The agent block holds ModelSettings overrides. :mod:`cecli.models` applies each
4
+ of these directly (``setattr``) the same way the ``agent`` section of a
5
+ ``model-overrides`` entry is applied.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Dict, Optional
11
+
12
+ from .identifiers import is_anthropic
13
+ from .utils import supports_reasoning
14
+
15
+
16
+ def _uses_anthropic_messages_api(
17
+ provider: Optional[str], route: str, record: Optional[Dict]
18
+ ) -> bool:
19
+ """True when the model speaks the Anthropic /v1/messages wire format.
20
+
21
+ Only the native Anthropic provider (explicit prefix, or a bare claude
22
+ name that resolves to the anthropic record) and GitHub Copilot's
23
+ anthropic-native proxy (``github_copilot/claude-*``) route through the
24
+ messages family. Other claude routes (openrouter, deepseek, bedrock,
25
+ ...) use chat completions / converse and keep their own caching
26
+ semantics.
27
+ """
28
+ if provider == "anthropic":
29
+ return True
30
+
31
+ if provider == "github_copilot":
32
+ return "claude" in (route or "").lower()
33
+
34
+ if provider is None:
35
+ return (record or {}).get("litellm_provider") == "anthropic"
36
+
37
+ return False
38
+
39
+
40
+ def derive_agent_config(provider: Optional[str], route: str, record: Optional[Dict]) -> Dict:
41
+ """Return the ``agent`` config block for a model.
42
+
43
+ Args:
44
+ provider: Provider portion of the model name (may be ``None``).
45
+ route: Model route (name after the provider prefix).
46
+ record: The matched model metadata record, or ``None`` for unknown models.
47
+
48
+ Returns:
49
+ A dict of ModelSettings overrides (caching, temperature handling).
50
+ """
51
+ reasoning = supports_reasoning(record)
52
+ uses_messages_api = _uses_anthropic_messages_api(provider, route, record)
53
+ agent: Dict = {
54
+ "cache_control": is_anthropic(provider, route, record),
55
+ # ``cache_read_input_token_cost`` in the metadata is the determinant for
56
+ # whether a model supports prompt caching. Unknown models default to
57
+ # assuming caching support.
58
+ #
59
+ # Anthropic messages-API models never cache "by default": prompt
60
+ # caching only happens when the request carries explicit
61
+ # ``cache_control`` breakpoints (injected by the llms messages
62
+ # domain), so keep ``caches_by_default`` off for them.
63
+ "caches_by_default": (
64
+ not uses_messages_api
65
+ and (bool(record.get("cache_read_input_token_cost")) if record else True)
66
+ ),
67
+ "uses_messages_api": uses_messages_api,
68
+ }
69
+
70
+ if reasoning or record.get("supports_adaptive_thinking"):
71
+ agent["use_temperature"] = False
72
+
73
+ return agent
@@ -29,7 +29,10 @@ RESOURCE_FILE = "model-metadata.json"
29
29
 
30
30
  #: Suffix segments dropped when looking for a nearby model family.
31
31
  #: ``gpt-5.6-luna`` -> ``gpt-5.6`` -> ``gpt-5`` -> ``gpt``
32
- _TRAILING_SEGMENT_RE = re.compile(r"[-.][^.]+$")
32
+ #: ``claude-sonnet-4-5`` -> ``claude-sonnet-4`` -> ``claude-sonnet`` -> ``claude``
33
+ #: ``[^.-]`` (no dots, no hyphens) ensures exactly one trailing ``-X`` / ``.X``
34
+ #: segment is dropped per pass instead of collapsing the whole remainder.
35
+ _TRAILING_SEGMENT_RE = re.compile(r"[-.][^.-]+$")
33
36
 
34
37
  #: Lazily loaded raw text of the bundled metadata file (never json.loads-ed).
35
38
  _BUNDLED_RAW_CACHE: Optional[str] = None
@@ -1741,39 +1741,42 @@ class InputOutput:
1741
1741
 
1742
1742
  # 2. Define the Notification component
1743
1743
  notif_cmd = None
1744
- if system == "Darwin":
1745
- if shutil.which("terminal-notifier"):
1746
- notif_cmd = f"terminal-notifier -title 'cecli' -message '{NOTIFICATION_MESSAGE}'"
1747
- else:
1748
- notif_cmd = f'osascript -e \'display notification "{NOTIFICATION_MESSAGE}" with title "cecli"\''
1749
-
1750
- elif system == "Linux":
1751
- for cmd in ["notify-send", "zenity"]:
1752
- if shutil.which(cmd):
1753
- if cmd == "notify-send":
1754
- notif_cmd = f"notify-send 'cecli' '{NOTIFICATION_MESSAGE}'"
1755
- elif cmd == "zenity":
1756
- notif_cmd = f"zenity --notification --text='{NOTIFICATION_MESSAGE}'"
1757
- break
1744
+ if self.notifications:
1745
+ if system == "Darwin":
1746
+ if shutil.which("terminal-notifier"):
1747
+ notif_cmd = (
1748
+ f"terminal-notifier -title 'cecli' -message '{NOTIFICATION_MESSAGE}'"
1749
+ )
1750
+ else:
1751
+ notif_cmd = f'osascript -e \'display notification "{NOTIFICATION_MESSAGE}" with title "cecli"\''
1752
+
1753
+ elif system == "Linux":
1754
+ for cmd in ["notify-send", "zenity"]:
1755
+ if shutil.which(cmd):
1756
+ if cmd == "notify-send":
1757
+ notif_cmd = f"notify-send 'cecli' '{NOTIFICATION_MESSAGE}'"
1758
+ elif cmd == "zenity":
1759
+ notif_cmd = f"zenity --notification --text='{NOTIFICATION_MESSAGE}'"
1760
+ break
1758
1761
 
1759
- elif system == "Windows":
1760
- ps_body = (
1761
- ' "try {{ Add-Type -AssemblyName System.Runtime.WindowsRuntime; $null ='
1762
- " [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications,"
1763
- " ContentType = WindowsRuntime] }} catch {{}}; "
1764
- "$template ="
1765
- " [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent"
1766
- "([Windows.UI.Notifications.ToastTemplateType]::ToastText02); "
1767
- "$toastXml = $template.GetXml(); "
1768
- "$toastXml.GetElementsByTagName('text')[0].AppendChild"
1769
- "($template.CreateTextNode('cecli')) > $null; "
1770
- "$toastXml.GetElementsByTagName('text')[1].AppendChild"
1771
- f"($template.CreateTextNode('{NOTIFICATION_MESSAGE}')) > $null; "
1772
- "$toast = [Windows.UI.Notifications.ToastNotification]::new($toastXml); "
1773
- "[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('cecli')"
1774
- '.Show($toast)"'
1775
- )
1776
- notif_cmd = f"powershell -WindowStyle Hidden -Command {ps_body}"
1762
+ elif system == "Windows":
1763
+ ps_body = (
1764
+ ' "try {{ Add-Type -AssemblyName System.Runtime.WindowsRuntime; $null ='
1765
+ " [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications,"
1766
+ " ContentType = WindowsRuntime] }} catch {{}}; "
1767
+ "$template ="
1768
+ " [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent"
1769
+ "([Windows.UI.Notifications.ToastTemplateType]::ToastText02); "
1770
+ "$toastXml = $template.GetXml(); "
1771
+ "$toastXml.GetElementsByTagName('text')[0].AppendChild"
1772
+ "($template.CreateTextNode('cecli')) > $null; "
1773
+ "$toastXml.GetElementsByTagName('text')[1].AppendChild"
1774
+ f"($template.CreateTextNode('{NOTIFICATION_MESSAGE}')) > $null; "
1775
+ "$toast = [Windows.UI.Notifications.ToastNotification]::new($toastXml); "
1776
+ "[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('cecli')"
1777
+ '.Show($toast)"'
1778
+ )
1779
+ notif_cmd = f"powershell -WindowStyle Hidden -Command {ps_body}"
1777
1780
 
1778
1781
  # 3. Concatenate them based on bell preference
1779
1782
  if notif_cmd:
@@ -1802,8 +1805,10 @@ class InputOutput:
1802
1805
 
1803
1806
  # Determine if this is a terminal bell command that should not be suppressed
1804
1807
  is_bell_cmd = (
1805
- "\\a" in self.notifications_command or "\a" in self.notifications_command
1806
- ) and re.search(r"(?:echo|print)", self.notifications_command, re.IGNORECASE)
1808
+ "\\a" in self.notifications_command
1809
+ or "\a" in self.notifications_command
1810
+ or "bel" in self.notifications_command
1811
+ ) and re.search(r"(?:echo|print|tput)", self.notifications_command, re.IGNORECASE)
1807
1812
 
1808
1813
  kwargs = {
1809
1814
  "shell": True,
@@ -116,6 +116,7 @@ class ModelSettings:
116
116
  extra_params: Optional[dict] = None
117
117
  cache_control: bool = False
118
118
  caches_by_default: bool = False
119
+ uses_messages_api: bool = False
119
120
  use_system_prompt: bool = True
120
121
  use_temperature: Union[bool, float] = True
121
122
  streaming: bool = True