cecli-dev 1.5.1__tar.gz → 1.6.0rc2__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 (856) hide show
  1. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/PKG-INFO +1 -1
  2. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/_version.py +3 -3
  3. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/agent_coder.py +54 -13
  4. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/background_commands.py +123 -4
  5. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/integration.py +73 -7
  6. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/coroutines.py +24 -0
  7. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mcp/manager.py +49 -26
  8. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mcp/oauth.py +74 -18
  9. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mcp/server.py +54 -8
  10. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/command.py +154 -40
  11. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/worker.py +39 -4
  12. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/mcp.md +31 -0
  13. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/PKG-INFO +1 -1
  14. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/SOURCES.txt +1 -0
  15. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/scm_file_list.json +1 -0
  16. cecli_dev-1.6.0rc2/cecli_dev.egg-info/scm_version.json +8 -0
  17. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_background_commands.py +167 -0
  18. cecli_dev-1.6.0rc2/tests/conversations/test_background_command_injection.py +170 -0
  19. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_manager_retry.py +46 -4
  20. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_command_timeout_paging.py +46 -58
  21. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_resource_manager_paging.py +17 -7
  22. cecli_dev-1.5.1/cecli_dev.egg-info/scm_version.json +0 -8
  23. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.dockerignore +0 -0
  24. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.flake8 +0 -0
  25. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.gitattributes +0 -0
  26. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  27. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/check_pypi_version.yml +0 -0
  28. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/docker-build-test.yml +0 -0
  29. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/docker-release.yml +0 -0
  30. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/issues.yml +0 -0
  31. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/pages.yml +0 -0
  32. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/pre-commit.yml +0 -0
  33. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/release.yml +0 -0
  34. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/ubuntu-tests.yml +0 -0
  35. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/windows-tests.yml +0 -0
  36. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
  37. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.gitignore +0 -0
  38. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/.pre-commit-config.yaml +0 -0
  39. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/CHANGELOG.md +0 -0
  40. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/CNAME +0 -0
  41. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/CONTRIBUTING.md +0 -0
  42. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/HISTORY.md +0 -0
  43. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/LICENSE.txt +0 -0
  44. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/MANIFEST.in +0 -0
  45. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/README.md +0 -0
  46. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/Dockerfile +0 -0
  47. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/README.md +0 -0
  48. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/__init__.py +0 -0
  49. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/benchmark.py +0 -0
  50. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/benchmark_classic.py +0 -0
  51. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/clone-exercism.sh +0 -0
  52. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/cpp-test.sh +0 -0
  53. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/docker.sh +0 -0
  54. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/docker_build.sh +0 -0
  55. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/install-docker-ubuntu.sh +0 -0
  56. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/npm-test.sh +0 -0
  57. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/over_time.py +0 -0
  58. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/plot.sh +0 -0
  59. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/plots.py +0 -0
  60. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/problem_stats.py +0 -0
  61. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/prompts.py +0 -0
  62. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/refactor_tools.py +0 -0
  63. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/rsync.sh +0 -0
  64. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/rungrid.py +0 -0
  65. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/swe-bench-lite.txt +0 -0
  66. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/swe-bench.txt +0 -0
  67. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/swe_bench.py +0 -0
  68. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/test_benchmark.py +0 -0
  69. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/variations.1.sh +0 -0
  70. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/variations.2.sh +0 -0
  71. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/variations.3.sh +0 -0
  72. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/benchmark/variations.4.sh +0 -0
  73. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/__init__.py +0 -0
  74. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/__main__.py +0 -0
  75. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/args.py +0 -0
  76. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/args_formatter.py +0 -0
  77. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/change_tracker.py +0 -0
  78. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/__init__.py +0 -0
  79. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/architect_coder.py +0 -0
  80. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/ask_coder.py +0 -0
  81. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/base_coder.py +0 -0
  82. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/chat_chunks.py +0 -0
  83. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/context_coder.py +0 -0
  84. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/copypaste_coder.py +0 -0
  85. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editblock_coder.py +0 -0
  86. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
  87. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editblock_func_coder.py +0 -0
  88. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  89. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editor_editblock_coder.py +0 -0
  90. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/editor_whole_coder.py +0 -0
  91. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/hashline_coder.py +0 -0
  92. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/help_coder.py +0 -0
  93. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/patch_coder.py +0 -0
  94. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/search_replace.py +0 -0
  95. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/shell.py +0 -0
  96. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
  97. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/sub_agent_coder.py +0 -0
  98. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/udiff_coder.py +0 -0
  99. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/udiff_simple.py +0 -0
  100. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/wholefile_coder.py +0 -0
  101. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/coders/wholefile_func_coder.py +0 -0
  102. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/__init__.py +0 -0
  103. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/add.py +0 -0
  104. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/agent.py +0 -0
  105. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/agent_model.py +0 -0
  106. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/agent_tree.py +0 -0
  107. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/architect.py +0 -0
  108. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/ask.py +0 -0
  109. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/auto_memory.py +0 -0
  110. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/chat_mode.py +0 -0
  111. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/clear.py +0 -0
  112. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/code.py +0 -0
  113. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/command_prefix.py +0 -0
  114. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/commit.py +0 -0
  115. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/compact.py +0 -0
  116. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/context.py +0 -0
  117. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/context_blocks.py +0 -0
  118. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/context_management.py +0 -0
  119. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/copy.py +0 -0
  120. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/copy_context.py +0 -0
  121. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/core.py +0 -0
  122. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/diff.py +0 -0
  123. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/drop.py +0 -0
  124. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/editor.py +0 -0
  125. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/editor_model.py +0 -0
  126. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/exclude_skill.py +0 -0
  127. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/exit.py +0 -0
  128. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/git.py +0 -0
  129. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/hashline.py +0 -0
  130. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/help.py +0 -0
  131. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/history_search.py +0 -0
  132. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/hooks.py +0 -0
  133. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/hot_reload.py +0 -0
  134. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/import_skill.py +0 -0
  135. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/include_skill.py +0 -0
  136. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/insert_queue.py +0 -0
  137. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/lint.py +0 -0
  138. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/list_mcp.py +0 -0
  139. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/list_queue.py +0 -0
  140. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/list_sessions.py +0 -0
  141. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/list_skills.py +0 -0
  142. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/load.py +0 -0
  143. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/load_hook.py +0 -0
  144. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/load_mcp.py +0 -0
  145. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/load_session.py +0 -0
  146. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/load_skill.py +0 -0
  147. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/ls.py +0 -0
  148. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/map.py +0 -0
  149. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/map_refresh.py +0 -0
  150. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/merge.py +0 -0
  151. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/model.py +0 -0
  152. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/models.py +0 -0
  153. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/multiline_mode.py +0 -0
  154. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/paste.py +0 -0
  155. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/queue.py +0 -0
  156. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/quit.py +0 -0
  157. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/read_only.py +0 -0
  158. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/read_only_stub.py +0 -0
  159. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/reap_agent.py +0 -0
  160. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/reasoning_effort.py +0 -0
  161. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/remove_hook.py +0 -0
  162. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/remove_mcp.py +0 -0
  163. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/remove_memory.py +0 -0
  164. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/remove_queue.py +0 -0
  165. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/remove_skill.py +0 -0
  166. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/report.py +0 -0
  167. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/reset.py +0 -0
  168. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/rules.py +0 -0
  169. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/run.py +0 -0
  170. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/save.py +0 -0
  171. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/save_session.py +0 -0
  172. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/search_memory.py +0 -0
  173. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/settings.py +0 -0
  174. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/spawn_agent.py +0 -0
  175. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/switch_agent.py +0 -0
  176. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
  177. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/terminal_setup.py +0 -0
  178. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/test.py +0 -0
  179. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/think_tokens.py +0 -0
  180. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/tokens.py +0 -0
  181. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/undo.py +0 -0
  182. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/utils/__init__.py +0 -0
  183. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/utils/base_command.py +0 -0
  184. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/utils/helpers.py +0 -0
  185. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/utils/registry.py +0 -0
  186. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/utils/save_load_manager.py +0 -0
  187. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/voice.py +0 -0
  188. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/weak_model.py +0 -0
  189. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/web.py +0 -0
  190. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/commands/workspace.py +0 -0
  191. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/decoding.py +0 -0
  192. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/deprecated_args.py +0 -0
  193. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/diffs.py +0 -0
  194. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/dump.py +0 -0
  195. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/editor.py +0 -0
  196. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/exceptions.py +0 -0
  197. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/format_settings.py +0 -0
  198. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/help.py +0 -0
  199. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/help_pats.py +0 -0
  200. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/__init__.py +0 -0
  201. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/__init__.py +0 -0
  202. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/config.py +0 -0
  203. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/defaults/__init__.py +0 -0
  204. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  205. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/defaults/worker.md +0 -0
  206. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/agents/service.py +0 -0
  207. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/command_parser.py +0 -0
  208. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/command_queue.py +0 -0
  209. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/config_utils.py +0 -0
  210. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/__init__.py +0 -0
  211. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/base_message.py +0 -0
  212. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/files.py +0 -0
  213. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/manager.py +0 -0
  214. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/service.py +0 -0
  215. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/tags.py +0 -0
  216. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/conversation/utils.py +0 -0
  217. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/copypaste.py +0 -0
  218. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/crypto.py +0 -0
  219. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/extensions/__init__.py +0 -0
  220. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/extensions/skills_importer.py +0 -0
  221. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_searcher.py +0 -0
  222. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/__init__.py +0 -0
  223. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/builders.py +0 -0
  224. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/ignore.py +0 -0
  225. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
  226. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/service.py +0 -0
  227. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/file_system/trie_index.py +0 -0
  228. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
  229. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/dump.py +0 -0
  230. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  231. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/main.py +0 -0
  232. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
  233. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
  234. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/hashline.py +0 -0
  235. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/hashpos/__init__.py +0 -0
  236. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
  237. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  238. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/hashpos/transformations.py +0 -0
  239. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/io_proxy.py +0 -0
  240. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/leak_detect.py +0 -0
  241. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/__init__.py +0 -0
  242. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/aws_sigv4.py +0 -0
  243. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/config.py +0 -0
  244. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/__init__.py +0 -0
  245. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/bedrock.py +0 -0
  246. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/chat.py +0 -0
  247. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/gemini.py +0 -0
  248. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/messages.py +0 -0
  249. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/domains/responses.py +0 -0
  250. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/formatters/__init__.py +0 -0
  251. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  252. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/formatters/thinking.py +0 -0
  253. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/identifiers.py +0 -0
  254. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/litellm_compat.py +0 -0
  255. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/pipeline.py +0 -0
  256. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/__init__.py +0 -0
  257. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/anthropic.py +0 -0
  258. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/azure.py +0 -0
  259. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/base.py +0 -0
  260. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/bedrock.py +0 -0
  261. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  262. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/deepseek.py +0 -0
  263. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/gemini.py +0 -0
  264. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  265. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/meta.py +0 -0
  266. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/mistral.py +0 -0
  267. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/openai.py +0 -0
  268. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/providers/openrouter.py +0 -0
  269. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/runtime.py +0 -0
  270. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/types.py +0 -0
  271. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/llms/utils.py +0 -0
  272. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/lock_detect.py +0 -0
  273. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/loop_detect.py +0 -0
  274. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/memory/__init__.py +0 -0
  275. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/memory/db.py +0 -0
  276. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/memory/utils.py +0 -0
  277. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/memory_control.py +0 -0
  278. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/__init__.py +0 -0
  279. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/agent.py +0 -0
  280. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/api.py +0 -0
  281. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  282. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  283. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  284. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/identifiers.py +0 -0
  285. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/llm.py +0 -0
  286. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/pipeline.py +0 -0
  287. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/registry.py +0 -0
  288. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_config/utils.py +0 -0
  289. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/model_providers.py +0 -0
  290. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/nested.py +0 -0
  291. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/observations/__init__.py +0 -0
  292. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/observations/service.py +0 -0
  293. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/onboarding/__init__.py +0 -0
  294. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/onboarding/app.py +0 -0
  295. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/onboarding/providers.py +0 -0
  296. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/__init__.py +0 -0
  297. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  298. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/environment.py +0 -0
  299. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/region_resolver.py +0 -0
  300. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/safe_methods.py +0 -0
  301. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/security.py +0 -0
  302. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/service.py +0 -0
  303. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  304. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/plugin_manager.py +0 -0
  305. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/profiler.py +0 -0
  306. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/queues.py +0 -0
  307. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/requests.py +0 -0
  308. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/responses.py +0 -0
  309. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/__init__.py +0 -0
  310. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/acp/__init__.py +0 -0
  311. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/acp/bridge.py +0 -0
  312. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/acp/models.py +0 -0
  313. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/acp/protocol.py +0 -0
  314. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/signals.py +0 -0
  315. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/server/ws_server.py +0 -0
  316. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/similarity.py +0 -0
  317. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/skills.py +0 -0
  318. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/threading.py +0 -0
  319. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/workspaces/__init__.py +0 -0
  320. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/workspaces/config.py +0 -0
  321. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/workspaces/paths.py +0 -0
  322. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/workspaces/subagents.py +0 -0
  323. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/helpers/workspaces/workspace.py +0 -0
  324. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/history.py +0 -0
  325. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/__init__.py +0 -0
  326. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/base.py +0 -0
  327. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/helpers.py +0 -0
  328. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/integration.py +0 -0
  329. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/manager.py +0 -0
  330. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/registry.py +0 -0
  331. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/service.py +0 -0
  332. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/hooks/types.py +0 -0
  333. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/http.py +0 -0
  334. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/interruptible_input.py +0 -0
  335. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/io.py +0 -0
  336. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/linter.py +0 -0
  337. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/llm.py +0 -0
  338. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/main.py +0 -0
  339. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mcp/__init__.py +0 -0
  340. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mcp/utils.py +0 -0
  341. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/mdstream.py +0 -0
  342. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/models.py +0 -0
  343. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/onboarding.py +0 -0
  344. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/__init__.py +0 -0
  345. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/agent.yml +0 -0
  346. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/architect.yml +0 -0
  347. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/ask.yml +0 -0
  348. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/base.yml +0 -0
  349. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/context.yml +0 -0
  350. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/copypaste.yml +0 -0
  351. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editblock.yml +0 -0
  352. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editblock_fenced.yml +0 -0
  353. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editblock_func.yml +0 -0
  354. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
  355. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editor_editblock.yml +0 -0
  356. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/editor_whole.yml +0 -0
  357. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/hashline.yml +0 -0
  358. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/help.yml +0 -0
  359. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/patch.yml +0 -0
  360. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
  361. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/subagent.yml +0 -0
  362. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/udiff.yml +0 -0
  363. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/udiff_simple.yml +0 -0
  364. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/utils/__init__.py +0 -0
  365. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/utils/registry.py +0 -0
  366. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/utils/system.py +0 -0
  367. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/wholefile.yml +0 -0
  368. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/prompts/wholefile_func.yml +0 -0
  369. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  370. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  371. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  372. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  373. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  374. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  375. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  376. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  377. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  378. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  379. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  380. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  381. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  382. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  383. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  384. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  385. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  386. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  387. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  388. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  389. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  390. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  391. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  392. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  393. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  394. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  395. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  396. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  397. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  398. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  399. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  400. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  401. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
  402. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  403. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  404. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  405. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  406. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  407. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  408. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  409. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  410. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  411. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  412. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  413. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  414. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  415. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  416. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  417. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  418. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  419. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  420. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  421. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  422. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  423. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  424. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  425. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  426. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  427. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  428. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  429. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/reasoning_tags.py +0 -0
  430. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/repo.py +0 -0
  431. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/repomap.py +0 -0
  432. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/report.py +0 -0
  433. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/__init__.py +0 -0
  434. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/model-metadata.ext.json +0 -0
  435. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/model-metadata.json +0 -0
  436. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/model-settings-condensed.yml +0 -0
  437. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/model-settings.yml +0 -0
  438. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/resources/providers.json +0 -0
  439. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/run_cmd.py +0 -0
  440. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/scrape.py +0 -0
  441. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/sendchat.py +0 -0
  442. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/sessions.py +0 -0
  443. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/signals.py +0 -0
  444. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/special.py +0 -0
  445. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tests/test_queue_commands.py +0 -0
  446. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/__init__.py +0 -0
  447. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/_yield.py +0 -0
  448. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/broadcast.py +0 -0
  449. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/delegate.py +0 -0
  450. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/edit_file.py +0 -0
  451. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/explore_code.py +0 -0
  452. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_branch.py +0 -0
  453. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_diff.py +0 -0
  454. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_log.py +0 -0
  455. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_remote.py +0 -0
  456. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_show.py +0 -0
  457. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/git_status.py +0 -0
  458. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/grep.py +0 -0
  459. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/ls.py +0 -0
  460. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/orchestrate.py +0 -0
  461. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/read_file.py +0 -0
  462. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/replace_facts.py +0 -0
  463. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/resource_manager.py +0 -0
  464. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/search_facts.py +0 -0
  465. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/thinking.py +0 -0
  466. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/undo_change.py +0 -0
  467. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/update_todo_list.py +0 -0
  468. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/__init__.py +0 -0
  469. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/base_tool.py +0 -0
  470. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/helpers.py +0 -0
  471. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/output.py +0 -0
  472. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/registry.py +0 -0
  473. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/utils/responses.py +0 -0
  474. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/validations/__init__.py +0 -0
  475. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tools/validations/validations.py +0 -0
  476. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/__init__.py +0 -0
  477. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/app.py +0 -0
  478. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/io.py +0 -0
  479. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/styles.tcss +0 -0
  480. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/__init__.py +0 -0
  481. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/completion_bar.py +0 -0
  482. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/file_list.py +0 -0
  483. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/footer.py +0 -0
  484. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/input_area.py +0 -0
  485. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/input_container.py +0 -0
  486. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/key_hints.py +0 -0
  487. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/output.py +0 -0
  488. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/output_alt.bak +0 -0
  489. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/selectable_log.py +0 -0
  490. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/status_bar.py +0 -0
  491. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
  492. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/urls.py +0 -0
  493. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/utils.py +0 -0
  494. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/versioncheck.py +0 -0
  495. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/voice.py +0 -0
  496. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/waiting.py +0 -0
  497. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/watch.py +0 -0
  498. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/watch_prompts.py +0 -0
  499. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/blame.md +0 -0
  500. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/get-started.md +0 -0
  501. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/help-tip.md +0 -0
  502. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/help.md +0 -0
  503. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/install.md +0 -0
  504. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/keys.md +0 -0
  505. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/model-warnings.md +0 -0
  506. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/multi-line.md +0 -0
  507. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/python-m-aider.md +0 -0
  508. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/recording.css +0 -0
  509. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/recording.md +0 -0
  510. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_includes/works-best.md +0 -0
  511. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_features.scss +0 -0
  512. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_footer.scss +0 -0
  513. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_hero.scss +0 -0
  514. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_info.scss +0 -0
  515. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_layout.scss +0 -0
  516. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_reset.scss +0 -0
  517. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_testimonials.scss +0 -0
  518. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_typography.scss +0 -0
  519. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/_variables.scss +0 -0
  520. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/custom/custom.scss +0 -0
  521. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/_sass/global-overrides.scss +0 -0
  522. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docmd.config.json +0 -0
  523. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  524. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
  525. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/agent-mode.md +0 -0
  526. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/api-keys.md +0 -0
  527. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/api.md +0 -0
  528. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/conf.md +0 -0
  529. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/custom-commands.md +0 -0
  530. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  531. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/dotenv.md +0 -0
  532. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/editor.md +0 -0
  533. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/hooks.md +0 -0
  534. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/model-aliases.md +0 -0
  535. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/model-configuration.md +0 -0
  536. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/model-providers.md +0 -0
  537. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/options.md +0 -0
  538. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/persistent-memory.md +0 -0
  539. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/reasoning.md +0 -0
  540. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/retries.md +0 -0
  541. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/security.md +0 -0
  542. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/skills.md +0 -0
  543. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/subagents.md +0 -0
  544. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/tui.md +0 -0
  545. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config/workspaces.md +0 -0
  546. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/config.md +0 -0
  547. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/git.md +0 -0
  548. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/index.md +0 -0
  549. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/install/docker.md +0 -0
  550. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/install.md +0 -0
  551. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/languages.md +0 -0
  552. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  553. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/legal/privacy.md +0 -0
  554. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/anthropic.md +0 -0
  555. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/azure.md +0 -0
  556. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/bedrock.md +0 -0
  557. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/cohere.md +0 -0
  558. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/deepseek.md +0 -0
  559. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/gemini.md +0 -0
  560. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/github.md +0 -0
  561. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/groq.md +0 -0
  562. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
  563. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/ollama.md +0 -0
  564. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
  565. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/openai.md +0 -0
  566. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/opencode-go.md +0 -0
  567. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/openrouter.md +0 -0
  568. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/other.md +0 -0
  569. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/vertex.md +0 -0
  570. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/warnings.md +0 -0
  571. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms/xai.md +0 -0
  572. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/llms.md +0 -0
  573. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/more/analytics.md +0 -0
  574. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/more/edit-formats.md +0 -0
  575. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/more/infinite-output.md +0 -0
  576. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/more-info.md +0 -0
  577. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/repomap.md +0 -0
  578. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/scripting.md +0 -0
  579. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  580. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  581. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
  582. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  583. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
  584. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  585. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  586. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/troubleshooting.md +0 -0
  587. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/commands.md +0 -0
  588. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/conventions.md +0 -0
  589. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/copypaste.md +0 -0
  590. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/images-urls.md +0 -0
  591. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/lint-test.md +0 -0
  592. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/modes.md +0 -0
  593. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/not-code.md +0 -0
  594. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/notifications.md +0 -0
  595. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/optional.md +0 -0
  596. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/sessions.md +0 -0
  597. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/tips.md +0 -0
  598. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/voice.md +0 -0
  599. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage/watch.md +0 -0
  600. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/docs/usage.md +0 -0
  601. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/package-lock.json +0 -0
  602. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/package.json +0 -0
  603. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli/website/share/index.md +0 -0
  604. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
  605. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
  606. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/requires.txt +0 -0
  607. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/cecli_dev.egg-info/top_level.txt +0 -0
  608. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/docker/Dockerfile +0 -0
  609. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  610. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/pyproject.toml +0 -0
  611. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/pytest.ini +0 -0
  612. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/common-constraints.txt +0 -0
  613. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-dev.in +0 -0
  614. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-dev.txt +0 -0
  615. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-help.in +0 -0
  616. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-help.txt +0 -0
  617. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-playwright.in +0 -0
  618. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements-playwright.txt +0 -0
  619. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/requirements.in +0 -0
  620. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements/tree-sitter.in +0 -0
  621. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/requirements.txt +0 -0
  622. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/30k-image.py +0 -0
  623. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/__init__.py +0 -0
  624. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/blame.py +0 -0
  625. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/clean_metadata.py +0 -0
  626. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/compare-message-history.py +0 -0
  627. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/condense_model_settings.py +0 -0
  628. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/cost_analyzer.py +0 -0
  629. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/cost_calculator.py +0 -0
  630. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/dl_icons.py +0 -0
  631. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/docmd_build.sh +0 -0
  632. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/filter-chat-mode.js +0 -0
  633. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/generate_providers.py +0 -0
  634. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/get_contributor_list.js +0 -0
  635. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/get_hashline.py +0 -0
  636. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/history_prompts.py +0 -0
  637. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/homepage.py +0 -0
  638. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/issues.py +0 -0
  639. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/logo_svg.py +0 -0
  640. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/optimize_tokens.sh +0 -0
  641. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/pip-compile.sh +0 -0
  642. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/recording_audio.py +0 -0
  643. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/redact-cast.py +0 -0
  644. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/rename_to_cecli.py +0 -0
  645. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/tmux_record.sh +0 -0
  646. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/tsl_pack_langs.py +0 -0
  647. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/update-blame.sh +0 -0
  648. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/update-docs.sh +0 -0
  649. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/update-history.py +0 -0
  650. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/versionbump.py +0 -0
  651. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/scripts/yank-old-versions.py +0 -0
  652. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/setup.cfg +0 -0
  653. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/shim.pyproject.toml +0 -0
  654. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/__init__.py +0 -0
  655. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/__init__.py +0 -0
  656. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/conftest.py +0 -0
  657. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_agent_config_merge.py +0 -0
  658. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_aws_credentials.py +0 -0
  659. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_coder.py +0 -0
  660. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_commands.py +0 -0
  661. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_custom_commands.py +0 -0
  662. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_deprecated.py +0 -0
  663. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_editblock.py +0 -0
  664. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_editor.py +0 -0
  665. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_exceptions.py +0 -0
  666. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_file_system_service.py +0 -0
  667. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_find_or_blocks.py +0 -0
  668. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_hashline.py +0 -0
  669. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_hashline_closure.py +0 -0
  670. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_history.py +0 -0
  671. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_io.py +0 -0
  672. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_linter.py +0 -0
  673. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_main.py +0 -0
  674. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_model_info_manager.py +0 -0
  675. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_model_provider_manager.py +0 -0
  676. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_models.py +0 -0
  677. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_onboarding.py +0 -0
  678. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_plugin_manager.py +0 -0
  679. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_prompts.py +0 -0
  680. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_reasoning.py +0 -0
  681. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_repo.py +0 -0
  682. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_repomap.py +0 -0
  683. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_run_cmd.py +0 -0
  684. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_sanity_check_repo.py +0 -0
  685. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_scripting.py +0 -0
  686. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_select_selector.py +0 -0
  687. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_sendchat.py +0 -0
  688. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_session_args.py +0 -0
  689. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_session_crypto.py +0 -0
  690. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_sessions.py +0 -0
  691. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_sessions_manager.py +0 -0
  692. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_skills.py +0 -0
  693. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_special.py +0 -0
  694. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_spinner.py +0 -0
  695. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_ssl_verification.py +0 -0
  696. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_udiff.py +0 -0
  697. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_urls.py +0 -0
  698. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_voice.py +0 -0
  699. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_watch.py +0 -0
  700. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/basic/test_wholefile.py +0 -0
  701. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/coders/test_coder_switching.py +0 -0
  702. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/coders/test_copypaste_coder.py +0 -0
  703. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/coders/test_rate_limit.py +0 -0
  704. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/coders/test_tool_call_consolidation.py +0 -0
  705. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_auto_memory.py +0 -0
  706. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_compaction.py +0 -0
  707. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_remove_memory.py +0 -0
  708. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_search_memory.py +0 -0
  709. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_switch_agent.py +0 -0
  710. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_voice.py +0 -0
  711. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/commands/test_workspace.py +0 -0
  712. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/conftest.py +0 -0
  713. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/conversations/test_conversation_integration.py +0 -0
  714. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/conversations/test_conversation_system.py +0 -0
  715. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  716. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/chat-history.md +0 -0
  717. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
  718. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/bash/test.sh +0 -0
  719. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/c/test.c +0 -0
  720. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
  721. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
  722. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  723. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
  724. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
  725. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/d/test.d +0 -0
  726. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/dart/test.dart +0 -0
  727. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/elisp/test.el +0 -0
  728. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
  729. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/elm/test.elm +0 -0
  730. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
  731. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/go/test.go +0 -0
  732. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
  733. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
  734. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/java/test.java +0 -0
  735. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/javascript/test.js +0 -0
  736. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
  737. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/lua/test.lua +0 -0
  738. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/matlab/test.m +0 -0
  739. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
  740. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  741. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/php/test.php +0 -0
  742. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/pony/test.pony +0 -0
  743. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/properties/test.properties +0 -0
  744. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/python/test.py +0 -0
  745. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/ql/test.ql +0 -0
  746. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/r/test.r +0 -0
  747. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
  748. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
  749. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/rust/test.rs +0 -0
  750. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/scala/test.scala +0 -0
  751. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
  752. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/swift/test.swift +0 -0
  753. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
  754. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
  755. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/udev/test.rules +0 -0
  756. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/languages/zig/test.zig +0 -0
  757. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
  758. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
  759. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  760. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/watch.js +0 -0
  761. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/watch.lisp +0 -0
  762. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/watch.py +0 -0
  763. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/fixtures/watch_question.js +0 -0
  764. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/help/test_help.py +0 -0
  765. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/observations/test_observation_service.py +0 -0
  766. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/server/acp/__init__.py +0 -0
  767. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/server/acp/test_bridge.py +0 -0
  768. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/server/acp/test_dispatch.py +0 -0
  769. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/server/acp/test_models.py +0 -0
  770. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/server/acp/test_protocol.py +0 -0
  771. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_api_base.py +0 -0
  772. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  773. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_cache_control.py +0 -0
  774. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_gemini_auth.py +0 -0
  775. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  776. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_hyperscalers.py +0 -0
  777. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_messages_stream.py +0 -0
  778. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_messages_wire.py +0 -0
  779. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  780. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_mistral_provider.py +0 -0
  781. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_providers_json.py +0 -0
  782. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_reasoning_config.py +0 -0
  783. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  784. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  785. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_llms_vision.py +0 -0
  786. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_loop_detect.py +0 -0
  787. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_memory_control.py +0 -0
  788. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_model_config.py +0 -0
  789. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_onboarding.py +0 -0
  790. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_orchestration.py +0 -0
  791. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/test_skills_importer.py +0 -0
  792. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/workspaces/conftest.py +0 -0
  793. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/workspaces/test_config.py +0 -0
  794. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/workspaces/test_paths.py +0 -0
  795. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/workspaces/test_subagents.py +0 -0
  796. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  797. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/hooks/__init__.py +0 -0
  798. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/hooks/test_base.py +0 -0
  799. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/hooks/test_manager.py +0 -0
  800. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/hooks/test_registry.py +0 -0
  801. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/integration/test_agent_mcp_management.py +0 -0
  802. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/integration/test_config_loading.py +0 -0
  803. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/integration/test_mcp_management.py +0 -0
  804. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/__init__.py +0 -0
  805. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/conftest.py +0 -0
  806. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/mock_server.py +0 -0
  807. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_concurrency.py +0 -0
  808. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_config.py +0 -0
  809. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_integration.py +0 -0
  810. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_logging.py +0 -0
  811. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_resilience.py +0 -0
  812. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_keepalive_unit.py +0 -0
  813. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_manager.py +0 -0
  814. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_server_name_normalization.py +0 -0
  815. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/mcp/test_server_sdk_compat.py +0 -0
  816. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/scrape/test_playwright_disable.py +0 -0
  817. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/scrape/test_scrape.py +0 -0
  818. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/__init__.py +0 -0
  819. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/conftest.py +0 -0
  820. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_commands.py +0 -0
  821. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_config.py +0 -0
  822. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_delegate.py +0 -0
  823. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_finished.py +0 -0
  824. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_io_proxy.py +0 -0
  825. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_service.py +0 -0
  826. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
  827. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/test_requests.py +0 -0
  828. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_command_format_output.py +0 -0
  829. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_edit_file_format_output.py +0 -0
  830. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_extractions.py +0 -0
  831. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_get_lines.py +0 -0
  832. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_git_branch.py +0 -0
  833. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_git_diff.py +0 -0
  834. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_grep.py +0 -0
  835. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_insert_block.py +0 -0
  836. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_read_range_execute.py +0 -0
  837. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_registry.py +0 -0
  838. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_remove_mcp_tool.py +0 -0
  839. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_tool_arguments.py +0 -0
  840. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  841. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tools/validations.py +0 -0
  842. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tui/test_app.py +0 -0
  843. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/tui/test_completion_bar.py +0 -0
  844. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/conftest.py +0 -0
  845. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_deep_merge.py +0 -0
  846. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_edge_cases.py +0 -0
  847. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_load_mcp.py +0 -0
  848. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_performance.py +0 -0
  849. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_queues.py +0 -0
  850. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_remove_mcp.py +0 -0
  851. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_retry_backoff.py +0 -0
  852. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_shallow_merge.py +0 -0
  853. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_signals.py +0 -0
  854. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  855. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  856. {cecli_dev-1.5.1 → cecli_dev-1.6.0rc2}/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.5.1
