cecli-dev 1.8.1rc1__tar.gz → 1.8.1rc3__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 (902) hide show
  1. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/PKG-INFO +1 -1
  2. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/_version.py +3 -3
  3. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/args.py +2 -6
  4. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/base_coder.py +27 -2
  5. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/service.py +34 -11
  6. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/io_proxy.py +22 -1
  7. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/litellm_compat.py +33 -18
  8. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/queues.py +67 -20
  9. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/service.py +40 -1
  10. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/config.py +13 -2
  11. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/main.py +51 -16
  12. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/watch.py +10 -1
  13. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/scheduler.md +6 -14
  14. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/workflows.md +5 -4
  15. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/PKG-INFO +1 -1
  16. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/SOURCES.txt +1 -0
  17. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/scm_file_list.json +1 -0
  18. cecli_dev-1.8.1rc3/cecli_dev.egg-info/scm_version.json +8 -0
  19. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_agent_config_merge.py +1 -0
  20. cecli_dev-1.8.1rc3/tests/basic/test_scheduler_config.py +96 -0
  21. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_watch.py +28 -0
  22. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/observations/test_observation_service.py +45 -0
  23. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_service.py +61 -0
  24. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_config.py +38 -0
  25. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_io_proxy.py +41 -0
  26. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_service.py +108 -0
  27. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_queues.py +64 -0
  28. cecli_dev-1.8.1rc1/cecli_dev.egg-info/scm_version.json +0 -8
  29. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.dockerignore +0 -0
  30. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.flake8 +0 -0
  31. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.gitattributes +0 -0
  32. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  33. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/check_pypi_version.yml +0 -0
  34. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/docker-build-test.yml +0 -0
  35. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/docker-release.yml +0 -0
  36. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/issues.yml +0 -0
  37. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/pages.yml +0 -0
  38. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/pre-commit.yml +0 -0
  39. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/release.yml +0 -0
  40. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/ubuntu-tests.yml +0 -0
  41. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/windows-tests.yml +0 -0
  42. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.github/workflows/windows_check_pypi_version.yml +0 -0
  43. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.gitignore +0 -0
  44. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/.pre-commit-config.yaml +0 -0
  45. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/CHANGELOG.md +0 -0
  46. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/CNAME +0 -0
  47. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/CONTRIBUTING.md +0 -0
  48. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/HISTORY.md +0 -0
  49. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/LICENSE.txt +0 -0
  50. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/MANIFEST.in +0 -0
  51. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/README.md +0 -0
  52. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/Dockerfile +0 -0
  53. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/README.md +0 -0
  54. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/__init__.py +0 -0
  55. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/benchmark.py +0 -0
  56. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/benchmark_classic.py +0 -0
  57. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/clone-exercism.sh +0 -0
  58. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/cpp-test.sh +0 -0
  59. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/docker.sh +0 -0
  60. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/docker_build.sh +0 -0
  61. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/install-docker-ubuntu.sh +0 -0
  62. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/npm-test.sh +0 -0
  63. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/over_time.py +0 -0
  64. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/plot.sh +0 -0
  65. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/plots.py +0 -0
  66. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/problem_stats.py +0 -0
  67. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/prompts.py +0 -0
  68. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/refactor_tools.py +0 -0
  69. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/rsync.sh +0 -0
  70. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/rungrid.py +0 -0
  71. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/swe-bench-lite.txt +0 -0
  72. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/swe-bench.txt +0 -0
  73. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/swe_bench.py +0 -0
  74. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/test_benchmark.py +0 -0
  75. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/variations.1.sh +0 -0
  76. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/variations.2.sh +0 -0
  77. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/variations.3.sh +0 -0
  78. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/benchmark/variations.4.sh +0 -0
  79. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/__init__.py +0 -0
  80. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/__main__.py +0 -0
  81. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/args_formatter.py +0 -0
  82. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/change_tracker.py +0 -0
  83. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/__init__.py +0 -0
  84. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/agent_coder.py +0 -0
  85. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/architect_coder.py +0 -0
  86. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/ask_coder.py +0 -0
  87. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/chat_chunks.py +0 -0
  88. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/context_coder.py +0 -0
  89. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/copypaste_coder.py +0 -0
  90. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_coder.py +0 -0
  91. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_fenced_coder.py +0 -0
  92. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_func_coder.py +0 -0
  93. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  94. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editor_editblock_coder.py +0 -0
  95. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/editor_whole_coder.py +0 -0
  96. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/hashline_coder.py +0 -0
  97. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/help_coder.py +0 -0
  98. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/patch_coder.py +0 -0
  99. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/search_replace.py +0 -0
  100. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/shell.py +0 -0
  101. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/single_wholefile_func_coder.py +0 -0
  102. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/sub_agent_coder.py +0 -0
  103. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/udiff_coder.py +0 -0
  104. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/udiff_simple.py +0 -0
  105. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/wholefile_coder.py +0 -0
  106. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/coders/wholefile_func_coder.py +0 -0
  107. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/__init__.py +0 -0
  108. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/add.py +0 -0
  109. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/agent.py +0 -0
  110. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/agent_model.py +0 -0
  111. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/agent_tree.py +0 -0
  112. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/architect.py +0 -0
  113. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/ask.py +0 -0
  114. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/auto_memory.py +0 -0
  115. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/chat_mode.py +0 -0
  116. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/clear.py +0 -0
  117. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/code.py +0 -0
  118. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/command_prefix.py +0 -0
  119. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/commit.py +0 -0
  120. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/compact.py +0 -0
  121. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/context.py +0 -0
  122. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/context_blocks.py +0 -0
  123. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/context_management.py +0 -0
  124. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/copy.py +0 -0
  125. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/copy_context.py +0 -0
  126. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/core.py +0 -0
  127. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/diff.py +0 -0
  128. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/drop.py +0 -0
  129. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/editor.py +0 -0
  130. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/editor_model.py +0 -0
  131. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/exclude_skill.py +0 -0
  132. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/exit.py +0 -0
  133. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/git.py +0 -0
  134. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/hashline.py +0 -0
  135. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/help.py +0 -0
  136. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/history_search.py +0 -0
  137. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/hooks.py +0 -0
  138. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/hot_reload.py +0 -0
  139. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/import_skill.py +0 -0
  140. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/include_skill.py +0 -0
  141. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/insert_queue.py +0 -0
  142. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/lint.py +0 -0
  143. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/list_mcp.py +0 -0
  144. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/list_queue.py +0 -0
  145. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/list_sessions.py +0 -0
  146. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/list_skills.py +0 -0
  147. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/load.py +0 -0
  148. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/load_hook.py +0 -0
  149. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/load_mcp.py +0 -0
  150. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/load_session.py +0 -0
  151. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/load_skill.py +0 -0
  152. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/ls.py +0 -0
  153. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/map.py +0 -0
  154. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/map_refresh.py +0 -0
  155. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/merge.py +0 -0
  156. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/model.py +0 -0
  157. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/models.py +0 -0
  158. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/multiline_mode.py +0 -0
  159. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/paste.py +0 -0
  160. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/queue.py +0 -0
  161. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/quit.py +0 -0
  162. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/read_only.py +0 -0
  163. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/read_only_stub.py +0 -0
  164. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/reap_agent.py +0 -0
  165. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/reasoning_effort.py +0 -0
  166. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/remove_hook.py +0 -0
  167. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/remove_mcp.py +0 -0
  168. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/remove_memory.py +0 -0
  169. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/remove_queue.py +0 -0
  170. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/remove_skill.py +0 -0
  171. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/report.py +0 -0
  172. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/reset.py +0 -0
  173. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/rules.py +0 -0
  174. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/run.py +0 -0
  175. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/save.py +0 -0
  176. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/save_session.py +0 -0
  177. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/search_memory.py +0 -0
  178. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/settings.py +0 -0
  179. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/spawn_agent.py +0 -0
  180. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/switch_agent.py +0 -0
  181. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/terminal_data/linux.keytab +0 -0
  182. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/terminal_setup.py +0 -0
  183. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/test.py +0 -0
  184. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/think_tokens.py +0 -0
  185. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/tokens.py +0 -0
  186. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/undo.py +0 -0
  187. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/utils/__init__.py +0 -0
  188. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/utils/base_command.py +0 -0
  189. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/utils/helpers.py +0 -0
  190. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/utils/registry.py +0 -0
  191. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/utils/save_load_manager.py +0 -0
  192. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/voice.py +0 -0
  193. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/weak_model.py +0 -0
  194. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/web.py +0 -0
  195. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/workflows.py +0 -0
  196. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/commands/workspace.py +0 -0
  197. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/decoding.py +0 -0
  198. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/deprecated_args.py +0 -0
  199. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/diffs.py +0 -0
  200. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/dump.py +0 -0
  201. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/editor.py +0 -0
  202. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/exceptions.py +0 -0
  203. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/format_settings.py +0 -0
  204. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/help.py +0 -0
  205. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/help_pats.py +0 -0
  206. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/__init__.py +0 -0
  207. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/__init__.py +0 -0
  208. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/config.py +0 -0
  209. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/__init__.py +0 -0
  210. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  211. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/worker.md +0 -0
  212. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/background_commands.py +0 -0
  213. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/command_parser.py +0 -0
  214. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/command_queue.py +0 -0
  215. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/config_utils.py +0 -0
  216. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/__init__.py +0 -0
  217. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/base_message.py +0 -0
  218. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/files.py +0 -0
  219. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/integration.py +0 -0
  220. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/manager.py +0 -0
  221. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/service.py +0 -0
  222. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/tags.py +0 -0
  223. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/utils.py +0 -0
  224. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/copypaste.py +0 -0
  225. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/coroutines.py +0 -0
  226. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/crypto.py +0 -0
  227. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/extensions/__init__.py +0 -0
  228. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/extensions/skills_importer.py +0 -0
  229. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_searcher.py +0 -0
  230. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/__init__.py +0 -0
  231. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/builders.py +0 -0
  232. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/ignore.py +0 -0
  233. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/ngram_index.py +0 -0
  234. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/service.py +0 -0
  235. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/trie_index.py +0 -0
  236. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/__init__.py +0 -0
  237. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/dump.py +0 -0
  238. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  239. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/main.py +0 -0
  240. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/parsers.py +0 -0
  241. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/tsl.py +0 -0
  242. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/hashline.py +0 -0
  243. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/__init__.py +0 -0
  244. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/hashpos.py +0 -0
  245. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  246. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/transformations.py +0 -0
  247. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/leak_detect.py +0 -0
  248. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/__init__.py +0 -0
  249. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/aws_sigv4.py +0 -0
  250. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/config.py +0 -0
  251. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/constants.py +0 -0
  252. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/__init__.py +0 -0
  253. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/bedrock.py +0 -0
  254. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/chat.py +0 -0
  255. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/gemini.py +0 -0
  256. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/messages.py +0 -0
  257. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/responses.py +0 -0
  258. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/__init__.py +0 -0
  259. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  260. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/thinking.py +0 -0
  261. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/identifiers.py +0 -0
  262. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/pipeline.py +0 -0
  263. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/__init__.py +0 -0
  264. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/anthropic.py +0 -0
  265. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/azure.py +0 -0
  266. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/base.py +0 -0
  267. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/bedrock.py +0 -0
  268. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  269. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/deepseek.py +0 -0
  270. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/gemini.py +0 -0
  271. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  272. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/meta.py +0 -0
  273. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/mistral.py +0 -0
  274. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/ollama.py +0 -0
  275. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/openai.py +0 -0
  276. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/openrouter.py +0 -0
  277. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/runtime.py +0 -0
  278. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/types.py +0 -0
  279. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/utils.py +0 -0
  280. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/lock_detect.py +0 -0
  281. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/loop_detect.py +0 -0
  282. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/__init__.py +0 -0
  283. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/db.py +0 -0
  284. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/utils.py +0 -0
  285. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/memory_control.py +0 -0
  286. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/__init__.py +0 -0
  287. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/agent.py +0 -0
  288. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/api.py +0 -0
  289. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  290. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  291. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  292. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/identifiers.py +0 -0
  293. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/llm.py +0 -0
  294. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/pipeline.py +0 -0
  295. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/registry.py +0 -0
  296. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/utils.py +0 -0
  297. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/model_providers.py +0 -0
  298. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/nested.py +0 -0
  299. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/observations/__init__.py +0 -0
  300. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/observations/service.py +0 -0
  301. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/__init__.py +0 -0
  302. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/app.py +0 -0
  303. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/providers.py +0 -0
  304. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/__init__.py +0 -0
  305. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  306. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/environment.py +0 -0
  307. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/region_resolver.py +0 -0
  308. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/safe_methods.py +0 -0
  309. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/security.py +0 -0
  310. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/service.py +0 -0
  311. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  312. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/plugin_manager.py +0 -0
  313. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/profiler.py +0 -0
  314. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/requests.py +0 -0
  315. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/responses.py +0 -0
  316. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/__init__.py +0 -0
  317. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/cron.py +0 -0
  318. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/db.py +0 -0
  319. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/lock.py +0 -0
  320. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/__init__.py +0 -0
  321. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/__init__.py +0 -0
  322. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/bridge.py +0 -0
  323. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/models.py +0 -0
  324. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/protocol.py +0 -0
  325. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/signals.py +0 -0
  326. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/server/ws_server.py +0 -0
  327. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/__init__.py +0 -0
  328. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/layout.py +0 -0
  329. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/manager.py +0 -0
  330. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/payload.py +0 -0
  331. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/storage.py +0 -0
  332. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/subagents.py +0 -0
  333. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/similarity.py +0 -0
  334. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/skills.py +0 -0
  335. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/__init__.py +0 -0
  336. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/api.py +0 -0
  337. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/client.py +0 -0
  338. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/config.py +0 -0
  339. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/integrations.py +0 -0
  340. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/types.py +0 -0
  341. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/threading.py +0 -0
  342. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/__init__.py +0 -0
  343. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/logs.py +0 -0
  344. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/models.py +0 -0
  345. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/outputs.py +0 -0
  346. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/runner.py +0 -0
  347. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/subagents.py +0 -0
  348. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/__init__.py +0 -0
  349. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/config.py +0 -0
  350. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/paths.py +0 -0
  351. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/subagents.py +0 -0
  352. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/workspace.py +0 -0
  353. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/history.py +0 -0
  354. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/__init__.py +0 -0
  355. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/base.py +0 -0
  356. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/helpers.py +0 -0
  357. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/integration.py +0 -0
  358. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/manager.py +0 -0
  359. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/registry.py +0 -0
  360. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/service.py +0 -0
  361. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/hooks/types.py +0 -0
  362. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/http.py +0 -0
  363. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/interruptible_input.py +0 -0
  364. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/io.py +0 -0
  365. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/linter.py +0 -0
  366. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/llm.py +0 -0
  367. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mcp/__init__.py +0 -0
  368. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mcp/manager.py +0 -0
  369. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mcp/oauth.py +0 -0
  370. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mcp/server.py +0 -0
  371. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mcp/utils.py +0 -0
  372. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/mdstream.py +0 -0
  373. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/models.py +0 -0
  374. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/onboarding.py +0 -0
  375. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/__init__.py +0 -0
  376. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/agent.yml +0 -0
  377. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/architect.yml +0 -0
  378. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/ask.yml +0 -0
  379. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/base.yml +0 -0
  380. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/context.yml +0 -0
  381. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/copypaste.yml +0 -0
  382. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock.yml +0 -0
  383. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock_fenced.yml +0 -0
  384. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock_func.yml +0 -0
  385. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_diff_fenced.yml +0 -0
  386. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_editblock.yml +0 -0
  387. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_whole.yml +0 -0
  388. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/hashline.yml +0 -0
  389. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/help.yml +0 -0
  390. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/patch.yml +0 -0
  391. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/single_wholefile_func.yml +0 -0
  392. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/subagent.yml +0 -0
  393. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/udiff.yml +0 -0
  394. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/udiff_simple.yml +0 -0
  395. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/__init__.py +0 -0
  396. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/registry.py +0 -0
  397. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/system.py +0 -0
  398. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/wholefile.yml +0 -0
  399. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/prompts/wholefile_func.yml +0 -0
  400. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  401. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  402. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  403. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  404. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  405. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  406. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  407. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  408. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  409. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  410. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  411. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  412. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  413. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  414. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  415. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  416. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  417. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  418. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  419. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  420. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  421. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  422. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  423. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  424. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  425. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  426. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  427. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  428. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  429. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  430. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  431. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  432. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/README.md +0 -0
  433. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  434. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  435. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  436. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  437. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  438. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  439. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  440. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  441. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  442. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  443. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  444. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  445. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  446. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  447. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  448. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  449. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  450. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  451. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  452. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  453. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  454. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  455. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  456. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  457. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  458. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  459. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  460. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/reasoning_tags.py +0 -0
  461. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/repo.py +0 -0
  462. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/repomap.py +0 -0
  463. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/report.py +0 -0
  464. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/__init__.py +0 -0
  465. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/model-metadata.ext.json +0 -0
  466. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/model-metadata.json +0 -0
  467. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/model-settings-condensed.yml +0 -0
  468. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/model-settings.yml +0 -0
  469. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/resources/providers.json +0 -0
  470. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/run_cmd.py +0 -0
  471. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/scrape.py +0 -0
  472. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/sendchat.py +0 -0
  473. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/signals.py +0 -0
  474. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/special.py +0 -0
  475. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tests/test_queue_commands.py +0 -0
  476. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/__init__.py +0 -0
  477. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/_yield.py +0 -0
  478. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/broadcast.py +0 -0
  479. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/command.py +0 -0
  480. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/delegate.py +0 -0
  481. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/edit_file.py +0 -0
  482. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/explore_code.py +0 -0
  483. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_branch.py +0 -0
  484. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_diff.py +0 -0
  485. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_log.py +0 -0
  486. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_remote.py +0 -0
  487. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_show.py +0 -0
  488. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/git_status.py +0 -0
  489. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/grep.py +0 -0
  490. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/ls.py +0 -0
  491. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/orchestrate.py +0 -0
  492. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/read_file.py +0 -0
  493. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/replace_facts.py +0 -0
  494. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/resource_manager.py +0 -0
  495. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/search_facts.py +0 -0
  496. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/thinking.py +0 -0
  497. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/undo_change.py +0 -0
  498. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/update_todo_list.py +0 -0
  499. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/__init__.py +0 -0
  500. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/base_tool.py +0 -0
  501. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/helpers.py +0 -0
  502. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/output.py +0 -0
  503. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/registry.py +0 -0
  504. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/utils/responses.py +0 -0
  505. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/validations/__init__.py +0 -0
  506. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tools/validations/validations.py +0 -0
  507. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/__init__.py +0 -0
  508. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/app.py +0 -0
  509. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/io.py +0 -0
  510. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/styles.tcss +0 -0
  511. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/__init__.py +0 -0
  512. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/completion_bar.py +0 -0
  513. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/file_list.py +0 -0
  514. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/footer.py +0 -0
  515. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/input_area.py +0 -0
  516. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/input_container.py +0 -0
  517. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/key_hints.py +0 -0
  518. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/output.py +0 -0
  519. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/output_alt.bak +0 -0
  520. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/selectable_log.py +0 -0
  521. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/status_bar.py +0 -0
  522. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/subagent_pills.py +0 -0
  523. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/thin_scrollbar.py +0 -0
  524. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/tui/worker.py +0 -0
  525. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/urls.py +0 -0
  526. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/utils.py +0 -0
  527. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/versioncheck.py +0 -0
  528. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/voice.py +0 -0
  529. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/waiting.py +0 -0
  530. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/watch_prompts.py +0 -0
  531. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/blame.md +0 -0
  532. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/get-started.md +0 -0
  533. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/help-tip.md +0 -0
  534. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/help.md +0 -0
  535. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/install.md +0 -0
  536. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/keys.md +0 -0
  537. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/model-warnings.md +0 -0
  538. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/multi-line.md +0 -0
  539. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/python-m-aider.md +0 -0
  540. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/recording.css +0 -0
  541. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/recording.md +0 -0
  542. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_includes/works-best.md +0 -0
  543. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_features.scss +0 -0
  544. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_footer.scss +0 -0
  545. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_hero.scss +0 -0
  546. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_info.scss +0 -0
  547. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_layout.scss +0 -0
  548. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_reset.scss +0 -0
  549. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_testimonials.scss +0 -0
  550. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_typography.scss +0 -0
  551. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_variables.scss +0 -0
  552. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/custom/custom.scss +0 -0
  553. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/_sass/global-overrides.scss +0 -0
  554. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docmd.config.json +0 -0
  555. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  556. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/adv-model-settings.md +0 -0
  557. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/agent-mode.md +0 -0
  558. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/api-keys.md +0 -0
  559. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/api.md +0 -0
  560. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/conf.md +0 -0
  561. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/custom-commands.md +0 -0
  562. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  563. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/dotenv.md +0 -0
  564. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/editor.md +0 -0
  565. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/hooks.md +0 -0
  566. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/mcp.md +0 -0
  567. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-aliases.md +0 -0
  568. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-configuration.md +0 -0
  569. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-providers.md +0 -0
  570. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/options.md +0 -0
  571. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/persistent-memory.md +0 -0
  572. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/reasoning.md +0 -0
  573. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/retries.md +0 -0
  574. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/security.md +0 -0
  575. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/skills.md +0 -0
  576. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/subagents.md +0 -0
  577. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/system-one.md +0 -0
  578. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/tui.md +0 -0
  579. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/workspaces.md +0 -0
  580. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/config.md +0 -0
  581. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/git.md +0 -0
  582. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/index.md +0 -0
  583. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/install/docker.md +0 -0
  584. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/install.md +0 -0
  585. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/languages.md +0 -0
  586. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  587. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/legal/privacy.md +0 -0
  588. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/anthropic.md +0 -0
  589. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/azure.md +0 -0
  590. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/bedrock.md +0 -0
  591. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/cohere.md +0 -0
  592. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/deepseek.md +0 -0
  593. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/gemini.md +0 -0
  594. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/github.md +0 -0
  595. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/groq.md +0 -0
  596. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/lm-studio.md +0 -0
  597. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/ollama.md +0 -0
  598. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openai-compat.md +0 -0
  599. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openai.md +0 -0
  600. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/opencode-go.md +0 -0
  601. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openrouter.md +0 -0
  602. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/other.md +0 -0
  603. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/vertex.md +0 -0
  604. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/warnings.md +0 -0
  605. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/xai.md +0 -0
  606. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms.md +0 -0
  607. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/analytics.md +0 -0
  608. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/edit-formats.md +0 -0
  609. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/infinite-output.md +0 -0
  610. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/more-info.md +0 -0
  611. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/repomap.md +0 -0
  612. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/scripting.md +0 -0
  613. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  614. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  615. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/imports.md +0 -0
  616. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  617. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/support.md +0 -0
  618. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  619. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  620. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting.md +0 -0
  621. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/commands.md +0 -0
  622. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/conventions.md +0 -0
  623. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/copypaste.md +0 -0
  624. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/images-urls.md +0 -0
  625. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/lint-test.md +0 -0
  626. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/modes.md +0 -0
  627. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/not-code.md +0 -0
  628. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/notifications.md +0 -0
  629. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/optional.md +0 -0
  630. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/sessions.md +0 -0
  631. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/voice.md +0 -0
  632. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/watch.md +0 -0
  633. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage.md +0 -0
  634. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/package-lock.json +0 -0
  635. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/package.json +0 -0
  636. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli/website/share/index.md +0 -0
  637. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/dependency_links.txt +0 -0
  638. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/entry_points.txt +0 -0
  639. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/requires.txt +0 -0
  640. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/top_level.txt +0 -0
  641. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/docker/Dockerfile +0 -0
  642. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  643. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/pyproject.toml +0 -0
  644. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/pytest.ini +0 -0
  645. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/common-constraints.txt +0 -0
  646. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-dev.in +0 -0
  647. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-dev.txt +0 -0
  648. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-help.in +0 -0
  649. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-help.txt +0 -0
  650. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-playwright.in +0 -0
  651. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements-playwright.txt +0 -0
  652. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/requirements.in +0 -0
  653. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements/tree-sitter.in +0 -0
  654. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/requirements.txt +0 -0
  655. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/30k-image.py +0 -0
  656. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/__init__.py +0 -0
  657. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/blame.py +0 -0
  658. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/clean_metadata.py +0 -0
  659. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/compare-message-history.py +0 -0
  660. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/condense_model_settings.py +0 -0
  661. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/cost_analyzer.py +0 -0
  662. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/cost_calculator.py +0 -0
  663. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/dl_icons.py +0 -0
  664. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/docmd_build.sh +0 -0
  665. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/filter-chat-mode.js +0 -0
  666. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/generate_providers.py +0 -0
  667. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/get_contributor_list.js +0 -0
  668. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/get_hashline.py +0 -0
  669. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/history_prompts.py +0 -0
  670. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/homepage.py +0 -0
  671. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/issues.py +0 -0
  672. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/logo_svg.py +0 -0
  673. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/optimize_tokens.sh +0 -0
  674. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/pip-compile.sh +0 -0
  675. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/recording_audio.py +0 -0
  676. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/redact-cast.py +0 -0
  677. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/rename_to_cecli.py +0 -0
  678. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/tmux_record.sh +0 -0
  679. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/tsl_pack_langs.py +0 -0
  680. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/update-blame.sh +0 -0
  681. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/update-docs.sh +0 -0
  682. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/update-history.py +0 -0
  683. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/versionbump.py +0 -0
  684. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/scripts/yank-old-versions.py +0 -0
  685. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/setup.cfg +0 -0
  686. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/shim.pyproject.toml +0 -0
  687. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/__init__.py +0 -0
  688. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/__init__.py +0 -0
  689. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/conftest.py +0 -0
  690. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_aws_credentials.py +0 -0
  691. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_background_commands.py +0 -0
  692. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_coder.py +0 -0
  693. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_commands.py +0 -0
  694. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_custom_commands.py +0 -0
  695. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_deprecated.py +0 -0
  696. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_editblock.py +0 -0
  697. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_editor.py +0 -0
  698. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_empty_response.py +0 -0
  699. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_exceptions.py +0 -0
  700. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_file_system_service.py +0 -0
  701. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_find_or_blocks.py +0 -0
  702. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_hashline.py +0 -0
  703. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_hashline_closure.py +0 -0
  704. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_history.py +0 -0
  705. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_io.py +0 -0
  706. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_linter.py +0 -0
  707. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_main.py +0 -0
  708. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_model_info_manager.py +0 -0
  709. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_model_provider_manager.py +0 -0
  710. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_models.py +0 -0
  711. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_onboarding.py +0 -0
  712. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_plugin_manager.py +0 -0
  713. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_prompts.py +0 -0
  714. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_reasoning.py +0 -0
  715. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_repo.py +0 -0
  716. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_repomap.py +0 -0
  717. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_retry_config.py +0 -0
  718. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_run_cmd.py +0 -0
  719. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_sanity_check_repo.py +0 -0
  720. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_scripting.py +0 -0
  721. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_select_selector.py +0 -0
  722. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_sendchat.py +0 -0
  723. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_session_args.py +0 -0
  724. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_session_crypto.py +0 -0
  725. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_sessions.py +0 -0
  726. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_sessions_manager.py +0 -0
  727. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_skills.py +0 -0
  728. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_special.py +0 -0
  729. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_spinner.py +0 -0
  730. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_ssl_verification.py +0 -0
  731. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_system_one.py +0 -0
  732. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_udiff.py +0 -0
  733. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_urls.py +0 -0
  734. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_voice.py +0 -0
  735. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/basic/test_wholefile.py +0 -0
  736. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/coders/test_coder_switching.py +0 -0
  737. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/coders/test_copypaste_coder.py +0 -0
  738. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/coders/test_rate_limit.py +0 -0
  739. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/coders/test_tool_call_consolidation.py +0 -0
  740. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_auto_memory.py +0 -0
  741. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_compaction.py +0 -0
  742. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_remove_memory.py +0 -0
  743. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_search_memory.py +0 -0
  744. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_switch_agent.py +0 -0
  745. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_voice.py +0 -0
  746. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_workflows.py +0 -0
  747. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/commands/test_workspace.py +0 -0
  748. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/conftest.py +0 -0
  749. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/conversations/test_background_command_injection.py +0 -0
  750. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/conversations/test_conversation_integration.py +0 -0
  751. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/conversations/test_conversation_system.py +0 -0
  752. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  753. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/chat-history.md +0 -0
  754. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/arduino/test.ino +0 -0
  755. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/bash/test.sh +0 -0
  756. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/c/test.c +0 -0
  757. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/chatito/test.chatito +0 -0
  758. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/clojure/test.clj +0 -0
  759. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  760. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/cpp/test.cpp +0 -0
  761. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/csharp/test.cs +0 -0
  762. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/d/test.d +0 -0
  763. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/dart/test.dart +0 -0
  764. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elisp/test.el +0 -0
  765. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elixir/test.ex +0 -0
  766. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elm/test.elm +0 -0
  767. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/gleam/test.gleam +0 -0
  768. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/go/test.go +0 -0
  769. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/haskell/test.hs +0 -0
  770. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/hcl/test.tf +0 -0
  771. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/java/test.java +0 -0
  772. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/javascript/test.js +0 -0
  773. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/kotlin/test.kt +0 -0
  774. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/lua/test.lua +0 -0
  775. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/matlab/test.m +0 -0
  776. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ocaml/test.ml +0 -0
  777. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  778. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/php/test.php +0 -0
  779. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/pony/test.pony +0 -0
  780. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/properties/test.properties +0 -0
  781. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/python/test.py +0 -0
  782. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ql/test.ql +0 -0
  783. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/r/test.r +0 -0
  784. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/racket/test.rkt +0 -0
  785. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ruby/test.rb +0 -0
  786. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/rust/test.rs +0 -0
  787. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/scala/test.scala +0 -0
  788. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/solidity/test.sol +0 -0
  789. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/swift/test.swift +0 -0
  790. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/tsx/test.tsx +0 -0
  791. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/typescript/test.ts +0 -0
  792. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/udev/test.rules +0 -0
  793. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/zig/test.zig +0 -0
  794. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base/sample.js +0 -0
  795. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base/sample.py +0 -0
  796. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  797. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.js +0 -0
  798. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.lisp +0 -0
  799. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.py +0 -0
  800. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/fixtures/watch_question.js +0 -0
  801. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/help/test_help.py +0 -0
  802. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/__init__.py +0 -0
  803. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_cron.py +0 -0
  804. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_db.py +0 -0
  805. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/__init__.py +0 -0
  806. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_bridge.py +0 -0
  807. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_dispatch.py +0 -0
  808. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_models.py +0 -0
  809. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_protocol.py +0 -0
  810. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_api_base.py +0 -0
  811. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  812. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_cache_control.py +0 -0
  813. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_gemini_auth.py +0 -0
  814. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  815. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_hyperscalers.py +0 -0
  816. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_messages_stream.py +0 -0
  817. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_messages_wire.py +0 -0
  818. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  819. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_mistral_provider.py +0 -0
  820. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_ollama_native.py +0 -0
  821. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_providers_json.py +0 -0
  822. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_config.py +0 -0
  823. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  824. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  825. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_vision.py +0 -0
  826. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_loop_detect.py +0 -0
  827. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_memory_control.py +0 -0
  828. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_model_config.py +0 -0
  829. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_onboarding.py +0 -0
  830. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_orchestration.py +0 -0
  831. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/test_skills_importer.py +0 -0
  832. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/__init__.py +0 -0
  833. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_runner.py +0 -0
  834. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_subagents.py +0 -0
  835. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/conftest.py +0 -0
  836. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_config.py +0 -0
  837. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_paths.py +0 -0
  838. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_subagents.py +0 -0
  839. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  840. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/hooks/__init__.py +0 -0
  841. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/hooks/test_base.py +0 -0
  842. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/hooks/test_manager.py +0 -0
  843. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/hooks/test_registry.py +0 -0
  844. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/integration/test_agent_mcp_management.py +0 -0
  845. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/integration/test_config_loading.py +0 -0
  846. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/integration/test_mcp_management.py +0 -0
  847. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/integration/test_workflows_e2e.py +0 -0
  848. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/__init__.py +0 -0
  849. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/conftest.py +0 -0
  850. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/mock_server.py +0 -0
  851. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_concurrency.py +0 -0
  852. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_config.py +0 -0
  853. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_integration.py +0 -0
  854. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_logging.py +0 -0
  855. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_resilience.py +0 -0
  856. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_unit.py +0 -0
  857. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_manager.py +0 -0
  858. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_manager_retry.py +0 -0
  859. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_server_name_normalization.py +0 -0
  860. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_server_sdk_compat.py +0 -0
  861. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/mcp/test_tool_name_sanitization.py +0 -0
  862. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/scrape/test_playwright_disable.py +0 -0
  863. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/scrape/test_scrape.py +0 -0
  864. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/__init__.py +0 -0
  865. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/conftest.py +0 -0
  866. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_commands.py +0 -0
  867. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_config.py +0 -0
  868. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_delegate.py +0 -0
  869. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_finished.py +0 -0
  870. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/subagents/test_sub_agent_coder.py +0 -0
  871. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/test_requests.py +0 -0
  872. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_command_format_output.py +0 -0
  873. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_command_timeout_paging.py +0 -0
  874. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_edit_file_format_output.py +0 -0
  875. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_extractions.py +0 -0
  876. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_get_lines.py +0 -0
  877. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_git_branch.py +0 -0
  878. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_git_diff.py +0 -0
  879. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_grep.py +0 -0
  880. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_insert_block.py +0 -0
  881. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_read_range_execute.py +0 -0
  882. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_registry.py +0 -0
  883. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_remove_mcp_tool.py +0 -0
  884. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_resource_manager_paging.py +0 -0
  885. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_tool_arguments.py +0 -0
  886. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  887. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tools/validations.py +0 -0
  888. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tui/test_app.py +0 -0
  889. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tui/test_completion_bar.py +0 -0
  890. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/tui/test_output.py +0 -0
  891. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/conftest.py +0 -0
  892. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_deep_merge.py +0 -0
  893. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_edge_cases.py +0 -0
  894. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_load_mcp.py +0 -0
  895. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_performance.py +0 -0
  896. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_remove_mcp.py +0 -0
  897. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_retry_backoff.py +0 -0
  898. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_shallow_merge.py +0 -0
  899. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_signals.py +0 -0
  900. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  901. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  902. {cecli_dev-1.8.1rc1 → cecli_dev-1.8.1rc3}/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.8.1rc1
