cecli-dev 1.6.0rc5__tar.gz → 1.6.2rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (866) hide show
  1. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/PKG-INFO +1 -1
  2. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/_version.py +3 -3
  3. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/base_coder.py +20 -19
  4. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/core.py +0 -51
  5. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/insert_queue.py +2 -1
  6. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_queue.py +2 -1
  7. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_sessions.py +1 -1
  8. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_session.py +6 -3
  9. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/queue.py +3 -2
  10. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_queue.py +7 -6
  11. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/save_session.py +6 -2
  12. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/transformations.py +1 -1
  13. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/pipeline.py +4 -2
  14. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_providers.py +4 -0
  15. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/agent_proxy.py +17 -0
  16. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/environment.py +4 -2
  17. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/safe_methods.py +11 -10
  18. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/tool_proxy.py +83 -4
  19. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/responses.py +52 -2
  20. cecli_dev-1.6.2rc1/cecli/helpers/sessions/__init__.py +20 -0
  21. cecli_dev-1.6.2rc1/cecli/helpers/sessions/layout.py +112 -0
  22. cecli_dev-1.6.2rc1/cecli/helpers/sessions/manager.py +325 -0
  23. cecli_dev-1.6.2rc1/cecli/helpers/sessions/payload.py +287 -0
  24. cecli_dev-1.6.2rc1/cecli/helpers/sessions/storage.py +245 -0
  25. cecli_dev-1.6.2rc1/cecli/helpers/sessions/subagents.py +152 -0
  26. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/main.py +1 -1
  27. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/server.py +17 -1
  28. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/models.py +50 -17
  29. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-metadata.ext.json +32 -0
  30. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-metadata.json +16442 -10023
  31. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/providers.json +12 -1
  32. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tests/test_queue_commands.py +201 -219
  33. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/broadcast.py +4 -5
  34. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/grep.py +11 -4
  35. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/read_file.py +4 -4
  36. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/styles.tcss +1 -1
  37. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/output.py +5 -0
  38. cecli_dev-1.6.2rc1/cecli/tui/widgets/thin_scrollbar.py +58 -0
  39. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/ollama.md +3 -4
  40. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/PKG-INFO +1 -1
  41. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/SOURCES.txt +9 -1
  42. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/scm_file_list.json +9 -1
  43. cecli_dev-1.6.2rc1/cecli_dev.egg-info/scm_version.json +8 -0
  44. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sessions.py +1 -1
  45. cecli_dev-1.6.2rc1/tests/basic/test_sessions_manager.py +473 -0
  46. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_orchestration.py +103 -7
  47. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_server_sdk_compat.py +19 -0
  48. cecli_dev-1.6.2rc1/tests/mcp/test_tool_name_sanitization.py +138 -0
  49. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_grep.py +23 -0
  50. cecli_dev-1.6.2rc1/tests/tui/test_output.py +24 -0
  51. cecli_dev-1.6.0rc5/cecli/sessions.py +0 -505
  52. cecli_dev-1.6.0rc5/cecli_dev.egg-info/scm_version.json +0 -8
  53. cecli_dev-1.6.0rc5/tests/basic/test_sessions_manager.py +0 -219
  54. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.dockerignore +0 -0
  55. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.flake8 +0 -0
  56. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.gitattributes +0 -0
  57. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  58. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/check_pypi_version.yml +0 -0
  59. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/docker-build-test.yml +0 -0
  60. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/docker-release.yml +0 -0
  61. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/issues.yml +0 -0
  62. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/pages.yml +0 -0
  63. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/pre-commit.yml +0 -0
  64. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/release.yml +0 -0
  65. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/ubuntu-tests.yml +0 -0
  66. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/windows-tests.yml +0 -0
  67. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
  68. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.gitignore +0 -0
  69. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.pre-commit-config.yaml +0 -0
  70. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CHANGELOG.md +0 -0
  71. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CNAME +0 -0
  72. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CONTRIBUTING.md +0 -0
  73. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/HISTORY.md +0 -0
  74. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/LICENSE.txt +0 -0
  75. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/MANIFEST.in +0 -0
  76. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/README.md +0 -0
  77. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/Dockerfile +0 -0
  78. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/README.md +0 -0
  79. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/__init__.py +0 -0
  80. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/benchmark.py +0 -0
  81. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/benchmark_classic.py +0 -0
  82. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/clone-exercism.sh +0 -0
  83. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/cpp-test.sh +0 -0
  84. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/docker.sh +0 -0
  85. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/docker_build.sh +0 -0
  86. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/install-docker-ubuntu.sh +0 -0
  87. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/npm-test.sh +0 -0
  88. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/over_time.py +0 -0
  89. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/plot.sh +0 -0
  90. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/plots.py +0 -0
  91. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/problem_stats.py +0 -0
  92. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/prompts.py +0 -0
  93. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/refactor_tools.py +0 -0
  94. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/rsync.sh +0 -0
  95. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/rungrid.py +0 -0
  96. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe-bench-lite.txt +0 -0
  97. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe-bench.txt +0 -0
  98. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe_bench.py +0 -0
  99. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/test_benchmark.py +0 -0
  100. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.1.sh +0 -0
  101. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.2.sh +0 -0
  102. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.3.sh +0 -0
  103. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.4.sh +0 -0
  104. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/__init__.py +0 -0
  105. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/__main__.py +0 -0
  106. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/args.py +0 -0
  107. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/args_formatter.py +0 -0
  108. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/change_tracker.py +0 -0
  109. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/__init__.py +0 -0
  110. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/agent_coder.py +0 -0
  111. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/architect_coder.py +0 -0
  112. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/ask_coder.py +0 -0
  113. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/chat_chunks.py +0 -0
  114. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/context_coder.py +0 -0
  115. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/copypaste_coder.py +0 -0
  116. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_coder.py +0 -0
  117. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
  118. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_func_coder.py +0 -0
  119. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  120. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_editblock_coder.py +0 -0
  121. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_whole_coder.py +0 -0
  122. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/hashline_coder.py +0 -0
  123. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/help_coder.py +0 -0
  124. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/patch_coder.py +0 -0
  125. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/search_replace.py +0 -0
  126. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/shell.py +0 -0
  127. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
  128. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/sub_agent_coder.py +0 -0
  129. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/udiff_coder.py +0 -0
  130. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/udiff_simple.py +0 -0
  131. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/wholefile_coder.py +0 -0
  132. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/wholefile_func_coder.py +0 -0
  133. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/__init__.py +0 -0
  134. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/add.py +0 -0
  135. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent.py +0 -0
  136. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent_model.py +0 -0
  137. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent_tree.py +0 -0
  138. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/architect.py +0 -0
  139. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/ask.py +0 -0
  140. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/auto_memory.py +0 -0
  141. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/chat_mode.py +0 -0
  142. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/clear.py +0 -0
  143. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/code.py +0 -0
  144. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/command_prefix.py +0 -0
  145. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/commit.py +0 -0
  146. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/compact.py +0 -0
  147. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context.py +0 -0
  148. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context_blocks.py +0 -0
  149. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context_management.py +0 -0
  150. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/copy.py +0 -0
  151. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/copy_context.py +0 -0
  152. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/diff.py +0 -0
  153. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/drop.py +0 -0
  154. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/editor.py +0 -0
  155. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/editor_model.py +0 -0
  156. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/exclude_skill.py +0 -0
  157. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/exit.py +0 -0
  158. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/git.py +0 -0
  159. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hashline.py +0 -0
  160. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/help.py +0 -0
  161. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/history_search.py +0 -0
  162. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hooks.py +0 -0
  163. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hot_reload.py +0 -0
  164. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/import_skill.py +0 -0
  165. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/include_skill.py +0 -0
  166. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/lint.py +0 -0
  167. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_mcp.py +0 -0
  168. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_skills.py +0 -0
  169. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load.py +0 -0
  170. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_hook.py +0 -0
  171. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_mcp.py +0 -0
  172. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_skill.py +0 -0
  173. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/ls.py +0 -0
  174. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/map.py +0 -0
  175. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/map_refresh.py +0 -0
  176. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/merge.py +0 -0
  177. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/model.py +0 -0
  178. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/models.py +0 -0
  179. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/multiline_mode.py +0 -0
  180. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/paste.py +0 -0
  181. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/quit.py +0 -0
  182. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/read_only.py +0 -0
  183. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/read_only_stub.py +0 -0
  184. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reap_agent.py +0 -0
  185. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reasoning_effort.py +0 -0
  186. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_hook.py +0 -0
  187. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_mcp.py +0 -0
  188. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_memory.py +0 -0
  189. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_skill.py +0 -0
  190. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/report.py +0 -0
  191. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reset.py +0 -0
  192. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/rules.py +0 -0
  193. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/run.py +0 -0
  194. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/save.py +0 -0
  195. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/search_memory.py +0 -0
  196. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/settings.py +0 -0
  197. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/spawn_agent.py +0 -0
  198. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/switch_agent.py +0 -0
  199. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
  200. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/terminal_setup.py +0 -0
  201. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/test.py +0 -0
  202. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/think_tokens.py +0 -0
  203. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/tokens.py +0 -0
  204. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/undo.py +0 -0
  205. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/__init__.py +0 -0
  206. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/base_command.py +0 -0
  207. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/helpers.py +0 -0
  208. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/registry.py +0 -0
  209. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/save_load_manager.py +0 -0
  210. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/voice.py +0 -0
  211. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/weak_model.py +0 -0
  212. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/web.py +0 -0
  213. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/workspace.py +0 -0
  214. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/decoding.py +0 -0
  215. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/deprecated_args.py +0 -0
  216. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/diffs.py +0 -0
  217. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/dump.py +0 -0
  218. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/editor.py +0 -0
  219. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/exceptions.py +0 -0
  220. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/format_settings.py +0 -0
  221. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/help.py +0 -0
  222. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/help_pats.py +0 -0
  223. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/__init__.py +0 -0
  224. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/__init__.py +0 -0
  225. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/config.py +0 -0
  226. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
  227. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  228. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
  229. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/service.py +0 -0
  230. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/background_commands.py +0 -0
  231. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/command_parser.py +0 -0
  232. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/command_queue.py +0 -0
  233. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/config_utils.py +0 -0
  234. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/__init__.py +0 -0
  235. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/base_message.py +0 -0
  236. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/files.py +0 -0
  237. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/integration.py +0 -0
  238. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/manager.py +0 -0
  239. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/service.py +0 -0
  240. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/tags.py +0 -0
  241. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/utils.py +0 -0
  242. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/copypaste.py +0 -0
  243. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/coroutines.py +0 -0
  244. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/crypto.py +0 -0
  245. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/extensions/__init__.py +0 -0
  246. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/extensions/skills_importer.py +0 -0
  247. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_searcher.py +0 -0
  248. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/__init__.py +0 -0
  249. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/builders.py +0 -0
  250. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/ignore.py +0 -0
  251. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
  252. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/service.py +0 -0
  253. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/trie_index.py +0 -0
  254. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
  255. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/dump.py +0 -0
  256. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  257. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/main.py +0 -0
  258. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
  259. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
  260. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashline.py +0 -0
  261. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/__init__.py +0 -0
  262. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
  263. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  264. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/io_proxy.py +0 -0
  265. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/leak_detect.py +0 -0
  266. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/__init__.py +0 -0
  267. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
  268. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/config.py +0 -0
  269. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
  270. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
  271. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/chat.py +0 -0
  272. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
  273. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/messages.py +0 -0
  274. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/responses.py +0 -0
  275. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
  276. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  277. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
  278. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/identifiers.py +0 -0
  279. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/litellm_compat.py +0 -0
  280. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/pipeline.py +0 -0
  281. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
  282. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
  283. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/azure.py +0 -0
  284. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/base.py +0 -0
  285. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
  286. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  287. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
  288. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
  289. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  290. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/meta.py +0 -0
  291. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/mistral.py +0 -0
  292. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/openai.py +0 -0
  293. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
  294. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/runtime.py +0 -0
  295. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/types.py +0 -0
  296. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/utils.py +0 -0
  297. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/lock_detect.py +0 -0
  298. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/loop_detect.py +0 -0
  299. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/__init__.py +0 -0
  300. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/db.py +0 -0
  301. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/utils.py +0 -0
  302. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory_control.py +0 -0
  303. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/__init__.py +0 -0
  304. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/agent.py +0 -0
  305. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/api.py +0 -0
  306. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  307. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  308. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  309. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/identifiers.py +0 -0
  310. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/llm.py +0 -0
  311. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/registry.py +0 -0
  312. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/utils.py +0 -0
  313. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/nested.py +0 -0
  314. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/observations/__init__.py +0 -0
  315. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/observations/service.py +0 -0
  316. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/__init__.py +0 -0
  317. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/app.py +0 -0
  318. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/providers.py +0 -0
  319. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/__init__.py +0 -0
  320. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
  321. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/security.py +0 -0
  322. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/service.py +0 -0
  323. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/plugin_manager.py +0 -0
  324. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/profiler.py +0 -0
  325. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/queues.py +0 -0
  326. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/requests.py +0 -0
  327. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/__init__.py +0 -0
  328. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/__init__.py +0 -0
  329. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/bridge.py +0 -0
  330. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/models.py +0 -0
  331. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/protocol.py +0 -0
  332. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/signals.py +0 -0
  333. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/ws_server.py +0 -0
  334. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/similarity.py +0 -0
  335. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/skills.py +0 -0
  336. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/threading.py +0 -0
  337. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/__init__.py +0 -0
  338. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/config.py +0 -0
  339. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/paths.py +0 -0
  340. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/subagents.py +0 -0
  341. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/workspace.py +0 -0
  342. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/history.py +0 -0
  343. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/__init__.py +0 -0
  344. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/base.py +0 -0
  345. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/helpers.py +0 -0
  346. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/integration.py +0 -0
  347. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/manager.py +0 -0
  348. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/registry.py +0 -0
  349. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/service.py +0 -0
  350. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/types.py +0 -0
  351. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/http.py +0 -0
  352. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/interruptible_input.py +0 -0
  353. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/io.py +0 -0
  354. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/linter.py +0 -0
  355. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/llm.py +0 -0
  356. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/__init__.py +0 -0
  357. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/manager.py +0 -0
  358. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/oauth.py +0 -0
  359. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/utils.py +0 -0
  360. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mdstream.py +0 -0
  361. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/onboarding.py +0 -0
  362. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/__init__.py +0 -0
  363. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/agent.yml +0 -0
  364. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/architect.yml +0 -0
  365. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/ask.yml +0 -0
  366. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/base.yml +0 -0
  367. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/context.yml +0 -0
  368. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/copypaste.yml +0 -0
  369. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock.yml +0 -0
  370. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock_fenced.yml +0 -0
  371. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock_func.yml +0 -0
  372. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
  373. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_editblock.yml +0 -0
  374. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_whole.yml +0 -0
  375. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/hashline.yml +0 -0
  376. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/help.yml +0 -0
  377. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/patch.yml +0 -0
  378. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
  379. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/subagent.yml +0 -0
  380. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/udiff.yml +0 -0
  381. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/udiff_simple.yml +0 -0
  382. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/__init__.py +0 -0
  383. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/registry.py +0 -0
  384. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/system.py +0 -0
  385. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/wholefile.yml +0 -0
  386. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/wholefile_func.yml +0 -0
  387. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  388. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  389. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  390. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  391. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  392. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  393. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  394. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  395. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  396. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  397. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  398. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  399. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  400. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  401. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  402. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  403. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  404. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  405. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  406. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  407. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  408. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  409. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  410. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  411. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  412. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  413. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  414. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  415. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  416. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  417. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  418. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  419. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
  420. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  421. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  422. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  423. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  424. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  425. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  426. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  427. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  428. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  429. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  430. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  431. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  432. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  433. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  434. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  435. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  436. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  437. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  438. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  439. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  440. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  441. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  442. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  443. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  444. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  445. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  446. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  447. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/reasoning_tags.py +0 -0
  448. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/repo.py +0 -0
  449. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/repomap.py +0 -0
  450. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/report.py +0 -0
  451. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/__init__.py +0 -0
  452. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-settings-condensed.yml +0 -0
  453. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-settings.yml +0 -0
  454. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/run_cmd.py +0 -0
  455. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/scrape.py +0 -0
  456. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/sendchat.py +0 -0
  457. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/signals.py +0 -0
  458. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/special.py +0 -0
  459. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/__init__.py +0 -0
  460. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/_yield.py +0 -0
  461. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/command.py +0 -0
  462. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/delegate.py +0 -0
  463. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/edit_file.py +0 -0
  464. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/explore_code.py +0 -0
  465. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_branch.py +0 -0
  466. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_diff.py +0 -0
  467. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_log.py +0 -0
  468. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_remote.py +0 -0
  469. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_show.py +0 -0
  470. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_status.py +0 -0
  471. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/ls.py +0 -0
  472. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/orchestrate.py +0 -0
  473. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/replace_facts.py +0 -0
  474. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/resource_manager.py +0 -0
  475. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/search_facts.py +0 -0
  476. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/thinking.py +0 -0
  477. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/undo_change.py +0 -0
  478. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/update_todo_list.py +0 -0
  479. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/__init__.py +0 -0
  480. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/base_tool.py +0 -0
  481. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/helpers.py +0 -0
  482. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/output.py +0 -0
  483. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/registry.py +0 -0
  484. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/responses.py +0 -0
  485. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/validations/__init__.py +0 -0
  486. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/validations/validations.py +0 -0
  487. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/__init__.py +0 -0
  488. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/app.py +0 -0
  489. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/io.py +0 -0
  490. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/__init__.py +0 -0
  491. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/completion_bar.py +0 -0
  492. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/file_list.py +0 -0
  493. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/footer.py +0 -0
  494. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/input_area.py +0 -0
  495. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/input_container.py +0 -0
  496. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/key_hints.py +0 -0
  497. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/output_alt.bak +0 -0
  498. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/selectable_log.py +0 -0
  499. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/status_bar.py +0 -0
  500. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
  501. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/worker.py +0 -0
  502. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/urls.py +0 -0
  503. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/utils.py +0 -0
  504. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/versioncheck.py +0 -0
  505. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/voice.py +0 -0
  506. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/waiting.py +0 -0
  507. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/watch.py +0 -0
  508. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/watch_prompts.py +0 -0
  509. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/blame.md +0 -0
  510. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/get-started.md +0 -0
  511. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/help-tip.md +0 -0
  512. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/help.md +0 -0
  513. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/install.md +0 -0
  514. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/keys.md +0 -0
  515. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/model-warnings.md +0 -0
  516. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/multi-line.md +0 -0
  517. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/python-m-aider.md +0 -0
  518. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/recording.css +0 -0
  519. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/recording.md +0 -0
  520. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/works-best.md +0 -0
  521. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_features.scss +0 -0
  522. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_footer.scss +0 -0
  523. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_hero.scss +0 -0
  524. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_info.scss +0 -0
  525. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_layout.scss +0 -0
  526. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_reset.scss +0 -0
  527. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_testimonials.scss +0 -0
  528. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_typography.scss +0 -0
  529. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_variables.scss +0 -0
  530. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/custom/custom.scss +0 -0
  531. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/global-overrides.scss +0 -0
  532. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docmd.config.json +0 -0
  533. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  534. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
  535. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/agent-mode.md +0 -0
  536. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/api-keys.md +0 -0
  537. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/api.md +0 -0
  538. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/conf.md +0 -0
  539. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/custom-commands.md +0 -0
  540. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  541. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/dotenv.md +0 -0
  542. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/editor.md +0 -0
  543. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/hooks.md +0 -0
  544. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/mcp.md +0 -0
  545. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-aliases.md +0 -0
  546. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-configuration.md +0 -0
  547. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-providers.md +0 -0
  548. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/options.md +0 -0
  549. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
  550. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/reasoning.md +0 -0
  551. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/retries.md +0 -0
  552. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/security.md +0 -0
  553. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/skills.md +0 -0
  554. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/subagents.md +0 -0
  555. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/tui.md +0 -0
  556. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/workspaces.md +0 -0
  557. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config.md +0 -0
  558. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/git.md +0 -0
  559. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/index.md +0 -0
  560. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/install/docker.md +0 -0
  561. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/install.md +0 -0
  562. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/languages.md +0 -0
  563. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  564. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/legal/privacy.md +0 -0
  565. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/anthropic.md +0 -0
  566. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/azure.md +0 -0
  567. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/bedrock.md +0 -0
  568. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/cohere.md +0 -0
  569. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/deepseek.md +0 -0
  570. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/gemini.md +0 -0
  571. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/github.md +0 -0
  572. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/groq.md +0 -0
  573. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
  574. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
  575. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openai.md +0 -0
  576. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/opencode-go.md +0 -0
  577. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openrouter.md +0 -0
  578. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/other.md +0 -0
  579. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/vertex.md +0 -0
  580. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/warnings.md +0 -0
  581. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/xai.md +0 -0
  582. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms.md +0 -0
  583. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/analytics.md +0 -0
  584. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/edit-formats.md +0 -0
  585. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/infinite-output.md +0 -0
  586. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more-info.md +0 -0
  587. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/repomap.md +0 -0
  588. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/scripting.md +0 -0
  589. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  590. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  591. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
  592. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  593. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
  594. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  595. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  596. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting.md +0 -0
  597. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/commands.md +0 -0
  598. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/conventions.md +0 -0
  599. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/copypaste.md +0 -0
  600. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/images-urls.md +0 -0
  601. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/lint-test.md +0 -0
  602. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/modes.md +0 -0
  603. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/not-code.md +0 -0
  604. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/notifications.md +0 -0
  605. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/optional.md +0 -0
  606. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/sessions.md +0 -0
  607. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/tips.md +0 -0
  608. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/voice.md +0 -0
  609. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/watch.md +0 -0
  610. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage.md +0 -0
  611. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/package-lock.json +0 -0
  612. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/package.json +0 -0
  613. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/share/index.md +0 -0
  614. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
  615. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
  616. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/requires.txt +0 -0
  617. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/top_level.txt +0 -0
  618. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/docker/Dockerfile +0 -0
  619. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  620. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/pyproject.toml +0 -0
  621. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/pytest.ini +0 -0
  622. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/common-constraints.txt +0 -0
  623. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-dev.in +0 -0
  624. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-dev.txt +0 -0
  625. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-help.in +0 -0
  626. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-help.txt +0 -0
  627. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-playwright.in +0 -0
  628. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-playwright.txt +0 -0
  629. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements.in +0 -0
  630. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/tree-sitter.in +0 -0
  631. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements.txt +0 -0
  632. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/30k-image.py +0 -0
  633. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/__init__.py +0 -0
  634. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/blame.py +0 -0
  635. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/clean_metadata.py +0 -0
  636. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/compare-message-history.py +0 -0
  637. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/condense_model_settings.py +0 -0
  638. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/cost_analyzer.py +0 -0
  639. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/cost_calculator.py +0 -0
  640. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/dl_icons.py +0 -0
  641. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/docmd_build.sh +0 -0
  642. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/filter-chat-mode.js +0 -0
  643. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/generate_providers.py +0 -0
  644. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/get_contributor_list.js +0 -0
  645. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/get_hashline.py +0 -0
  646. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/history_prompts.py +0 -0
  647. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/homepage.py +0 -0
  648. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/issues.py +0 -0
  649. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/logo_svg.py +0 -0
  650. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/optimize_tokens.sh +0 -0
  651. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/pip-compile.sh +0 -0
  652. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/recording_audio.py +0 -0
  653. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/redact-cast.py +0 -0
  654. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/rename_to_cecli.py +0 -0
  655. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/tmux_record.sh +0 -0
  656. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/tsl_pack_langs.py +0 -0
  657. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-blame.sh +0 -0
  658. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-docs.sh +0 -0
  659. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-history.py +0 -0
  660. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/versionbump.py +0 -0
  661. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/yank-old-versions.py +0 -0
  662. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/setup.cfg +0 -0
  663. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/shim.pyproject.toml +0 -0
  664. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/__init__.py +0 -0
  665. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/__init__.py +0 -0
  666. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/conftest.py +0 -0
  667. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_agent_config_merge.py +0 -0
  668. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_aws_credentials.py +0 -0
  669. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_background_commands.py +0 -0
  670. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_coder.py +0 -0
  671. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_commands.py +0 -0
  672. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_custom_commands.py +0 -0
  673. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_deprecated.py +0 -0
  674. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_editblock.py +0 -0
  675. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_editor.py +0 -0
  676. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_exceptions.py +0 -0
  677. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_file_system_service.py +0 -0
  678. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_find_or_blocks.py +0 -0
  679. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_hashline.py +0 -0
  680. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_hashline_closure.py +0 -0
  681. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_history.py +0 -0
  682. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_io.py +0 -0
  683. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_linter.py +0 -0
  684. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_main.py +0 -0
  685. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_model_info_manager.py +0 -0
  686. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_model_provider_manager.py +0 -0
  687. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_models.py +0 -0
  688. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_onboarding.py +0 -0
  689. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_plugin_manager.py +0 -0
  690. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_prompts.py +0 -0
  691. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_reasoning.py +0 -0
  692. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_repo.py +0 -0
  693. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_repomap.py +0 -0
  694. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_run_cmd.py +0 -0
  695. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sanity_check_repo.py +0 -0
  696. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_scripting.py +0 -0
  697. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_select_selector.py +0 -0
  698. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sendchat.py +0 -0
  699. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_session_args.py +0 -0
  700. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_session_crypto.py +0 -0
  701. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_skills.py +0 -0
  702. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_special.py +0 -0
  703. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_spinner.py +0 -0
  704. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_ssl_verification.py +0 -0
  705. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_udiff.py +0 -0
  706. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_urls.py +0 -0
  707. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_voice.py +0 -0
  708. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_watch.py +0 -0
  709. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_wholefile.py +0 -0
  710. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_coder_switching.py +0 -0
  711. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_copypaste_coder.py +0 -0
  712. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_rate_limit.py +0 -0
  713. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_tool_call_consolidation.py +0 -0
  714. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_auto_memory.py +0 -0
  715. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_compaction.py +0 -0
  716. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_remove_memory.py +0 -0
  717. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_search_memory.py +0 -0
  718. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_switch_agent.py +0 -0
  719. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_voice.py +0 -0
  720. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_workspace.py +0 -0
  721. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conftest.py +0 -0
  722. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_background_command_injection.py +0 -0
  723. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_conversation_integration.py +0 -0
  724. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_conversation_system.py +0 -0
  725. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  726. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/chat-history.md +0 -0
  727. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
  728. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/bash/test.sh +0 -0
  729. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/c/test.c +0 -0
  730. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
  731. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
  732. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  733. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
  734. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
  735. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/d/test.d +0 -0
  736. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/dart/test.dart +0 -0
  737. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elisp/test.el +0 -0
  738. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
  739. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elm/test.elm +0 -0
  740. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
  741. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/go/test.go +0 -0
  742. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
  743. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
  744. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/java/test.java +0 -0
  745. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/javascript/test.js +0 -0
  746. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
  747. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/lua/test.lua +0 -0
  748. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/matlab/test.m +0 -0
  749. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
  750. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  751. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/php/test.php +0 -0
  752. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/pony/test.pony +0 -0
  753. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/properties/test.properties +0 -0
  754. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/python/test.py +0 -0
  755. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ql/test.ql +0 -0
  756. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/r/test.r +0 -0
  757. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
  758. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
  759. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/rust/test.rs +0 -0
  760. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/scala/test.scala +0 -0
  761. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
  762. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/swift/test.swift +0 -0
  763. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
  764. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
  765. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/udev/test.rules +0 -0
  766. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/zig/test.zig +0 -0
  767. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
  768. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
  769. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  770. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.js +0 -0
  771. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.lisp +0 -0
  772. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.py +0 -0
  773. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch_question.js +0 -0
  774. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/help/test_help.py +0 -0
  775. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/observations/test_observation_service.py +0 -0
  776. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/__init__.py +0 -0
  777. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
  778. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
  779. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_models.py +0 -0
  780. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
  781. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_api_base.py +0 -0
  782. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  783. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_cache_control.py +0 -0
  784. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_gemini_auth.py +0 -0
  785. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  786. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_hyperscalers.py +0 -0
  787. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_messages_stream.py +0 -0
  788. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_messages_wire.py +0 -0
  789. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  790. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_mistral_provider.py +0 -0
  791. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_providers_json.py +0 -0
  792. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
  793. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  794. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  795. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_vision.py +0 -0
  796. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_loop_detect.py +0 -0
  797. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_memory_control.py +0 -0
  798. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_model_config.py +0 -0
  799. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_onboarding.py +0 -0
  800. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_skills_importer.py +0 -0
  801. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/conftest.py +0 -0
  802. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_config.py +0 -0
  803. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_paths.py +0 -0
  804. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_subagents.py +0 -0
  805. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  806. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/__init__.py +0 -0
  807. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_base.py +0 -0
  808. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_manager.py +0 -0
  809. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_registry.py +0 -0
  810. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_agent_mcp_management.py +0 -0
  811. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_config_loading.py +0 -0
  812. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_mcp_management.py +0 -0
  813. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/__init__.py +0 -0
  814. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/conftest.py +0 -0
  815. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/mock_server.py +0 -0
  816. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
  817. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_config.py +0 -0
  818. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_integration.py +0 -0
  819. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_logging.py +0 -0
  820. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
  821. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_unit.py +0 -0
  822. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_manager.py +0 -0
  823. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_manager_retry.py +0 -0
  824. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_server_name_normalization.py +0 -0
  825. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/scrape/test_playwright_disable.py +0 -0
  826. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/scrape/test_scrape.py +0 -0
  827. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/__init__.py +0 -0
  828. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/conftest.py +0 -0
  829. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_commands.py +0 -0
  830. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_config.py +0 -0
  831. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_delegate.py +0 -0
  832. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_finished.py +0 -0
  833. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_io_proxy.py +0 -0
  834. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_service.py +0 -0
  835. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
  836. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/test_requests.py +0 -0
  837. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_command_format_output.py +0 -0
  838. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_command_timeout_paging.py +0 -0
  839. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_edit_file_format_output.py +0 -0
  840. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_extractions.py +0 -0
  841. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_get_lines.py +0 -0
  842. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_git_branch.py +0 -0
  843. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_git_diff.py +0 -0
  844. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_insert_block.py +0 -0
  845. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_read_range_execute.py +0 -0
  846. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_registry.py +0 -0
  847. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
  848. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_resource_manager_paging.py +0 -0
  849. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_tool_arguments.py +0 -0
  850. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  851. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/validations.py +0 -0
  852. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tui/test_app.py +0 -0
  853. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tui/test_completion_bar.py +0 -0
  854. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/conftest.py +0 -0
  855. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_deep_merge.py +0 -0
  856. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_edge_cases.py +0 -0
  857. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_load_mcp.py +0 -0
  858. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_performance.py +0 -0
  859. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_queues.py +0 -0
  860. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_remove_mcp.py +0 -0
  861. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_retry_backoff.py +0 -0
  862. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_shallow_merge.py +0 -0
  863. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_signals.py +0 -0
  864. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  865. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  866. {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.6.0rc5
3
+ Version: 1.6.2rc1
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.6.0rc5'
22
- __version_tuple__ = version_tuple = (1, 6, 0, 'rc5')
21
+ __version__ = version = '1.6.2rc1'
22
+ __version_tuple__ = version_tuple = (1, 6, 2, 'rc1')
23
23
 
24
- __commit_id__ = commit_id = 'gca072134c'
24
+ __commit_id__ = commit_id = 'g699b98e21'
@@ -46,6 +46,7 @@ from cecli.helpers.loop_detect import LoopDetectedError, LoopDetector
46
46
  from cecli.helpers.memory_control import trim_memory
47
47
  from cecli.helpers.observations.service import ObservationService
48
48
  from cecli.helpers.profiler import TokenProfiler
49
+ from cecli.helpers.sessions import SessionManager
49
50
  from cecli.helpers.threading import ThreadSafeEvent
50
51
  from cecli.history import ChatSummary
51
52
  from cecli.hooks import HookIntegration
@@ -53,7 +54,6 @@ from cecli.io import ConfirmGroup, InputOutput
53
54
  from cecli.linter import Linter
54
55
  from cecli.llm import litellm
55
56
  from cecli.mcp import LocalServer
56
- from cecli.models import RETRY_TIMEOUT
57
57
  from cecli.reasoning_tags import (
58
58
  REASONING_TAG,
59
59
  format_reasoning_content,
@@ -64,7 +64,6 @@ from cecli.repo import ANY_GIT_ERROR, GitRepoProxy
64
64
  from cecli.repomap import RepoMap
65
65
  from cecli.report import update_error_prefix
66
66
  from cecli.run_cmd import run_cmd_async
67
- from cecli.sessions import SessionManager
68
67
  from cecli.tools.utils.output import print_tool_response
69
68
  from cecli.tools.utils.registry import ToolRegistry
70
69
  from cecli.utils import copy_tool_call, format_tokens, is_image_file
@@ -2829,24 +2828,14 @@ class Coder(metaclass=UsageMeta):
2829
2828
  except EmptyResponseError:
2830
2829
  self.io.tool_warning(self.empty_llm_tool_warning())
2831
2830
 
2832
- retry_on_empty = False
2833
- retries_config = self.get_active_model().retries
2834
- if isinstance(retries_config, str):
2835
- try:
2836
- retries_config = json.loads(retries_config)
2837
- except json.JSONDecodeError:
2838
- self.io.tool_warning(
2839
- f"Could not parse retries config: {retries_config}"
2840
- )
2841
- retries_config = {}
2842
- if isinstance(retries_config, dict):
2843
- retry_on_empty = retries_config.get("retry_on_empty", False)
2831
+ retry_config = models.parse_retry_config(self.get_active_model().retries)
2832
+ retry_on_empty = retry_config["retry_on_empty"]
2844
2833
 
2845
2834
  if not retry_on_empty:
2846
2835
  break
2847
2836
 
2848
- retry_delay *= 2
2849
- if retry_delay > RETRY_TIMEOUT:
2837
+ retry_delay *= retry_config["retry_backoff_factor"]
2838
+ if retry_delay > retry_config["retry_timeout"]:
2850
2839
  self.io.tool_error("Retry timeout exceeded on empty response.")
2851
2840
  break
2852
2841
 
@@ -2866,10 +2855,15 @@ class Coder(metaclass=UsageMeta):
2866
2855
  exhausted = True
2867
2856
  break
2868
2857
 
2858
+ retry_config = models.parse_retry_config(self.get_active_model().retries)
2859
+
2869
2860
  should_retry = ex_info.retry
2861
+ if ex_info.name == "ServiceUnavailableError":
2862
+ should_retry = should_retry or retry_config["retry_on_unavailable"]
2863
+
2870
2864
  if should_retry:
2871
- retry_delay *= 2
2872
- if retry_delay > RETRY_TIMEOUT:
2865
+ retry_delay *= retry_config["retry_backoff_factor"]
2866
+ if retry_delay > retry_config["retry_timeout"]:
2873
2867
  should_retry = False
2874
2868
 
2875
2869
  if not should_retry:
@@ -3193,7 +3187,8 @@ class Coder(metaclass=UsageMeta):
3193
3187
  tool_name_from_schema = nested.getter(tool, "function.name")
3194
3188
  if (
3195
3189
  tool_name_from_schema
3196
- and tool_name_from_schema.lower() == unprefixed_tool_name.lower()
3190
+ and responses.sanitize_tool_name(tool_name_from_schema).lower()
3191
+ == responses.sanitize_tool_name(unprefixed_tool_name).lower()
3197
3192
  ):
3198
3193
  # Find the McpServer instance that will be used for communication
3199
3194
  for server in self.mcp_manager:
@@ -3415,6 +3410,10 @@ class Coder(metaclass=UsageMeta):
3415
3410
  # with a "missing required parameter" error.
3416
3411
  arguments = responses.coerce_tool_structure(arguments)
3417
3412
 
3413
+ # Providers require a provider-safe tool name, so the name coming back
3414
+ # from the model may not be the name the MCP server advertises.
3415
+ name = responses.original_tool_name(name)
3416
+
3418
3417
  return await session.call_tool(name=name, arguments=arguments)
3419
3418
 
3420
3419
  async def process_tool_calls(self, tool_call_response):
@@ -3504,6 +3503,7 @@ class Coder(metaclass=UsageMeta):
3504
3503
 
3505
3504
  def get_tool_list(self):
3506
3505
  """Get a flattened list of all MCP tools with server prefixes, filtered by registered_servers."""
3506
+ responses.register_tool_names(self.mcp_tools)
3507
3507
  tool_list = []
3508
3508
  if self.mcp_tools:
3509
3509
  for server_name, server_tools in self.mcp_tools:
@@ -5234,6 +5234,7 @@ class Coder(metaclass=UsageMeta):
5234
5234
  session_manager.save_session,
5235
5235
  getattr(self.args, "auto_save_session_name", "auto-save"),
5236
5236
  False,
5237
+ True,
5237
5238
  )
5238
5239
  except Exception:
5239
5240
  # Don't show errors for auto-save to avoid interrupting the user experience
@@ -92,57 +92,6 @@ class Commands:
92
92
  # Commands that should NOT trigger auto-processing of the queue
93
93
  self._MANAGEMENT_COMMANDS = {"queue", "list-queue", "remove-queue"}
94
94
 
95
- # ── Queue Management Methods (CLI-33) ────────────────────────────── #
96
- #
97
- # The prompt queue itself lives on the coder (Coder.prompt_queue) and
98
- # is managed by cecli.helpers.command_queue. These thin wrappers keep
99
- # the /queue, /list-queue and /remove-queue command implementations
100
- # stable while operating on the coder that owns this Commands
101
- # instance, so each sub-agent's commands manage that sub-agent's own
102
- # queue.
103
-
104
- @property
105
- def prompt_queue(self):
106
- """Proxy to the owning coder's prompt queue."""
107
- coder = self.coder
108
- return coder.prompt_queue if coder is not None else []
109
-
110
- def _insert_prompt(self, text: str, index: int) -> dict:
111
- """Insert a prompt at the given index in the active coder's queue."""
112
- from cecli.helpers import command_queue
113
-
114
- return command_queue.insert_prompt(self._active_coder(), text, index)
115
-
116
- def _enqueue_prompt(self, text: str) -> dict:
117
- """Add a prompt to the owning coder's queue."""
118
- from cecli.helpers import command_queue
119
-
120
- return command_queue.enqueue_prompt(self.coder, text)
121
-
122
- def _dequeue_prompt(self) -> dict | None:
123
- """Remove and return the first item from the owning coder's queue."""
124
- from cecli.helpers import command_queue
125
-
126
- return command_queue.dequeue_prompt(self.coder)
127
-
128
- def _get_queue_length(self) -> int:
129
- """Return the current number of items in the owning coder's queue."""
130
- from cecli.helpers import command_queue
131
-
132
- return command_queue.get_queue_length(self.coder)
133
-
134
- def _remove_from_queue(self, index: int) -> dict | None:
135
- """Remove and return the item at the given index from the owning coder's queue."""
136
- from cecli.helpers import command_queue
137
-
138
- return command_queue.remove_from_queue(self.coder, index)
139
-
140
- def _clear_queue(self) -> list:
141
- """Remove all items from the owning coder's queue and return them."""
142
- from cecli.helpers import command_queue
143
-
144
- return command_queue.clear_queue(self.coder)
145
-
146
95
  def _load_custom_commands(self, custom_commands):
147
96
  """
148
97
  Load custom commands from plugin paths.
@@ -4,6 +4,7 @@ from typing import List
4
4
 
5
5
  from cecli.commands.utils.base_command import BaseCommand
6
6
  from cecli.commands.utils.helpers import format_command_result
7
+ from cecli.helpers import command_queue
7
8
 
8
9
 
9
10
  class InsertQueueCommand(BaseCommand):
@@ -57,7 +58,7 @@ class InsertQueueCommand(BaseCommand):
57
58
 
58
59
  # Happy path: insert the prompt
59
60
  try:
60
- item = coder.commands._insert_prompt(prompt_text, index)
61
+ item = command_queue.insert_prompt(coder, prompt_text, index)
61
62
  io.tool_output(f"Prompt inserted at position {index + 1} (id: {item['id']})")
62
63
  return f"Successfully executed {cls.NORM_NAME}."
63
64
  except ValueError as e:
@@ -5,6 +5,7 @@ from typing import List
5
5
 
6
6
  from cecli.commands.utils.base_command import BaseCommand
7
7
  from cecli.commands.utils.helpers import format_command_result
8
+ from cecli.helpers import command_queue
8
9
 
9
10
 
10
11
  class ListQueueCommand(BaseCommand):
@@ -30,7 +31,7 @@ class ListQueueCommand(BaseCommand):
30
31
  io, cls.NORM_NAME, "", error="Command system not available. Cannot list queue."
31
32
  )
32
33
 
33
- queue = coder.commands.prompt_queue
34
+ queue = command_queue.list_queue(coder)
34
35
 
35
36
  # Sad path: empty queue
36
37
  if not queue:
@@ -11,7 +11,7 @@ class ListSessionsCommand(BaseCommand):
11
11
  @classmethod
12
12
  async def execute(cls, io, coder, args, **kwargs):
13
13
  """Execute the list-sessions command with given parameters."""
14
- from cecli import sessions
14
+ from cecli.helpers import sessions
15
15
 
16
16
  session_manager = sessions.SessionManager(coder, io)
17
17
  sessions_list = session_manager.list_sessions()
@@ -15,7 +15,7 @@ class LoadSessionCommand(BaseCommand):
15
15
  io.tool_output("Usage: /load-session <session-name>")
16
16
  return format_command_result(io, "load-session", "No session name provided")
17
17
 
18
- from cecli import sessions
18
+ from cecli.helpers import sessions
19
19
 
20
20
  session_manager = sessions.SessionManager(coder, io)
21
21
  await session_manager.load_session(args.strip())
@@ -26,7 +26,7 @@ class LoadSessionCommand(BaseCommand):
26
26
  def get_completions(cls, io, coder, args) -> List[str]:
27
27
  """Get completion options for load-session command."""
28
28
  # Return available session names for completion
29
- from cecli import sessions
29
+ from cecli.helpers import sessions
30
30
 
31
31
  session_manager = sessions.SessionManager(coder, io)
32
32
  sessions_list = session_manager.list_sessions()
@@ -41,7 +41,10 @@ class LoadSessionCommand(BaseCommand):
41
41
  help_text += "\nExamples:\n"
42
42
  help_text += " /load-session my-feature # Load session 'my-feature'\n"
43
43
  help_text += " /load-session bug-fix # Load session 'bug-fix'\n"
44
- help_text += "\nSessions are loaded from the .cecli/sessions/ directory.\n"
44
+ help_text += (
45
+ "\nSessions are loaded from the .cecli/sessions/ directory. Loading a session"
46
+ " also restores any sub-agents saved with it.\n"
47
+ )
45
48
  help_text += (
46
49
  "Use /list-sessions to see saved sessions and /save-session to save a session.\n"
47
50
  )
@@ -4,6 +4,7 @@ from typing import List
4
4
 
5
5
  from cecli.commands.utils.base_command import BaseCommand
6
6
  from cecli.commands.utils.helpers import format_command_result
7
+ from cecli.helpers import command_queue
7
8
 
8
9
 
9
10
  class QueueCommand(BaseCommand):
@@ -55,8 +56,8 @@ class QueueCommand(BaseCommand):
55
56
 
56
57
  # Happy path: enqueue the prompt
57
58
  try:
58
- item = coder.commands._enqueue_prompt(prompt_text)
59
- position = len(coder.commands.prompt_queue)
59
+ item = command_queue.enqueue_prompt(coder, prompt_text)
60
+ position = command_queue.get_queue_length(coder)
60
61
  io.tool_output(f"Prompt queued at position {position} (id: {item['id']})")
61
62
  return f"Successfully executed {cls.NORM_NAME}."
62
63
  except ValueError as e:
@@ -4,6 +4,7 @@ from typing import List
4
4
 
5
5
  from cecli.commands.utils.base_command import BaseCommand
6
6
  from cecli.commands.utils.helpers import format_command_result
7
+ from cecli.helpers import command_queue
7
8
 
8
9
 
9
10
  class RemoveQueueCommand(BaseCommand):
@@ -33,14 +34,14 @@ class RemoveQueueCommand(BaseCommand):
33
34
  )
34
35
 
35
36
  # Sad path: empty queue
36
- if coder.commands._get_queue_length() == 0:
37
+ if command_queue.get_queue_length(coder) == 0:
37
38
  return format_command_result(
38
39
  io, cls.NORM_NAME, "", error="Queue is empty. Nothing to remove."
39
40
  )
40
41
 
41
42
  # Handle wildcard: clear entire queue
42
43
  if args and args.strip() == "*":
43
- items = coder.commands._clear_queue()
44
+ items = command_queue.clear_queue(coder)
44
45
  count = len(items)
45
46
  io.tool_output(f"Removed all {count} queued prompt(s).")
46
47
  return f"Successfully executed {cls.NORM_NAME}."
@@ -57,9 +58,9 @@ class RemoveQueueCommand(BaseCommand):
57
58
  error=f"Invalid index: '{args.strip()}'. Please provide a number or '*'.",
58
59
  )
59
60
 
60
- item = coder.commands._remove_from_queue(index)
61
+ item = command_queue.remove_from_queue(coder, index)
61
62
  if item is None:
62
- queue_len = coder.commands._get_queue_length()
63
+ queue_len = command_queue.get_queue_length(coder)
63
64
  return format_command_result(
64
65
  io,
65
66
  cls.NORM_NAME,
@@ -71,7 +72,7 @@ class RemoveQueueCommand(BaseCommand):
71
72
  return f"Successfully executed {cls.NORM_NAME}."
72
73
 
73
74
  # Interactive mode: no args provided
74
- queue = coder.commands.prompt_queue
75
+ queue = command_queue.list_queue(coder)
75
76
  io.tool_output("Queued prompts:")
76
77
  for i, item in enumerate(queue, 1):
77
78
  text = item["text"][:80]
@@ -91,7 +92,7 @@ class RemoveQueueCommand(BaseCommand):
91
92
  if not coder.commands:
92
93
  return []
93
94
 
94
- queue_len = coder.commands._get_queue_length()
95
+ queue_len = command_queue.get_queue_length(coder)
95
96
  completions = [str(i) for i in range(1, queue_len + 1)]
96
97
  completions.append("*")
97
98
  return completions
@@ -15,7 +15,7 @@ class SaveSessionCommand(BaseCommand):
15
15
  io.tool_error("Please provide a session name to save.")
16
16
  return format_command_result(io, "save-session", "No session name provided")
17
17
 
18
- from cecli import sessions
18
+ from cecli.helpers import sessions
19
19
 
20
20
  session_manager = sessions.SessionManager(coder, io)
21
21
  session_manager.save_session(args.strip())
@@ -26,7 +26,7 @@ class SaveSessionCommand(BaseCommand):
26
26
  def get_completions(cls, io, coder, args) -> List[str]:
27
27
  """Get completion options for save-session command."""
28
28
  # Return existing session names for completion to prevent accidental overwrites
29
- from cecli import sessions
29
+ from cecli.helpers import sessions
30
30
 
31
31
  session_manager = sessions.SessionManager(coder, io)
32
32
  sessions_list = session_manager.list_sessions()
@@ -42,6 +42,10 @@ class SaveSessionCommand(BaseCommand):
42
42
  help_text += " /save-session my-feature # Save session as 'my-feature'\n"
43
43
  help_text += " /save-session bug-fix # Save session as 'bug-fix'\n"
44
44
  help_text += "\nSessions are saved in the .cecli/sessions/ directory as JSON files.\n"
45
+ help_text += (
46
+ "When the session has sub-agents it is saved as a folder holding the primary"
47
+ " and each sub-agent payload.\n"
48
+ )
45
49
  help_text += "Use /list-sessions to see saved sessions and /load-session to load them.\n"
46
50
  help_text += (
47
51
  "\nNote: Existing session names will be shown for tab completion to help prevent"
@@ -297,7 +297,7 @@ def apply_contextual_marker(
297
297
  range_end: str,
298
298
  num_lines: int,
299
299
  ) -> tuple[list[int], list[int]]:
300
- """Expand range using @C{{num}}, @P{{num}}, or @N{{num}} contextual markers.
300
+ """Expand range using @C<num>, @P<num>, or @N<num> contextual markers.
301
301
 
302
302
  Requires exactly one start match. Raises ValueError when the number
303
303
  of start matches is not 1 (the caller is expected to format the error
@@ -333,7 +333,9 @@ def _closest_provider_match(sources, provider, route):
333
333
 
334
334
  Raw sources are enumerated via a lightweight top-level key scan (a string
335
335
  pass, never a full parse) and only ``provider/``-prefixed keys are parsed
336
- for scoring, so the fallback stays memory friendly.
336
+ for scoring, so the fallback stays memory friendly. A candidate with no
337
+ shared leading characters is not a match: returning it would let an
338
+ unrelated route inherit an arbitrary sibling record's wire mode.
337
339
  """
338
340
  if not provider:
339
341
  return None
@@ -376,7 +378,7 @@ def _closest_provider_match(sources, provider, route):
376
378
  best_score = score
377
379
  best = record
378
380
 
379
- return best
381
+ return best if best_score > 0 else None
380
382
 
381
383
 
382
384
  def _prefix_score(left, right):
@@ -399,6 +399,10 @@ class ModelProviderManager:
399
399
  )
