cecli-dev 1.2.1rc1__tar.gz → 1.2.2rc2__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.1rc1 → cecli_dev-1.2.2rc2}/PKG-INFO +1 -1
  2. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/_version.py +3 -3
  3. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/base_coder.py +10 -8
  4. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/defaults/memorizer.md +5 -3
  5. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/background_commands.py +4 -1
  6. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/manager.py +1 -0
  7. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/config.py +45 -3
  8. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/chat.py +47 -3
  9. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/messages.py +160 -3
  10. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/litellm_compat.py +38 -4
  11. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/memory/utils.py +54 -0
  12. cecli_dev-1.2.2rc2/cecli/helpers/model_config/agent.py +73 -0
  13. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/pipeline.py +4 -1
  14. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/responses.py +47 -6
  15. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/skills.py +58 -1
  16. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/io.py +39 -34
  17. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/main.py +1 -1
  18. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/models.py +1 -0
  19. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/reasoning_tags.py +4 -3
  20. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/command.py +1 -1
  21. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/search_facts.py +0 -5
  22. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/app.py +39 -0
  23. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/output.py +91 -51
  24. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/skills.md +8 -0
  25. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/PKG-INFO +1 -1
  26. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/SOURCES.txt +1 -0
  27. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/scm_file_list.json +1 -0
  28. cecli_dev-1.2.2rc2/cecli_dev.egg-info/scm_version.json +8 -0
  29. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_main.py +0 -25
  30. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_sanity_check_repo.py +20 -2
  31. cecli_dev-1.2.2rc2/tests/helpers/test_llms_api_base.py +309 -0
  32. cecli_dev-1.2.2rc2/tests/helpers/test_llms_cache_control.py +192 -0
  33. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_github_copilot_auth.py +26 -0
  34. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_hyperscalers.py +52 -0
  35. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_model_config.py +1 -0
  36. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_tool_arguments.py +94 -0
  37. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tui/test_app.py +67 -1
  38. cecli_dev-1.2.1rc1/cecli/helpers/model_config/agent.py +0 -40
  39. cecli_dev-1.2.1rc1/cecli_dev.egg-info/scm_version.json +0 -8
  40. cecli_dev-1.2.1rc1/tests/helpers/test_llms_api_base.py +0 -117
  41. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.dockerignore +0 -0
  42. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.flake8 +0 -0
  43. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.gitattributes +0 -0
  44. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  45. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/check_pypi_version.yml +0 -0
  46. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/docker-build-test.yml +0 -0
  47. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/docker-release.yml +0 -0
  48. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/issues.yml +0 -0
  49. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/pages.yml +0 -0
  50. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/pre-commit.yml +0 -0
  51. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/release.yml +0 -0
  52. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/ubuntu-tests.yml +0 -0
  53. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/windows-tests.yml +0 -0
  54. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
  55. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.gitignore +0 -0
  56. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/.pre-commit-config.yaml +0 -0
  57. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/CHANGELOG.md +0 -0
  58. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/CNAME +0 -0
  59. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/CONTRIBUTING.md +0 -0
  60. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/HISTORY.md +0 -0
  61. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/LICENSE.txt +0 -0
  62. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/MANIFEST.in +0 -0
  63. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/README.md +0 -0
  64. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/Dockerfile +0 -0
  65. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/README.md +0 -0
  66. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/__init__.py +0 -0
  67. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/benchmark.py +0 -0
  68. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/benchmark_classic.py +0 -0
  69. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/clone-exercism.sh +0 -0
  70. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/cpp-test.sh +0 -0
  71. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/docker.sh +0 -0
  72. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/docker_build.sh +0 -0
  73. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/install-docker-ubuntu.sh +0 -0
  74. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/npm-test.sh +0 -0
  75. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/over_time.py +0 -0
  76. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/plot.sh +0 -0
  77. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/plots.py +0 -0
  78. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/problem_stats.py +0 -0
  79. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/prompts.py +0 -0
  80. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/refactor_tools.py +0 -0
  81. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/rsync.sh +0 -0
  82. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/rungrid.py +0 -0
  83. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/swe-bench-lite.txt +0 -0
  84. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/swe-bench.txt +0 -0
  85. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/swe_bench.py +0 -0
  86. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/test_benchmark.py +0 -0
  87. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/variations.1.sh +0 -0
  88. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/variations.2.sh +0 -0
  89. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/variations.3.sh +0 -0
  90. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/benchmark/variations.4.sh +0 -0
  91. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/__init__.py +0 -0
  92. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/__main__.py +0 -0
  93. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/args.py +0 -0
  94. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/args_formatter.py +0 -0
  95. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/change_tracker.py +0 -0
  96. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/__init__.py +0 -0
  97. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/agent_coder.py +0 -0
  98. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/architect_coder.py +0 -0
  99. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/ask_coder.py +0 -0
  100. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/chat_chunks.py +0 -0
  101. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/context_coder.py +0 -0
  102. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/copypaste_coder.py +0 -0
  103. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editblock_coder.py +0 -0
  104. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
  105. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editblock_func_coder.py +0 -0
  106. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  107. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editor_editblock_coder.py +0 -0
  108. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/editor_whole_coder.py +0 -0
  109. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/hashline_coder.py +0 -0
  110. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/help_coder.py +0 -0
  111. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/patch_coder.py +0 -0
  112. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/search_replace.py +0 -0
  113. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/shell.py +0 -0
  114. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
  115. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/sub_agent_coder.py +0 -0
  116. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/udiff_coder.py +0 -0
  117. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/udiff_simple.py +0 -0
  118. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/wholefile_coder.py +0 -0
  119. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/coders/wholefile_func_coder.py +0 -0
  120. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/__init__.py +0 -0
  121. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/add.py +0 -0
  122. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/agent.py +0 -0
  123. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/agent_model.py +0 -0
  124. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/agent_tree.py +0 -0
  125. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/architect.py +0 -0
  126. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/ask.py +0 -0
  127. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/auto_memory.py +0 -0
  128. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/chat_mode.py +0 -0
  129. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/clear.py +0 -0
  130. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/code.py +0 -0
  131. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/command_prefix.py +0 -0
  132. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/commit.py +0 -0
  133. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/compact.py +0 -0
  134. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/context.py +0 -0
  135. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/context_blocks.py +0 -0
  136. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/context_management.py +0 -0
  137. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/copy.py +0 -0
  138. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/copy_context.py +0 -0
  139. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/core.py +0 -0
  140. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/diff.py +0 -0
  141. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/drop.py +0 -0
  142. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/editor.py +0 -0
  143. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/editor_model.py +0 -0
  144. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/exclude_skill.py +0 -0
  145. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/exit.py +0 -0
  146. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/git.py +0 -0
  147. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/hashline.py +0 -0
  148. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/help.py +0 -0
  149. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/history_search.py +0 -0
  150. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/hooks.py +0 -0
  151. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/hot_reload.py +0 -0
  152. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/include_skill.py +0 -0
  153. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/lint.py +0 -0
  154. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/list_mcp.py +0 -0
  155. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/list_queue.py +0 -0
  156. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/list_sessions.py +0 -0
  157. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/list_skills.py +0 -0
  158. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/load.py +0 -0
  159. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/load_hook.py +0 -0
  160. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/load_mcp.py +0 -0
  161. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/load_session.py +0 -0
  162. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/load_skill.py +0 -0
  163. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/ls.py +0 -0
  164. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/map.py +0 -0
  165. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/map_refresh.py +0 -0
  166. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/merge.py +0 -0
  167. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/model.py +0 -0
  168. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/models.py +0 -0
  169. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/multiline_mode.py +0 -0
  170. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/paste.py +0 -0
  171. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/queue.py +0 -0
  172. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/quit.py +0 -0
  173. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/read_only.py +0 -0
  174. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/read_only_stub.py +0 -0
  175. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/reap_agent.py +0 -0
  176. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/reasoning_effort.py +0 -0
  177. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/remove_hook.py +0 -0
  178. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/remove_mcp.py +0 -0
  179. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/remove_memory.py +0 -0
  180. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/remove_queue.py +0 -0
  181. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/remove_skill.py +0 -0
  182. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/report.py +0 -0
  183. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/reset.py +0 -0
  184. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/rules.py +0 -0
  185. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/run.py +0 -0
  186. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/save.py +0 -0
  187. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/save_session.py +0 -0
  188. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/search_memory.py +0 -0
  189. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/settings.py +0 -0
  190. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/spawn_agent.py +0 -0
  191. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/switch_agent.py +0 -0
  192. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
  193. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/terminal_setup.py +0 -0
  194. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/test.py +0 -0
  195. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/think_tokens.py +0 -0
  196. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/tokens.py +0 -0
  197. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/undo.py +0 -0
  198. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/utils/__init__.py +0 -0
  199. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/utils/base_command.py +0 -0
  200. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/utils/helpers.py +0 -0
  201. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/utils/registry.py +0 -0
  202. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/utils/save_load_manager.py +0 -0
  203. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/voice.py +0 -0
  204. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/weak_model.py +0 -0
  205. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/web.py +0 -0
  206. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/commands/workspace.py +0 -0
  207. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/decoding.py +0 -0
  208. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/deprecated_args.py +0 -0
  209. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/diffs.py +0 -0
  210. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/dump.py +0 -0
  211. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/editor.py +0 -0
  212. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/exceptions.py +0 -0
  213. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/format_settings.py +0 -0
  214. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/help.py +0 -0
  215. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/help_pats.py +0 -0
  216. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/__init__.py +0 -0
  217. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/__init__.py +0 -0
  218. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/config.py +0 -0
  219. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/defaults/__init__.py +0 -0
  220. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/defaults/worker.md +0 -0
  221. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/agents/service.py +0 -0
  222. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/command_parser.py +0 -0
  223. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/command_queue.py +0 -0
  224. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/config_utils.py +0 -0
  225. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/__init__.py +0 -0
  226. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/base_message.py +0 -0
  227. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/files.py +0 -0
  228. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/integration.py +0 -0
  229. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/service.py +0 -0
  230. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/tags.py +0 -0
  231. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/conversation/utils.py +0 -0
  232. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/copypaste.py +0 -0
  233. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/coroutines.py +0 -0
  234. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/crypto.py +0 -0
  235. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_searcher.py +0 -0
  236. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/__init__.py +0 -0
  237. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/builders.py +0 -0
  238. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/ignore.py +0 -0
  239. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
  240. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/service.py +0 -0
  241. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/file_system/trie_index.py +0 -0
  242. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
  243. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/dump.py +0 -0
  244. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  245. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/main.py +0 -0
  246. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
  247. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
  248. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/hashline.py +0 -0
  249. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/hashpos/__init__.py +0 -0
  250. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
  251. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  252. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/hashpos/transformations.py +0 -0
  253. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/io_proxy.py +0 -0
  254. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/leak_detect.py +0 -0
  255. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/__init__.py +0 -0
  256. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/aws_sigv4.py +0 -0
  257. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/__init__.py +0 -0
  258. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/bedrock.py +0 -0
  259. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/gemini.py +0 -0
  260. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/domains/responses.py +0 -0
  261. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/formatters/__init__.py +0 -0
  262. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  263. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/formatters/thinking.py +0 -0
  264. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/identifiers.py +0 -0
  265. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/pipeline.py +0 -0
  266. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/__init__.py +0 -0
  267. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/anthropic.py +0 -0
  268. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/azure.py +0 -0
  269. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/base.py +0 -0
  270. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/bedrock.py +0 -0
  271. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  272. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/deepseek.py +0 -0
  273. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/gemini.py +0 -0
  274. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  275. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/meta.py +0 -0
  276. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/openai.py +0 -0
  277. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/providers/openrouter.py +0 -0
  278. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/runtime.py +0 -0
  279. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/types.py +0 -0
  280. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/llms/utils.py +0 -0
  281. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/lock_detect.py +0 -0
  282. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/memory/__init__.py +0 -0
  283. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/memory/db.py +0 -0
  284. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/memory_control.py +0 -0
  285. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/__init__.py +0 -0
  286. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/api.py +0 -0
  287. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  288. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  289. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  290. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/identifiers.py +0 -0
  291. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/llm.py +0 -0
  292. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_config/utils.py +0 -0
  293. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/model_providers.py +0 -0
  294. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/__init__.py +0 -0
  295. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/config.py +0 -0
  296. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/local_workspace.py +0 -0
  297. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/project.py +0 -0
  298. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/workspace.py +0 -0
  299. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/monorepo/worktree.py +0 -0
  300. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/nested.py +0 -0
  301. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/observations/__init__.py +0 -0
  302. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/observations/service.py +0 -0
  303. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/__init__.py +0 -0
  304. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  305. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/environment.py +0 -0
  306. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/region_resolver.py +0 -0
  307. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/safe_methods.py +0 -0
  308. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/security.py +0 -0
  309. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/service.py +0 -0
  310. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  311. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/plugin_manager.py +0 -0
  312. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/profiler.py +0 -0
  313. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/queues.py +0 -0
  314. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/requests.py +0 -0
  315. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/__init__.py +0 -0
  316. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/acp/__init__.py +0 -0
  317. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/acp/bridge.py +0 -0
  318. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/acp/models.py +0 -0
  319. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/acp/protocol.py +0 -0
  320. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/signals.py +0 -0
  321. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/server/ws_server.py +0 -0
  322. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/similarity.py +0 -0
  323. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/helpers/threading.py +0 -0
  324. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/history.py +0 -0
  325. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/__init__.py +0 -0
  326. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/base.py +0 -0
  327. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/helpers.py +0 -0
  328. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/integration.py +0 -0
  329. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/manager.py +0 -0
  330. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/registry.py +0 -0
  331. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/service.py +0 -0
  332. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/hooks/types.py +0 -0
  333. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/http.py +0 -0
  334. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/interruptible_input.py +0 -0
  335. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/linter.py +0 -0
  336. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/llm.py +0 -0
  337. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mcp/__init__.py +0 -0
  338. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mcp/manager.py +0 -0
  339. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mcp/oauth.py +0 -0
  340. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mcp/server.py +0 -0
  341. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mcp/utils.py +0 -0
  342. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/mdstream.py +0 -0
  343. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/onboarding.py +0 -0
  344. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/__init__.py +0 -0
  345. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/agent.yml +0 -0
  346. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/architect.yml +0 -0
  347. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/ask.yml +0 -0
  348. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/base.yml +0 -0
  349. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/context.yml +0 -0
  350. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/copypaste.yml +0 -0
  351. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editblock.yml +0 -0
  352. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editblock_fenced.yml +0 -0
  353. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editblock_func.yml +0 -0
  354. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
  355. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editor_editblock.yml +0 -0
  356. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/editor_whole.yml +0 -0
  357. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/hashline.yml +0 -0
  358. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/help.yml +0 -0
  359. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/patch.yml +0 -0
  360. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
  361. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/subagent.yml +0 -0
  362. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/udiff.yml +0 -0
  363. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/udiff_simple.yml +0 -0
  364. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/utils/__init__.py +0 -0
  365. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/utils/registry.py +0 -0
  366. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/utils/system.py +0 -0
  367. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/wholefile.yml +0 -0
  368. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/prompts/wholefile_func.yml +0 -0
  369. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  370. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  371. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  372. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  373. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  374. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  375. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  376. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  377. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  378. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  379. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  380. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  381. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  382. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  383. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  384. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  385. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  386. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  387. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  388. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  389. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  390. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  391. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  392. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  393. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  394. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  395. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  396. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  397. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  398. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  399. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  400. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  401. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
  402. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  403. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  404. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  405. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  406. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  407. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  408. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  409. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  410. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  411. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  412. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  413. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  414. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  415. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  416. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  417. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  418. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  419. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  420. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  421. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  422. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  423. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  424. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  425. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  426. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  427. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  428. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  429. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/repo.py +0 -0
  430. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/repomap.py +0 -0
  431. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/report.py +0 -0
  432. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/resources/__init__.py +0 -0
  433. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/resources/model-metadata.json +0 -0
  434. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/resources/model-settings-condensed.yml +0 -0
  435. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/resources/model-settings.yml +0 -0
  436. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/resources/providers.json +0 -0
  437. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/run_cmd.py +0 -0
  438. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/scrape.py +0 -0
  439. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/sendchat.py +0 -0
  440. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/sessions.py +0 -0
  441. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/signals.py +0 -0
  442. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/special.py +0 -0
  443. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tests/test_queue_commands.py +0 -0
  444. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/__init__.py +0 -0
  445. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/_yield.py +0 -0
  446. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/delegate.py +0 -0
  447. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/edit_file.py +0 -0
  448. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/explore_code.py +0 -0
  449. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_branch.py +0 -0
  450. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_diff.py +0 -0
  451. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_log.py +0 -0
  452. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_remote.py +0 -0
  453. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_show.py +0 -0
  454. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/git_status.py +0 -0
  455. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/grep.py +0 -0
  456. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/ls.py +0 -0
  457. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/orchestrate.py +0 -0
  458. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/read_file.py +0 -0
  459. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/replace_facts.py +0 -0
  460. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/resource_manager.py +0 -0
  461. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/thinking.py +0 -0
  462. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/undo_change.py +0 -0
  463. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/update_todo_list.py +0 -0
  464. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/__init__.py +0 -0
  465. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/base_tool.py +0 -0
  466. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/helpers.py +0 -0
  467. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/output.py +0 -0
  468. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/registry.py +0 -0
  469. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/utils/responses.py +0 -0
  470. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/validations/__init__.py +0 -0
  471. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tools/validations/validations.py +0 -0
  472. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/__init__.py +0 -0
  473. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/io.py +0 -0
  474. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/styles.tcss +0 -0
  475. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/__init__.py +0 -0
  476. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/completion_bar.py +0 -0
  477. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/file_list.py +0 -0
  478. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/footer.py +0 -0
  479. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/input_area.py +0 -0
  480. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/input_container.py +0 -0
  481. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/key_hints.py +0 -0
  482. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/output_alt.bak +0 -0
  483. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/selectable_log.py +0 -0
  484. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/status_bar.py +0 -0
  485. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
  486. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/tui/worker.py +0 -0
  487. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/urls.py +0 -0
  488. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/utils.py +0 -0
  489. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/versioncheck.py +0 -0
  490. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/voice.py +0 -0
  491. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/waiting.py +0 -0
  492. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/watch.py +0 -0
  493. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/watch_prompts.py +0 -0
  494. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/blame.md +0 -0
  495. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/get-started.md +0 -0
  496. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/help-tip.md +0 -0
  497. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/help.md +0 -0
  498. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/install.md +0 -0
  499. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/keys.md +0 -0
  500. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/model-warnings.md +0 -0
  501. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/multi-line.md +0 -0
  502. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/python-m-aider.md +0 -0
  503. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/recording.css +0 -0
  504. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/recording.md +0 -0
  505. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_includes/works-best.md +0 -0
  506. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_features.scss +0 -0
  507. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_footer.scss +0 -0
  508. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_hero.scss +0 -0
  509. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_info.scss +0 -0
  510. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_layout.scss +0 -0
  511. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_reset.scss +0 -0
  512. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_testimonials.scss +0 -0
  513. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_typography.scss +0 -0
  514. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/_variables.scss +0 -0
  515. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/custom/custom.scss +0 -0
  516. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/_sass/global-overrides.scss +0 -0
  517. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docmd.config.json +0 -0
  518. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  519. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
  520. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/agent-mode.md +0 -0
  521. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/api-keys.md +0 -0
  522. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/api.md +0 -0
  523. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/conf.md +0 -0
  524. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/custom-commands.md +0 -0
  525. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  526. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/dotenv.md +0 -0
  527. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/editor.md +0 -0
  528. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/hooks.md +0 -0
  529. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/mcp.md +0 -0
  530. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/model-aliases.md +0 -0
  531. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/model-configuration.md +0 -0
  532. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/model-providers.md +0 -0
  533. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/options.md +0 -0
  534. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/persistent-memory.md +0 -0
  535. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/reasoning.md +0 -0
  536. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/retries.md +0 -0
  537. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/security.md +0 -0
  538. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/subagents.md +0 -0
  539. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/tui.md +0 -0
  540. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config/workspaces.md +0 -0
  541. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/config.md +0 -0
  542. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/git.md +0 -0
  543. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/index.md +0 -0
  544. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/install/docker.md +0 -0
  545. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/install.md +0 -0
  546. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/languages.md +0 -0
  547. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  548. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/legal/privacy.md +0 -0
  549. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/anthropic.md +0 -0
  550. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/azure.md +0 -0
  551. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/bedrock.md +0 -0
  552. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/cohere.md +0 -0
  553. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/deepseek.md +0 -0
  554. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/gemini.md +0 -0
  555. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/github.md +0 -0
  556. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/groq.md +0 -0
  557. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
  558. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/ollama.md +0 -0
  559. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
  560. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/openai.md +0 -0
  561. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/openrouter.md +0 -0
  562. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/other.md +0 -0
  563. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/vertex.md +0 -0
  564. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/warnings.md +0 -0
  565. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms/xai.md +0 -0
  566. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/llms.md +0 -0
  567. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/more/analytics.md +0 -0
  568. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/more/edit-formats.md +0 -0
  569. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/more/infinite-output.md +0 -0
  570. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/more-info.md +0 -0
  571. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/repomap.md +0 -0
  572. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/scripting.md +0 -0
  573. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  574. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  575. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
  576. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  577. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
  578. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  579. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  580. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/troubleshooting.md +0 -0
  581. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/commands.md +0 -0
  582. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/conventions.md +0 -0
  583. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/copypaste.md +0 -0
  584. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/images-urls.md +0 -0
  585. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/lint-test.md +0 -0
  586. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/modes.md +0 -0
  587. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/not-code.md +0 -0
  588. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/notifications.md +0 -0
  589. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/optional.md +0 -0
  590. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/sessions.md +0 -0
  591. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/tips.md +0 -0
  592. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/voice.md +0 -0
  593. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage/watch.md +0 -0
  594. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/docs/usage.md +0 -0
  595. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/package-lock.json +0 -0
  596. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/package.json +0 -0
  597. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli/website/share/index.md +0 -0
  598. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
  599. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
  600. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/requires.txt +0 -0
  601. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/cecli_dev.egg-info/top_level.txt +0 -0
  602. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/docker/Dockerfile +0 -0
  603. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  604. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/pyproject.toml +0 -0
  605. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/pytest.ini +0 -0
  606. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/common-constraints.txt +0 -0
  607. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-dev.in +0 -0
  608. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-dev.txt +0 -0
  609. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-help.in +0 -0
  610. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-help.txt +0 -0
  611. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-playwright.in +0 -0
  612. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements-playwright.txt +0 -0
  613. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/requirements.in +0 -0
  614. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements/tree-sitter.in +0 -0
  615. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/requirements.txt +0 -0
  616. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/30k-image.py +0 -0
  617. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/__init__.py +0 -0
  618. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/blame.py +0 -0
  619. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/clean_metadata.py +0 -0
  620. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/compare-message-history.py +0 -0
  621. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/condense_model_settings.py +0 -0
  622. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/cost_analyzer.py +0 -0
  623. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/cost_calculator.py +0 -0
  624. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/dl_icons.py +0 -0
  625. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/docmd_build.sh +0 -0
  626. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/filter-chat-mode.js +0 -0
  627. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/generate_providers.py +0 -0
  628. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/get_contributor_list.js +0 -0
  629. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/get_hashline.py +0 -0
  630. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/history_prompts.py +0 -0
  631. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/homepage.py +0 -0
  632. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/issues.py +0 -0
  633. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/logo_svg.py +0 -0
  634. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/optimize_tokens.sh +0 -0
  635. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/pip-compile.sh +0 -0
  636. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/recording_audio.py +0 -0
  637. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/redact-cast.py +0 -0
  638. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/rename_to_cecli.py +0 -0
  639. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/tmux_record.sh +0 -0
  640. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/tsl_pack_langs.py +0 -0
  641. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/update-blame.sh +0 -0
  642. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/update-docs.sh +0 -0
  643. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/update-history.py +0 -0
  644. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/versionbump.py +0 -0
  645. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/scripts/yank-old-versions.py +0 -0
  646. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/setup.cfg +0 -0
  647. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/shim.pyproject.toml +0 -0
  648. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/__init__.py +0 -0
  649. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/__init__.py +0 -0
  650. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/conftest.py +0 -0
  651. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_agent_config_merge.py +0 -0
  652. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_aws_credentials.py +0 -0
  653. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_background_commands.py +0 -0
  654. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_coder.py +0 -0
  655. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_commands.py +0 -0
  656. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_custom_commands.py +0 -0
  657. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_deprecated.py +0 -0
  658. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_editblock.py +0 -0
  659. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_editor.py +0 -0
  660. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_exceptions.py +0 -0
  661. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_find_or_blocks.py +0 -0
  662. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_hashline.py +0 -0
  663. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_hashline_closure.py +0 -0
  664. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_history.py +0 -0
  665. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_io.py +0 -0
  666. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_linter.py +0 -0
  667. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_model_info_manager.py +0 -0
  668. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_model_provider_manager.py +0 -0
  669. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_models.py +0 -0
  670. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_onboarding.py +0 -0
  671. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_plugin_manager.py +0 -0
  672. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_prompts.py +0 -0
  673. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_reasoning.py +0 -0
  674. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_repo.py +0 -0
  675. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_repomap.py +0 -0
  676. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_run_cmd.py +0 -0
  677. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_scripting.py +0 -0
  678. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_select_selector.py +0 -0
  679. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_sendchat.py +0 -0
  680. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_session_args.py +0 -0
  681. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_session_crypto.py +0 -0
  682. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_sessions.py +0 -0
  683. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_sessions_manager.py +0 -0
  684. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_skills.py +0 -0
  685. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_special.py +0 -0
  686. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_spinner.py +0 -0
  687. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_ssl_verification.py +0 -0
  688. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_udiff.py +0 -0
  689. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_urls.py +0 -0
  690. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_voice.py +0 -0
  691. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_watch.py +0 -0
  692. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/basic/test_wholefile.py +0 -0
  693. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/coders/test_coder_switching.py +0 -0
  694. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/coders/test_copypaste_coder.py +0 -0
  695. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/coders/test_tool_call_consolidation.py +0 -0
  696. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/commands/test_auto_memory.py +0 -0
  697. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/commands/test_compaction.py +0 -0
  698. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/commands/test_remove_memory.py +0 -0
  699. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/commands/test_search_memory.py +0 -0
  700. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/commands/test_switch_agent.py +0 -0
  701. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/conftest.py +0 -0
  702. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/conversations/test_conversation_integration.py +0 -0
  703. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/conversations/test_conversation_system.py +0 -0
  704. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  705. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/chat-history.md +0 -0
  706. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
  707. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/bash/test.sh +0 -0
  708. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/c/test.c +0 -0
  709. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
  710. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
  711. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  712. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
  713. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
  714. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/d/test.d +0 -0
  715. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/dart/test.dart +0 -0
  716. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/elisp/test.el +0 -0
  717. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
  718. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/elm/test.elm +0 -0
  719. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
  720. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/go/test.go +0 -0
  721. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
  722. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
  723. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/java/test.java +0 -0
  724. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/javascript/test.js +0 -0
  725. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
  726. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/lua/test.lua +0 -0
  727. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/matlab/test.m +0 -0
  728. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
  729. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  730. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/php/test.php +0 -0
  731. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/pony/test.pony +0 -0
  732. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/properties/test.properties +0 -0
  733. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/python/test.py +0 -0
  734. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/ql/test.ql +0 -0
  735. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/r/test.r +0 -0
  736. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
  737. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
  738. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/rust/test.rs +0 -0
  739. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/scala/test.scala +0 -0
  740. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
  741. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/swift/test.swift +0 -0
  742. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
  743. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
  744. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/udev/test.rules +0 -0
  745. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/languages/zig/test.zig +0 -0
  746. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
  747. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
  748. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  749. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/watch.js +0 -0
  750. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/watch.lisp +0 -0
  751. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/watch.py +0 -0
  752. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/fixtures/watch_question.js +0 -0
  753. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/help/test_help.py +0 -0
  754. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  755. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_config.py +0 -0
  756. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_config_active.py +0 -0
  757. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  758. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  759. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  760. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/monorepo/test_workspace.py +0 -0
  761. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/observations/test_observation_service.py +0 -0
  762. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/server/acp/__init__.py +0 -0
  763. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/server/acp/test_bridge.py +0 -0
  764. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/server/acp/test_dispatch.py +0 -0
  765. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/server/acp/test_models.py +0 -0
  766. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/server/acp/test_protocol.py +0 -0
  767. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  768. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_providers_json.py +0 -0
  769. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_reasoning_config.py +0 -0
  770. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  771. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_llms_vision.py +0 -0
  772. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_memory_control.py +0 -0
  773. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/helpers/test_orchestration.py +0 -0
  774. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/hooks/__init__.py +0 -0
  775. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/hooks/test_base.py +0 -0
  776. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/hooks/test_manager.py +0 -0
  777. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/hooks/test_registry.py +0 -0
  778. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/integration/test_agent_mcp_management.py +0 -0
  779. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/integration/test_config_loading.py +0 -0
  780. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/integration/test_mcp_management.py +0 -0
  781. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/__init__.py +0 -0
  782. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/conftest.py +0 -0
  783. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/mock_server.py +0 -0
  784. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_concurrency.py +0 -0
  785. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_config.py +0 -0
  786. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_integration.py +0 -0
  787. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_logging.py +0 -0
  788. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_resilience.py +0 -0
  789. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_keepalive_unit.py +0 -0
  790. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_manager.py +0 -0
  791. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_manager_retry.py +0 -0
  792. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/mcp/test_server_sdk_compat.py +0 -0
  793. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/scrape/test_playwright_disable.py +0 -0
  794. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/scrape/test_scrape.py +0 -0
  795. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/__init__.py +0 -0
  796. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/conftest.py +0 -0
  797. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_commands.py +0 -0
  798. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_config.py +0 -0
  799. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_delegate.py +0 -0
  800. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_finished.py +0 -0
  801. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_io_proxy.py +0 -0
  802. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_service.py +0 -0
  803. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
  804. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/test_requests.py +0 -0
  805. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_edit_file_format_output.py +0 -0
  806. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_extractions.py +0 -0
  807. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_get_lines.py +0 -0
  808. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_git_branch.py +0 -0
  809. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_git_diff.py +0 -0
  810. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_grep.py +0 -0
  811. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_insert_block.py +0 -0
  812. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_read_range_execute.py +0 -0
  813. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_registry.py +0 -0
  814. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_remove_mcp_tool.py +0 -0
  815. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  816. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/tools/validations.py +0 -0
  817. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/conftest.py +0 -0
  818. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_deep_merge.py +0 -0
  819. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_edge_cases.py +0 -0
  820. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_load_mcp.py +0 -0
  821. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_performance.py +0 -0
  822. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_queues.py +0 -0
  823. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_remove_mcp.py +0 -0
  824. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_shallow_merge.py +0 -0
  825. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_signals.py +0 -0
  826. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  827. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  828. {cecli_dev-1.2.1rc1 → cecli_dev-1.2.2rc2}/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.1rc1