3
+ Version: 1.6.0rc2
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.5.1'
22
- __version_tuple__ = version_tuple = (1, 5, 1)
21
+ __version__ = version = '1.6.0rc2'
22
+ __version_tuple__ = version_tuple = (1, 6, 0, 'rc2')
23
23
 
24
- __commit_id__ = commit_id = 'g17d4bc7df'
24
+ __commit_id__ = commit_id = 'g24cf3948a'
@@ -652,6 +652,10 @@ class AgentCoder(Coder):
652
652
  # Add post-message context blocks (priority 250 - between CUR and REMINDER)
653
653
  ConversationService.get_chunks(self).add_post_message_context_blocks()
654
654
 
655
+ # Background command output is debounced independently so it is not
656
+ # re-dumped every turn as its contents mutate slightly
657
+ ConversationService.get_chunks(self).add_background_command_output()
658
+
655
659
  # Add sub-agent states context block (same priority as post-message blocks)
656
660
  ConversationService.get_chunks(self).add_sub_agent_states()
657
661
 
@@ -1845,25 +1849,44 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1845
1849
  """
1846
1850
  Get background command output to append after the main message.
1847
1851
 
1848
- Returns:
1849
- String containing formatted background command output, or empty string if none
1852
+ Emits a roster of active commands (keeping command keys in context)
1853
+ plus any new incremental output. Output that has been paged to disk is
1854
+ advertised by command key and read on demand through ``ResourceManager``
1855
+ paging.
1850
1856
  """
