cecli-dev 1.3.1__tar.gz → 1.3.2rc2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (833) hide show
  1. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/PKG-INFO +3 -2
  2. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/__init__.py +1 -1
  3. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/_version.py +3 -3
  4. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/args.py +6 -0
  5. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/agent_coder.py +2 -9
  6. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/base_coder.py +1 -0
  7. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/defaults/memorizer.md +2 -0
  8. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/builders.py +8 -2
  9. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/hashpos/transformations.py +19 -9
  10. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/io.py +7 -0
  11. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/main.py +1 -1
  12. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mcp/server.py +213 -142
  13. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/edit_file.py +3 -3
  14. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/utils.py +63 -11
  15. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/versioncheck.py +5 -7
  16. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/PKG-INFO +3 -2
  17. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/requires.txt +2 -1
  18. cecli_dev-1.3.2rc2/cecli_dev.egg-info/scm_version.json +8 -0
  19. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/common-constraints.txt +3 -1
  20. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-help.in +1 -1
  21. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements.in +1 -0
  22. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements.txt +226 -1
  23. cecli_dev-1.3.1/cecli_dev.egg-info/scm_version.json +0 -8
  24. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.dockerignore +0 -0
  25. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.flake8 +0 -0
  26. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.gitattributes +0 -0
  27. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  28. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/check_pypi_version.yml +0 -0
  29. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/docker-build-test.yml +0 -0
  30. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/docker-release.yml +0 -0
  31. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/issues.yml +0 -0
  32. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/pages.yml +0 -0
  33. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/pre-commit.yml +0 -0
  34. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/release.yml +0 -0
  35. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/ubuntu-tests.yml +0 -0
  36. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/windows-tests.yml +0 -0
  37. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
  38. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.gitignore +0 -0
  39. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/.pre-commit-config.yaml +0 -0
  40. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/CHANGELOG.md +0 -0
  41. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/CNAME +0 -0
  42. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/CONTRIBUTING.md +0 -0
  43. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/HISTORY.md +0 -0
  44. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/LICENSE.txt +0 -0
  45. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/MANIFEST.in +0 -0
  46. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/README.md +0 -0
  47. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/Dockerfile +0 -0
  48. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/README.md +0 -0
  49. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/__init__.py +0 -0
  50. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/benchmark.py +0 -0
  51. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/benchmark_classic.py +0 -0
  52. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/clone-exercism.sh +0 -0
  53. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/cpp-test.sh +0 -0
  54. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/docker.sh +0 -0
  55. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/docker_build.sh +0 -0
  56. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/install-docker-ubuntu.sh +0 -0
  57. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/npm-test.sh +0 -0
  58. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/over_time.py +0 -0
  59. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/plot.sh +0 -0
  60. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/plots.py +0 -0
  61. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/problem_stats.py +0 -0
  62. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/prompts.py +0 -0
  63. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/refactor_tools.py +0 -0
  64. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/rsync.sh +0 -0
  65. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/rungrid.py +0 -0
  66. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/swe-bench-lite.txt +0 -0
  67. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/swe-bench.txt +0 -0
  68. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/swe_bench.py +0 -0
  69. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/test_benchmark.py +0 -0
  70. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/variations.1.sh +0 -0
  71. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/variations.2.sh +0 -0
  72. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/variations.3.sh +0 -0
  73. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/benchmark/variations.4.sh +0 -0
  74. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/__main__.py +0 -0
  75. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/args_formatter.py +0 -0
  76. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/change_tracker.py +0 -0
  77. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/__init__.py +0 -0
  78. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/architect_coder.py +0 -0
  79. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/ask_coder.py +0 -0
  80. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/chat_chunks.py +0 -0
  81. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/context_coder.py +0 -0
  82. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/copypaste_coder.py +0 -0
  83. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editblock_coder.py +0 -0
  84. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
  85. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editblock_func_coder.py +0 -0
  86. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  87. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editor_editblock_coder.py +0 -0
  88. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/editor_whole_coder.py +0 -0
  89. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/hashline_coder.py +0 -0
  90. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/help_coder.py +0 -0
  91. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/patch_coder.py +0 -0
  92. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/search_replace.py +0 -0
  93. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/shell.py +0 -0
  94. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
  95. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/sub_agent_coder.py +0 -0
  96. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/udiff_coder.py +0 -0
  97. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/udiff_simple.py +0 -0
  98. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/wholefile_coder.py +0 -0
  99. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/coders/wholefile_func_coder.py +0 -0
  100. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/__init__.py +0 -0
  101. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/add.py +0 -0
  102. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/agent.py +0 -0
  103. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/agent_model.py +0 -0
  104. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/agent_tree.py +0 -0
  105. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/architect.py +0 -0
  106. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/ask.py +0 -0
  107. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/auto_memory.py +0 -0
  108. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/chat_mode.py +0 -0
  109. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/clear.py +0 -0
  110. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/code.py +0 -0
  111. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/command_prefix.py +0 -0
  112. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/commit.py +0 -0
  113. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/compact.py +0 -0
  114. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/context.py +0 -0
  115. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/context_blocks.py +0 -0
  116. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/context_management.py +0 -0
  117. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/copy.py +0 -0
  118. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/copy_context.py +0 -0
  119. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/core.py +0 -0
  120. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/diff.py +0 -0
  121. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/drop.py +0 -0
  122. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/editor.py +0 -0
  123. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/editor_model.py +0 -0
  124. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/exclude_skill.py +0 -0
  125. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/exit.py +0 -0
  126. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/git.py +0 -0
  127. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/hashline.py +0 -0
  128. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/help.py +0 -0
  129. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/history_search.py +0 -0
  130. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/hooks.py +0 -0
  131. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/hot_reload.py +0 -0
  132. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/include_skill.py +0 -0
  133. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/lint.py +0 -0
  134. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/list_mcp.py +0 -0
  135. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/list_queue.py +0 -0
  136. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/list_sessions.py +0 -0
  137. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/list_skills.py +0 -0
  138. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/load.py +0 -0
  139. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/load_hook.py +0 -0
  140. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/load_mcp.py +0 -0
  141. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/load_session.py +0 -0
  142. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/load_skill.py +0 -0
  143. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/ls.py +0 -0
  144. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/map.py +0 -0
  145. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/map_refresh.py +0 -0
  146. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/merge.py +0 -0
  147. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/model.py +0 -0
  148. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/models.py +0 -0
  149. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/multiline_mode.py +0 -0
  150. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/paste.py +0 -0
  151. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/queue.py +0 -0
  152. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/quit.py +0 -0
  153. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/read_only.py +0 -0
  154. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/read_only_stub.py +0 -0
  155. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/reap_agent.py +0 -0
  156. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/reasoning_effort.py +0 -0
  157. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/remove_hook.py +0 -0
  158. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/remove_mcp.py +0 -0
  159. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/remove_memory.py +0 -0
  160. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/remove_queue.py +0 -0
  161. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/remove_skill.py +0 -0
  162. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/report.py +0 -0
  163. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/reset.py +0 -0
  164. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/rules.py +0 -0
  165. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/run.py +0 -0
  166. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/save.py +0 -0
  167. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/save_session.py +0 -0
  168. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/search_memory.py +0 -0
  169. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/settings.py +0 -0
  170. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/spawn_agent.py +0 -0
  171. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/switch_agent.py +0 -0
  172. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
  173. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/terminal_setup.py +0 -0
  174. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/test.py +0 -0
  175. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/think_tokens.py +0 -0
  176. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/tokens.py +0 -0
  177. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/undo.py +0 -0
  178. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/utils/__init__.py +0 -0
  179. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/utils/base_command.py +0 -0
  180. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/utils/helpers.py +0 -0
  181. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/utils/registry.py +0 -0
  182. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/utils/save_load_manager.py +0 -0
  183. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/voice.py +0 -0
  184. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/weak_model.py +0 -0
  185. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/web.py +0 -0
  186. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/commands/workspace.py +0 -0
  187. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/decoding.py +0 -0
  188. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/deprecated_args.py +0 -0
  189. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/diffs.py +0 -0
  190. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/dump.py +0 -0
  191. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/editor.py +0 -0
  192. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/exceptions.py +0 -0
  193. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/format_settings.py +0 -0
  194. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/help.py +0 -0
  195. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/help_pats.py +0 -0
  196. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/__init__.py +0 -0
  197. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/__init__.py +0 -0
  198. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/config.py +0 -0
  199. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/defaults/__init__.py +0 -0
  200. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/defaults/worker.md +0 -0
  201. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/agents/service.py +0 -0
  202. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/background_commands.py +0 -0
  203. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/command_parser.py +0 -0
  204. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/command_queue.py +0 -0
  205. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/config_utils.py +0 -0
  206. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/__init__.py +0 -0
  207. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/base_message.py +0 -0
  208. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/files.py +0 -0
  209. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/integration.py +0 -0
  210. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/manager.py +0 -0
  211. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/service.py +0 -0
  212. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/tags.py +0 -0
  213. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/conversation/utils.py +0 -0
  214. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/copypaste.py +0 -0
  215. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/coroutines.py +0 -0
  216. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/crypto.py +0 -0
  217. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_searcher.py +0 -0
  218. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/__init__.py +0 -0
  219. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/ignore.py +0 -0
  220. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
  221. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/service.py +0 -0
  222. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/file_system/trie_index.py +0 -0
  223. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
  224. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/dump.py +0 -0
  225. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  226. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/main.py +0 -0
  227. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
  228. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
  229. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/hashline.py +0 -0
  230. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/hashpos/__init__.py +0 -0
  231. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
  232. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  233. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/io_proxy.py +0 -0
  234. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/leak_detect.py +0 -0
  235. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/__init__.py +0 -0
  236. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/aws_sigv4.py +0 -0
  237. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/config.py +0 -0
  238. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/__init__.py +0 -0
  239. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/bedrock.py +0 -0
  240. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/chat.py +0 -0
  241. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/gemini.py +0 -0
  242. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/messages.py +0 -0
  243. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/domains/responses.py +0 -0
  244. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/formatters/__init__.py +0 -0
  245. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  246. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/formatters/thinking.py +0 -0
  247. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/identifiers.py +0 -0
  248. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/litellm_compat.py +0 -0
  249. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/pipeline.py +0 -0
  250. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/__init__.py +0 -0
  251. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/anthropic.py +0 -0
  252. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/azure.py +0 -0
  253. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/base.py +0 -0
  254. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/bedrock.py +0 -0
  255. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  256. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/deepseek.py +0 -0
  257. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/gemini.py +0 -0
  258. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  259. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/meta.py +0 -0
  260. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/openai.py +0 -0
  261. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/providers/openrouter.py +0 -0
  262. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/runtime.py +0 -0
  263. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/types.py +0 -0
  264. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/llms/utils.py +0 -0
  265. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/lock_detect.py +0 -0
  266. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/loop_detect.py +0 -0
  267. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/memory/__init__.py +0 -0
  268. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/memory/db.py +0 -0
  269. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/memory/utils.py +0 -0
  270. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/memory_control.py +0 -0
  271. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/__init__.py +0 -0
  272. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/agent.py +0 -0
  273. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/api.py +0 -0
  274. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  275. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  276. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  277. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/identifiers.py +0 -0
  278. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/llm.py +0 -0
  279. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/pipeline.py +0 -0
  280. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_config/utils.py +0 -0
  281. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/model_providers.py +0 -0
  282. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/__init__.py +0 -0
  283. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/config.py +0 -0
  284. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/local_workspace.py +0 -0
  285. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/project.py +0 -0
  286. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/workspace.py +0 -0
  287. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/monorepo/worktree.py +0 -0
  288. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/nested.py +0 -0
  289. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/observations/__init__.py +0 -0
  290. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/observations/service.py +0 -0
  291. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/__init__.py +0 -0
  292. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  293. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/environment.py +0 -0
  294. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/region_resolver.py +0 -0
  295. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/safe_methods.py +0 -0
  296. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/security.py +0 -0
  297. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/service.py +0 -0
  298. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  299. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/plugin_manager.py +0 -0
  300. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/profiler.py +0 -0
  301. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/queues.py +0 -0
  302. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/requests.py +0 -0
  303. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/responses.py +0 -0
  304. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/__init__.py +0 -0
  305. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/acp/__init__.py +0 -0
  306. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/acp/bridge.py +0 -0
  307. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/acp/models.py +0 -0
  308. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/acp/protocol.py +0 -0
  309. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/signals.py +0 -0
  310. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/server/ws_server.py +0 -0
  311. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/similarity.py +0 -0
  312. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/skills.py +0 -0
  313. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/helpers/threading.py +0 -0
  314. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/history.py +0 -0
  315. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/__init__.py +0 -0
  316. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/base.py +0 -0
  317. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/helpers.py +0 -0
  318. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/integration.py +0 -0
  319. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/manager.py +0 -0
  320. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/registry.py +0 -0
  321. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/service.py +0 -0
  322. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/hooks/types.py +0 -0
  323. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/http.py +0 -0
  324. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/interruptible_input.py +0 -0
  325. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/linter.py +0 -0
  326. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/llm.py +0 -0
  327. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mcp/__init__.py +0 -0
  328. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mcp/manager.py +0 -0
  329. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mcp/oauth.py +0 -0
  330. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mcp/utils.py +0 -0
  331. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/mdstream.py +0 -0
  332. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/models.py +0 -0
  333. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/onboarding.py +0 -0
  334. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/__init__.py +0 -0
  335. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/agent.yml +0 -0
  336. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/architect.yml +0 -0
  337. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/ask.yml +0 -0
  338. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/base.yml +0 -0
  339. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/context.yml +0 -0
  340. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/copypaste.yml +0 -0
  341. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editblock.yml +0 -0
  342. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editblock_fenced.yml +0 -0
  343. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editblock_func.yml +0 -0
  344. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
  345. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editor_editblock.yml +0 -0
  346. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/editor_whole.yml +0 -0
  347. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/hashline.yml +0 -0
  348. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/help.yml +0 -0
  349. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/patch.yml +0 -0
  350. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
  351. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/subagent.yml +0 -0
  352. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/udiff.yml +0 -0
  353. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/udiff_simple.yml +0 -0
  354. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/utils/__init__.py +0 -0
  355. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/utils/registry.py +0 -0
  356. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/utils/system.py +0 -0
  357. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/wholefile.yml +0 -0
  358. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/prompts/wholefile_func.yml +0 -0
  359. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  360. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  361. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  362. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  363. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  364. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  365. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  366. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  367. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  368. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  369. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  370. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  371. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  372. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  373. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  374. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  375. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  376. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  377. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  378. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  379. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  380. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  381. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  382. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  383. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  384. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  385. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  386. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  387. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  388. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  389. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  390. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  391. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
  392. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  393. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  394. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  395. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  396. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  397. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  398. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  399. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  400. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  401. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  402. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  403. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  404. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  405. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  406. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  407. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  408. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  409. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  410. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  411. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  412. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  413. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  414. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  415. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  416. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  417. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  418. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  419. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/reasoning_tags.py +0 -0
  420. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/repo.py +0 -0
  421. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/repomap.py +0 -0
  422. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/report.py +0 -0
  423. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/__init__.py +0 -0
  424. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/model-metadata.ext.json +0 -0
  425. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/model-metadata.json +0 -0
  426. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/model-settings-condensed.yml +0 -0
  427. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/model-settings.yml +0 -0
  428. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/resources/providers.json +0 -0
  429. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/run_cmd.py +0 -0
  430. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/scrape.py +0 -0
  431. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/sendchat.py +0 -0
  432. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/sessions.py +0 -0
  433. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/signals.py +0 -0
  434. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/special.py +0 -0
  435. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/__init__.py +0 -0
  436. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/_yield.py +0 -0
  437. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/command.py +0 -0
  438. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/delegate.py +0 -0
  439. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/explore_code.py +0 -0
  440. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_branch.py +0 -0
  441. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_diff.py +0 -0
  442. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_log.py +0 -0
  443. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_remote.py +0 -0
  444. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_show.py +0 -0
  445. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/git_status.py +0 -0
  446. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/grep.py +0 -0
  447. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/ls.py +0 -0
  448. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/orchestrate.py +0 -0
  449. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/read_file.py +0 -0
  450. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/replace_facts.py +0 -0
  451. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/resource_manager.py +0 -0
  452. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/search_facts.py +0 -0
  453. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/thinking.py +0 -0
  454. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/undo_change.py +0 -0
  455. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/update_todo_list.py +0 -0
  456. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/__init__.py +0 -0
  457. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/base_tool.py +0 -0
  458. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/helpers.py +0 -0
  459. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/output.py +0 -0
  460. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/registry.py +0 -0
  461. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/utils/responses.py +0 -0
  462. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/validations/__init__.py +0 -0
  463. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tools/validations/validations.py +0 -0
  464. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/__init__.py +0 -0
  465. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/app.py +0 -0
  466. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/io.py +0 -0
  467. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/styles.tcss +0 -0
  468. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/__init__.py +0 -0
  469. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/completion_bar.py +0 -0
  470. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/file_list.py +0 -0
  471. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/footer.py +0 -0
  472. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/input_area.py +0 -0
  473. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/input_container.py +0 -0
  474. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/key_hints.py +0 -0
  475. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/output.py +0 -0
  476. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/output_alt.bak +0 -0
  477. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/selectable_log.py +0 -0
  478. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/status_bar.py +0 -0
  479. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
  480. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/tui/worker.py +0 -0
  481. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/urls.py +0 -0
  482. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/voice.py +0 -0
  483. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/waiting.py +0 -0
  484. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/watch.py +0 -0
  485. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/watch_prompts.py +0 -0
  486. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/blame.md +0 -0
  487. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/get-started.md +0 -0
  488. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/help-tip.md +0 -0
  489. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/help.md +0 -0
  490. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/install.md +0 -0
  491. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/keys.md +0 -0
  492. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/model-warnings.md +0 -0
  493. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/multi-line.md +0 -0
  494. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/python-m-aider.md +0 -0
  495. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/recording.css +0 -0
  496. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/recording.md +0 -0
  497. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_includes/works-best.md +0 -0
  498. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_features.scss +0 -0
  499. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_footer.scss +0 -0
  500. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_hero.scss +0 -0
  501. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_info.scss +0 -0
  502. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_layout.scss +0 -0
  503. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_reset.scss +0 -0
  504. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_testimonials.scss +0 -0
  505. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_typography.scss +0 -0
  506. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/_variables.scss +0 -0
  507. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/custom/custom.scss +0 -0
  508. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/_sass/global-overrides.scss +0 -0
  509. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docmd.config.json +0 -0
  510. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  511. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
  512. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/agent-mode.md +0 -0
  513. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/api-keys.md +0 -0
  514. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/api.md +0 -0
  515. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/conf.md +0 -0
  516. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/custom-commands.md +0 -0
  517. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  518. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/dotenv.md +0 -0
  519. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/editor.md +0 -0
  520. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/hooks.md +0 -0
  521. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/mcp.md +0 -0
  522. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/model-aliases.md +0 -0
  523. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/model-configuration.md +0 -0
  524. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/model-providers.md +0 -0
  525. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/options.md +0 -0
  526. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/persistent-memory.md +0 -0
  527. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/reasoning.md +0 -0
  528. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/retries.md +0 -0
  529. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/security.md +0 -0
  530. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/skills.md +0 -0
  531. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/subagents.md +0 -0
  532. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/tui.md +0 -0
  533. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config/workspaces.md +0 -0
  534. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/config.md +0 -0
  535. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/git.md +0 -0
  536. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/index.md +0 -0
  537. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/install/docker.md +0 -0
  538. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/install.md +0 -0
  539. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/languages.md +0 -0
  540. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  541. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/legal/privacy.md +0 -0
  542. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/anthropic.md +0 -0
  543. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/azure.md +0 -0
  544. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/bedrock.md +0 -0
  545. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/cohere.md +0 -0
  546. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/deepseek.md +0 -0
  547. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/gemini.md +0 -0
  548. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/github.md +0 -0
  549. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/groq.md +0 -0
  550. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
  551. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/ollama.md +0 -0
  552. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
  553. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/openai.md +0 -0
  554. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/opencode-go.md +0 -0
  555. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/openrouter.md +0 -0
  556. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/other.md +0 -0
  557. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/vertex.md +0 -0
  558. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/warnings.md +0 -0
  559. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms/xai.md +0 -0
  560. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/llms.md +0 -0
  561. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/more/analytics.md +0 -0
  562. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/more/edit-formats.md +0 -0
  563. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/more/infinite-output.md +0 -0
  564. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/more-info.md +0 -0
  565. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/repomap.md +0 -0
  566. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/scripting.md +0 -0
  567. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  568. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  569. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
  570. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  571. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
  572. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  573. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  574. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/troubleshooting.md +0 -0
  575. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/commands.md +0 -0
  576. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/conventions.md +0 -0
  577. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/copypaste.md +0 -0
  578. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/images-urls.md +0 -0
  579. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/lint-test.md +0 -0
  580. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/modes.md +0 -0
  581. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/not-code.md +0 -0
  582. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/notifications.md +0 -0
  583. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/optional.md +0 -0
  584. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/sessions.md +0 -0
  585. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/tips.md +0 -0
  586. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/voice.md +0 -0
  587. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage/watch.md +0 -0
  588. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/docs/usage.md +0 -0
  589. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/package-lock.json +0 -0
  590. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/package.json +0 -0
  591. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli/website/share/index.md +0 -0
  592. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/SOURCES.txt +0 -0
  593. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
  594. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
  595. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/scm_file_list.json +0 -0
  596. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/cecli_dev.egg-info/top_level.txt +0 -0
  597. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/docker/Dockerfile +0 -0
  598. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  599. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/pyproject.toml +0 -0
  600. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/pytest.ini +0 -0
  601. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-dev.in +0 -0
  602. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-dev.txt +0 -0
  603. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-help.txt +0 -0
  604. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-playwright.in +0 -0
  605. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/requirements-playwright.txt +0 -0
  606. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/requirements/tree-sitter.in +0 -0
  607. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/30k-image.py +0 -0
  608. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/__init__.py +0 -0
  609. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/blame.py +0 -0
  610. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/clean_metadata.py +0 -0
  611. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/compare-message-history.py +0 -0
  612. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/condense_model_settings.py +0 -0
  613. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/cost_analyzer.py +0 -0
  614. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/cost_calculator.py +0 -0
  615. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/dl_icons.py +0 -0
  616. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/docmd_build.sh +0 -0
  617. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/filter-chat-mode.js +0 -0
  618. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/generate_providers.py +0 -0
  619. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/get_contributor_list.js +0 -0
  620. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/get_hashline.py +0 -0
  621. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/history_prompts.py +0 -0
  622. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/homepage.py +0 -0
  623. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/issues.py +0 -0
  624. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/logo_svg.py +0 -0
  625. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/optimize_tokens.sh +0 -0
  626. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/pip-compile.sh +0 -0
  627. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/recording_audio.py +0 -0
  628. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/redact-cast.py +0 -0
  629. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/rename_to_cecli.py +0 -0
  630. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/tmux_record.sh +0 -0
  631. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/tsl_pack_langs.py +0 -0
  632. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/update-blame.sh +0 -0
  633. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/update-docs.sh +0 -0
  634. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/update-history.py +0 -0
  635. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/versionbump.py +0 -0
  636. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/scripts/yank-old-versions.py +0 -0
  637. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/setup.cfg +0 -0
  638. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/shim.pyproject.toml +0 -0
  639. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/__init__.py +0 -0
  640. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/__init__.py +0 -0
  641. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/conftest.py +0 -0
  642. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_agent_config_merge.py +0 -0
  643. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_aws_credentials.py +0 -0
  644. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_background_commands.py +0 -0
  645. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_coder.py +0 -0
  646. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_commands.py +0 -0
  647. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_custom_commands.py +0 -0
  648. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_deprecated.py +0 -0
  649. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_editblock.py +0 -0
  650. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_editor.py +0 -0
  651. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_exceptions.py +0 -0
  652. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_find_or_blocks.py +0 -0
  653. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_hashline.py +0 -0
  654. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_hashline_closure.py +0 -0
  655. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_history.py +0 -0
  656. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_io.py +0 -0
  657. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_linter.py +0 -0
  658. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_main.py +0 -0
  659. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_model_info_manager.py +0 -0
  660. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_model_provider_manager.py +0 -0
  661. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_models.py +0 -0
  662. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_onboarding.py +0 -0
  663. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_plugin_manager.py +0 -0
  664. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_prompts.py +0 -0
  665. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_reasoning.py +0 -0
  666. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_repo.py +0 -0
  667. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_repomap.py +0 -0
  668. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_run_cmd.py +0 -0
  669. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_sanity_check_repo.py +0 -0
  670. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_scripting.py +0 -0
  671. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_select_selector.py +0 -0
  672. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_sendchat.py +0 -0
  673. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_session_args.py +0 -0
  674. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_session_crypto.py +0 -0
  675. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_sessions.py +0 -0
  676. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_sessions_manager.py +0 -0
  677. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_skills.py +0 -0
  678. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_special.py +0 -0
  679. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_spinner.py +0 -0
  680. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_ssl_verification.py +0 -0
  681. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_udiff.py +0 -0
  682. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_urls.py +0 -0
  683. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_voice.py +0 -0
  684. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_watch.py +0 -0
  685. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/basic/test_wholefile.py +0 -0
  686. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/coders/test_coder_switching.py +0 -0
  687. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/coders/test_copypaste_coder.py +0 -0
  688. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/coders/test_tool_call_consolidation.py +0 -0
  689. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/commands/test_auto_memory.py +0 -0
  690. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/commands/test_compaction.py +0 -0
  691. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/commands/test_remove_memory.py +0 -0
  692. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/commands/test_search_memory.py +0 -0
  693. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/commands/test_switch_agent.py +0 -0
  694. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/conftest.py +0 -0
  695. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/conversations/test_conversation_integration.py +0 -0
  696. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/conversations/test_conversation_system.py +0 -0
  697. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  698. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/chat-history.md +0 -0
  699. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
  700. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/bash/test.sh +0 -0
  701. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/c/test.c +0 -0
  702. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
  703. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
  704. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  705. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
  706. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
  707. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/d/test.d +0 -0
  708. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/dart/test.dart +0 -0
  709. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/elisp/test.el +0 -0
  710. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
  711. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/elm/test.elm +0 -0
  712. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
  713. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/go/test.go +0 -0
  714. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
  715. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
  716. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/java/test.java +0 -0
  717. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/javascript/test.js +0 -0
  718. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
  719. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/lua/test.lua +0 -0
  720. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/matlab/test.m +0 -0
  721. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
  722. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  723. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/php/test.php +0 -0
  724. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/pony/test.pony +0 -0
  725. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/properties/test.properties +0 -0
  726. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/python/test.py +0 -0
  727. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/ql/test.ql +0 -0
  728. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/r/test.r +0 -0
  729. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
  730. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
  731. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/rust/test.rs +0 -0
  732. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/scala/test.scala +0 -0
  733. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
  734. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/swift/test.swift +0 -0
  735. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
  736. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
  737. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/udev/test.rules +0 -0
  738. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/languages/zig/test.zig +0 -0
  739. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
  740. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
  741. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  742. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/watch.js +0 -0
  743. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/watch.lisp +0 -0
  744. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/watch.py +0 -0
  745. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/fixtures/watch_question.js +0 -0
  746. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/help/test_help.py +0 -0
  747. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  748. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_config.py +0 -0
  749. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_config_active.py +0 -0
  750. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  751. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  752. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  753. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/monorepo/test_workspace.py +0 -0
  754. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/observations/test_observation_service.py +0 -0
  755. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/server/acp/__init__.py +0 -0
  756. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/server/acp/test_bridge.py +0 -0
  757. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/server/acp/test_dispatch.py +0 -0
  758. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/server/acp/test_models.py +0 -0
  759. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/server/acp/test_protocol.py +0 -0
  760. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_api_base.py +0 -0
  761. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  762. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_cache_control.py +0 -0
  763. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  764. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_hyperscalers.py +0 -0
  765. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_messages_stream.py +0 -0
  766. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_messages_wire.py +0 -0
  767. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_providers_json.py +0 -0
  768. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_reasoning_config.py +0 -0
  769. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  770. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_llms_vision.py +0 -0
  771. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_loop_detect.py +0 -0
  772. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_memory_control.py +0 -0
  773. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_model_config.py +0 -0
  774. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/helpers/test_orchestration.py +0 -0
  775. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/hooks/__init__.py +0 -0
  776. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/hooks/test_base.py +0 -0
  777. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/hooks/test_manager.py +0 -0
  778. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/hooks/test_registry.py +0 -0
  779. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/integration/test_agent_mcp_management.py +0 -0
  780. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/integration/test_config_loading.py +0 -0
  781. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/integration/test_mcp_management.py +0 -0
  782. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/__init__.py +0 -0
  783. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/conftest.py +0 -0
  784. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/mock_server.py +0 -0
  785. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_concurrency.py +0 -0
  786. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_config.py +0 -0
  787. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_integration.py +0 -0
  788. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_logging.py +0 -0
  789. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_resilience.py +0 -0
  790. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_keepalive_unit.py +0 -0
  791. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_manager.py +0 -0
  792. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_manager_retry.py +0 -0
  793. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_server_name_normalization.py +0 -0
  794. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/mcp/test_server_sdk_compat.py +0 -0
  795. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/scrape/test_playwright_disable.py +0 -0
  796. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/scrape/test_scrape.py +0 -0
  797. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/__init__.py +0 -0
  798. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/conftest.py +0 -0
  799. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_commands.py +0 -0
  800. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_config.py +0 -0
  801. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_delegate.py +0 -0
  802. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_finished.py +0 -0
  803. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_io_proxy.py +0 -0
  804. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_service.py +0 -0
  805. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
  806. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/test_requests.py +0 -0
  807. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_command_format_output.py +0 -0
  808. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_edit_file_format_output.py +0 -0
  809. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_extractions.py +0 -0
  810. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_get_lines.py +0 -0
  811. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_git_branch.py +0 -0
  812. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_git_diff.py +0 -0
  813. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_grep.py +0 -0
  814. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_insert_block.py +0 -0
  815. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_read_range_execute.py +0 -0
  816. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_registry.py +0 -0
  817. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_remove_mcp_tool.py +0 -0
  818. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_tool_arguments.py +0 -0
  819. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  820. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tools/validations.py +0 -0
  821. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/tui/test_app.py +0 -0
  822. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/conftest.py +0 -0
  823. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_deep_merge.py +0 -0
  824. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_edge_cases.py +0 -0
  825. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_load_mcp.py +0 -0
  826. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_performance.py +0 -0
  827. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_queues.py +0 -0
  828. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_remove_mcp.py +0 -0
  829. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_shallow_merge.py +0 -0
  830. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_signals.py +0 -0
  831. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  832. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  833. {cecli_dev-1.3.1 → cecli_dev-1.3.2rc2}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.3.1