3
+ Version: 1.8.1rc3
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.8.1rc1'
22
- __version_tuple__ = version_tuple = (1, 8, 1, 'rc1')
21
+ __version__ = version = '1.8.1rc3'
22
+ __version_tuple__ = version_tuple = (1, 8, 1, 'rc3')
23
23
 
24
- __commit_id__ = commit_id = 'g15af71fcd'
24
+ __commit_id__ = commit_id = 'gb07a9f6ad'
@@ -440,13 +440,9 @@ def get_parser(default_config_files, git_root):
440
440
  )
441
441
  group.add_argument(
442
442
  "--scheduler",
443
- action=argparse.BooleanOptionalAction,
443
+ metavar="SCHEDULER_CONFIG_JSON",
444
+ help="Specify scheduler configuration as a JSON string",
444
445
  default=None,
445
- help=(
446
- "Force the workflow scheduler on (--scheduler) or off (--no-scheduler) for"
447
- " this session. (default: auto, on when any enabled scheduled workflow"
448
- " exists)"
449
- ),
450
446
  )
451
447
  group.add_argument(
452
448
  "--system-one",
@@ -2253,6 +2253,31 @@ class Coder(metaclass=UsageMeta):
2253
2253
  )
2254
2254
  return
2255
2255
 
2256
+ # Compaction can only shrink the conversation buckets counted above.
2257
+ # If the fixed context (files added to the chat, repo map, system
2258
+ # prompt, rules, tool schemas) already meets the limit on its own,
2259
+ # summarizing cannot bring the context under the limit. Bail out with
2260
+ # guidance instead of churning every turn, which is what a large file
2261
+ # added to the chat otherwise causes.
2262
+ non_compactable_tokens = all_tokens - compactable_tokens
2263
+
2264
+ if (
2265
+ self.context_compaction_max_tokens
2266
+ and non_compactable_tokens >= self.context_compaction_max_tokens
2267
+ ):
2268
+ if getattr(self, "_compaction_noop_warning_time", 0) + 300 < time.time():
2269
+ self._compaction_noop_warning_time = time.time()
2270
+ self.io.tool_warning(
2271
+ "Compaction cannot reduce the context: the fixed context (files in the"
2272
+ f" chat, repo map, prompts) is already ~{non_compactable_tokens:,}"
2273
+ f" tokens, at or above the ~{self.context_compaction_max_tokens:,} token"
2274
+ " compaction limit."
2275
+ )
2276
+ self.io.tool_output("- Use /drop to remove unneeded files from the chat")
2277
+ self.io.tool_output("- Use /clear to clear the chat history")
2278
+
2279
+ return
2280
+
2256
2281
  message_tokens = done_tokens + cur_tokens