1851
- # Get output from all running background commands
1852
- bg_outputs = BackgroundCommandManager.get_all_command_outputs(clear=True)
1857
+ command_info = BackgroundCommandManager.list_background_commands()
1853
1858
 
1854
- if not bg_outputs:
1859
+ if not command_info:
1855
1860
  return ""
1856
1861
 
1857
- # Get command info to show actual command strings
1858
- command_info = BackgroundCommandManager.list_background_commands()
1862
+ new_outputs = {}
1863
+ for command_key in command_info:
1864
+ output = BackgroundCommandManager.get_new_command_output(command_key)
1865
+ if output.strip():
1866
+ new_outputs[command_key] = output
1859
1867
 
1860
- # Create formatted output for background commands
1861
1868
  output = "--- Background Commands Output ---\n"
1862
- for command_key, cmd_output in bg_outputs.items():
1863
- if cmd_output.strip(): # Only add if there's output
1864
- # Get the actual command string if available
1865
- command_str = command_info.get(command_key, {}).get("command", command_key)
1866
- output += f"\n[bg: {command_str}]\n{cmd_output}\n"
1869
+ output += "Commands:\n"
1870
+
1871
+ paged_keys = []
1872
+ for command_key, info in sorted(command_info.items()):
1873
+ status = "running" if info.get("running", False) else "finished"
1874
+ pages = info.get("pages", 0)
1875
+ page_note = f"pages 1-{pages}" if pages else "no pages yet"
1876
+ output += (
1877
+ f"- {command_key} [{status}] `{info.get('command', command_key)}`"
1878
+ f" — {info.get('total_chars', 0):,} chars, {page_note}\n"
1879
+ )
1880
+ if pages:
1881
+ paged_keys.append(command_key)
1882
+
1883
+ for command_key, cmd_output in new_outputs.items():
1884
+ output += f"\nNew output ({command_key}):\n{cmd_output}\n"
1885
+
1886
+ if paged_keys:
1887
+ output += "\nPaged output is available via `ResourceManager` (up to 3 pages):\n"
1888
+ for command_key in paged_keys:
1889
+ output += f'{{"paging": [{{"target": "{command_key}", "page": 1}}]}}\n'
1867
1890
 