400
400
  response.raise_for_status()
401
401
  return response.json()
402
+ except requests.exceptions.ConnectionError:
403
+ # Unreachable endpoint (e.g. no local Ollama server at
404
+ # localhost:11434): stay silent and contribute no models.
405
+ return None
402
406
  except Exception as ex:
403
407
  print(f"Failed to fetch {provider} model list: {ex}")
404
408
  return None
@@ -89,10 +89,27 @@ class AgentProxy:
89
89
  self._coder,
90
90
  mcp_server=server,
91
91
  mcp_tool_name=schema_name,
92
+ tool_schema=tool_schema,
92
93
  )
93
94
 
94
95
  raise ValueError(f"Unknown tool: '{tool_name}'")
95
96
 
97
+ def get_tool_schema(self, tool_name: str) -> dict[str, Any] | None:
98
+ """Return a copy of the full function-calling schema for a tool.
99
+
100
+ Returns ``None`` when the tool has no schema. Unknown or disallowed
101
+ tools raise the same errors as ``get_tool``.
102
+ """
103
+ return self.get_tool(tool_name).get_schema()
104
+
105
+ def get_tool_signature(self, tool_name: str) -> str | None:
106
+ """Return a readable Python-style call signature for a tool.
107
+
108
+ Optional parameters without a declared default use ``...`` to show
109
+ that they may be omitted without implying a value such as ``None``.
110
+ """
111
+ return self.get_tool(tool_name).get_signature()
112
+
96
113
  def _find_mcp_server(self, server_name: str, server_prefix: str) -> Any:
97
114
  if not hasattr(self._coder, "mcp_manager") or not self._coder.mcp_manager:
98
115
  return None
@@ -547,7 +547,7 @@ def build_orchestration_context_block(agent_config: dict[str, Any]) -> str | Non
547
547
  context = """<context name="orchestration" from="agent">
548
548
  The `Orchestrate` tool runs Python in a sandbox where you can script other tools programmatically.
549
549
  Use it for batch, loop-heavy, and repeat-able workflows.
550
- Variables and helpers persist across calls; `state` persists across all Orchestrate calls in the session.
550
+ The sandbox is stateless between calls — variables don't persist. To carry values across calls, use `state` (per-agent) or `shared_state` (cross-agent).
551
551
  You may need to explore the below primitives to understand how to use the sandbox effectively.
552
552
 
553
553
  ### Primitives
@@ -556,11 +556,13 @@ You may need to explore the below primitives to understand how to use the sandbo
556
556
  |-----------|--------------|
557
557
  | `Agent.allowed_methods()` / `Agent.allowed_tools()` | List helper methods and available tools |
558
558
  | `Agent.get_tool(name)` | Get a tool proxy (case-insensitive; `Local--` / `{{Server Name}}--` prefixes ok) |
559
+ | `Agent.get_tool_schema(name)` | Return a copy of the full function-calling JSON schema |
560
+ | `Agent.get_tool_signature(name)` | Return a readable Python-style signature; optional params without defaults appear as `= ...` |
559
561
  | `await tool.call(**params)` | Run a tool; returns `{"result": [...], "errors": [...], "details": [...]}`, items with shape `{"content", "_"}` |
560
562
  | `Agent.peek(result)` / `Agent.get_value(result, path, default?)` | Inspect / extract values from tool results. path is dot-separated string |
561
563
  | `Agent.resolve_regions(path, specs)` / `Agent.edit_region(path, edits)` | Resolve text boundaries once, then apply edits |
562
564
  | `gather(**tasks)` | Run tasks concurrently; results expose `.key` and `["key"]` |
563
- | `state` / `shared_state` | Persistent dicts; `state.get(k)` falls back to `shared_state` |
565
+ | `state` / `shared_state` | Persistent dicts that survive between Orchestrate calls; `state.get(k)` falls back to `shared_state`. Use these for anything you need to reuse in a later call |
564
566
  | `print(...)` / `reset(local_vars=True, state=False)` | Emit output / clear namespaces |
565
567
  | `typeof(x)`, `isinstance(x, t)`, `hasattr(x, n)`, `repr(x)`, `vars(obj)` | Type inspection and debugging |
566
568
 
@@ -12,6 +12,7 @@ import json
12
12
  import pathlib
13
13
  import re as _re_mod
14
14
  import traceback as _tb_mod
15
+ from collections.abc import Mapping
15
16
  from typing import Any
16
17
 
17
18
  # ---------------------------------------------------------------------------
@@ -139,12 +140,12 @@ async def _safe_sleep(seconds: float) -> None:
139
140
  await asyncio.sleep(seconds)
140
141
 
141
142
 
142
- class GatherResult:
143
- """Result container for named ``gather()`` calls.
143
+ class GatherResult(Mapping[str, Any]):
144
+ """Read-only mapping of named ``gather()`` task results.
144
145
 
145
- Supports both attribute access (``results.my_task``) and
146
- key access (``results["my_task"]``), plus ``len()`` and
147
- iteration for unpacking.
146
+ Supports standard mapping access (``results["task"]``, iteration over
147
+ keys, and ``keys()``, ``values()``, and ``items()``) plus attribute access
148
+ as a convenience. Use key access when task names may collide with methods.
148
149
  """