2257
2282
  file_tokens = diff_tokens + file_context_tokens
2258
2283
  combined_tokens = done_tokens + cur_tokens + diff_tokens + file_context_tokens
@@ -2692,7 +2717,7 @@ class Coder(metaclass=UsageMeta):
2692
2717
  async def check_tokens(self, messages):
2693
2718
  """Check if the messages will fit within the model's token limits."""
2694
2719
  input_tokens = self.get_active_model().token_count(messages)
2695
- max_input_tokens = self.get_active_model().info.get("max_input_tokens") or 0
2720
+ max_input_tokens = self.get_active_model().info.get("max_input_tokens") or 128000
2696
2721
 
2697
2722
  if max_input_tokens and input_tokens >= max_input_tokens:
2698
2723
  if (
@@ -2703,7 +2728,7 @@ class Coder(metaclass=UsageMeta):
2703
2728
  f"Estimated chat context of {input_tokens:,} tokens exceeds the"
2704
2729
  f" {max_input_tokens:,} token limit. Attempting to compact..."
2705
2730
  )
2706
- await self.compact_context_if_needed(force=True)
2731
+ await self.compact_context_if_needed()
2707
2732
 
2708
2733
  # After compaction, re-format messages and re-check tokens
2709
2734
  messages = self.format_messages()