3
+ Version: 1.2.2rc2
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.1rc1'
22
- __version_tuple__ = version_tuple = (1, 2, 1, 'rc1')
21
+ __version__ = version = '1.2.2rc2'
22
+ __version_tuple__ = version_tuple = (1, 2, 2, 'rc2')
23
23
 
24
- __commit_id__ = commit_id = 'g70a5b7b70'
24
+ __commit_id__ = commit_id = 'gfedaa5649'
@@ -892,7 +892,7 @@ class Coder(metaclass=UsageMeta):
892
892
  rel_repo_dir = self.repo.get_rel_repo_dir()
893
893
  num_files = len(self.repo.get_tracked_files())
894
894
  env_items.append(f"{rel_repo_dir} ({num_files:,} files)")
895
- if num_files > 1000:
895
+ if num_files > 1000 and self.verbose:
896
896
  env_items.append(
897
897
  "Warning: For large repos, consider using --subtree-only and .cecli.ignore"
898
898
  )
@@ -3255,6 +3255,12 @@ class Coder(metaclass=UsageMeta):
3255
3255
  if not isinstance(arguments, dict):
3256
3256
  arguments = {}
3257
3257
 
3258
+ # Some models mirror the OpenAI wire format and wrap the real params
3259
+ # under a single "arguments"/"parameters"/"params" key. Unwrap so the
3260
+ # server receives the actual parameters instead of rejecting the call
3261
+ # with a "missing required parameter" error.
3262
+ arguments = responses.coerce_tool_structure(arguments)
3263
+
3258
3264
  return await session.call_tool(name=name, arguments=arguments)