149
150
 
150
151
  def __init__(self, results: dict[str, Any]) -> None:
@@ -192,7 +193,7 @@ class GatherResult:
192
193
 
193
194
  def __iter__(self):
194
195
  results = object.__getattribute__(self, "_results")
195
- return iter(results.items())
196
+ return iter(results)
196
197
 
197
198
  def keys(self) -> Any:
198
199
  results = object.__getattribute__(self, "_results")
@@ -225,12 +226,12 @@ async def _safe_gather(*args: Any, **named_awaitables: Any):
225
226
  Safely execute multiple awaitables concurrently.
226
227
 
227
228
  All awaitables must be passed as keyword arguments. Results are returned
228
- as a ``GatherResult`` with attribute and key access:
229
+ as a ``GatherResult`` mapping with attribute access as a convenience:
229
230
 
230
231
  results = await gather(read_a=task_a, grep_b=task_b)
231
- print(results.read_a) # attribute access
232
- print(results["grep_b"]) # key access
233
- len(results) # number of results
232
+ print(results["read_a"]) # canonical mapping access
233
+ print(results.grep_b) # attribute convenience
234
+ list(results) # task names
234
235
 
235
236
  Forces ``return_exceptions=True`` so that failures in one task
236
237
  do not crash the entire batch. Exceptions are converted to