@@ -6,6 +6,7 @@ that tracks sub-agent info and handles invoke/spawn/wait lifecycle.
6
6
 
7
7
  import asyncio
8
8
  import logging
9
+ import threading
9
10
  import time
10
11
  import weakref
11
12
  from dataclasses import dataclass
@@ -80,8 +81,22 @@ class AgentService:
80
81
  _uuid_coder_map: Dict[str, weakref.ref] = {}
81
82
  # Lock pools keyed by parent UUID — created lazily so only parents that
82
83
  # actually use them allocate a lock.
83
- _spawn_locks: Dict[str, asyncio.Lock] = {}
84
- _conversation_locks: Dict[str, asyncio.Lock] = {}
84
+ #
85
+ # Plain ``threading.Lock`` (not ``asyncio.Lock``): an ``asyncio.Lock`` binds
86
+ # itself to the event loop of its first *waiting* acquirer and raises
87
+ # ``RuntimeError('... is bound to a different event loop')`` when awaited
88
+ # from another loop. Spawn, reap and conversation writes all reach these
89
+ # pools from both the TUI main (Textual) loop and the coder worker-thread
90
+ # loop, and the pools are class-level, so a lock created before a hot reload
91
+ # outlives the loop it bound to. Every guarded section is fully synchronous,
92
+ # so a thread lock gives true cross-loop mutual exclusion with no loop
93
+ # affinity and is immune to task cancellation.
94
+ #
95
+ # Invariant: never hold one of these locks across an ``await`` — the guarded
96
+ # sections must stay synchronous, or the blocking acquire could stall the
97
+ # event loop.
98
+ _spawn_locks: Dict[str, threading.Lock] = {}
99
+ _conversation_locks: Dict[str, threading.Lock] = {}
85
100
  _primary_agent_uuid: str = None