1868
1891
  # Clean up stale (finished) background commands after reading their output
1869
1892
  for command_key, info in command_info.items():
@@ -1872,6 +1895,24 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
1872
1895
 
1873
1896
  return output
1874
1897
 
1898
+ def get_background_command_state(self):
1899
+ """
1900
+ Return a lightweight status snapshot of tracked background commands.
1901
+
1902
+ Maps each command key to its running state and page count so the
1903
+ injection layer can detect finish and page-flush transitions cheaply
1904
+ without consuming any output.
1905
+ """
1906
+ command_info = BackgroundCommandManager.list_background_commands()
1907
+
1908
+ return {
1909
+ key: {
1910
+ "running": bool(info.get("running", False)),
1911
+ "pages": info.get("pages", 0),
1912
+ }
1913
+ for key, info in command_info.items()
1914
+ }
1915
+
1875
1916
  def get_git_status(self):
1876
1917
  """
1877
1918
  Generate a git status context block for repository information.
@@ -106,6 +106,110 @@ class CircularBuffer:
106
106
  return len(self.buffer)
107
107
 
108
108
 
109
+ class PagedOutputBuffer:
110
+ """
111
+ Thread-safe output window that spills full pages to disk.
112
+
113
+ Output accumulates in memory until it reaches ``page_size`` characters.
114
+ Full pages are written to ``pages_dir`` as ``{n}.txt`` and dropped from
115
+ memory, so the in-memory window never grows beyond ``page_size``. Unlike
116
+ ``CircularBuffer``, ``total_added`` is a monotonic stream offset that is
117
+ never reset, so incremental readers can resume after content has been
118
+ flushed; anything older than the in-memory window lives on disk.
119
+ """
120
+
121
+ def __init__(self, page_size: int = 4096, pages_dir: Optional[str] = None):
122
+ self.page_size = max(1, int(page_size))
123
+ self.pages_dir = pages_dir
124
+ self.buffer = deque()
125
+ self.lock = threading.Lock()
126
+ self.total_added = 0
127
+ self.window_start = 0
128
+ self.page_count = 0
129
+
130
+ def append(self, text: str) -> None:
131
+ """Append text, spilling full pages to disk once the window fills."""
132
+ if not text:
133
+ return
134
+
135
+ with self.lock:
136
+ self.buffer.extend(text)
137
+ self.total_added += len(text)
138
+
139
+ if self.total_added - self.window_start >= self.page_size:
140
+ self._spill_locked()
141
+
142
+ def get_all(self, clear: bool = False) -> str:
143
+ """Return the in-memory window (content not yet flushed to disk)."""
144
+ with self.lock:
145
+ result = "".join(self.buffer)
146
+
147
+ if clear:
148
+ self.buffer.clear()
149
+ self.window_start = self.total_added
150
+
151
+ return result
152
+
153
+ def get_new_output(self, last_read_position: int) -> Tuple[str, int]:
154
+ """Return window content past ``last_read_position`` and the new offset.
155
+
156
+ Content older than the window has already been paged to disk, so the
157
+ read position is clamped forward to the window start rather than
158
+ replaying bytes that are only available as pages.
159
+ """
160
+ with self.lock:
161
+ if last_read_position >= self.total_added:
162
+ return "", self.total_added
163
+
164
+ start = max(last_read_position, self.window_start)
165
+ new_output = "".join(self.buffer)[start - self.window_start :]
166
+
167
+ return new_output, self.total_added
168
+
169
+ def clear(self) -> None:
170
+ """Drop the in-memory window; flushed pages are unaffected."""
171
+ with self.lock:
172
+ self.buffer.clear()
173
+ self.window_start = self.total_added
174
+
175
+ def size(self) -> int:
176
+ """Get current buffer size in characters."""
177
+ with self.lock:
178
+ return len(self.buffer)
179
+
180
+ def _spill_locked(self) -> None:
181
+ content = "".join(self.buffer)
182
+
183
+ if not self.pages_dir:
184
+ # Without a page directory, retain only the newest page in memory.
185
+ if len(content) > self.page_size:
186
+ dropped = len(content) - self.page_size
187
+ content = content[dropped:]
188
+ self.window_start += dropped
189
+ self.buffer = deque(content)
190
+
191
+ return
192
+
193
+ while len(content) >= self.page_size:
194
+ page = content[: self.page_size]
195
+ content = content[self.page_size :]
196
+ self.page_count += 1
197
+ self._write_page_locked(self.page_count, page)
198
+ self.window_start += self.page_size
199
+
200
+ self.buffer = deque(content)
201
+
202
+ def _write_page_locked(self, page_number: int, content: str) -> None:
203
+ os.makedirs(self.pages_dir, exist_ok=True)
204
+ abs_path = os.path.join(self.pages_dir, f"{page_number}.txt")
205
+ tmp_path = f"{abs_path}.tmp"
206
+
207
+ with safe_open(tmp_path, "w") as page_file:
208
+ page_file.write(content)
209
+
210
+ os.replace(tmp_path, abs_path)
211
+
212
+
109
213
  class InputBuffer:
110
214
  """