@@ -9,6 +9,7 @@ from __future__ import annotations
9
9
 
10
10
  import asyncio
11
11
  import json
12
+ from copy import deepcopy
12
13
  from typing import Any
13
14
 
14
15
 
@@ -63,6 +64,7 @@ class ToolProxy:
63
64
  tool_module: Any = None,
64
65
  mcp_server: Any = None,
65
66
  mcp_tool_name: str = "",
67
+ tool_schema: dict[str, Any] | None = None,
66
68
  ) -> None:
67
69
  # Respect the per-coder tool includelist/excludelist filters
68
70
  incl = getattr(coder, "registered_tools", {}).get("included", set())
@@ -78,6 +80,16 @@ class ToolProxy:
78
80
  self._tool_module = tool_module
79
81
  self._mcp_server = mcp_server
80
82
  self._mcp_tool_name = mcp_tool_name
83
+ self._tool_schema = (
84
+ tool_schema if tool_schema is not None else getattr(tool_module, "SCHEMA", None)
85
+ )
86
+
87
+ def get_schema(self) -> dict[str, Any] | None:
88
+ """Return a deep copy of this tool's JSON schema, if available."""
89
+ if not isinstance(self._tool_schema, dict):
90
+ return None
91
+
92
+ return deepcopy(self._tool_schema)
81
93
 