3259
3265
 
3260
3266
  async def process_tool_calls(self, tool_call_response):
@@ -4304,13 +4310,9 @@ class Coder(metaclass=UsageMeta):
4304
4310
  cache_write_tokens = getattr(completion.usage, "cache_creation_input_tokens", 0) or 0
4305
4311
  self.message_cached_tokens += cache_hit_tokens
4306
4312
 
4307
- if hasattr(completion.usage, "cache_read_input_tokens") or hasattr(
4308
- completion.usage, "cache_creation_input_tokens"
4309
- ):
4310
- self.message_tokens_sent += prompt_tokens
4311
- self.message_tokens_sent += cache_write_tokens
4312
- else:
4313
- 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
4314
4316
 
4315
4317
  else:
4316
4318
  prompt_tokens = self.get_active_model().token_count(messages)
@@ -46,7 +46,6 @@ Use these tags (and invent new ones as needed) to categorise facts:
46
46
  - **relationships** – how modules / systems interact with each other
47
47
  - **decisions** – architectural or design choices that were made and why
48
48
  - **entities** – important classes, functions, or data structures
49
- - **changes** – summaries of changes made and their intent
50
49
 
51
50
  ## Tools
52
51
 
@@ -67,10 +66,13 @@ context (e.g. compaction / yield summaries). Your job:
67
66
  2. Use ReplaceFacts to insert new facts and delete the obsolete ones so
