cecli-dev 1.0.5__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (780) hide show
  1. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/PKG-INFO +1 -1
  2. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/_version.py +3 -3
  3. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/agent_coder.py +2 -7
  4. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/base_coder.py +178 -80
  5. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/add.py +18 -1
  6. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/reasoning_effort.py +1 -1
  7. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/think_tokens.py +1 -1
  8. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/io_proxy.py +5 -1
  9. cecli_dev-1.1.0/cecli/helpers/model_config/__init__.py +10 -0
  10. cecli_dev-1.1.0/cecli/helpers/model_config/agent.py +40 -0
  11. cecli_dev-1.1.0/cecli/helpers/model_config/api.py +62 -0
  12. cecli_dev-1.1.0/cecli/helpers/model_config/formatters/__init__.py +20 -0
  13. cecli_dev-1.1.0/cecli/helpers/model_config/formatters/reasoning.py +83 -0
  14. cecli_dev-1.1.0/cecli/helpers/model_config/formatters/thinking.py +108 -0
  15. cecli_dev-1.1.0/cecli/helpers/model_config/identifiers.py +77 -0
  16. cecli_dev-1.1.0/cecli/helpers/model_config/llm.py +108 -0
  17. cecli_dev-1.1.0/cecli/helpers/model_config/pipeline.py +361 -0
  18. cecli_dev-1.1.0/cecli/helpers/model_config/utils.py +163 -0
  19. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/requests.py +54 -1
  20. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/io.py +6 -1
  21. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mcp/manager.py +55 -4
  22. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mcp/server.py +67 -5
  23. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/models.py +230 -145
  24. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/resources/model-metadata.json +308 -152
  25. cecli_dev-1.1.0/cecli/resources/model-settings-condensed.yml +502 -0
  26. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/edit_file.py +18 -0
  27. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/ls.py +2 -2
  28. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/output.py +2 -1
  29. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/io.py +18 -16
  30. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/PKG-INFO +1 -1
  31. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/SOURCES.txt +16 -0
  32. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/scm_file_list.json +932 -916
  33. cecli_dev-1.1.0/cecli_dev.egg-info/scm_version.json +8 -0
  34. cecli_dev-1.1.0/scripts/condense_model_settings.py +256 -0
  35. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_coder.py +6 -6
  36. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_commands.py +1 -1
  37. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_main.py +9 -2
  38. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_models.py +17 -10
  39. cecli_dev-1.1.0/tests/coders/test_tool_call_consolidation.py +206 -0
  40. cecli_dev-1.1.0/tests/helpers/test_model_config.py +886 -0
  41. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/conftest.py +18 -3
  42. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_concurrency.py +2 -2
  43. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_config.py +18 -11
  44. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_manager.py +62 -27
  45. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_manager_retry.py +72 -60
  46. cecli_dev-1.1.0/tests/mcp/test_server_sdk_compat.py +230 -0
  47. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/test_requests.py +84 -0
  48. cecli_dev-1.1.0/tests/tools/test_edit_file_format_output.py +238 -0
  49. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_tool_arguments.py +3 -1
  50. cecli_dev-1.0.5/cecli_dev.egg-info/scm_version.json +0 -8
  51. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.dockerignore +0 -0
  52. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.flake8 +0 -0
  53. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.gitattributes +0 -0
  54. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  55. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/check_pypi_version.yml +0 -0
  56. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/docker-build-test.yml +0 -0
  57. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/docker-release.yml +0 -0
  58. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/issues.yml +0 -0
  59. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/pages.yml +0 -0
  60. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/pre-commit.yml +0 -0
  61. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/release.yml +0 -0
  62. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/ubuntu-tests.yml +0 -0
  63. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/windows-tests.yml +0 -0
  64. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  65. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.gitignore +0 -0
  66. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/.pre-commit-config.yaml +0 -0
  67. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/CHANGELOG.md +0 -0
  68. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/CNAME +0 -0
  69. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/CONTRIBUTING.md +0 -0
  70. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/HISTORY.md +0 -0
  71. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/LICENSE.txt +0 -0
  72. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/MANIFEST.in +0 -0
  73. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/README.md +0 -0
  74. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/Dockerfile +0 -0
  75. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/README.md +0 -0
  76. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/__init__.py +0 -0
  77. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/benchmark.py +0 -0
  78. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/benchmark_classic.py +0 -0
  79. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/clone-exercism.sh +0 -0
  80. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/cpp-test.sh +0 -0
  81. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/docker.sh +0 -0
  82. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/docker_build.sh +0 -0
  83. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/install-docker-ubuntu.sh +0 -0
  84. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/npm-test.sh +0 -0
  85. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/over_time.py +0 -0
  86. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/plot.sh +0 -0
  87. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/plots.py +0 -0
  88. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/problem_stats.py +0 -0
  89. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/prompts.py +0 -0
  90. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/refactor_tools.py +0 -0
  91. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/rsync.sh +0 -0
  92. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/rungrid.py +0 -0
  93. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/swe-bench-lite.txt +0 -0
  94. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/swe-bench.txt +0 -0
  95. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/swe_bench.py +0 -0
  96. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/test_benchmark.py +0 -0
  97. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/variations.1.sh +0 -0
  98. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/variations.2.sh +0 -0
  99. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/variations.3.sh +0 -0
  100. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/benchmark/variations.4.sh +0 -0
  101. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/__init__.py +0 -0
  102. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/__main__.py +0 -0
  103. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/args.py +0 -0
  104. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/args_formatter.py +0 -0
  105. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/change_tracker.py +0 -0
  106. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/__init__.py +0 -0
  107. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/architect_coder.py +0 -0
  108. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/ask_coder.py +0 -0
  109. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/chat_chunks.py +0 -0
  110. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/context_coder.py +0 -0
  111. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/copypaste_coder.py +0 -0
  112. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editblock_coder.py +0 -0
  113. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  114. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editblock_func_coder.py +0 -0
  115. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  116. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editor_editblock_coder.py +0 -0
  117. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/editor_whole_coder.py +0 -0
  118. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/hashline_coder.py +0 -0
  119. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/help_coder.py +0 -0
  120. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/patch_coder.py +0 -0
  121. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/search_replace.py +0 -0
  122. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/shell.py +0 -0
  123. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  124. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/sub_agent_coder.py +0 -0
  125. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/udiff_coder.py +0 -0
  126. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/udiff_simple.py +0 -0
  127. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/wholefile_coder.py +0 -0
  128. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/coders/wholefile_func_coder.py +0 -0
  129. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/__init__.py +0 -0
  130. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/agent.py +0 -0
  131. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/agent_model.py +0 -0
  132. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/agent_tree.py +0 -0
  133. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/architect.py +0 -0
  134. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/ask.py +0 -0
  135. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/auto_memory.py +0 -0
  136. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/chat_mode.py +0 -0
  137. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/clear.py +0 -0
  138. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/code.py +0 -0
  139. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/command_prefix.py +0 -0
  140. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/commit.py +0 -0
  141. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/compact.py +0 -0
  142. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/context.py +0 -0
  143. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/context_blocks.py +0 -0
  144. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/context_management.py +0 -0
  145. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/copy.py +0 -0
  146. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/copy_context.py +0 -0
  147. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/core.py +0 -0
  148. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/diff.py +0 -0
  149. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/drop.py +0 -0
  150. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/editor.py +0 -0
  151. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/editor_model.py +0 -0
  152. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/exclude_skill.py +0 -0
  153. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/exit.py +0 -0
  154. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/git.py +0 -0
  155. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/hashline.py +0 -0
  156. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/help.py +0 -0
  157. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/history_search.py +0 -0
  158. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/hooks.py +0 -0
  159. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/hot_reload.py +0 -0
  160. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/include_skill.py +0 -0
  161. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/lint.py +0 -0
  162. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/list_mcp.py +0 -0
  163. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/list_sessions.py +0 -0
  164. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/list_skills.py +0 -0
  165. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/load.py +0 -0
  166. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/load_hook.py +0 -0
  167. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/load_mcp.py +0 -0
  168. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/load_session.py +0 -0
  169. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/load_skill.py +0 -0
  170. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/ls.py +0 -0
  171. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/map.py +0 -0
  172. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/map_refresh.py +0 -0
  173. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/merge.py +0 -0
  174. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/model.py +0 -0
  175. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/models.py +0 -0
  176. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/multiline_mode.py +0 -0
  177. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/paste.py +0 -0
  178. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/quit.py +0 -0
  179. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/read_only.py +0 -0
  180. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/read_only_stub.py +0 -0
  181. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/reap_agent.py +0 -0
  182. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/remove_hook.py +0 -0
  183. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/remove_mcp.py +0 -0
  184. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/remove_memory.py +0 -0
  185. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/remove_skill.py +0 -0
  186. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/report.py +0 -0
  187. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/reset.py +0 -0
  188. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/rules.py +0 -0
  189. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/run.py +0 -0
  190. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/save.py +0 -0
  191. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/save_session.py +0 -0
  192. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/search_memory.py +0 -0
  193. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/settings.py +0 -0
  194. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/spawn_agent.py +0 -0
  195. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/switch_agent.py +0 -0
  196. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  197. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/terminal_setup.py +0 -0
  198. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/test.py +0 -0
  199. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/tokens.py +0 -0
  200. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/undo.py +0 -0
  201. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/utils/__init__.py +0 -0
  202. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/utils/base_command.py +0 -0
  203. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/utils/helpers.py +0 -0
  204. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/utils/registry.py +0 -0
  205. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/utils/save_load_manager.py +0 -0
  206. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/voice.py +0 -0
  207. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/weak_model.py +0 -0
  208. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/web.py +0 -0
  209. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/commands/workspace.py +0 -0
  210. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/decoding.py +0 -0
  211. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/deprecated_args.py +0 -0
  212. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/diffs.py +0 -0
  213. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/dump.py +0 -0
  214. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/editor.py +0 -0
  215. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/exceptions.py +0 -0
  216. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/format_settings.py +0 -0
  217. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/help.py +0 -0
  218. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/help_pats.py +0 -0
  219. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/__init__.py +0 -0
  220. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/__init__.py +0 -0
  221. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/config.py +0 -0
  222. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/defaults/__init__.py +0 -0
  223. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  224. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/defaults/worker.md +0 -0
  225. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/agents/service.py +0 -0
  226. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/background_commands.py +0 -0
  227. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/command_parser.py +0 -0
  228. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/config_utils.py +0 -0
  229. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/__init__.py +0 -0
  230. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/base_message.py +0 -0
  231. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/files.py +0 -0
  232. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/integration.py +0 -0
  233. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/manager.py +0 -0
  234. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/service.py +0 -0
  235. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/tags.py +0 -0
  236. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/conversation/utils.py +0 -0
  237. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/copypaste.py +0 -0
  238. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/coroutines.py +0 -0
  239. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/crypto.py +0 -0
  240. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_searcher.py +0 -0
  241. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/__init__.py +0 -0
  242. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/builders.py +0 -0
  243. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/ignore.py +0 -0
  244. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/ngram_index.py +0 -0
  245. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/service.py +0 -0
  246. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/file_system/trie_index.py +0 -0
  247. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  248. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/dump.py +0 -0
  249. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  250. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/main.py +0 -0
  251. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  252. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  253. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/hashline.py +0 -0
  254. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/hashpos/__init__.py +0 -0
  255. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  256. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  257. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/hashpos/transformations.py +0 -0
  258. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/leak_detect.py +0 -0
  259. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/lock_detect.py +0 -0
  260. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/memory/__init__.py +0 -0
  261. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/memory/db.py +0 -0
  262. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/memory/utils.py +0 -0
  263. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/memory_control.py +0 -0
  264. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/model_providers.py +0 -0
  265. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/__init__.py +0 -0
  266. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/config.py +0 -0
  267. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/local_workspace.py +0 -0
  268. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/project.py +0 -0
  269. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/workspace.py +0 -0
  270. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/monorepo/worktree.py +0 -0
  271. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/nested.py +0 -0
  272. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/observations/__init__.py +0 -0
  273. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/observations/service.py +0 -0
  274. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/__init__.py +0 -0
  275. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  276. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/environment.py +0 -0
  277. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/region_resolver.py +0 -0
  278. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/safe_methods.py +0 -0
  279. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/security.py +0 -0
  280. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/service.py +0 -0
  281. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  282. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/plugin_manager.py +0 -0
  283. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/profiler.py +0 -0
  284. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/queues.py +0 -0
  285. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/responses.py +0 -0
  286. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/__init__.py +0 -0
  287. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/acp/__init__.py +0 -0
  288. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/acp/bridge.py +0 -0
  289. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/acp/models.py +0 -0
  290. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/acp/protocol.py +0 -0
  291. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/signals.py +0 -0
  292. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/server/ws_server.py +0 -0
  293. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/similarity.py +0 -0
  294. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/skills.py +0 -0
  295. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/helpers/threading.py +0 -0
  296. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/history.py +0 -0
  297. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/__init__.py +0 -0
  298. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/base.py +0 -0
  299. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/helpers.py +0 -0
  300. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/integration.py +0 -0
  301. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/manager.py +0 -0
  302. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/registry.py +0 -0
  303. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/service.py +0 -0
  304. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/hooks/types.py +0 -0
  305. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/interruptible_input.py +0 -0
  306. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/linter.py +0 -0
  307. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/llm.py +0 -0
  308. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/main.py +0 -0
  309. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mcp/__init__.py +0 -0
  310. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mcp/oauth.py +0 -0
  311. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mcp/utils.py +0 -0
  312. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/mdstream.py +0 -0
  313. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/onboarding.py +0 -0
  314. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/__init__.py +0 -0
  315. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/agent.yml +0 -0
  316. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/architect.yml +0 -0
  317. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/ask.yml +0 -0
  318. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/base.yml +0 -0
  319. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/context.yml +0 -0
  320. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/copypaste.yml +0 -0
  321. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editblock.yml +0 -0
  322. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editblock_fenced.yml +0 -0
  323. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editblock_func.yml +0 -0
  324. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  325. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editor_editblock.yml +0 -0
  326. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/editor_whole.yml +0 -0
  327. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/hashline.yml +0 -0
  328. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/help.yml +0 -0
  329. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/patch.yml +0 -0
  330. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  331. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/subagent.yml +0 -0
  332. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/udiff.yml +0 -0
  333. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/udiff_simple.yml +0 -0
  334. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/utils/__init__.py +0 -0
  335. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/utils/registry.py +0 -0
  336. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/utils/system.py +0 -0
  337. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/wholefile.yml +0 -0
  338. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/prompts/wholefile_func.yml +0 -0
  339. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  340. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  341. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  342. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  343. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  344. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  345. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  346. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  347. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  348. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  349. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  350. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  351. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  352. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  353. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  354. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  355. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  356. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  357. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  358. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  359. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  360. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  361. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  362. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  363. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  364. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  365. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  366. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  367. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  368. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  369. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  370. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  371. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  372. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  373. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  374. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  375. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  376. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  377. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  378. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  379. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  380. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  381. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  382. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  383. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  384. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  385. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  386. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  387. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  388. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  389. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  390. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  391. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  392. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  393. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  394. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  395. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  396. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  397. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  398. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  399. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/reasoning_tags.py +0 -0
  400. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/repo.py +0 -0
  401. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/repomap.py +0 -0
  402. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/report.py +0 -0
  403. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/resources/__init__.py +0 -0
  404. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/resources/model-settings.yml +0 -0
  405. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/resources/providers.json +0 -0
  406. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/run_cmd.py +0 -0
  407. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/scrape.py +0 -0
  408. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/sendchat.py +0 -0
  409. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/sessions.py +0 -0
  410. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/signals.py +0 -0
  411. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/special.py +0 -0
  412. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/__init__.py +0 -0
  413. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/_yield.py +0 -0
  414. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/command.py +0 -0
  415. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/delegate.py +0 -0
  416. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/explore_code.py +0 -0
  417. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_branch.py +0 -0
  418. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_diff.py +0 -0
  419. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_log.py +0 -0
  420. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_remote.py +0 -0
  421. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_show.py +0 -0
  422. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/git_status.py +0 -0
  423. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/grep.py +0 -0
  424. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/orchestrate.py +0 -0
  425. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/read_file.py +0 -0
  426. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/replace_facts.py +0 -0
  427. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/resource_manager.py +0 -0
  428. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/search_facts.py +0 -0
  429. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/thinking.py +0 -0
  430. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/undo_change.py +0 -0
  431. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/update_todo_list.py +0 -0
  432. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/__init__.py +0 -0
  433. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/base_tool.py +0 -0
  434. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/helpers.py +0 -0
  435. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/registry.py +0 -0
  436. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/utils/responses.py +0 -0
  437. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/validations/__init__.py +0 -0
  438. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tools/validations/validations.py +0 -0
  439. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/__init__.py +0 -0
  440. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/app.py +0 -0
  441. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/styles.tcss +0 -0
  442. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/__init__.py +0 -0
  443. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/completion_bar.py +0 -0
  444. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/file_list.py +0 -0
  445. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/footer.py +0 -0
  446. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/input_area.py +0 -0
  447. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/input_container.py +0 -0
  448. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/key_hints.py +0 -0
  449. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/output.py +0 -0
  450. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/output_alt.bak +0 -0
  451. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/selectable_log.py +0 -0
  452. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/status_bar.py +0 -0
  453. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/widgets/subagent_pills.py +0 -0
  454. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/tui/worker.py +0 -0
  455. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/urls.py +0 -0
  456. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/utils.py +0 -0
  457. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/versioncheck.py +0 -0
  458. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/voice.py +0 -0
  459. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/waiting.py +0 -0
  460. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/watch.py +0 -0
  461. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/watch_prompts.py +0 -0
  462. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/blame.md +0 -0
  463. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/get-started.md +0 -0
  464. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/help-tip.md +0 -0
  465. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/help.md +0 -0
  466. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/install.md +0 -0
  467. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/keys.md +0 -0
  468. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/model-warnings.md +0 -0
  469. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/multi-line.md +0 -0
  470. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/python-m-aider.md +0 -0
  471. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/recording.css +0 -0
  472. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/recording.md +0 -0
  473. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_includes/works-best.md +0 -0
  474. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_features.scss +0 -0
  475. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_footer.scss +0 -0
  476. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_hero.scss +0 -0
  477. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_info.scss +0 -0
  478. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_layout.scss +0 -0
  479. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_reset.scss +0 -0
  480. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_testimonials.scss +0 -0
  481. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_typography.scss +0 -0
  482. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/_variables.scss +0 -0
  483. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/custom/custom.scss +0 -0
  484. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/_sass/global-overrides.scss +0 -0
  485. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docmd.config.json +0 -0
  486. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  487. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  488. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/agent-mode.md +0 -0
  489. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/api-keys.md +0 -0
  490. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/api.md +0 -0
  491. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/conf.md +0 -0
  492. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/custom-commands.md +0 -0
  493. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  494. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/dotenv.md +0 -0
  495. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/editor.md +0 -0
  496. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/hooks.md +0 -0
  497. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/mcp.md +0 -0
  498. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/model-aliases.md +0 -0
  499. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/model-configuration.md +0 -0
  500. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/model-providers.md +0 -0
  501. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/options.md +0 -0
  502. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/persistent-memory.md +0 -0
  503. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/reasoning.md +0 -0
  504. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/retries.md +0 -0
  505. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/security.md +0 -0
  506. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/skills.md +0 -0
  507. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/subagents.md +0 -0
  508. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/tui.md +0 -0
  509. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config/workspaces.md +0 -0
  510. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/config.md +0 -0
  511. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/git.md +0 -0
  512. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/index.md +0 -0
  513. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/install/docker.md +0 -0
  514. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/install.md +0 -0
  515. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/languages.md +0 -0
  516. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  517. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/legal/privacy.md +0 -0
  518. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/anthropic.md +0 -0
  519. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/azure.md +0 -0
  520. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/bedrock.md +0 -0
  521. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/cohere.md +0 -0
  522. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/deepseek.md +0 -0
  523. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/gemini.md +0 -0
  524. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/github.md +0 -0
  525. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/groq.md +0 -0
  526. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  527. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/ollama.md +0 -0
  528. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  529. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/openai.md +0 -0
  530. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/openrouter.md +0 -0
  531. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/other.md +0 -0
  532. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/vertex.md +0 -0
  533. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/warnings.md +0 -0
  534. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms/xai.md +0 -0
  535. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/llms.md +0 -0
  536. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/more/analytics.md +0 -0
  537. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/more/edit-formats.md +0 -0
  538. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/more/infinite-output.md +0 -0
  539. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/more-info.md +0 -0
  540. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/repomap.md +0 -0
  541. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/scripting.md +0 -0
  542. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  543. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  544. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  545. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  546. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  547. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  548. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  549. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/troubleshooting.md +0 -0
  550. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/commands.md +0 -0
  551. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/conventions.md +0 -0
  552. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/copypaste.md +0 -0
  553. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/images-urls.md +0 -0
  554. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/lint-test.md +0 -0
  555. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/modes.md +0 -0
  556. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/not-code.md +0 -0
  557. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/notifications.md +0 -0
  558. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/optional.md +0 -0
  559. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/sessions.md +0 -0
  560. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/tips.md +0 -0
  561. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/voice.md +0 -0
  562. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage/watch.md +0 -0
  563. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/docs/usage.md +0 -0
  564. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/package-lock.json +0 -0
  565. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/package.json +0 -0
  566. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli/website/share/index.md +0 -0
  567. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  568. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  569. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/requires.txt +0 -0
  570. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/cecli_dev.egg-info/top_level.txt +0 -0
  571. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/docker/Dockerfile +0 -0
  572. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  573. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/pyproject.toml +0 -0
  574. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/pytest.ini +0 -0
  575. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/common-constraints.txt +0 -0
  576. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-dev.in +0 -0
  577. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-dev.txt +0 -0
  578. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-help.in +0 -0
  579. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-help.txt +0 -0
  580. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-playwright.in +0 -0
  581. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements-playwright.txt +0 -0
  582. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/requirements.in +0 -0
  583. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements/tree-sitter.in +0 -0
  584. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/requirements.txt +0 -0
  585. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/30k-image.py +0 -0
  586. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/__init__.py +0 -0
  587. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/blame.py +0 -0
  588. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/clean_metadata.py +0 -0
  589. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/compare-message-history.py +0 -0
  590. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/cost_analyzer.py +0 -0
  591. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/cost_calculator.py +0 -0
  592. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/dl_icons.py +0 -0
  593. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/docmd_build.sh +0 -0
  594. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/filter-chat-mode.js +0 -0
  595. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/generate_providers.py +0 -0
  596. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/get_contributor_list.js +0 -0
  597. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/get_hashline.py +0 -0
  598. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/history_prompts.py +0 -0
  599. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/homepage.py +0 -0
  600. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/issues.py +0 -0
  601. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/logo_svg.py +0 -0
  602. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/optimize_tokens.sh +0 -0
  603. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/pip-compile.sh +0 -0
  604. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/recording_audio.py +0 -0
  605. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/redact-cast.py +0 -0
  606. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/rename_to_cecli.py +0 -0
  607. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/tmux_record.sh +0 -0
  608. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/tsl_pack_langs.py +0 -0
  609. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/update-blame.sh +0 -0
  610. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/update-docs.sh +0 -0
  611. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/update-history.py +0 -0
  612. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/versionbump.py +0 -0
  613. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/scripts/yank-old-versions.py +0 -0
  614. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/setup.cfg +0 -0
  615. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/shim.pyproject.toml +0 -0
  616. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/__init__.py +0 -0
  617. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/__init__.py +0 -0
  618. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/conftest.py +0 -0
  619. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_aws_credentials.py +0 -0
  620. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_background_commands.py +0 -0
  621. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_custom_commands.py +0 -0
  622. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_deprecated.py +0 -0
  623. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_editblock.py +0 -0
  624. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_editor.py +0 -0
  625. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_exceptions.py +0 -0
  626. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_find_or_blocks.py +0 -0
  627. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_hashline.py +0 -0
  628. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_hashline_closure.py +0 -0
  629. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_history.py +0 -0
  630. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_io.py +0 -0
  631. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_linter.py +0 -0
  632. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_model_info_manager.py +0 -0
  633. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_model_provider_manager.py +0 -0
  634. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_onboarding.py +0 -0
  635. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_plugin_manager.py +0 -0
  636. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_prompts.py +0 -0
  637. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_reasoning.py +0 -0
  638. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_repo.py +0 -0
  639. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_repomap.py +0 -0
  640. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_run_cmd.py +0 -0
  641. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_sanity_check_repo.py +0 -0
  642. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_scripting.py +0 -0
  643. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_select_selector.py +0 -0
  644. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_sendchat.py +0 -0
  645. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_session_args.py +0 -0
  646. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_session_crypto.py +0 -0
  647. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_sessions.py +0 -0
  648. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_sessions_manager.py +0 -0
  649. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_skills.py +0 -0
  650. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_special.py +0 -0
  651. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_spinner.py +0 -0
  652. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_ssl_verification.py +0 -0
  653. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_udiff.py +0 -0
  654. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_urls.py +0 -0
  655. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_voice.py +0 -0
  656. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_watch.py +0 -0
  657. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/basic/test_wholefile.py +0 -0
  658. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/coders/test_coder_switching.py +0 -0
  659. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/coders/test_copypaste_coder.py +0 -0
  660. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/commands/test_auto_memory.py +0 -0
  661. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/commands/test_compaction.py +0 -0
  662. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/commands/test_remove_memory.py +0 -0
  663. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/commands/test_search_memory.py +0 -0
  664. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/commands/test_switch_agent.py +0 -0
  665. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/conftest.py +0 -0
  666. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/conversations/test_conversation_integration.py +0 -0
  667. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/conversations/test_conversation_system.py +0 -0
  668. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  669. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/chat-history.md +0 -0
  670. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  671. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/bash/test.sh +0 -0
  672. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/c/test.c +0 -0
  673. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  674. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  675. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  676. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  677. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  678. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/d/test.d +0 -0
  679. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/dart/test.dart +0 -0
  680. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/elisp/test.el +0 -0
  681. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  682. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/elm/test.elm +0 -0
  683. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  684. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/go/test.go +0 -0
  685. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  686. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  687. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/java/test.java +0 -0
  688. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/javascript/test.js +0 -0
  689. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  690. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/lua/test.lua +0 -0
  691. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/matlab/test.m +0 -0
  692. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  693. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  694. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/php/test.php +0 -0
  695. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/pony/test.pony +0 -0
  696. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/properties/test.properties +0 -0
  697. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/python/test.py +0 -0
  698. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/ql/test.ql +0 -0
  699. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/r/test.r +0 -0
  700. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  701. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  702. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/rust/test.rs +0 -0
  703. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/scala/test.scala +0 -0
  704. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  705. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/swift/test.swift +0 -0
  706. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  707. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  708. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/udev/test.rules +0 -0
  709. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/languages/zig/test.zig +0 -0
  710. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  711. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  712. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  713. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/watch.js +0 -0
  714. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/watch.lisp +0 -0
  715. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/watch.py +0 -0
  716. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/fixtures/watch_question.js +0 -0
  717. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/help/test_help.py +0 -0
  718. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  719. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_config.py +0 -0
  720. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_config_active.py +0 -0
  721. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  722. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  723. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  724. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/monorepo/test_workspace.py +0 -0
  725. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/observations/test_observation_service.py +0 -0
  726. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/server/acp/__init__.py +0 -0
  727. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/server/acp/test_bridge.py +0 -0
  728. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/server/acp/test_dispatch.py +0 -0
  729. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/server/acp/test_models.py +0 -0
  730. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/server/acp/test_protocol.py +0 -0
  731. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/test_memory_control.py +0 -0
  732. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/helpers/test_orchestration.py +0 -0
  733. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/hooks/__init__.py +0 -0
  734. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/hooks/test_base.py +0 -0
  735. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/hooks/test_manager.py +0 -0
  736. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/hooks/test_registry.py +0 -0
  737. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/integration/test_agent_mcp_management.py +0 -0
  738. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/integration/test_config_loading.py +0 -0
  739. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/integration/test_mcp_management.py +0 -0
  740. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/__init__.py +0 -0
  741. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/mock_server.py +0 -0
  742. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_integration.py +0 -0
  743. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_logging.py +0 -0
  744. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_resilience.py +0 -0
  745. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/mcp/test_keepalive_unit.py +0 -0
  746. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/scrape/test_playwright_disable.py +0 -0
  747. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/scrape/test_scrape.py +0 -0
  748. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/__init__.py +0 -0
  749. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/conftest.py +0 -0
  750. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_commands.py +0 -0
  751. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_config.py +0 -0
  752. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_delegate.py +0 -0
  753. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_finished.py +0 -0
  754. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_io_proxy.py +0 -0
  755. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_service.py +0 -0
  756. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/subagents/test_sub_agent_coder.py +0 -0
  757. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_extractions.py +0 -0
  758. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_get_lines.py +0 -0
  759. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_git_branch.py +0 -0
  760. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_git_diff.py +0 -0
  761. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_grep.py +0 -0
  762. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_insert_block.py +0 -0
  763. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_read_range_execute.py +0 -0
  764. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_registry.py +0 -0
  765. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_remove_mcp_tool.py +0 -0
  766. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  767. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tools/validations.py +0 -0
  768. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/tui/test_app.py +0 -0
  769. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/conftest.py +0 -0
  770. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_deep_merge.py +0 -0
  771. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_edge_cases.py +0 -0
  772. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_load_mcp.py +0 -0
  773. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_performance.py +0 -0
  774. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_queues.py +0 -0
  775. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_remove_mcp.py +0 -0
  776. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_shallow_merge.py +0 -0
  777. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_signals.py +0 -0
  778. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  779. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  780. {cecli_dev-1.0.5 → cecli_dev-1.1.0}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.0.5