111
215
  Thread-safe buffer for queuing input to be sent to a process.
@@ -442,6 +546,9 @@ class BackgroundCommandManager:
442
546
  existing_input_buffer: Optional[InputBuffer] = None,
443
547
  use_pty: bool = False,
444
548
  master_fd: Optional[int] = None,
549
+ command_key: Optional[str] = None,
550
+ page_size: Optional[int] = None,
551
+ pages_dir: Optional[str] = None,
445
552
  ) -> str:
446
553
  """
447
554
  Start a command in background.
@@ -452,15 +559,23 @@ class BackgroundCommandManager:
452
559
  cwd: Working directory for command
453
560
  max_buffer_size: Maximum buffer size for output
454
561
  existing_process: Optional existing subprocess.Popen to register
455
- existing_buffer: Optional existing CircularBuffer to use
562
+ existing_buffer: Optional existing buffer to use (CircularBuffer or PagedOutputBuffer)
456
563
  persist: If True, output buffer won't be cleared when read
564
+ command_key: Optional pre-generated command key; generated when omitted
565
+ page_size: Characters per page when paging output to disk
566
+ pages_dir: Directory where full output pages are written
457
567
 
458
568
  Returns:
459
569
  Command key for future reference
460
570
  """
461
571
  try:
462
- # Use existing buffer or create new one
463
- buffer = existing_buffer or CircularBuffer(max_size=max_buffer_size)
572
+ # Use existing buffer or create a paged/circular one
573
+ if existing_buffer is not None:
574
+ buffer = existing_buffer
575
+ elif page_size and pages_dir:
576
+ buffer = PagedOutputBuffer(page_size=page_size, pages_dir=pages_dir)
577
+ else:
578
+ buffer = CircularBuffer(max_size=max_buffer_size)
464
579
 