68
67
  the database stays clean and up-to-date.
69
68
  3. Task specific details are not worth recording, focus on user intention and add facts
70
- that would help them explain the project to another person succinctly
69
+ that would help them explain the project to another person succinctly.
70
+ 4. Record notes on strategy, purpose, structure, expectations, and unintuitive/novel discoveries over project
71
+ and activity specific details.
72
+ We are trying to preserve why we took the actions we have done, not a log of the actions themselves.
71
73
 
72
74
  Start each response with an incrementing number at the beginning, e.g. "1) ...", "2) ..."
73
- When this number hits at most 10, update what you can and yield. Do not deliberate over many turns.
75
+ Before this number hits at most 10, update what you can and yield. Do not deliberate over many turns.
74
76
  Important facts will be easy to search for and extract from the given context.
75
77
 
76
78
  Always prefer **concrete, reusable** facts over vague prose.
@@ -12,6 +12,8 @@ import threading
12
12
  from collections import deque
13
13
  from typing import Dict, List, Optional, Tuple
14
14
 
15
+ import xxhash
16
+
15
17
  from cecli.decoding import safe_open
16
18
 
17
19
  try:
@@ -419,7 +421,8 @@ class BackgroundCommandManager:
419
421
  Unique command key
420
422
  """
421
423
  with cls._lock:
422
- key = f"bg_{cls._next_id}_{hash(command) % 10000:04d}"
424
+ digest = xxhash.xxh64(command.encode("utf-8")).intdigest()
425
+ key = f"bg_{cls._next_id}_{digest % 10000:04d}"
423
426
  cls._next_id += 1
424
427
  return key
425
428
 
@@ -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,12 +40,39 @@ 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()
47
48
 
48
49
  mpm = ModelProviderManager()
50
+
51
+ # Providers with dedicated routing semantics (authenticated session, AWS
52
+ # SigV4 signing, dedicated endpoint templates) win over the metadata
53
+ # record's ``litellm_provider`` for every model under their prefix, so a
54
+ # ``github_copilot/`` / ``bedrock/`` / ``bedrock_mantle/`` model never
55
+ # falls back to a bare (anthropic/openai) record (e.g.
56
+ # ``github_copilot/claude-sonnet-4-5`` resolving to the bare
57
+ # ``claude-sonnet-4-5`` anthropic entry).
58
+ if prefix in ("github_copilot", "bedrock", "bedrock_mantle"):
59
+ provider = prefix
60
+
61
+ # Anthropic models hosted by a third-party provider (openrouter, deepseek,
62
+ # ...) authenticate against THAT provider, not anthropic: ``{provider}/claude-*``
63
+ # must route through the provider prefix even when the record lookup lands
64
+ # on the bare anthropic entry (e.g. ``openrouter/claude-sonnet-5``).
65
+ elif prefix and prefix != "anthropic" and is_claude:
66
+ provider = prefix
67
+
68
+ # A configured provider (built-in providers.json entry or a user-defined
69
+ # ``model-providers`` entry such as ``bifrost``) wins over the metadata
70
+ # record's ``litellm_provider`` for every model under its prefix, so
71
+ # ``bifrost/gemini/gemini-2.5-pro`` routes through bifrost (its api_base)
72
+ # rather than falling back to the bare ``gemini/gemini-2.5-pro`` record.
73
+ elif prefix and provider != prefix and mpm.supports_provider(prefix):
74
+ provider = prefix
75
+
49
76
  pcfg = mpm.get_provider_config(provider) or {}
50
77
 
51
78
  env_base = os.environ.get(f"{provider.upper()}_API_BASE") if provider else None
@@ -88,6 +115,12 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
88
115
  # Mantle is an OpenAI-compatible chat wire (SigV4-signed via the chat
89
116
  # family's signer hook); see providers/bedrock_mantle.py.
90
117
  family = "chat"
118
+ elif is_claude and provider != "anthropic":
119
+ # A claude model on a non-anthropic provider uses that provider's
120
+ # OpenAI-compatible chat completions wire (openrouter, deepseek,
121
+ # azure_ai, ...); only native anthropic (or copilot's anthropic-native
122
+ # /v1/messages proxy, handled above) speaks the messages API.
123
+ family = "chat"
91
124
  elif mode == "responses" or "/v1/responses" in endpoints:
92
125
  family = "responses"
93
126
  elif provider == "anthropic":
@@ -100,6 +133,14 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
100
133
  extra_headers = dict(pcfg.get("default_headers") or {})
101
134
  extra_body = dict(api_block.get("extra_body") or {})
102
135
 
136
+ # Effective cache flags for the domain adapters. Anthropic messages-API
137
+ # models never cache "by default": prompt caching only happens when the
138
+ # request carries explicit ``cache_control`` breakpoints, so the messages
139
+ # domain injects them (agent.cache_control True + caches_by_default False).
140
+ if family == "messages":
141
+ agent_block["cache_control"] = True
142
+ agent_block["caches_by_default"] = False
143
+
103
144
  return {
104
145
  "model": model,
105
146
  "provider": provider,
@@ -112,6 +153,7 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
112
153
  "extra_query": dict(pcfg.get("extra_query") or {}),
113
154
  "api_block": api_block,
114
155
  "llm_block": llm_block,
156
+ "agent_block": agent_block,
115
157
  }
116
158
 
117
159
 
@@ -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
 
@@ -6,6 +6,7 @@ Public API
6
6
  - ``add_fact(fact=..., tags=[...])`` – insert a fact with optional tags
7
7
  - ``remove_facts(id_facts=[...])`` – delete facts by id
8
8
  - ``search_facts(words=[...], tags=[...])`` – full-text search the fact store
9
+ - ``recent_tags(coder, limit=100)`` – most recently used tags + total count
9
10
  - ``invoke_memorizer(coder, additional_context=...)`` – fire the memorizer
10
11
  sub-agent with current context
11
12
  """