86
101
 
87
102
  # ------------------------------------------------------------------ #
@@ -305,10 +320,15 @@ class AgentService:
305
320
  # ------------------------------------------------------------------ #
306
321
  # Internal helpers
307
322
  @classmethod
308
- def _get_lock(cls, pool: Dict[str, asyncio.Lock], uuid: str) -> asyncio.Lock:
309
- """Return a lock for *uuid* from *pool*, creating one if absent."""
323
+ def _get_lock(cls, pool: Dict[str, threading.Lock], uuid: str) -> threading.Lock:
324
+ """Return a lock for *uuid* from *pool*, creating one if absent.
325
+
326
+ Locks are ``threading.Lock`` rather than ``asyncio.Lock`` (see the pool
327
+ declarations): the guarded sections are synchronous and correct locking
328
+ must work from any event loop.
329
+ """
310
330
  if uuid not in pool:
311
- pool[uuid] = asyncio.Lock()
331
+ pool[uuid] = threading.Lock()
312
332
  return pool[uuid]
313
333
 
314
334
  @staticmethod
@@ -444,7 +464,7 @@ class AgentService:
444
464
  # Acquire the spawn lock for the primary coder to serialise with
445
465
  # concurrent spawn operations that also hold this lock.
446
466
  parent_coder = parent if parent is not None else self.coder