3
+ Version: 1.1.0
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.5'
22
- __version_tuple__ = version_tuple = (1, 0, 5)
21
+ __version__ = version = '1.1.0'
22
+ __version_tuple__ = version_tuple = (1, 1, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g7fb4509c5'
24
+ __commit_id__ = commit_id = 'g33493d1c4'
@@ -27,7 +27,6 @@ from cecli.helpers.similarity import (
27
27
  )
28
28
  from cecli.helpers.skills import SkillsManager
29
29
  from cecli.hooks import HookIntegration
30
- from cecli.llm import litellm
31
30
  from cecli.mcp import LocalServer, McpServerManager
32
31
  from cecli.tools.utils.base_tool import BaseTool
33
32
  from cecli.tools.utils.registry import ToolRegistry
@@ -364,16 +363,12 @@ class AgentCoder(Coder):
364
363
  }
365
364
  try:
366
365
  session = await server.connect()
367
- call_result = await litellm.experimental_mcp_client.call_openai_tool(
368
- session=session, openai_tool=tool_call_dict
369
- )
366
+ call_result = await self.call_mcp_tool_from_session(session, tool_call_dict)
370
367
  except Exception as e:
371
368
  if server.is_session_expired_error(e):
372
369
  try:
373
370
  session = await server.reconnect()