3
+ Version: 1.3.2rc2
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -36,6 +36,7 @@ Requires-Dist: cryptography>=42.0.0
36
36
  Requires-Dist: xxhash>=3.6.0
37
37
  Requires-Dist: beautifulsoup4>=4.13.4
38
38
  Requires-Dist: pypandoc>=1.15
39
+ Requires-Dist: chromadb>=1.5.9
39
40
  Requires-Dist: diskcache>=5.6.3
40
41
  Requires-Dist: json-repair>=0.60.1
41
42
  Requires-Dist: jsonschema>=4.25.0
@@ -90,7 +91,7 @@ Requires-Dist: pympler; extra == "dev"
90
91
  Requires-Dist: guppy3; extra == "dev"
91
92
  Requires-Dist: psutil; extra == "dev"
92
93
  Provides-Extra: help
93
- Requires-Dist: chromadb; extra == "help"
94
+ Requires-Dist: chromadb>=1.5.9; extra == "help"
94
95
  Requires-Dist: numpy>=1.26.4; extra == "help"
95
96
  Provides-Extra: playwright
96
97
  Requires-Dist: playwright; extra == "playwright"
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "1.3.1.dev"
3
+ __version__ = "1.3.2.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -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.3.1'
22
- __version_tuple__ = version_tuple = (1, 3, 1)
21
+ __version__ = version = '1.3.2rc2'
22
+ __version_tuple__ = version_tuple = (1, 3, 2, 'rc2')
23
23
 