82
94
  async def __call__(self, *args: Any, **kwargs: Any):
83
95
  """Make the proxy directly callable.
@@ -131,12 +143,79 @@ class ToolProxy:
131
143
 
132
144
  return await self.call(**kwargs)
133
145
 
146
+ def get_signature(self) -> str | None:
147
+ """Return a readable Python-style signature based on the JSON schema.
148
+
149
+ Type annotations are best-effort summaries; use the schema for exact
150
+ constraints. Optional parameters without defaults display as ``...``.
151
+ """
152
+ schema = self._tool_schema
153
+ if not isinstance(schema, dict):
154
+ return None
155
+
156
+ function = schema.get("function", {})
157
+ if not isinstance(function, dict):
158
+ return None
159
+
160
+ parameters = function.get("parameters", {})
161
+ if not isinstance(parameters, dict):
162
+ return None
163
+
164
+ properties = parameters.get("properties", {})
165
+ if not isinstance(properties, dict):
166
+ return None
167
+
168
+ required = parameters.get("required", [])
169
+ required = set(required) if isinstance(required, list) else set()
170
+ signature_parameters = []
171
+ for name, property_schema in properties.items():
172
+ annotation = self._python_type_name(property_schema)
173
+ parameter = f"{name}: {annotation}"
174
+ if name not in required:
175
+ if isinstance(property_schema, dict) and "default" in property_schema:
176
+ parameter += f" = {property_schema['default']!r}"
177
+ else:
178
+ parameter += " = ..."
179
+ signature_parameters.append(parameter)
180
+
181
+ function_name = function.get("name") or self._tool_name
182
+ if signature_parameters:
183
+ return f"{function_name}(*, {', '.join(signature_parameters)})"
184
+ return f"{function_name}()"
185
+
186
+ @staticmethod
187
+ def _python_type_name(schema: Any) -> str:
188
+ """Render common JSON Schema types as readable Python type names."""
189
+ if not isinstance(schema, dict):
190
+ return "Any"
191
+
192
+ schema_type = schema.get("type")
193
+ if isinstance(schema_type, list):
194
+ type_names = [ToolProxy._python_type_name({"type": item}) for item in schema_type]
195
+ return " | ".join(type_names)
196
+
197
+ type_names = {
198
+ "array": "list",
199
+ "boolean": "bool",
200
+ "integer": "int",
201
+ "number": "float",
202
+ "null": "None",
203
+ "object": "dict",
204
+ "string": "str",
205
+ }
206
+ if schema_type in type_names:
207
+ return type_names[schema_type]
208
+
209
+ alternatives = schema.get("anyOf") or schema.get("oneOf")
210
+ if isinstance(alternatives, list):
211
+ return " | ".join(ToolProxy._python_type_name(item) for item in alternatives)
212
+
213
+ return "Any"
214
+
134
215
  def _get_param_names(self) -> list:
135
- """Extract ordered parameter names from the tool's JSON Schema."""
136
- if self._tool_module is None:
137
- return []
216
+ """Extract parameter names in schema order for positional calls."""
138
217
  try:
139
- props = self._tool_module.SCHEMA["function"]["parameters"]["properties"]
218
+ props = self._tool_schema["function"]["parameters"]["properties"]
140
219
  return list(props.keys())
141
220
  except (KeyError, TypeError, AttributeError):
142
221
  return []