374
- call_result = await litellm.experimental_mcp_client.call_openai_tool(
375
- session=session, openai_tool=tool_call_dict
376
- )
371
+ call_result = await self.call_mcp_tool_from_session(session, tool_call_dict)
377
372
  except Exception as retry_exc:
378
373
  self.io.tool_warning(
379
374
  f"Executing {tool_name} on {server.name} failed after reconnect:\n"
@@ -851,12 +851,12 @@ class Coder(metaclass=UsageMeta):
851
851
  settings_items.append(f"{self.edit_format} (edit format)")
852
852
 
853
853
  # Thinking tokens
854
- thinking_tokens = main_model.get_thinking_tokens()
854
+ thinking_tokens = self.get_active_model().get_thinking_tokens()
855
855
  if thinking_tokens:
856
856
  settings_items.append(f"{thinking_tokens} think tokens")
857
857
 
858
858
  # Reasoning effort
859
- reasoning_effort = main_model.get_reasoning_effort()
859
+ reasoning_effort = self.get_active_model().get_reasoning_effort()
860
860
  if reasoning_effort:
861
861
  settings_items.append(f"reasoning {reasoning_effort}")
862
862
 
@@ -3110,19 +3110,14 @@ class Coder(metaclass=UsageMeta):
3110
3110
 
3111
3111
  async def do_tool_call():
3112
3112
  nonlocal session
3113
- from litellm import experimental_mcp_client
3114
3113
 
3115
3114
  try:
3116
- return await experimental_mcp_client.call_openai_tool(
3117
- session=session,
3118
- openai_tool=new_tool_call,
3119
- )
3115
+ return await self.call_mcp_tool_from_session(session, new_tool_call)
3120
3116
  except Exception as e:
3121
3117
  if server.is_session_expired_error(e):
3122
3118
  session = await server.reconnect()
3123
- return await experimental_mcp_client.call_openai_tool(
3124
- session=session,
3125
- openai_tool=new_tool_call,
3119
+ return await self.call_mcp_tool_from_session(
3120
+ session, new_tool_call
3126
3121
  )
3127
3122
  raise
3128
3123
 
@@ -3209,6 +3204,34 @@ class Coder(metaclass=UsageMeta):
3209
3204
 
3210
3205
  return tool_responses
3211
3206
 
3207
+ async def call_mcp_tool_from_session(self, session, tool_call):
3208
+ """Call an MCP tool from an OpenAI-style tool call using the native SDK.
3209
+
3210
+ Accepts either a dict (``{"function": {"name": ..., "arguments": ...}}``)
3211
+ or a tool-call object (e.g. litellm's ChatCompletionMessageToolCall) and
3212
+ invokes the MCP session directly, avoiding litellm's lazily-imported
3213
+ ``experimental_mcp_client`` submodule.
3214
+ """
3215
+ if isinstance(tool_call, dict):
3216
+ function = tool_call.get("function", {})
3217
+ name = function.get("name")
3218
+ arguments = function.get("arguments", {})
3219
+ else:
3220
+ function = getattr(tool_call, "function", None)
3221
+ name = getattr(function, "name", None)
3222
+ arguments = getattr(function, "arguments", {})
3223
+
3224
+ if isinstance(arguments, str):
3225
+ try:
3226
+ arguments = json.loads(arguments)
3227
+ except json.JSONDecodeError:
3228
+ arguments = {}
3229
+
3230
+ if not isinstance(arguments, dict):
3231
+ arguments = {}
3232
+
3233
+ return await session.call_tool(name=name, arguments=arguments)
3234
+
3212
3235
  async def process_tool_calls(self, tool_call_response):
3213
3236
  """Simplified main entry point."""
3214
3237
  # Check if max tool calls exceeded
@@ -3440,11 +3463,17 @@ class Coder(metaclass=UsageMeta):
3440
3463
  to be `None` when `tool_calls` are present.
3441
3464
  """
3442
3465
  msg = dict(role="assistant")
3443
- response = (
3444
- self.partial_response_chunks[0]
3445
- if not self.stream
3446
- else litellm.stream_chunk_builder(self.partial_response_chunks)
3447
- )
3466
+
3467
+ # Prefer the response already produced by consolidate_chunks(): it carries
3468
+ # the provider-specific fields (e.g. reasoning_items) that we preserved
3469
+ # across all chunks, which a fresh litellm.stream_chunk_builder() pass
3470
+ # alone would drop or truncate.
3471
+ if self.partial_response_consolidated:
3472
+ response = self.partial_response_consolidated[0]
3473
+ elif not self.stream:
3474
+ response = self.partial_response_chunks[0]
3475
+ else:
3476
+ response = litellm.stream_chunk_builder(self.partial_response_chunks)
3448
3477
 
3449
3478
  try:
3450
3479
  # Use response_dict as a regular dictionary
@@ -3963,63 +3992,51 @@ class Coder(metaclass=UsageMeta):
3963
3992
  if getattr(last_chunk, "usage", None):
3964
3993
  response.usage = last_chunk.usage
3965
3994
 
3966
- # Collect provider-specific fields from chunks to preserve them
3967
- # We need to track both by ID (primary) and index (fallback) since
3968
- # early chunks might not have IDs established yet
3969
- provider_specific_fields_by_id = {}
3970
- provider_specific_fields_by_index = {}
3971
-
3995
+ # Collect message-level provider-specific fields (e.g. `reasoning_items`
3996
+ # for reasoning models) from ALL chunks. litellm's stream_chunk_builder()
3997
+ # merges these with last-wins semantics for list fields, silently dropping
3998
+ # every reasoning item except the final one. Reasoning models depend on the
3999
+ # full ordered item list being present in the assistant message so that
4000
+ # exact-prefix prompt caching keeps working across turns, so we collect the
4001
+ # fields ourselves and concatenate list-valued entries.
4002
+ message_provider_specific_fields = {}
3972
4003
  for chunk in self.partial_response_chunks:
3973
4004
  try:
3974
- if chunk.choices and chunk.choices[0].delta and chunk.choices[0].delta.tool_calls:
3975
- for tool_call in chunk.choices[0].delta.tool_calls:
3976
- if (
3977
- hasattr(tool_call, "provider_specific_fields")
3978
- and tool_call.provider_specific_fields
3979
- ):
3980
- # Ensure provider_specific_fields is a dictionary
3981
- psf = tool_call.provider_specific_fields
3982
- if not isinstance(psf, dict):
3983
- continue
3984
-
3985
- # Try to use ID first
3986
- if hasattr(tool_call, "id") and tool_call.id:
3987
- tool_id = tool_call.id
3988
- if tool_id not in provider_specific_fields_by_id:
3989
- provider_specific_fields_by_id[tool_id] = {}
3990
- # Merge provider-specific fields for this tool ID
3991
- provider_specific_fields_by_id[tool_id].update(psf)
3992
- # Also track by index as fallback
3993
- elif hasattr(tool_call, "index"):
3994
- tool_index = tool_call.index
3995
- if tool_index not in provider_specific_fields_by_index:
3996
- provider_specific_fields_by_index[tool_index] = {}
3997
- provider_specific_fields_by_index[tool_index].update(psf)
4005
+ if chunk.choices and chunk.choices[0].delta:
4006
+ psf = getattr(chunk.choices[0].delta, "provider_specific_fields", None)
4007
+ if psf and isinstance(psf, dict):
4008
+ for key, value in psf.items():
4009
+ if isinstance(value, list):
4010
+ message_provider_specific_fields.setdefault(key, []).extend(value)
4011
+ elif value is not None:
4012
+ message_provider_specific_fields[key] = value
3998
4013
  except (AttributeError, IndexError):
3999
4014
  continue
4000
4015
 
4016
+ if message_provider_specific_fields:
4017
+ message_psf = getattr(response.choices[0].message, "provider_specific_fields", None)
4018
+ if not isinstance(message_psf, dict):
4019
+ message_psf = {}
4020
+ message_psf.update(message_provider_specific_fields)
4021
+ response.choices[0].message.provider_specific_fields = message_psf
4022
+
4001
4023
  try:
4002
- if response.choices[0].message.tool_calls:
4003
- for i, tool_call in enumerate(response.choices[0].message.tool_calls):
4004
- # Add provider-specific fields if we collected any for this tool
4005
- tool_id = tool_call.id
4006
-
4007
- # Try ID first
4008
- if tool_id in provider_specific_fields_by_id:
4009
- # Add provider-specific fields directly to the tool call object
4010
- tool_call.provider_specific_fields = provider_specific_fields_by_id[tool_id]
4011
- # Fall back to index
4012
- elif i in provider_specific_fields_by_index:
4013
- # Add provider-specific fields directly to the tool call object
4014
- tool_call.provider_specific_fields = provider_specific_fields_by_index[i]
4015
-
4016
- # Only append to partial_response_tool_calls if it's empty
4017
- if len(self.partial_response_tool_calls) == 0:
4018
- self.partial_response_tool_calls.append(tool_call)
4019
-
4020
- self.partial_response_function_call = (
4021
- response.choices[0].message.tool_calls[0].function
4022
- )
4024
+ message_tool_calls = response.choices[0].message.tool_calls
4025
+ if message_tool_calls and len(message_tool_calls):
4026
+ if self.stream:
4027
+ built_tool_calls = self._build_tool_calls_from_chunks()
4028
+ if built_tool_calls:
4029
+ response.choices[0].message.tool_calls = built_tool_calls
4030
+ self.partial_response_tool_calls = built_tool_calls
4031
+ else:
4032
+ # Fall back to litellm's merged list, keeping every call
4033
+ self.partial_response_tool_calls = list(message_tool_calls)
4034
+ else:
4035
+ # Non-streaming: the single response chunk already carries the
4036
+ # full tool_calls list
4037
+ self.partial_response_tool_calls = list(message_tool_calls)
4038
+
4039
+ self.partial_response_function_call = self.partial_response_tool_calls[0].function
4023
4040
  except AttributeError as e:
4024
4041
  func_err = e
4025
4042
 
@@ -4075,6 +4092,85 @@ class Coder(metaclass=UsageMeta):
4075
4092
  self.partial_response_consolidated = (response, func_err, content_err)
4076
4093
  return response, func_err, content_err
4077
4094
 
4095
+ def _build_tool_calls_from_chunks(self):
4096
+ """Rebuild tool calls from the raw streaming chunks, keyed by delta index.
4097
+
4098
+ Streaming deltas for parallel tool calls arrive interleaved and may start
4099
+ at any index (not necessarily 0). Indexing into a dict by the delta's
4100
+ tool-call ``index`` before converting it back to a list ensures every
4101
+ parallel call is preserved, correctly ordered, and keeps its
4102
+ provider-specific fields (e.g. thought signatures) attached.
4103
+ """
4104
+ from litellm.types.utils import ChatCompletionMessageToolCall, Function
4105
+
4106
+ tool_calls_dict = {}
4107
+
4108
+ for chunk in self.partial_response_chunks:
4109
+ try:
4110
+ if not (chunk.choices and chunk.choices[0].delta):
4111
+ continue
4112
+
4113
+ delta = chunk.choices[0].delta
4114
+ for tool_call in delta.tool_calls or []:
4115
+ if tool_call is None:
4116
+ continue
4117
+
4118
+ if nested.getter(tool_call, "function") is None:
4119
+ continue
4120
+
4121
+ index = nested.getter(tool_call, "index")
4122
+ if index is None:
4123
+ index = len(tool_calls_dict)
4124
+
4125
+ entry = tool_calls_dict.setdefault(
4126
+ index,
4127
+ {
4128
+ "id": None,
4129
+ "name": None,
4130
+ "type": "function",
4131
+ "arguments": [],
4132
+ "provider_specific_fields": {},
4133
+ },
4134
+ )
4135
+
4136
+ entry["id"] = nested.getter(tool_call, "id") or entry["id"]
4137
+ entry["type"] = nested.getter(tool_call, "type") or entry["type"]
4138
+ entry["name"] = nested.getter(tool_call, "function.name") or entry["name"]
4139
+
4140
+ arguments = nested.getter(tool_call, "function.arguments")
4141
+ if arguments:
4142
+ entry["arguments"].append(arguments)
4143
+
4144
+ psf = nested.getter(tool_call, "provider_specific_fields")
4145
+ if not psf:
4146
+ psf = nested.getter(tool_call, "function.provider_specific_fields")
4147
+ if psf and isinstance(psf, dict):
4148
+ entry["provider_specific_fields"].update(psf)
4149
+ except (AttributeError, IndexError):
4150
+ continue
4151
+
4152
+ tool_calls = []
4153
+ for index in sorted(tool_calls_dict.keys()):
4154
+ data = tool_calls_dict[index]
4155
+ if not (data["id"] and data["name"]):
4156
+ continue
4157
+
4158
+ function = Function(
4159
+ arguments="".join(data["arguments"]) or "{}",
4160
+ name=data["name"],
4161
+ )
4162
+ params = {
4163
+ "id": data["id"],
4164
+ "function": function,
4165
+ "type": data["type"] or "function",
4166
+ }
4167
+ if data["provider_specific_fields"]:
4168
+ params["provider_specific_fields"] = data["provider_specific_fields"]
4169
+
4170
+ tool_calls.append(ChatCompletionMessageToolCall(**params))
4171
+
4172
+ return tool_calls
4173
+
4078
4174
  def stream_wrapper(self, content, final):
4079
4175
  if not hasattr(self, "_streaming_buffer_length"):
4080
4176
  self._streaming_buffer_length = 0
@@ -4175,15 +4271,12 @@ class Coder(metaclass=UsageMeta):
4175
4271
 
4176
4272
  self.message_tokens_received += completion_tokens
4177
4273
 
4178
- # Build the new streamlined format
4179
- tokens_parts = [format_tokens(prompt_tokens)]
4180
-
4181
- if cache_hit_tokens:
4182
- tokens_parts.append(f"{format_tokens(cache_hit_tokens)}")
4183
- if cache_write_tokens:
4184
- tokens_parts.append(f"{format_tokens(cache_write_tokens)}")
4185
-
4186
- tokens_str = "/".join(tokens_parts)
4274
+ # Build tokens string as "{prompt} CH {hit_rate:.1f}% ↑ {completion} ↓"
4275
+ if prompt_tokens > 0:
4276
+ hit_rate = round(cache_hit_tokens / prompt_tokens * 100, 1) if cache_hit_tokens else 0.0
4277
+ else:
4278
+ hit_rate = 0.0
4279
+ tokens_str = f"{format_tokens(prompt_tokens)} ◇ {hit_rate:.1f}%"
4187
4280
 
4188
4281
  tokens_report = f"{tokens_str} ↑ {format_tokens(completion_tokens)} ↓"
4189
4282
 
@@ -4198,12 +4291,17 @@ class Coder(metaclass=UsageMeta):
4198
4291
  + self.message_tokens_received
4199
4292
  )
4200
4293
  total_combined_cached = self.total_cached_tokens + self.message_cached_tokens
4294
+ total_input_tokens = self.total_tokens_sent + self.message_tokens_sent
4295
+ if total_input_tokens > 0:
4296
+ total_hit_rate = (
4297
+ round(total_combined_cached / total_input_tokens * 100, 1)
4298
+ if total_combined_cached
4299
+ else 0.0
4300
+ )
4301
+ else:
4302
+ total_hit_rate = 0.0
4201
4303
 
4202
- total_stats = f"{format_tokens(total_combined_tokens)}"
4203
- if total_combined_cached:
4204
- total_stats += f"/{format_tokens(total_combined_cached)}"
4205
-
4206
- total_stats += " ↑↓"
4304
+ total_stats = f"{format_tokens(total_combined_tokens)} ◇ {total_hit_rate:.1f}% ↑↓"
4207
4305
 
4208
4306
  if not self.get_active_model().info.get("input_cost_per_token"):
4209
4307
  self.usage_report = tokens_report + " " + total_stats
@@ -132,7 +132,24 @@ class AddCommand(BaseCommand):
132
132
  f" {active_model.name} does not support images."
133
133
  )
134
134
  continue
135
- content = io.read_text(abs_file_path)
135
+ try:
136
+ content = io.read_text(abs_file_path)
137
+ except (ValueError, UnicodeError, UnicodeDecodeError, OSError) as exc:
138
+ # Binary or undecodable files (e.g. .git/objects/pack/*.rev)
139
+ # raise ValueError("Could not determine text encoding ...")
140
+ # from decoding.safe_open. Skip them gracefully instead of
141
+ # crashing the session.
142
+ msg = str(exc)
143
+ if "Could not determine text encoding" in msg or isinstance(
144
+ exc, (UnicodeError, UnicodeDecodeError)
145
+ ):
146
+ io.tool_warning(
147
+ f"Skipping {matched_file}: not decodable as text "
148
+ "(binary or unknown encoding)"
149
+ )
150
+ else:
151
+ io.tool_error(f"Skipping {matched_file}: {exc}")
152
+ continue
136
153
  if content is None:
137
154
  io.tool_error(f"Unable to read {matched_file}")
138
155
  else:
@@ -14,7 +14,7 @@ class ReasoningEffortCommand(BaseCommand):
14
14
  @classmethod
15
15
  async def execute(cls, io, coder, args, **kwargs):
16
16
  """Execute the reasoning-effort command with given parameters."""
17
- model = coder.main_model
17
+ model = coder.get_active_model()
18
18
 
19
19
  if not args.strip():
20
20
  # Display current value if no args are provided
@@ -11,7 +11,7 @@ class ThinkTokensCommand(BaseCommand):
11
11
  @classmethod
12
12
  async def execute(cls, io, coder, args, **kwargs):
13
13
  """Execute the think-tokens command with given parameters."""
14
- model = coder.main_model
14
+ model = coder.get_active_model()
15
15
 
16
16
  if not args.strip():
17
17
  # Display current value if no args are provided
@@ -51,6 +51,9 @@ class IOProxy(Generic[T]):
51
51
  super().__setattr__("_coder", weakref.ref(coder))
52
52
  # Per-coder task storage: {coder_uuid: {attr_name: asyncio.Task}}
53
53
  super().__setattr__("_per_coder", {coder_uuid: {}})
54
+ # Last tool `type` emitted via tool_output — lives on the proxy,
55
+ # never on the shared target (like coder_uuid)
56
+ super().__setattr__("_last_type", None)
54
57
 
55
58
  # Register a per-coder input queue (TUI mode only)
56
59
  # Allows the TUI to push input directly to this coder's queue,
@@ -76,6 +79,7 @@ class IOProxy(Generic[T]):
76
79
  """Forward tool_output with coder_uuid injected."""
77
80
  if "coder_uuid" not in kwargs:
78
81
  kwargs["coder_uuid"] = self._coder_uuid
82
+ self._last_type = kwargs.get("type")
79
83
  return self._target.tool_output(*messages, **kwargs)
80
84
 
81
85
  def tool_error(self, message: str = "", strip: bool = True, **kwargs: Any) -> Any:
@@ -265,7 +269,7 @@ class IOProxy(Generic[T]):
265
269
 
266
270
  def __setattr__(self, name: str, value: Any) -> None:
267
271
  # Proxy-internal attributes — store on proxy instance only
268
- if name in ("_target", "_coder_uuid", "_coder", "_per_coder"):
272
+ if name in ("_target", "_coder_uuid", "_coder", "_per_coder", "_last_type"):
269
273
  super().__setattr__(name, value)
270
274
  # Per-coder task attributes — isolate per-coder so coders don't
271
275
  # compete for the same promise on the shared InputOutput instance
@@ -0,0 +1,10 @@
1
+ """Derive default per-model configuration from model metadata.
2
+
3
+ The model config package turns a flat litellm-style model metadata file into the
4
+ ``{api, llm, agent}`` override blocks that :mod:`cecli.models` consumes,
5
+ mirroring the ``model-overrides`` section of ``.cecli.conf.yml``.
6
+ """
7
+
8
+ from .pipeline import ModelConfigPipeline, get_default_config
9
+
10
+ __all__ = ["ModelConfigPipeline", "get_default_config"]
@@ -0,0 +1,40 @@
1
+ """Derive the ``agent`` override block for a model.
2
+
3
+ The agent block holds ModelSettings overrides. :mod:`cecli.models` applies each
4
+ of these directly (``setattr``) the same way the ``agent`` section of a
5
+ ``model-overrides`` entry is applied.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Dict, Optional
11
+
12
+ from .identifiers import is_anthropic
13
+ from .utils import supports_reasoning
14
+
15
+
16
+ def derive_agent_config(provider: Optional[str], route: str, record: Optional[Dict]) -> Dict:
17
+ """Return the ``agent`` config block for a model.
18
+
19
+ Args:
20
+ provider: Provider portion of the model name (may be ``None``).
21
+ route: Model route (name after the provider prefix).
22
+ record: The matched model metadata record, or ``None`` for unknown models.
23
+
24
+ Returns:
25
+ A dict of ModelSettings overrides (caching, temperature handling).
26
+ """
27
+ reasoning = supports_reasoning(record)
28
+ record = record or {}
29
+ agent: Dict = {
30
+ "cache_control": is_anthropic(provider, route, record),
31
+ # ``cache_read_input_token_cost`` in the metadata is the determinant for
32
+ # whether a model supports prompt caching. Unknown models default to
33
+ # assuming caching support.
34
+ "caches_by_default": bool(record.get("cache_read_input_token_cost")) if record else True,
35
+ }
36
+
37
+ if reasoning or record.get("supports_adaptive_thinking"):
38
+ agent["use_temperature"] = False
39
+
40
+ return agent
@@ -0,0 +1,62 @@
1
+ """Derive the ``api`` override block for a model.
2
+
3
+ The api block holds request-level parameters. :mod:`cecli.models` merges each
4
+ of these keys into ``extra_params`` the same way the ``api`` section of a
5
+ ``model-overrides`` entry is applied.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Dict, Optional
11
+
12
+ from .identifiers import is_anthropic, is_claude_5_plus, is_gemini_2_5
13
+ from .utils import supports_reasoning
14
+
15
+ _THINKING_BUDGET_TOKENS = 2048
16
+ #: Default thinking budget for Gemini 2.5 models (Gemini 2.5 Pro's default).
17
+ _GEMINI_THINKING_BUDGET_TOKENS = 8192
18
+
19
+
20
+ def derive_api_config(provider: Optional[str], route: str, record: Optional[Dict]) -> Dict:
21
+ """Return the ``api`` config block for a model.
22
+
23
+ Args:
24
+ provider: Provider portion of the model name (may be ``None``).
25
+ route: Model route (name after the provider prefix).
26
+ record: The matched model metadata record, or ``None`` for unknown models.
27
+
28
+ Returns:
29
+ A dict of request-level params (reasoning format, thinking, tool calls).
30
+ """
31
+ reasoning = supports_reasoning(record)
32
+ record = record or {}
33
+ gemini_2_5 = is_gemini_2_5(provider, route, record)
34
+ api: Dict = {}
35
+
36
+ if reasoning and not gemini_2_5:
37
+ effort = _default_reasoning_effort(record)
38
+
39
+ if effort:
40
+ api["reasoning_effort"] = effort
41
+
42
+ if is_anthropic(provider, route, record) and not is_claude_5_plus(provider, route, record):
43
+ # Claude 5+ uses adaptive thinking via ``reasoning_effort`` instead of
44
+ # the ``thinking.type.enabled`` budget block.
45
+ api["thinking"] = {"type": "enabled", "budget_tokens": _THINKING_BUDGET_TOKENS}
46
+ elif gemini_2_5:
47
+ # Gemini 2.5 configures thinking via a token budget; litellm maps the
48
+ # generic ``thinking`` param onto ``thinkingBudget`` + ``includeThoughts``.
49
+ api["thinking"] = {"type": "enabled", "budget_tokens": _GEMINI_THINKING_BUDGET_TOKENS}
50
+
51
+ if record.get("supports_parallel_function_calling", True):
52
+ api["parallel_tool_calls"] = True
53
+
54
+ return api
55
+
56
+
57
+ def _default_reasoning_effort(record):
58
+ """Default reasoning effort for a reasoning-capable model.
59
+
60
+ Always ``medium``; the metadata effort flags are intentionally not used.
61
+ """
62
+ return "medium"
@@ -0,0 +1,20 @@
1
+ """Provider-specific helper overrides for the model config pipeline."""
2
+
3
+ from .reasoning import anthropic_reasoning, format_reasoning, gemini_reasoning, noop
4
+ from .thinking import (
5
+ anthropic_5_thinking,
6
+ anthropic_thinking,
7
+ format_thinking,
8
+ gemini_thinking,
9
+ )
10
+
11
+ __all__ = [
12
+ "format_reasoning",
13
+ "anthropic_reasoning",
14
+ "gemini_reasoning",
15
+ "noop",
16
+ "format_thinking",
17
+ "anthropic_thinking",
18
+ "anthropic_5_thinking",
19
+ "gemini_thinking",
20
+ ]