24
- __commit_id__ = commit_id = 'g935c0453d'
24
+ __commit_id__ = commit_id = 'gb52f1a0f8'
@@ -331,6 +331,12 @@ def get_parser(default_config_files, git_root):
331
331
  default=3,
332
332
  help="Maximum number of retries a model gets on malformed outputs (default: 3)",
333
333
  )
334
+ group.add_argument(
335
+ "--max-tool-calls",
336
+ type=int,
337
+ default=25,
338
+ help="Maximum number of tool calls allowed per message (default: 25)",
339
+ )
334
340
  group.add_argument(
335
341
  "--cost-limit",
336
342
  type=float,
@@ -133,6 +133,8 @@ class AgentCoder(Coder):
133
133
  self.io.tool_warning(err)
134
134
 
135
135
  self.start_up_errors = []
136
+ # Preserve the original 10000 setting now that max tool calls is configurable
137
+ self.max_tool_calls = self.max_tool_calls * 400
136
138
 
137
139
  def _setup_agent(self):
138
140
  os.makedirs(".cecli/temp", exist_ok=True)
@@ -1221,15 +1223,6 @@ class AgentCoder(Coder):
1221
1223
  for i, tool in enumerate(recent_history, 1):
1222
1224
  context_parts.append(f"{i}. {tool}")
1223
1225
 
1224
- if not self.edit_allowed:
1225
- context_parts.append("\n\n")
1226
- context_parts.append("## File Editing Tools Disabled")
1227
- context_parts.append(
1228
- "File editing tools are currently disabled. Use `ReadFile` to determine the"
1229
- " current content ID prefixes needed to perform an edit and activate them when"
1230
- " you are ready to edit a file."
1231
- )
1232
-
1233
1226
  context_parts.append("\n\n")
1234
1227
  repetition_warning = None
1235
1228
 
@@ -520,6 +520,7 @@ class Coder(metaclass=UsageMeta):
520
520
  self.max_compaction_retries = max_compaction_retries
521
521
 
522
522
  self.max_reflections = nested.getter(self.args, "max_reflections", 3)
523
+ self.max_tool_calls = nested.getter(self.args, "max_tool_calls", 25)
523
524
 
524
525
  if not fnames:
525
526
  fnames = []
@@ -16,6 +16,8 @@ agent-config:
16
16
  - gitremote
17
17
  - gitshow
18
18
  - gitstatus
19
+ servers_includelist:
20
+ - local
19
21
  exclude_context_blocks:
20
22
  - context_summary
21
23
  - directory_structure
@@ -8,6 +8,7 @@ Construction strategies for FileSystemService.
8
8
  import hashlib
9
9
  import os
10
10
  import subprocess
11
+ import time
11
12
  from pathlib import Path
12
13
 
13
14
  from .ignore import FileIgnoreFilter
@@ -118,6 +119,8 @@ class ScandirBuilder:
118
119
  Walk filesystem collecting files relative to root using Breadth-First Search.
119
120
  Highly optimized: lazy iteration, single-pass evaluation, and raw string paths.
120
121
  """
122
+ start_time = time.monotonic()
123
+
121
124
  paths = []
122
125
 
123
126
  # Only use pathlib for initial resolution, then stick to raw strings for speed
@@ -132,6 +135,9 @@ class ScandirBuilder:
132
135
  path_count = 0
133
136
 
134
137
  while dirs_to_scan:
138
+ if time.monotonic() - start_time > 120:
139
+ break
140
+
135
141
  next_dirs = []
136
142
 
137
143
  for current_path, rel_dir, depth in dirs_to_scan:
@@ -159,7 +165,7 @@ class ScandirBuilder:
159
165
 
160
166
  # --- Handle Files ---
161
167
  elif entry.is_file(follow_symlinks=False):
162
- # Short-circuit if we hit the 64 file cap (saves ignore_filter overhead)
168
+ # Short-circuit if we hit the 256 file cap (saves ignore_filter overhead)
163
169
  if not is_subfolder_of_user and file_count >= 256:
164
170
  continue
165
171
 
@@ -177,7 +183,7 @@ class ScandirBuilder:
177
183
  # Global safety hard-stop
178
184
  if not is_subfolder_of_user and path_count >= max_files:
179
185
  return sorted(paths)
180
- except PermissionError:
186
+ except (PermissionError, OSError, TimeoutError):
181
187
  continue # Skip folders we don't have read access to
182
188
 
183
189
  dirs_to_scan = next_dirs
@@ -10,13 +10,8 @@ and region_resolver.py.
10
10
  from __future__ import annotations
11
11
 
12
12
  import re
13
- from typing import TYPE_CHECKING
14
-
15
- from cecli.helpers.hashpos.hashpos import UNIQUE_HASH_DELIMITER
16
-
17
- if TYPE_CHECKING:
18
- from cecli.helpers.hashpos.hashpos import HashPos
19
13
 
14
+ from cecli.helpers.hashpos.hashpos import UNIQUE_HASH_DELIMITER, HashPos
20
15
 
21
16
  # ────────────────────────────────────────────────────────────
22
17
  # Pattern Matching
@@ -432,9 +427,24 @@ def reposition_indices(
432
427
 
433
428
  def strip_hashline_prefix(value: str) -> str:
434
429
  """Strip the virtual prefix from a ReadFile output line reference."""
435
-
436
- if isinstance(value, str) and value.startswith(UNIQUE_HASH_DELIMITER):
437
- return value[len(UNIQUE_HASH_DELIMITER) :].lstrip()
430
+ if not isinstance(value, str):
431
+ return value
432
+
433
+ # Unique-line delimiter (——): not spatially resolvable, so strip it and match
434
+ # the remaining content as text.
435
+ if value.startswith(UNIQUE_HASH_DELIMITER):
436
+ return value[len(UNIQUE_HASH_DELIMITER) :]
437
+
438
+ # Valid canonical duplicate content ID (—XXXX—): keep it intact so that
439
+ # resolve_content_to_hashline_ids() can target a specific occurrence.
440
+ if HashPos.HASH_PREFIX_RE.match(value):
441
+ return value
442
+
443
+ # Malformed marker: a short string immediately followed by an em-dash (e.g.
444
+ # 'о‘星—'). This is not a valid content ID, so strip it.
445
+ stripped = HashPos._LOOSE_PREFIX_RE.sub("", value, count=1)
446
+ if stripped != value:
447
+ return stripped
438
448
 
439
449
  return value
440
450
 
@@ -1354,6 +1354,13 @@ class InputOutput:
1354
1354
  while True:
1355
1355
  try:
1356
1356
  if self.prompt_session:
1357
+ if (
1358
+ getattr(
1359
+ getattr(self.prompt_session, "app", None), "_is_running", False
1360
+ )
1361
+ is True
1362
+ ):
1363
+ return True
1357
1364
  # Call prompt_async directly instead of using input_task
1358
1365
  # This allows KeyboardInterrupt to propagate properly
1359
1366
  res = await self.prompt_session.prompt_async(question)
@@ -1004,7 +1004,7 @@ async def main_async(
1004
1004
  return await main_async(argv, input, output, right_repo_root, return_coder=return_coder)
1005
1005
 
1006
1006
  if (args.check_update or args.upgrade) and not args.just_check_update and not suppress_pre_init:
1007
- await check_version(pre_init_io, verbose=args.verbose)
1007
+ await check_version(pre_init_io, verbose=args.verbose, upgrade=args.upgrade)
1008
1008
  elif args.just_check_update:
1009
1009
  update_available = await check_version(pre_init_io, just_check=True, verbose=args.verbose)
1010
1010
  return await graceful_exit(None, 0 if not update_available else 1)
@@ -68,7 +68,14 @@ class McpServer:
68
68
  # concurrent disconnect on the same loop never blocks the loop thread.
69
69
  self._cleanup_lock: threading.Lock = threading.Lock()
70
70
  self._disconnecting = False
71
+ # The session (and its transport context) is owned by a single task so
72
+ # the AnyIO task group inside the transport is entered and exited on the
73
+ # same task, no matter which task calls disconnect().
71
74
  self.exit_stack = AsyncExitStack()
75
+ self._cancel_keepalive_on_close = True
76
+ self._session_task: asyncio.Task | None = None
77
+ self._session_ready: asyncio.Future | None = None
78
+ self._shutdown_event: asyncio.Event | None = None
72
79
 
73
80
  @property
74
81
  def is_connected(self) -> bool:
@@ -78,16 +85,21 @@ class McpServer:
78
85
  async def connect(self):
79
86
  """Connect to the MCP server and return the session.
80
87
 
81
- If a session is already active, returns the existing session.
82
- Otherwise, establishes a new connection and initializes the session.
88
+ If a session is already active, returns the existing session. Otherwise,
89
+ establishes a new connection and initializes the session.
90
+
91
+ The session is owned by a dedicated task that both opens and closes the
92
+ transport, so the AnyIO task group inside the transport context is always
93
+ entered and exited on the same task, regardless of which task later calls
94
+ disconnect().
83
95
 
84
96
  Returns:
85
97
  ClientSession: The active session if mcp is not disabled
86
98
  """
87
99
  current_loop = asyncio.get_running_loop()
88
100
  if self.session is not None:
89
- # Event loop affinity check: streams from stdio_client() are bound
90
- # to the loop that created them. Reconnect if the loop changed.
101
+ # Event loop affinity check: streams from the transport are bound to
102
+ # the loop that created them. Reconnect if the loop changed.
91
103
  if self._connection_loop is current_loop:
92
104
  if self.verbose and self.io:
93
105
  self.io.tool_output(f"Using existing session for MCP server: {self.name}")
@@ -99,51 +111,57 @@ class McpServer:
99
111
  if self.verbose and self.io:
100
112
  self.io.tool_output(f"Establishing new connection to MCP server: {self.name}")
101
113
 
102
- command = self.config["command"]
103
-
104
- env = os.environ.copy()
105
- if self.config.get("env"):
106
- env.update(self.config["env"])
107
-
108
- server_params = StdioServerParameters(
109
- command=command,
110
- args=self.config.get("args"),
111
- env=env,
112
- )
114
+ self._connection_loop = current_loop
115
+ self._shutdown_event = asyncio.Event()
116
+ self._session_ready = current_loop.create_future()
117
+ self._session_task = asyncio.create_task(self._run_session())
113
118
 
114
119
  try:
115
- os.makedirs(".cecli/logs/", exist_ok=True)
116
- with safe_open(".cecli/logs/mcp-errors.log", "w") as err_file:
117
- stdio_transport = await self.exit_stack.enter_async_context(
118
- stdio_client(server_params, errlog=err_file)
119
- )
120
- read, write = stdio_transport
121
- session = await self.exit_stack.enter_async_context(ClientSession(read, write))
122
- await session.initialize()
123
- self.session = session
124
- self._connection_loop = current_loop
125
- return session
126
- except Exception as e:
127
- logging.error(f"Error initializing server {self.name}: {e}")
120
+ session = await self._session_ready
121
+ except BaseException:
128
122
  await self.disconnect()
129
123
  raise
130
124
 
131
- async def disconnect(self):
132
- """
133
- Disconnect from the MCP server and clean up resources.
125
+ return session
126
+
127
+ async def disconnect(self, cancel_keepalive: bool = True):
128
+ """Disconnect from the MCP server and clean up resources.
134
129
 
135
130
  Idempotent and safe to call from any task or thread: only one caller
136
131
  performs the teardown; concurrent callers (possibly on another event
137
132
  loop) return immediately once the session is marked gone.
133
+
134
+ The transport is closed on the session owner task (via a shutdown
135
+ signal), so the AnyIO task group inside the transport's async context is
136
+ exited on the same task that entered it.
138
137
  """
139
138
  with self._cleanup_lock:
140
139
  if self._disconnecting:
141
140
  self.session = None
142
141
  return
143
142
  self._disconnecting = True
143
+ self._cancel_keepalive_on_close = cancel_keepalive
144
144
 
145
145
  try:
146
- await self.exit_stack.aclose()
146
+ task = self._session_task
147
+ if task is not None and not task.done():
148
+ # Retire this task as owner before signalling, so an owner task on
149
+ # another loop won't clear state a newer session has taken over.
150
+ self._session_task = None
151
+ if self._shutdown_event is not None:
152
+ self._shutdown_event.set()
153
+
154
+ try:
155
+ await asyncio.wait_for(task, timeout=15)
156
+ except asyncio.TimeoutError:
157
+ task.cancel()
158
+ except RuntimeError:
159
+ # Session task lives on a different loop; it is torn down there.
160
+ pass
161
+
162
+ elif task is None:
163
+ await self._close_session(cancel_keepalive)
164
+ await self.exit_stack.aclose()
147
165
  except (asyncio.CancelledError, RuntimeError, GeneratorExit):
148
166
  # Expected during shutdown - anyio cancel scopes don't play
149
167
  # well with asyncio teardown. Resources are still cleaned up.
@@ -152,6 +170,9 @@ class McpServer:
152
170
  logging.error(f"Error during cleanup of server {self.name}: {e}")
153
171
  finally:
154
172
  self.session = None
173
+ self._connection_loop = None
174
+ self._session_ready = None
175
+ self._shutdown_event = None
155
176
  self._disconnecting = False
156
177
 
157
178
  async def reconnect(self):
@@ -196,6 +217,109 @@ class McpServer:
196
217
 
197
218
  return False
198
219
 
220
+ async def _open_session(self):
221
+ """Open the MCP transport and initialize the session.
222
+
223
+ All context managers are entered into ``self.exit_stack`` and the active
224
+ session is stored on ``self.session``. This runs on the session owner
225
+ task (see ``_run_session``). Subclasses override this for
226
+ transport-specific setup.
227
+
228
+ Returns:
229
+ ClientSession: The initialized session
230
+ """
231
+ command = self.config["command"]
232
+
233
+ env = os.environ.copy()
234
+ if self.config.get("env"):
235
+ env.update(self.config["env"])
236
+
237
+ server_params = StdioServerParameters(
238
+ command=command,
239
+ args=self.config.get("args"),
240
+ env=env,
241
+ )
242
+
243
+ os.makedirs(".cecli/logs/", exist_ok=True)
244
+ with safe_open(".cecli/logs/mcp-errors.log", "w") as err_file:
245
+ stdio_transport = await self.exit_stack.enter_async_context(
246
+ stdio_client(server_params, errlog=err_file)
247
+ )
248
+ read, write = stdio_transport
249
+ session = await self.exit_stack.enter_async_context(ClientSession(read, write))
250
+ await session.initialize()
251
+ self.session = session
252
+
253
+ return session
254
+
255
+ async def _close_session(self, cancel_keepalive: bool = True):
256
+ """Tear down session-specific resources.
257
+
258
+ Always runs on the session owner task, immediately before the transport
259
+ context is closed. Subclasses override to clean up extra state.
260
+ """
261
+ return None
262
+
263
+ async def _run_session(self):
264
+ """Own the transport context for the lifetime of the session.
265
+
266
+ Opens the transport and session, then blocks until a shutdown is
267
+ requested, then closes the transport. Both the open and the close happen
268
+ in this single task so the AnyIO task group inside the transport context
269
+ (for example ``stdio_client``) is entered and exited on the same task.
270
+
271
+ Even when opening fails partway, any contexts already pushed onto
272
+ ``self.exit_stack`` are still closed here, so nothing leaks.
273
+ """
274
+ # This session owns its own transport stack so an older owner task that
275
+ # is still winding down can never close a newer session's contexts.
276
+ exit_stack = AsyncExitStack()
277
+ self.exit_stack = exit_stack
278
+
279
+ try:
280
+ try:
281
+ session = await self._open_session()
282
+ except BaseException as exc:
283
+ if not self._session_ready.done():
284
+ if isinstance(exc, asyncio.CancelledError):
285
+ # Deliver cancellation as a future cancellation, not as an
286
+ # exception value, so a connect() caller that never awaits
287
+ # the future won't trigger a "Future exception was never
288
+ # retrieved" warning.
289
+ self._session_ready.cancel()
290
+ else:
291
+ logging.error(f"Error initializing server {self.name}: {exc}")
292
+ self._session_ready.set_exception(exc)
293
+
294
+ return
295
+
296
+ if not self._session_ready.done():
297
+ self._session_ready.set_result(session)
298
+
299
+ await self._shutdown_event.wait()
300
+ except BaseException:
301
+ pass
302
+ finally:
303
+ try:
304
+ await self._close_session(self._cancel_keepalive_on_close)
305
+ except asyncio.CancelledError:
306
+ pass
307
+ except Exception as e:
308
+ logging.error(f"Error during cleanup of server {self.name}: {e}")
309
+
310
+ try:
311
+ await exit_stack.aclose()
312
+ except (asyncio.CancelledError, RuntimeError, GeneratorExit):
313
+ pass
314
+ except Exception as e:
315
+ logging.error(f"Error during cleanup of server {self.name}: {e}")
316
+
317
+ # Only the current owner may clear shared state; if a newer session
318
+ # has taken over, leave its session/loop fields alone.
319
+ if self._session_task is asyncio.current_task():
320
+ self.session = None
321
+ self._connection_loop = None
322
+
199
323
 
200
324
  class HttpBasedMcpServer(McpServer):
201
325
  """Base class for HTTP-based MCP servers (HTTP streaming and SSE)."""
@@ -288,66 +412,48 @@ class HttpBasedMcpServer(McpServer):
288
412
  """
289
413
  raise NotImplementedError("Subclasses must implement _create_transport")
290
414
 
291
- async def connect(self):
292
- current_loop = asyncio.get_running_loop()
293
- if self.session is not None:
294
- if self._connection_loop is current_loop:
295
- if self.verbose and self.io:
296
- self.io.tool_output(f"Using existing session for {self.name}")
297
- return self.session
298
- if self.verbose and self.io:
299
- self.io.tool_output(f"Reconnecting {self.name} (event loop changed)")
300
- await self.disconnect()
301
-
302
- if self.verbose and self.io:
303
- self.io.tool_output(f"Establishing new connection to {self.name}")
304
-
305
- try:
306
- url = self.config.get("url")
307
- headers = self.config.get("headers", {})
308
-
309
- oauth_provider = None
310
- if not headers:
311
- oauth_provider = await self._create_oauth_provider()
312
-
313
- http_client_cls = _get_http_client_module().AsyncClient
314
- http_client = await self.exit_stack.enter_async_context(
315
- http_client_cls(
316
- auth=oauth_provider,
317
- follow_redirects=True,
318
- headers=headers,
319
- timeout=30,
320
- )
415
+ async def _open_session(self):
416
+ url = self.config.get("url")
417
+ headers = self.config.get("headers", {})
418
+
419
+ oauth_provider = None
420
+ if not headers:
421
+ oauth_provider = await self._create_oauth_provider()
422
+
423
+ http_client_cls = _get_http_client_module().AsyncClient
424
+ http_client = await self.exit_stack.enter_async_context(
425
+ http_client_cls(
426
+ auth=oauth_provider,
427
+ follow_redirects=True,
428
+ headers=headers,
429
+ timeout=30,
321
430
  )
322
- self._http_client = http_client
431
+ )
432
+ self._http_client = http_client
323
433
 
324
- transport = await self.exit_stack.enter_async_context(
325
- self._create_transport(url, http_client=http_client)
326
- )
434
+ transport = await self.exit_stack.enter_async_context(
435
+ self._create_transport(url, http_client=http_client)
436
+ )
327
437
 
328
- read, write = _unpack_transport(transport)
438
+ read, write = _unpack_transport(transport)
329
439
 
330
- session = await self.exit_stack.enter_async_context(ClientSession(read, write))
331
- await session.initialize()
332
- self.session = session
333
- await self.start_keepalive()
334
- self._connection_loop = current_loop
440
+ session = await self.exit_stack.enter_async_context(ClientSession(read, write))
441
+ await session.initialize()
442
+ self.session = session
335
443
 
336
- if oauth_provider is not None and oauth_provider.context.oauth_metadata:
337
- token_endpoint = oauth_provider._get_token_endpoint()
338
- server_info = get_mcp_oauth_token(self.name)
339
- if "client_info" not in server_info:
340
- server_info["client_info"] = {}
444
+ await self.start_keepalive()
341
445
 
342
- server_info["client_info"]["token_endpoint"] = token_endpoint
446
+ if oauth_provider is not None and oauth_provider.context.oauth_metadata:
447
+ token_endpoint = oauth_provider._get_token_endpoint()
448
+ server_info = get_mcp_oauth_token(self.name)
449
+ if "client_info" not in server_info:
450
+ server_info["client_info"] = {}
343
451
 
344
- save_mcp_oauth_token(self.name, server_info)
452
+ server_info["client_info"]["token_endpoint"] = token_endpoint
345
453
 
346
- return session
347
- except Exception as e:
348
- logging.error(f"Error initializing {self.name}: {e}")
349
- await self.disconnect()
350
- raise
454
+ save_mcp_oauth_token(self.name, server_info)
455
+
456
+ return session
351
457
 
352
458
  async def start_keepalive(self):
353
459
  """Start the background keepalive loop if configured."""
@@ -459,41 +565,21 @@ class HttpBasedMcpServer(McpServer):
459
565
  f"Reconnection attempt {attempt} failed for {self.name}: {e}"
460
566
  )
461
567
 
462
- async def disconnect(self, cancel_keepalive: bool = True):
463
- """
464
- Disconnect from the MCP server and clean up resources.
568
+ async def _close_session(self, cancel_keepalive: bool = True):
569
+ if cancel_keepalive and self._keepalive_task:
570
+ self._keepalive_task.cancel()
465
571
 
466
- Idempotent and safe to call from any task or thread: only one caller
467
- performs the teardown; concurrent callers (possibly on another event
468
- loop) return immediately once the session is marked gone.
469
- """
470
- with self._cleanup_lock:
471
- if self._disconnecting:
472
- self.session = None
473
- return
474
- self._disconnecting = True
572
+ try:
573
+ await asyncio.wait_for(self._keepalive_task, timeout=15)
574
+ except asyncio.CancelledError:
575
+ pass
475
576
 
476
- try:
477
- if cancel_keepalive and self._keepalive_task:
478
- self._keepalive_task.cancel()
479
- try:
480
- await asyncio.wait_for(self._keepalive_task, timeout=15)
481
- except asyncio.CancelledError:
482
- pass
483
- logger.info(f"Keepalive task stopped for {self.name}")
484
- if hasattr(self, "_oauth_shutdown"):
485
- self._oauth_shutdown()
486
- await self.exit_stack.aclose()
487
- except (asyncio.CancelledError, RuntimeError, GeneratorExit):
488
- # Expected during shutdown - anyio cancel scopes don't play
489
- # well with asyncio teardown. Resources are still cleaned up.
490
- pass
491
- except Exception as e:
492
- logging.error(f"Error during cleanup of server {self.name}: {e}")
493
- finally:
494
- self.session = None
495
- self._http_client = None
496
- self._disconnecting = False
577
+ logger.info(f"Keepalive task stopped for {self.name}")
578
+
579
+ if hasattr(self, "_oauth_shutdown"):
580
+ self._oauth_shutdown()
581
+
582
+ self._http_client = None
497
583
 
498
584
 
499
585
  class HttpStreamingServer(HttpBasedMcpServer):
@@ -507,32 +593,17 @@ class HttpStreamingServer(HttpBasedMcpServer):
507
593
  class SseServer(McpServer):
508
594
  """SSE (Server-Sent Events) MCP server using mcp.client.sse_client."""
509
595
 
510
- async def connect(self):
511
- current_loop = asyncio.get_running_loop()
512
- if self.session is not None:
513
- if self._connection_loop is current_loop:
514
- logging.info(f"Using existing session for SSE MCP server: {self.name}")
515
- return self.session
516
- logging.info(f"Reconnecting SSE MCP server {self.name} (event loop changed)")
517
- await self.disconnect()
596
+ async def _open_session(self):
597
+ url = self.config.get("url")
598
+ headers = self.config.get("headers", {})
518
599
 
519
- logging.info(f"Establishing new connection to SSE MCP server: {self.name}")
520
- try:
521
- url = self.config.get("url")
522
- headers = self.config.get("headers", {})
523
- sse_transport = await self.exit_stack.enter_async_context(
524
- sse_client(url, headers=headers)
525
- )
526
- read, write = sse_transport
527
- session = await self.exit_stack.enter_async_context(ClientSession(read, write))
528
- await session.initialize()
529
- self.session = session
530
- self._connection_loop = current_loop
531
- return session
532
- except Exception as e:
533
- logging.error(f"Error initializing SSE server {self.name}: {e}")
534
- await self.disconnect()
535
- raise
600
+ sse_transport = await self.exit_stack.enter_async_context(sse_client(url, headers=headers))
601
+ read, write = sse_transport
602
+ session = await self.exit_stack.enter_async_context(ClientSession(read, write))
603
+ await session.initialize()
604
+ self.session = session
605
+
606
+ return session
536
607
 
537
608
 
538
609
  class LocalServer(McpServer):