465
580
  # Use existing process or start new one
466
581
  # Use provided master_fd (e.g., from _execute_with_timeout) or default to None
@@ -523,7 +638,7 @@ class BackgroundCommandManager:
523
638
  )
524
639
 
525
640
  # Generate unique key and store
526
- command_key = cls._generate_command_key(command)
641
+ command_key = command_key or cls._generate_command_key(command)
527
642
 
528
643
  with cls._lock:
529
644
  cls._background_commands[command_key] = bg_process
@@ -691,6 +806,10 @@ class BackgroundCommandManager:
691
806
  "command": bg_process.command,
692
807
  "running": bg_process.is_alive(),
693
808
  "buffer_size": bg_process.buffer.size(),
809
+ "pages": getattr(bg_process.buffer, "page_count", 0),
810
+ "total_chars": getattr(
811
+ bg_process.buffer, "total_added", bg_process.buffer.size()
812
+ ),
694
813
  "start_time": bg_process.start_time,
695
814
  "end_time": bg_process.end_time,
696
815
  "duration": (
@@ -930,7 +930,9 @@ class ConversationChunks:
930
930
  """
931
931
  Add post-message context blocks to conversation (priority 250).
932
932
 
933
- Post-message blocks include: tool_context/write_context, background_command_output
933
+ Post-message blocks include: todo_list, context_summary, tool_context,
934
+ and write_context. Background command output is injected separately via
935
+ ``add_background_command_output`` with its own debounce.
934
936
  """
935
937
  coder = self.get_coder()
936
938
  if not coder:
@@ -972,12 +974,6 @@ class ConversationChunks:
972
974
  if write_context:
973
975
  message_blocks["write_context"] = write_context
974
976
 
975
- # Add background command output if any
976
- if hasattr(coder, "get_background_command_output"):
977
- bg_output = coder.get_background_command_output()
978
- if bg_output:
979
- message_blocks["background_command_output"] = bg_output
980
-
981
977
  # Add post-message blocks to conversation manager with stable hash keys
982
978
  for block_type, block_content in message_blocks.items():
983
979
  ConversationService.get_manager(coder).add_message(
@@ -989,6 +985,56 @@ class ConversationChunks:
989
985
  force=True,
990
986
  )
991
987
 
988
+ def add_background_command_output(self, frequency=5):
989
+ """
990
+ Inject background command output at most once every ``frequency`` turns,
991
+ except when a command finishes or flushes a new page. Those transitions
992
+ bypass the debounce so important changes surface immediately.
993
+
994
+ Debounced independently from the other post-message blocks: the injected
995
+ content mutates slightly as commands produce output, so re-adding it
996
+ every turn would churn the conversation tail without the usual hash-key
997
+ deduplication catching it.
998
+ """
999
+ coder = self.get_coder()
1000
+ if not coder:
1001
+ return
1002
+
1003
+ if not hasattr(coder, "use_enhanced_context") or not coder.use_enhanced_context:
1004
+ return
1005
+
1006
+ if not hasattr(coder, "get_background_command_output"):
1007
+ return
1008
+
1009
+ last_turn = self.message_tracker.get("background_command_output")
1010
+ due = last_turn is None or coder.turn_count - last_turn >= frequency
1011
+
1012
+ previous_state = self.message_tracker.get("background_command_state")
1013
+ state = None
1014
+ if hasattr(coder, "get_background_command_state"):
1015
+ state = coder.get_background_command_state()
1016
+
1017
+ significant = self._has_background_signal(previous_state, state)
1018
+ if state is not None:
1019
+ self.message_tracker["background_command_state"] = state
1020
+
1021
+ if not significant and not due:
1022
+ return
1023
+
1024
+ bg_output = coder.get_background_command_output()
1025
+ if not bg_output:
1026
+ return
1027
+
1028
+ self.message_tracker["background_command_output"] = coder.turn_count
1029
+ ConversationService.get_manager(coder).add_message(
1030
+ message_dict={"role": "user", "content": bg_output},
1031
+ tag=MessageTag.STATIC,
1032
+ priority=DEFAULT_TAG_PRIORITY[MessageTag.REMINDER] + 25,
1033
+ mark_for_delete=0,
1034
+ hash_key=("post_message", "background_command_output"),
1035
+ force=True,
1036
+ )
1037
+
992
1038
  def add_sub_agent_states(self) -> None:
993
1039
  """
994
1040
  Add sub-agent states context block to conversation (priority 250).
@@ -1056,6 +1102,26 @@ class ConversationChunks:
1056
1102
 
1057
1103
  return not should_send
1058
1104
 
1105
+ @staticmethod
1106
+ def _has_background_signal(previous, current):
1107
+ """Return True when a command finished or flushed a new page since ``previous``."""
1108
+ if not current or not previous:
1109
+ return False
1110
+
1111
+ for key, info in current.items():
1112
+ prior = previous.get(key)
1113
+
1114
+ if prior is None:
1115
+ return True
1116
+
1117
+ if prior.get("running") and not info.get("running"):
1118
+ return True
1119
+
1120
+ if info.get("pages", 0) > prior.get("pages", 0):
1121
+ return True
1122
+
1123
+ return False
1124
+
1059
1125
  def _cancel_post_message_injections(self, modulus=10):
1060
1126
  coder = self.get_coder()
1061
1127
  if not coder:
@@ -109,3 +109,27 @@ async def interruptible(coroutine, interrupt_event):
109
109
  return main_task.result(), False
110
110
  except asyncio.CancelledError:
111
111
  return None, True
112
+
113
+
114
+ def task_is_cancelling() -> bool:
115
+ """Return True when the running asyncio task has a pending cancellation.
116
+
117
+ Used to tell a genuine cancellation of the caller apart from cancellation
118
+ errors that transports (e.g. MCP's anyio TaskGroups) surface for ordinary
119
+ connection failures.
120
+
121
+ Reliable on Python 3.11+ (``Task.cancelling()``). On 3.10 there is no public
122
+ signal: ``_must_cancel`` is already cleared by the time the CancelledError is
123
+ delivered, so this is best-effort and usually reports False. Callers must
124
+ therefore treat False as "not known to be cancelling" rather than proof.
125
+ """
126
+ task = asyncio.current_task()
127
+ if task is None:
128
+ return False
129
+
130
+ cancelling_fn = getattr(task, "cancelling", None)
131
+ if cancelling_fn is not None:
132
+ return cancelling_fn() > 0
133
+
134
+ # Python 3.10 fallback: best-effort only (see docstring).
135
+ return bool(getattr(task, "_must_cancel", False))
@@ -1,8 +1,13 @@
1
1
  import asyncio
2
2
 
3
- from cecli.mcp.server import LocalServer, McpServer
3
+ from cecli.helpers.coroutines import task_is_cancelling
4
+ from cecli.mcp.server import DEFAULT_MCP_REQUEST_TIMEOUT, LocalServer, McpServer
4
5
  from cecli.tools.utils.registry import ToolRegistry
5
6
 
7
+ # Slack added on top of a server's request timeout for the connect/list_tools
8
+ # backstop, covering time the transport spends outside the SDK's read timeout.
9
+ CONNECT_BACKSTOP_GRACE_SECONDS = 5
10
+
6
11
 
7
12
  class McpServerManager:
8
13
  """
@@ -196,48 +201,66 @@ class McpServerManager:
196
201
  return True
197
202
 
198
203
  # Retry with exponential backoff for transient connection failures.
199
- # Note: This also fixes a latent bug where asyncio.CancelledError was
200
- # silently caught and treated as a connection failure. CancelledError is
201
- # now re-raised to properly propagate cancellation.
204
+ # A genuine cancellation must still propagate, but some transports
205
+ # (MCP's streamable-HTTP runs its writer inside an anyio TaskGroup)
206
+ # surface ordinary connection failures as CancelledError, so only a
207
+ # real cancellation of this task is re-raised.
202
208
  # When io is None (e.g., during from_servers before IO is assigned),
203
209
  # _log_warning and _log_error silently return — retries still happen
204
210
  # but with no user-visible feedback. This is intentional.
205
- max_retries = 3 if server.name != "unnamed-server" else 1
211
+ is_unnamed = server.name == "unnamed-server"
212
+ max_retries = 1 if is_unnamed else 3
206
213
  delay = 1.0
207
214
  backoff = 2.0
208
215
  max_delay = 30.0
216
+ # Bound each attempt so a server that accepts a connection but never
217
+ # speaks MCP cannot wedge startup. The SDK read timeout usually fires
218
+ # first; this wait_for is a backstop for hangs inside the transport.
219
+ try:
220
+ base_timeout = float(server._request_timeout_seconds())
221
+ except (TypeError, ValueError):
222
+ base_timeout = DEFAULT_MCP_REQUEST_TIMEOUT
223
+
224
+ if base_timeout <= 0:
225
+ base_timeout = DEFAULT_MCP_REQUEST_TIMEOUT
226
+
227
+ attempt_timeout = base_timeout + CONNECT_BACKSTOP_GRACE_SECONDS
209
228
 
210
229
  for attempt in range(1, max_retries + 1):
230
+
211
231
  try:
212
- session = await server.connect()
213
- tools_result = await session.list_tools()
232
+ session = await asyncio.wait_for(server.connect(), timeout=attempt_timeout)
233
+ tools_result = await asyncio.wait_for(session.list_tools(), timeout=attempt_timeout)
214
234
  tools = _mcp_tools_to_openai_tools(tools_result.tools)
215
235
  self._server_tools[server.name] = tools
216
236
  self._connected_servers.add(server)
217
237
  self._log_verbose(f"Connected to MCP server: {name}")
218
238
  return True
219
239
  except asyncio.CancelledError:
220
- raise
240
+ if task_is_cancelling():
241
+ raise
242
+ error = "connection cancelled by transport"
221
243
  except Exception as e:
222
- if attempt < max_retries and server.name != "unnamed-server":
223
- self._log_warning(
224
- f"Connection attempt {attempt} failed for {name}, "
225
- f"retrying in {delay}s... ({e})"
226
- )
244
+ error = e
227
245
 
228
- await asyncio.sleep(delay)
229
- delay = min(delay * backoff, max_delay)
230
- else:
231
- if server.name != "unnamed-server":
232
- self._log_error(
233
- f"Failed to connect to MCP server {name} "
234
- f"after {max_retries} attempts: {e}"
235
- )
236
- if server.is_connected:
237
- # Session was established but tool listing failed; tear
238
- # it down so the transport/subprocess doesn't leak.
239
- await server.disconnect()
240
- return False
246
+ if attempt < max_retries:
247
+ self._log_warning(
248
+ f"Connection attempt {attempt} failed for {name}, "
249
+ f"retrying in {delay}s... ({error})"
250
+ )
251
+ await asyncio.sleep(delay)
252
+ delay = min(delay * backoff, max_delay)
253
+ else:
254
+ if not is_unnamed:
255
+ self._log_error(
256
+ f"Failed to connect to MCP server {name} "
257
+ f"after {max_retries} attempts: {error}"
258
+ )
259
+ if server.is_connected:
260
+ # Session was established but tool listing failed; tear
261
+ # it down so the transport/subprocess doesn't leak.
262
+ await server.disconnect()
263
+ return False
241
264
 
242
265
  async def disconnect_server(self, name: str) -> bool:
243
266
  """
@@ -14,21 +14,33 @@ from mcp.shared.auth import OAuthClientInformationFull, OAuthToken
14
14
 
15
15
  from cecli.decoding import safe_open
16
16
 
17
+ # How long ``ensure_started`` waits for the callback listener to bind before
18
+ # giving up so the browser redirect can't race the listener coming up.
19
+ CALLBACK_BIND_TIMEOUT_SECONDS = 5
17
20
 
18
- def create_oauth_callback_server(
19
- port, path="/callback"
20
- ) -> Tuple[Callable[[], Awaitable[Tuple[str, str]]], Callable[[], None]]:
21
+
22
+ def create_oauth_callback_server(port, path="/callback") -> Tuple[
23
+ Callable[[], Awaitable[Tuple[str, str]]],
24
+ Callable[[], None],
25
+ Callable[[], None],
26
+ ]:
21
27
  """
22
28
  Create a local HTTP server to handle OAuth callback.
23
29
 
30
+ The listener is started lazily via the returned ``ensure_started`` callable
31
+ so servers that never actually trigger OAuth don't leave a daemon HTTP
32
+ server (and its bound port) running for the life of the process.
33
+
24
34
  Returns:
25
- Tuple of (async callback handler function, shutdown function)
35
+ Tuple of (async callback handler, shutdown function, start function)
26
36
  """
27
37
  auth_code = None
28
38
  state = None
29
39
  server_error = None
30
40
  callback_received = threading.Event()
31
41
  server = None
42
+ server_started = threading.Event()
43
+ start_lock = threading.Lock()
32
44
 
33
45
  class OAuthCallbackHandler(http.server.SimpleHTTPRequestHandler):
34
46
  def do_GET(self):
@@ -78,27 +90,60 @@ def create_oauth_callback_server(
78
90
  def log_message(self, format, *args):
79
91
  pass
80
92
 
81
- # Start server in a separate thread
82
93
  def start_server():
83
- nonlocal server
94
+ nonlocal server, server_error
95
+ srv = None
84
96
  try:
85
- server = socketserver.TCPServer(("localhost", port), OAuthCallbackHandler)
86
- server.serve_forever()
97
+ srv = socketserver.TCPServer(("localhost", port), OAuthCallbackHandler)
98
+ server = srv
99
+ server_started.set()
100
+ srv.serve_forever()
87
101
  except Exception as e:
88
- server_error = f"Server error: {e}" # noqa
102
+ server_error = f"Server error: {e}"
103
+ server_started.set()
89
104
  callback_received.set()
105
+ finally:
106
+ _close_quietly(srv)
107
+
108
+ def ensure_started():
109
+ """Start the callback listener once, blocking briefly for the bind."""
110
+ with start_lock:
111
+ if server_started.is_set():
112
+ return
90
113
 
91
- server_thread = threading.Thread(target=start_server, daemon=True)
92
- server_thread.start()
114
+ threading.Thread(target=start_server, daemon=True, name="oauth-callback-server").start()
115
+
116
+ # Wait for the bind to complete so the browser redirect cannot race the
117
+ # listener coming up.
118
+ server_started.wait(timeout=CALLBACK_BIND_TIMEOUT_SECONDS)
93
119
 
94
- # Shutdown function
95
120
  def shutdown():
121
+ """Stop the callback listener. Idempotent and safe to call repeatedly.
122
+
123
+ ``socketserver.shutdown()`` blocks until ``serve_forever`` exits; async
124
+ callers must run this in a thread (see ``asyncio.to_thread``) so a stuck
125
+ listener can never wedge the event loop.
126
+ """
96
127
  nonlocal server
97
- if server:
98
- server.shutdown()
128
+ with start_lock:
129
+ srv = server
99
130
  server = None
100
131
 
132
+ if srv is None:
133
+ return
134
+
135
+ try:
136
+ srv.shutdown()
137
+ except Exception:
138
+ pass
139
+ finally:
140
+ _close_quietly(srv)
141
+
101
142
  async def get_auth_code() -> Tuple[str, str]:
143
+ # Backstop for callers that didn't start the listener via the redirect
144
+ # handler first (e.g. a resumed flow).
145
+ ensure_started()
146
+
102
147
  # Wait for callback to be received
103
148
  MINUTES = 5
104
149
  timeout = MINUTES * 60
@@ -106,23 +151,23 @@ def create_oauth_callback_server(
106
151
  start_time = time.time()
107
152
  while not callback_received.is_set():
108
153
  if time.time() - start_time > timeout:
109
- shutdown()
154
+ await asyncio.to_thread(shutdown)
110
155
  raise Exception(f"OAuth callback timed out after {MINUTES} minutes")
111
156
 
112
157
  # Small sleep to avoid busy waiting
113
158
  await asyncio.sleep(0.1)
114
159
 
115
160
  if server_error:
116
- shutdown()
161
+ await asyncio.to_thread(shutdown)
117
162
  raise Exception(server_error)
118
163
 
119
164
  if not auth_code:
120
- shutdown()
165
+ await asyncio.to_thread(shutdown)
121
166
  raise Exception("No authorization code received")
122
167
 
123
168
  return auth_code, state
124
169
 
125
- return get_auth_code, shutdown
170
+ return get_auth_code, shutdown, ensure_started
126
171
 
127
172
 
128
173
  def get_token_file_path():
@@ -225,3 +270,14 @@ class FileBasedTokenStorage(TokenStorage):
225
270
 
226
271
  all_tokens[self.server_name]["client_info"] = json.loads(client_info.model_dump_json())
227
272
  save_mcp_oauth_tokens(all_tokens)
273
+
274
+
275
+ def _close_quietly(server) -> None:
276
+ """Close an HTTP server socket, ignoring a missing server or close errors."""
277
+ if server is None:
278
+ return
279
+
280
+ try:
281
+ server.server_close()
282
+ except Exception:
283
+ pass