@@ -203,6 +204,51 @@ def search_facts(
203
204
  return results
204
205
 
205
206
 
207
+ def recent_tags(coder, limit: int = 100) -> dict:
208
+ """Return the most recently used tags plus the total tag count.
209
+
210
+ Tags are deduplicated and ordered by the recency of the most recent
211
+ fact they are attached to (facts sorted by ``id_fact`` descending),
212
+ then truncated to *limit* entries.
213
+
214
+ Args:
215
+ coder: The active Coder instance (used to locate the project root).
216
+ limit: Maximum number of recent tags to return (default 100).
217
+
218
+ Returns:
219
+ A dict with keys ``tags`` (list of tag strings, most recent first)
220
+ and ``total`` (int count of all distinct tags in the store).
221
+ """
222
+
223
+ init_db(root=coder.root)
224
+
225
+ conn = _get_connection(root=coder.root)
226
+ cursor = conn.cursor()
227
+
228
+ # Tags ordered by the recency of the most recent fact they tag:
229
+ # sort facts by id descending and dedupe on the tag name.
230
+ cursor.execute(
231
+ """
232
+ SELECT t.tag
233
+ FROM Facts f
234
+ JOIN FactTags ft ON ft.id_fact = f.id_fact
235
+ JOIN Tags t ON t.id_tag = ft.id_tag
236
+ GROUP BY t.tag
237
+ ORDER BY MAX(f.id_fact) DESC
238
+ LIMIT ?
239
+ """,
240
+ (limit,),
241
+ )
242
+
243
+ tags = [row["tag"] for row in cursor.fetchall()]
244
+
245
+ cursor.execute("SELECT COUNT(*) AS total FROM Tags")
246
+
247
+ total = cursor.fetchone()["total"]
248
+
249
+ return {"tags": tags, "total": total}
250
+
251
+
206
252
  async def invoke_memorizer(
207
253
  coder,
208
254
  additional_context: str = "",
@@ -242,6 +288,14 @@ async def invoke_memorizer(
242
288
  # Gather context pieces
243
289
  parts: list[str] = []
244
290
 
291
+ # Recent tags (deduplicated, most recently used first) plus the total
292
+ # tag count — first context part so the memorizer sees active tags
293
+ recent = recent_tags(coder)
294
+
295
+ tag_list = ", ".join(recent["tags"]) if recent["tags"] else "(none)"
296
+
297
+ parts.append(f"## Recent Tags\n\n{tag_list}\n\n## Total Tags in DB\n\n{recent['total']}")
298
+
245
299
  # Latest user message
246
300
  last_user = getattr(coder, "last_user_message", "")
247
301