447
- async with self._get_lock(self._spawn_locks, parent_coder.uuid):
467
+ with self._get_lock(self._spawn_locks, parent_coder.uuid):
448
468
  for coder_uuid in list(self._sub_agent_order):
449
469
  info = self.sub_agents.get(coder_uuid)
450
470
  if (
@@ -593,7 +613,7 @@ class AgentService:
593
613
  # tried to acquire the same lock).
594
614
  parent_coder = parent if parent is not None else self.coder
595
615
 
596
- async with self._get_lock(self._spawn_locks, parent_coder.uuid):
616
+ with self._get_lock(self._spawn_locks, parent_coder.uuid):
597
617
  self._check_max_sub_agents()
598
618
  new_uuid = str(uuid4()).split("-")[0]
599
619
 
@@ -686,7 +706,7 @@ class AgentService:
686
706
 
687
707
  # Re-acquire the lock to register — we must re-check max agents since
688
708
  # the lock was released and other spawns may have registered in between.
689
- async with self._get_lock(self._spawn_locks, parent_coder.uuid):
709
+ with self._get_lock(self._spawn_locks, parent_coder.uuid):
690
710
  self._check_max_sub_agents()
691
711
 
692
712
  # Register in global coder lookup
@@ -952,7 +972,7 @@ class AgentService:
952
972
  else:
953
973
  return
954
974
 
955
- async with self._get_lock(self._conversation_locks, info.parent_uuid):
975
+ with self._get_lock(self._conversation_locks, info.parent_uuid):
956
976
  ConversationService.get_manager(parent_coder).add_message(
957
977
  message_dict={"role": "user", "content": user_content},
958
978
  tag=MessageTag.CUR,
@@ -1200,8 +1220,11 @@ def _tui_notify(tui, callback, *args):
1200
1220
  """Invoke *callback* on the TUI app, from either thread.
1201
1221
 
1202
1222
  ``call_from_thread`` only works when the caller is not the app's own
1203
- thread; scheduler dispatch runs on the primary (app) event loop, so fall
1204
- back to calling directly, which is correct when already on that thread.
1223
+ thread. Scheduler-dispatched workflow runs now execute on the coder's own
1224
+ loop (the TUI worker-thread loop — see ``SchedulerService._on_coder_loop``),
1225
+ so notifications originate from the worker thread and ``call_from_thread``
1226
+ applies; when we are already on the app thread (or the TUI is unavailable),
1227
+ fall back to calling directly.
1205
1228
  """
1206
1229
 
1207
1230
  try:
@@ -183,7 +183,28 @@ class IOProxy(Generic[T]):
183
183
 
184
184
  async def confirm_ask(self, *args, **kwargs):
185
185
  """Forward confirm_ask — per-coder queue iteration is handled by
186
- TextualInputOutput which now iterates all per-coder queues."""
186
+ TextualInputOutput which now iterates all per-coder queues.
187
+
188
+ Coders configured with ``skip_cli_confirmations`` (unattended ``wf:``
189
+ workflow and ``ws:`` workspace workers) are auto-confirmed. They run
190
+ with nobody watching, and — more importantly — a blocking prompt has
191
+ to be awaited from whatever loop the coder happens to run on. A
192
+ scheduler-dispatched workflow runs on the main (Textual) loop, so
193
+ blocking there used to rebind ``queues``' global input-wake slot and
194
+ strand the primary coder's input pump.
195
+ """
196
+ coder_ref = getattr(self, "_coder", None)
197
+ coder = coder_ref() if coder_ref is not None else None
198
+
199
+ if coder is not None and getattr(coder, "skip_cli_confirmations", False):
200
+ question = args[0] if args else kwargs.get("question", "")
201
+ logger.debug(
202
+ "auto-confirming %r for unattended coder %s (skip_cli_confirmations)",
203
+ question,
204
+ self._coder_uuid,
205
+ )
206
+ return True
207
+
187
208
  if "coder_uuid" not in kwargs:
188
209
  kwargs["coder_uuid"] = self._coder_uuid
189
210
  return await self._target.confirm_ask(*args, **kwargs)
@@ -19,6 +19,7 @@ from __future__ import annotations
19
19
 
20
20
  import asyncio
21
21
  import json
22
+ import math
22
23
  import os
23
24
  import re
24
25
  import warnings
@@ -1096,15 +1097,11 @@ class _LiteLLMFacade:
1096
1097
  """Estimate tokens for ``text`` without loading a BPE tokenizer.
1097
1098
 
1098
1099
  tiktoken's cl100k_base/o200k_base encodings cost ~30-95MB of RSS the
1099
- first time they are loaded, so we approximate instead: roughly one token
1100
- per four ASCII characters (the classic rule of thumb), plus one token per
1101
- non-ASCII character (CJK/emoji tokenize at about one token per char), and
1102
- never fewer tokens than there are whitespace-delimited word/punctuation
1103
- runs (dense code with short tokens is otherwise undercounted).
1104
-
1105
- The estimate lands within ~±30% of cl100k_base on code and prose, which
1106
- is plenty for context-window checks, cost display, and file-size
1107
- warnings.
1100
+ first time they are loaded, so we approximate instead with a regex
1101
+ pre-tokenizer patterned on OpenAI's o200k_base (see
1102
+ ``_estimate_token_count``). The estimate lands within ~±30% of
1103
+ cl100k_base on code and prose, which is plenty for context-window
1104
+ checks, cost display, and file-size warnings.
1108
1105
 
1109
1106
  Returns a ``range`` whose length is the estimated token count; the
1110
1107
  individual values are dummy ids (callers only use ``len()``/iteration).
@@ -1244,23 +1241,41 @@ __all__ = ["litellm"]
1244
1241
  # Token-count estimator (tiktoken-free)
1245
1242
  # ---------------------------------------------------------------------------
1246
1243
 
1247
- _WORD_OR_PUNCT_RE = re.compile(r"\w+|[^\w\s]")
1248
- _NON_ASCII_RE = re.compile(r"[^\x00-\x7f]")
1244
+ # Standard ``re`` approximation of OpenAI's o200k_base pre-tokenizer pattern.
1245
+ # The letter class is Unicode-aware (``[^\W\d_]``) so non-Latin scripts are
1246
+ # counted rather than dropped.
1247
+ _O200K_APPROX_PATTERN = re.compile(
1248
+ r"""'(?:[sdmt]|ll|ve|re)| ?[^\W\d_]+| ?\d{1,3}| ?[^\s\w]+|\s+""", re.UNICODE
1249
+ )
1250
+
1251
+ #: Bytes charged per token for chunks too long to be a single token, calibrated
1252
+ #: against o200k_base (~5 bytes/token on code, prose and JSON).
1253
+ _CHARS_PER_TOKEN = 5.0
1249
1254
 
1250
1255
 
1251
1256
  def _estimate_token_count(text: str) -> int:
1252
1257
  """Estimate the number of tokens in ``text`` without a BPE tokenizer.
1253
1258
 
1254
- Uses the classic ~4 chars/token rule of thumb, lifted for non-ASCII text
1255
- (CJK/emoji tokenize at roughly one token per character) and floored by the
1256
- number of word/punctuation runs so dense code with many short tokens isn't
1257
- undercounted.
1259
+ Splits ``text`` with a regex approximation of OpenAI's o200k_base
1260
+ pre-tokenizer, then accumulates a fractional token weight per chunk:
1261
+ whitespace runs collapse to a single token, numbers and short chunks
1262
+ (<= 4 bytes) count as one, and longer chunks are charged at roughly
1263
+ ``_CHARS_PER_TOKEN`` bytes per token. The total is rounded up and floored
1264
+ at one token for any non-empty input.
1258
1265
  """
1259
1266
 
1260
1267
  if not text:
1261
1268
  return 0
1262
1269
 
1263
- units = len(_WORD_OR_PUNCT_RE.findall(text))
1264
- non_ascii = len(_NON_ASCII_RE.findall(text))
1270
+ tokens = 0.0
1271
+ for chunk in _O200K_APPROX_PATTERN.findall(text):
1272
+ byte_len = len(chunk.encode("utf-8"))
1273
+
1274
+ if chunk.isspace():
1275
+ tokens += 1.0
1276
+ elif chunk.strip().isdigit() or byte_len <= 4:
1277
+ tokens += 1.0
1278
+ else:
1279
+ tokens += max(1.0, byte_len / _CHARS_PER_TOKEN)
1265
1280
 
1266
- return max(1, len(text) // 4, units) + non_ascii
1281
+ return max(1, math.ceil(tokens - 1e-9))
@@ -3,9 +3,12 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
+ import logging
6
7
  import queue
7
8
  from typing import Any
8
9
 
10
+ logger = logging.getLogger(__name__)
11
+
9
12
  # Global registry: coder_uuid → queue.Queue for sending input to that coder
10
13
  _per_coder_queues: dict[str, "queue.Queue"] = {}
11
14
 
@@ -19,6 +22,13 @@ _primary_coder_id: str | None = None
19
22
  _input_loop: asyncio.AbstractEventLoop | None = None
20
23
  _input_wake: asyncio.Event | None = None
21
24
 
25
+ # Dedicated wake events for consumers parked on a loop *other* than the primary
26
+ # input loop (for example a scheduler-dispatched workflow asking for input while
27
+ # the scheduler ticks on the main/Textual loop). They get their own slot so a
28
+ # foreign-loop consumer can never steal the primary binding and strand the
29
+ # primary coder's input pump.
30
+ _input_wakes: dict[asyncio.AbstractEventLoop, asyncio.Event] = {}
31
+
22
32
 
23
33
  def register_coder_queue(coder_uuid: str, q: "queue.Queue") -> None:
24
34
  """Register a per-coder input queue.
@@ -83,6 +93,9 @@ def set_input_loop(loop: asyncio.AbstractEventLoop) -> None:
83
93
  global _input_loop, _input_wake
84
94
  _input_loop = loop
85
95
  _input_wake = asyncio.Event()
96
+ # This loop now owns the primary slot, so drop any dedicated wake it may
97
+ # have registered while it was still a foreign consumer.
98
+ _input_wakes.pop(loop, None)
86
99
 
87
100
 
88
101
  def wake_input_waiters() -> None:
@@ -95,39 +108,73 @@ def wake_input_waiters() -> None:
95
108
  coder worker loop), the stale binding is dropped so the next
96
109
  wait_for_input() rebinds to the current loop instead of raising
97
110
  "Event loop is closed".
111
+
112
+ Every loop with a parked consumer is woken, not just the primary one:
113
+ a consumer on a foreign loop has its own event (see ``_input_wakes``) so
114
+ the primary binding is never stolen from it.
98
115
  """
99
116
  global _input_loop, _input_wake
100
117
 
101
118
  loop = _input_loop
102
- if loop is None or _input_wake is None:
103
- return
104
119
 
105
- if loop.is_closed():
106
- _input_loop = None
107
- _input_wake = None
108
- return
120
+ if loop is not None:
121
+ if _input_wake is None:
122
+ _input_loop = None
123
+ elif loop.is_closed():
124
+ _input_loop = None
125
+ _input_wake = None
126
+ else:
127
+ loop.call_soon_threadsafe(_input_wake.set)
128
+
129
+ for other, wake in list(_input_wakes.items()):
130
+ if other.is_closed():
131
+ _input_wakes.pop(other, None)
132
+ continue
109
133
 
110
- loop.call_soon_threadsafe(_input_wake.set)
134
+ try:
135
+ other.call_soon_threadsafe(wake.set)
136
+ except RuntimeError:
137
+ # Loop stopped accepting callbacks between the check and the call.
138
+ _input_wakes.pop(other, None)
111
139
 
112
140
 
113
141
  async def wait_for_input() -> None:
114
142
  """Await the next input push without polling.
115
143
 
116
- Must be called from the input loop (the coder worker loop). Consumers
117
- sweep the payload queues first, then block here until wake_input_waiters()
118
- fires. Initializes the wake state from the running loop on first use and
119
- rebinds whenever the previous loop was closed or is no longer the
120
- running loop (which happens across a hot reload).
144
+ Intended to be called from the input loop (the coder worker loop).
145
+ Consumers sweep the payload queues first, then block here until
146
+ wake_input_waiters() fires. Initializes the wake state from the running
147
+ loop on first use and rebinds whenever the previous loop was closed (which
148
+ happens across a hot reload).
149
+
150
+ A caller on a *different*, still-live loop no longer rebinds the primary
151
+ slot: it gets a dedicated wake event instead. Rebinding used to strand the
152
+ primary coder's input pump on the orphaned event, which froze the TUI
153
+ (prompts, slash commands and ``/exit`` all unresponsive; only Ctrl-Q
154
+ worked) whenever a scheduler-dispatched workflow needed input or a
155
+ confirmation and therefore ran on the main (Textual) loop.
121
156
  """
122
157
  loop = asyncio.get_running_loop()
123
158
 
124
- if (
125
- _input_loop is None
126
- or _input_wake is None
127
- or _input_loop.is_closed()
128
- or _input_loop is not loop
129
- ):
159
+ if _input_loop is None or _input_wake is None or _input_loop.is_closed():
130
160
  set_input_loop(loop)
131
161
 
132
- _input_wake.clear()
133
- await _input_wake.wait()
162
+ if _input_loop is loop:
163
+ _input_wake.clear()
164
+ await _input_wake.wait()
165
+ return
166
+
167
+ logger.warning(
168
+ "wait_for_input() called from a non-input loop (%r); using a dedicated"
169
+ " wake event instead of rebinding the primary input loop",
170
+ loop,
171
+ )
172
+
173
+ wake = _input_wakes.get(loop)
174
+
175
+ if wake is None:
176
+ wake = asyncio.Event()
177
+ _input_wakes[loop] = wake
178
+
179
+ wake.clear()
180
+ await wake.wait()
@@ -173,7 +173,9 @@ class SchedulerService:
173
173
  renewal = asyncio.create_task(renewal)
174
174
 
175
175
  try:
176
- result = await execute_workflow(self.coder, wf, source="scheduler")
176
+ result = await self._on_coder_loop(
177
+ lambda: execute_workflow(self.coder, wf, source="scheduler")
178
+ )
177
179
  await self.db.finish(lease, result)
178
180
  await self._log_tasks(lease, result)
179
181
  except asyncio.CancelledError:
@@ -191,6 +193,43 @@ class SchedulerService:
191
193
  nxt = self._successor(wf, slot, now, next_run)
192
194
  await self.db.advance(wf.name, nxt)
193
195
 
196
+ def _coder_loop(self) -> Optional[asyncio.AbstractEventLoop]:
197
+ """Best-effort discovery of the loop the interactive coder runs on.
198
+
199
+ In TUI mode the coder lives on a worker-thread loop while the scheduler
200
+ ticks on the main (Textual) loop, so the two differ. Returns ``None``
201
+ when the coder's loop cannot be determined (linear/one-shot sessions,
202
+ tests), in which case callers stay on the current loop.
203
+ """
204
+
205
+ tui_ref = getattr(self.coder, "tui", None)
206
+
207
+ try:
208
+ tui = tui_ref() if callable(tui_ref) else tui_ref
209
+ except Exception:
210
+ tui = None
211
+
212
+ worker = getattr(tui, "worker", None)
213
+ loop = getattr(worker, "loop", None)
214
+
215
+ return loop if isinstance(loop, asyncio.AbstractEventLoop) else None
216
+
217
+ async def _on_coder_loop(self, make_coro: Any) -> Any:
218
+ """Await ``make_coro()`` on the coder's own event loop.
219
+
220
+ A workflow run owns coder I/O (prompts, confirmations, tool output),
221
+ which is bound to the loop the coder actually runs on.
222
+ """
223
+
224
+ target = self._coder_loop()
225
+ running = asyncio.get_running_loop()
226
+
227
+ if target is None or target is running or target.is_closed():
228
+ return await make_coro()
229
+
230
+ future = asyncio.run_coroutine_threadsafe(make_coro(), target)
231
+ return await asyncio.wrap_future(future)
232
+
194
233
  async def _log_tasks(self, lease: Any, result: Any) -> None:
195
234
  """Mirror the runner's per-task outcomes into the DB ``task_log``."""
196
235
 
@@ -11,8 +11,9 @@ Resolution order, highest precedence first:
11
11
  lower-precedence sources still load.
12
12
  2. ``<git_root or cwd>/.cecli.workflows.yml`` / ``.cecli.workflows.yaml``.
13
13
  3. ``<git_root or cwd>/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
14
- 4. ``merged_config["workflows"]`` — the deep-merged ``.cecli.conf.yml`` value.
15
- 5. ``~/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
14
+ 4. ``<git_root or cwd>/.agents/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
15
+ 5. ``merged_config["workflows"]`` — the deep-merged ``.cecli.conf.yml`` value.
16
+ 6. ``~/.cecli/workflows/*.yml`` / ``*.yaml`` — globbed in stable sorted order.
16
17
 
17
18
  Each source may hold a single workflow mapping or a ``workflows: [...]`` list.
18
19
  On a duplicate ``name`` the higher-precedence definition wins and the loser is
@@ -42,6 +43,8 @@ WORKFLOW_FILENAMES = (".cecli.workflows.yml", ".cecli.workflows.yaml")
42
43
 
43
44
  WORKFLOW_DIR = Path(".cecli") / "workflows"
44
45
 
46
+ AGENTS_WORKFLOW_DIR = Path(".agents") / "workflows"
47
+
45
48
  # Values argparse/deep-merge normalization leaves behind when nothing was set.
46
49
  _ABSENT_STRINGS = ("", "{}", "[]", "null", "~")
47
50
 
@@ -95,6 +98,7 @@ def resolve_workflow_configs(
95
98
 
96
99
  ordered += _entries_from_local(git_root)
97
100
  ordered += _entries_from_local_dir(git_root)
101
+ ordered += _entries_from_local_agents_dir(git_root)
98
102
 
99
103
  if isinstance(merged_config, dict):
100
104
  ordered += _entries(merged_config.get("workflows"), None, _CONFIG_LABEL)
@@ -298,6 +302,13 @@ def _entries_from_local_dir(git_root: Optional[Any]) -> List[_Discovered]:
298
302
  return _entries_from_dir(base / WORKFLOW_DIR)
299
303
 
300
304
 
305
+ def _entries_from_local_agents_dir(git_root: Optional[Any]) -> List[_Discovered]:
306
+ """Resolve a repo-local ``.agents/workflows/*.yml|*.yaml`` directory."""
307
+ base = Path(git_root).expanduser() if git_root else Path.cwd()
308
+
309
+ return _entries_from_dir(base / AGENTS_WORKFLOW_DIR)
310
+
311
+
301
312
  def _entries_from_home() -> List[_Discovered]:
302
313
  """Resolve ``~/.cecli/workflows/*.yml|*.yaml`` in stable sorted order."""
303
314
 
@@ -173,6 +173,7 @@ YAML_TO_JSON_ARG_KEYS = {
173
173
  "system_one": "system-one",
174
174
  "server_config": "server-config",
175
175
  "workflows": "workflows",
176
+ "scheduler": "scheduler",
176
177
  }
177
178
 
178
179
 
@@ -1212,6 +1213,16 @@ async def main_async(
1212
1213
  lint_cmds = parse_lint_cmds(args.lint_cmd, io)
1213
1214
  if lint_cmds is None:
1214
1215
  return await graceful_exit(None, 1)
1216
+
1217
+ # Create/attach the git repo before the coder is built. The coder resolves
1218
+ # its repo, root, and repo_map at construction; if the repo is created
1219
+ # afterwards the coder keeps repo=None for the whole session and
1220
+ # repo-backed tools (Grep, git_*, ...) fail with "Not in a git repository."
1221
+ if args.git and not (suppress_pre_init or args.workspaces or args.workspace_name):
1222
+ git_root = await setup_git(git_root, pre_init_io)
1223
+ if args.gitignore:
1224
+ await check_gitignore(git_root, pre_init_io)
1225
+
1215
1226
  repo = None
1216
1227
  if args.git:
1217
1228
  try:
@@ -1382,10 +1393,6 @@ async def main_async(
1382
1393
  pre_init_io.tool_output()
1383
1394
  except KeyboardInterrupt:
1384
1395
  return await graceful_exit(coder, 1)
1385
- if args.git and not (suppress_pre_init or args.workspaces or args.workspace_name):
1386
- git_root = await setup_git(git_root, pre_init_io)
1387
- if args.gitignore:
1388
- await check_gitignore(git_root, pre_init_io)
1389
1396
  except UnknownEditFormat as err:
1390
1397
  pre_init_io.tool_error(str(err))
1391
1398
  await pre_init_io.offer_url(
@@ -1539,17 +1546,17 @@ async def main_async(
1539
1546
  # --message/--exit paths above return before the scheduler can tick.
1540
1547
  # Auto mode turns it on iff at least one enabled scheduled workflow
1541
1548
  # exists, so nothing ever touches the coordination DB otherwise.
1542
- _scheduler_cfg = merged_config.get("scheduler") or {}
1543
- if _workflows and _scheduler_enabled(args, _scheduler_cfg, _workflows):
1549
+ _scheduler_cfg = _scheduler_config(args)
1550
+ if _workflows and _scheduler_enabled(_scheduler_cfg, _workflows):
1544
1551
  from cecli.helpers.scheduler import SchedulerService
1545
1552
 
1546
1553
  coder.scheduler = SchedulerService(
1547
1554
  coder,
1548
1555
  _workflows,
1549
1556
  io,
1550
- tick_seconds=_scheduler_cfg.get("tick_seconds", 60),
1551
- catch_up=_scheduler_cfg.get("catch_up", True),
1552
- max_catchup=_scheduler_cfg.get("max_catchup", 1),
1557
+ tick_seconds=_scheduler_cfg["tick_seconds"],
1558
+ catch_up=_scheduler_cfg["catch_up"],
1559
+ max_catchup=_scheduler_cfg["max_catchup"],
1553
1560
  )
1554
1561
  await coder.scheduler.start()
1555
1562
 
@@ -1685,18 +1692,46 @@ async def main_async(
1685
1692
  raise
1686
1693
 
1687
1694
 
1688
- def _scheduler_enabled(args, scheduler_cfg, workflows):
1689
- """Resolve whether the scheduler should run: CLI flag > config > auto."""
1695
+ def _scheduler_enabled(scheduler_cfg, workflows):
1696
+ """Resolve whether the scheduler should run: explicit ``enabled`` > auto."""
1690
1697
 
1691
- if getattr(args, "scheduler", None) is not None:
1692
- return bool(args.scheduler)
1693
-
1694
- if scheduler_cfg.get("enabled", None) is not None:
1695
- return bool(scheduler_cfg.get("enabled"))
1698
+ if scheduler_cfg.get("enabled") is not None:
1699
+ return bool(scheduler_cfg["enabled"])
1696
1700
 
1697
1701
  return any(getattr(wf, "schedule", None) and getattr(wf, "enabled", True) for wf in workflows)
1698
1702
 
1699
1703
 
1704
+ def _scheduler_config(args):
1705
+ """Resolve the ``scheduler`` config object, defaults layered underneath.
1706
+
1707
+ ``args.scheduler`` is a JSON string (the CLI ``--scheduler`` value deep-merged
1708
+ over the config-file object) or ``None`` when unset, in which case the
1709
+ documented defaults apply and ``enabled`` stays ``None`` (auto).
1710
+ """
1711
+
1712
+ defaults = {
1713
+ "enabled": None,
1714
+ "tick_seconds": 60,
1715
+ "catch_up": True,
1716
+ "max_catchup": 1,
1717
+ }
1718
+
1719
+ raw = getattr(args, "scheduler", None)
1720
+
1721
+ if not raw:
1722
+ return dict(defaults)
1723
+
1724
+ try:
1725
+ parsed = json.loads(raw)
1726
+ except (json.JSONDecodeError, TypeError):
1727
+ return dict(defaults)
1728
+
1729
+ if not isinstance(parsed, dict):
1730
+ return dict(defaults)
1731
+
1732
+ return {**defaults, **parsed}
1733
+
1734
+
1700
1735
  async def _stop_scheduler_quietly(coder):
1701
1736
  """Best-effort scheduler shutdown used by reload/exit paths."""
1702
1737