cecli-dev 1.8.1rc2__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.1rc2 → cecli_dev-1.8.1rc3}/PKG-INFO +1 -1
  2. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/_version.py +3 -3
  3. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/args.py +2 -6
  4. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/base_coder.py +2 -2
  5. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/service.py +34 -11
  6. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/io_proxy.py +22 -1
  7. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/queues.py +67 -20
  8. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/service.py +40 -1
  9. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/main.py +51 -16
  10. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/watch.py +10 -1
  11. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/scheduler.md +6 -14
  12. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/workflows.md +1 -1
  13. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/PKG-INFO +1 -1
  14. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/SOURCES.txt +1 -0
  15. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/scm_file_list.json +1 -0
  16. cecli_dev-1.8.1rc3/cecli_dev.egg-info/scm_version.json +8 -0
  17. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_agent_config_merge.py +1 -0
  18. cecli_dev-1.8.1rc3/tests/basic/test_scheduler_config.py +96 -0
  19. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_watch.py +28 -0
  20. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_service.py +61 -0
  21. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_io_proxy.py +41 -0
  22. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_service.py +108 -0
  23. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_queues.py +64 -0
  24. cecli_dev-1.8.1rc2/cecli_dev.egg-info/scm_version.json +0 -8
  25. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.dockerignore +0 -0
  26. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.flake8 +0 -0
  27. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.gitattributes +0 -0
  28. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  29. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/check_pypi_version.yml +0 -0
  30. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/docker-build-test.yml +0 -0
  31. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/docker-release.yml +0 -0
  32. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/issues.yml +0 -0
  33. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/pages.yml +0 -0
  34. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/pre-commit.yml +0 -0
  35. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/release.yml +0 -0
  36. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/ubuntu-tests.yml +0 -0
  37. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/windows-tests.yml +0 -0
  38. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.github/workflows/windows_check_pypi_version.yml +0 -0
  39. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.gitignore +0 -0
  40. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/.pre-commit-config.yaml +0 -0
  41. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/CHANGELOG.md +0 -0
  42. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/CNAME +0 -0
  43. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/CONTRIBUTING.md +0 -0
  44. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/HISTORY.md +0 -0
  45. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/LICENSE.txt +0 -0
  46. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/MANIFEST.in +0 -0
  47. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/README.md +0 -0
  48. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/Dockerfile +0 -0
  49. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/README.md +0 -0
  50. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/__init__.py +0 -0
  51. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/benchmark.py +0 -0
  52. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/benchmark_classic.py +0 -0
  53. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/clone-exercism.sh +0 -0
  54. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/cpp-test.sh +0 -0
  55. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/docker.sh +0 -0
  56. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/docker_build.sh +0 -0
  57. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/install-docker-ubuntu.sh +0 -0
  58. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/npm-test.sh +0 -0
  59. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/over_time.py +0 -0
  60. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/plot.sh +0 -0
  61. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/plots.py +0 -0
  62. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/problem_stats.py +0 -0
  63. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/prompts.py +0 -0
  64. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/refactor_tools.py +0 -0
  65. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/rsync.sh +0 -0
  66. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/rungrid.py +0 -0
  67. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/swe-bench-lite.txt +0 -0
  68. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/swe-bench.txt +0 -0
  69. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/swe_bench.py +0 -0
  70. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/test_benchmark.py +0 -0
  71. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/variations.1.sh +0 -0
  72. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/variations.2.sh +0 -0
  73. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/variations.3.sh +0 -0
  74. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/benchmark/variations.4.sh +0 -0
  75. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/__init__.py +0 -0
  76. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/__main__.py +0 -0
  77. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/args_formatter.py +0 -0
  78. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/change_tracker.py +0 -0
  79. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/__init__.py +0 -0
  80. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/agent_coder.py +0 -0
  81. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/architect_coder.py +0 -0
  82. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/ask_coder.py +0 -0
  83. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/chat_chunks.py +0 -0
  84. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/context_coder.py +0 -0
  85. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/copypaste_coder.py +0 -0
  86. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_coder.py +0 -0
  87. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_fenced_coder.py +0 -0
  88. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editblock_func_coder.py +0 -0
  89. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  90. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editor_editblock_coder.py +0 -0
  91. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/editor_whole_coder.py +0 -0
  92. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/hashline_coder.py +0 -0
  93. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/help_coder.py +0 -0
  94. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/patch_coder.py +0 -0
  95. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/search_replace.py +0 -0
  96. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/shell.py +0 -0
  97. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/single_wholefile_func_coder.py +0 -0
  98. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/sub_agent_coder.py +0 -0
  99. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/udiff_coder.py +0 -0
  100. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/udiff_simple.py +0 -0
  101. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/wholefile_coder.py +0 -0
  102. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/coders/wholefile_func_coder.py +0 -0
  103. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/__init__.py +0 -0
  104. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/add.py +0 -0
  105. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/agent.py +0 -0
  106. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/agent_model.py +0 -0
  107. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/agent_tree.py +0 -0
  108. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/architect.py +0 -0
  109. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/ask.py +0 -0
  110. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/auto_memory.py +0 -0
  111. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/chat_mode.py +0 -0
  112. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/clear.py +0 -0
  113. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/code.py +0 -0
  114. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/command_prefix.py +0 -0
  115. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/commit.py +0 -0
  116. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/compact.py +0 -0
  117. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/context.py +0 -0
  118. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/context_blocks.py +0 -0
  119. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/context_management.py +0 -0
  120. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/copy.py +0 -0
  121. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/copy_context.py +0 -0
  122. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/core.py +0 -0
  123. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/diff.py +0 -0
  124. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/drop.py +0 -0
  125. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/editor.py +0 -0
  126. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/editor_model.py +0 -0
  127. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/exclude_skill.py +0 -0
  128. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/exit.py +0 -0
  129. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/git.py +0 -0
  130. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/hashline.py +0 -0
  131. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/help.py +0 -0
  132. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/history_search.py +0 -0
  133. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/hooks.py +0 -0
  134. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/hot_reload.py +0 -0
  135. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/import_skill.py +0 -0
  136. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/include_skill.py +0 -0
  137. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/insert_queue.py +0 -0
  138. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/lint.py +0 -0
  139. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/list_mcp.py +0 -0
  140. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/list_queue.py +0 -0
  141. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/list_sessions.py +0 -0
  142. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/list_skills.py +0 -0
  143. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/load.py +0 -0
  144. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/load_hook.py +0 -0
  145. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/load_mcp.py +0 -0
  146. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/load_session.py +0 -0
  147. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/load_skill.py +0 -0
  148. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/ls.py +0 -0
  149. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/map.py +0 -0
  150. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/map_refresh.py +0 -0
  151. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/merge.py +0 -0
  152. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/model.py +0 -0
  153. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/models.py +0 -0
  154. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/multiline_mode.py +0 -0
  155. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/paste.py +0 -0
  156. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/queue.py +0 -0
  157. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/quit.py +0 -0
  158. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/read_only.py +0 -0
  159. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/read_only_stub.py +0 -0
  160. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/reap_agent.py +0 -0
  161. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/reasoning_effort.py +0 -0
  162. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/remove_hook.py +0 -0
  163. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/remove_mcp.py +0 -0
  164. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/remove_memory.py +0 -0
  165. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/remove_queue.py +0 -0
  166. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/remove_skill.py +0 -0
  167. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/report.py +0 -0
  168. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/reset.py +0 -0
  169. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/rules.py +0 -0
  170. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/run.py +0 -0
  171. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/save.py +0 -0
  172. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/save_session.py +0 -0
  173. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/search_memory.py +0 -0
  174. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/settings.py +0 -0
  175. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/spawn_agent.py +0 -0
  176. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/switch_agent.py +0 -0
  177. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/terminal_data/linux.keytab +0 -0
  178. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/terminal_setup.py +0 -0
  179. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/test.py +0 -0
  180. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/think_tokens.py +0 -0
  181. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/tokens.py +0 -0
  182. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/undo.py +0 -0
  183. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/utils/__init__.py +0 -0
  184. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/utils/base_command.py +0 -0
  185. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/utils/helpers.py +0 -0
  186. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/utils/registry.py +0 -0
  187. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/utils/save_load_manager.py +0 -0
  188. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/voice.py +0 -0
  189. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/weak_model.py +0 -0
  190. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/web.py +0 -0
  191. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/workflows.py +0 -0
  192. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/commands/workspace.py +0 -0
  193. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/decoding.py +0 -0
  194. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/deprecated_args.py +0 -0
  195. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/diffs.py +0 -0
  196. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/dump.py +0 -0
  197. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/editor.py +0 -0
  198. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/exceptions.py +0 -0
  199. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/format_settings.py +0 -0
  200. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/help.py +0 -0
  201. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/help_pats.py +0 -0
  202. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/__init__.py +0 -0
  203. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/__init__.py +0 -0
  204. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/config.py +0 -0
  205. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/__init__.py +0 -0
  206. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  207. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/agents/defaults/worker.md +0 -0
  208. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/background_commands.py +0 -0
  209. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/command_parser.py +0 -0
  210. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/command_queue.py +0 -0
  211. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/config_utils.py +0 -0
  212. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/__init__.py +0 -0
  213. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/base_message.py +0 -0
  214. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/files.py +0 -0
  215. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/integration.py +0 -0
  216. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/manager.py +0 -0
  217. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/service.py +0 -0
  218. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/tags.py +0 -0
  219. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/conversation/utils.py +0 -0
  220. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/copypaste.py +0 -0
  221. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/coroutines.py +0 -0
  222. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/crypto.py +0 -0
  223. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/extensions/__init__.py +0 -0
  224. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/extensions/skills_importer.py +0 -0
  225. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_searcher.py +0 -0
  226. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/__init__.py +0 -0
  227. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/builders.py +0 -0
  228. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/ignore.py +0 -0
  229. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/ngram_index.py +0 -0
  230. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/service.py +0 -0
  231. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/file_system/trie_index.py +0 -0
  232. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/__init__.py +0 -0
  233. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/dump.py +0 -0
  234. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  235. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/main.py +0 -0
  236. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/parsers.py +0 -0
  237. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/grep_ast/tsl.py +0 -0
  238. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/hashline.py +0 -0
  239. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/__init__.py +0 -0
  240. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/hashpos.py +0 -0
  241. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  242. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/hashpos/transformations.py +0 -0
  243. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/leak_detect.py +0 -0
  244. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/__init__.py +0 -0
  245. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/aws_sigv4.py +0 -0
  246. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/config.py +0 -0
  247. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/constants.py +0 -0
  248. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/__init__.py +0 -0
  249. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/bedrock.py +0 -0
  250. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/chat.py +0 -0
  251. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/gemini.py +0 -0
  252. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/messages.py +0 -0
  253. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/domains/responses.py +0 -0
  254. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/__init__.py +0 -0
  255. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  256. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/formatters/thinking.py +0 -0
  257. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/identifiers.py +0 -0
  258. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/litellm_compat.py +0 -0
  259. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/pipeline.py +0 -0
  260. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/__init__.py +0 -0
  261. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/anthropic.py +0 -0
  262. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/azure.py +0 -0
  263. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/base.py +0 -0
  264. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/bedrock.py +0 -0
  265. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  266. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/deepseek.py +0 -0
  267. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/gemini.py +0 -0
  268. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  269. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/meta.py +0 -0
  270. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/mistral.py +0 -0
  271. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/ollama.py +0 -0
  272. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/openai.py +0 -0
  273. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/providers/openrouter.py +0 -0
  274. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/runtime.py +0 -0
  275. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/types.py +0 -0
  276. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/llms/utils.py +0 -0
  277. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/lock_detect.py +0 -0
  278. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/loop_detect.py +0 -0
  279. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/__init__.py +0 -0
  280. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/db.py +0 -0
  281. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/memory/utils.py +0 -0
  282. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/memory_control.py +0 -0
  283. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/__init__.py +0 -0
  284. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/agent.py +0 -0
  285. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/api.py +0 -0
  286. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  287. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  288. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  289. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/identifiers.py +0 -0
  290. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/llm.py +0 -0
  291. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/pipeline.py +0 -0
  292. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/registry.py +0 -0
  293. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_config/utils.py +0 -0
  294. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/model_providers.py +0 -0
  295. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/nested.py +0 -0
  296. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/observations/__init__.py +0 -0
  297. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/observations/service.py +0 -0
  298. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/__init__.py +0 -0
  299. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/app.py +0 -0
  300. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/onboarding/providers.py +0 -0
  301. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/__init__.py +0 -0
  302. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  303. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/environment.py +0 -0
  304. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/region_resolver.py +0 -0
  305. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/safe_methods.py +0 -0
  306. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/security.py +0 -0
  307. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/service.py +0 -0
  308. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  309. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/plugin_manager.py +0 -0
  310. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/profiler.py +0 -0
  311. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/requests.py +0 -0
  312. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/responses.py +0 -0
  313. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/__init__.py +0 -0
  314. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/cron.py +0 -0
  315. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/db.py +0 -0
  316. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/scheduler/lock.py +0 -0
  317. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/__init__.py +0 -0
  318. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/__init__.py +0 -0
  319. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/bridge.py +0 -0
  320. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/models.py +0 -0
  321. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/acp/protocol.py +0 -0
  322. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/signals.py +0 -0
  323. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/server/ws_server.py +0 -0
  324. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/__init__.py +0 -0
  325. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/layout.py +0 -0
  326. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/manager.py +0 -0
  327. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/payload.py +0 -0
  328. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/storage.py +0 -0
  329. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/sessions/subagents.py +0 -0
  330. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/similarity.py +0 -0
  331. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/skills.py +0 -0
  332. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/__init__.py +0 -0
  333. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/api.py +0 -0
  334. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/client.py +0 -0
  335. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/config.py +0 -0
  336. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/integrations.py +0 -0
  337. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/system_one/types.py +0 -0
  338. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/threading.py +0 -0
  339. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/__init__.py +0 -0
  340. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/config.py +0 -0
  341. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/logs.py +0 -0
  342. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/models.py +0 -0
  343. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/outputs.py +0 -0
  344. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/runner.py +0 -0
  345. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workflows/subagents.py +0 -0
  346. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/__init__.py +0 -0
  347. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/config.py +0 -0
  348. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/paths.py +0 -0
  349. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/subagents.py +0 -0
  350. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/helpers/workspaces/workspace.py +0 -0
  351. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/history.py +0 -0
  352. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/__init__.py +0 -0
  353. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/base.py +0 -0
  354. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/helpers.py +0 -0
  355. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/integration.py +0 -0
  356. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/manager.py +0 -0
  357. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/registry.py +0 -0
  358. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/service.py +0 -0
  359. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/hooks/types.py +0 -0
  360. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/http.py +0 -0
  361. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/interruptible_input.py +0 -0
  362. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/io.py +0 -0
  363. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/linter.py +0 -0
  364. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/llm.py +0 -0
  365. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mcp/__init__.py +0 -0
  366. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mcp/manager.py +0 -0
  367. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mcp/oauth.py +0 -0
  368. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mcp/server.py +0 -0
  369. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mcp/utils.py +0 -0
  370. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/mdstream.py +0 -0
  371. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/models.py +0 -0
  372. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/onboarding.py +0 -0
  373. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/__init__.py +0 -0
  374. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/agent.yml +0 -0
  375. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/architect.yml +0 -0
  376. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/ask.yml +0 -0
  377. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/base.yml +0 -0
  378. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/context.yml +0 -0
  379. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/copypaste.yml +0 -0
  380. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock.yml +0 -0
  381. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock_fenced.yml +0 -0
  382. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editblock_func.yml +0 -0
  383. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_diff_fenced.yml +0 -0
  384. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_editblock.yml +0 -0
  385. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/editor_whole.yml +0 -0
  386. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/hashline.yml +0 -0
  387. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/help.yml +0 -0
  388. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/patch.yml +0 -0
  389. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/single_wholefile_func.yml +0 -0
  390. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/subagent.yml +0 -0
  391. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/udiff.yml +0 -0
  392. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/udiff_simple.yml +0 -0
  393. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/__init__.py +0 -0
  394. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/registry.py +0 -0
  395. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/utils/system.py +0 -0
  396. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/wholefile.yml +0 -0
  397. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/prompts/wholefile_func.yml +0 -0
  398. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  399. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  400. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  401. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  402. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  403. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  404. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  405. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  406. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  407. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  408. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  409. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  410. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  411. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  412. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  413. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  414. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  415. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  416. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  417. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  418. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  419. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  420. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  421. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  422. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  423. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  424. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  425. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  426. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  427. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  428. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  429. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  430. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/README.md +0 -0
  431. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  432. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  433. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  434. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  435. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  436. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  437. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  438. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  439. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  440. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  441. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  442. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  443. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  444. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  445. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  446. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  447. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  448. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  449. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  450. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  451. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  452. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  453. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  454. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  455. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  456. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  457. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  458. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/reasoning_tags.py +0 -0
  459. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/repo.py +0 -0
  460. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/repomap.py +0 -0
  461. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/report.py +0 -0
  462. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/__init__.py +0 -0
  463. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/model-metadata.ext.json +0 -0
  464. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/model-metadata.json +0 -0
  465. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/model-settings-condensed.yml +0 -0
  466. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/model-settings.yml +0 -0
  467. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/resources/providers.json +0 -0
  468. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/run_cmd.py +0 -0
  469. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/scrape.py +0 -0
  470. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/sendchat.py +0 -0
  471. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/signals.py +0 -0
  472. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/special.py +0 -0
  473. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tests/test_queue_commands.py +0 -0
  474. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/__init__.py +0 -0
  475. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/_yield.py +0 -0
  476. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/broadcast.py +0 -0
  477. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/command.py +0 -0
  478. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/delegate.py +0 -0
  479. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/edit_file.py +0 -0
  480. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/explore_code.py +0 -0
  481. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_branch.py +0 -0
  482. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_diff.py +0 -0
  483. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_log.py +0 -0
  484. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_remote.py +0 -0
  485. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_show.py +0 -0
  486. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/git_status.py +0 -0
  487. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/grep.py +0 -0
  488. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/ls.py +0 -0
  489. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/orchestrate.py +0 -0
  490. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/read_file.py +0 -0
  491. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/replace_facts.py +0 -0
  492. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/resource_manager.py +0 -0
  493. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/search_facts.py +0 -0
  494. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/thinking.py +0 -0
  495. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/undo_change.py +0 -0
  496. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/update_todo_list.py +0 -0
  497. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/__init__.py +0 -0
  498. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/base_tool.py +0 -0
  499. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/helpers.py +0 -0
  500. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/output.py +0 -0
  501. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/registry.py +0 -0
  502. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/utils/responses.py +0 -0
  503. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/validations/__init__.py +0 -0
  504. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tools/validations/validations.py +0 -0
  505. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/__init__.py +0 -0
  506. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/app.py +0 -0
  507. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/io.py +0 -0
  508. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/styles.tcss +0 -0
  509. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/__init__.py +0 -0
  510. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/completion_bar.py +0 -0
  511. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/file_list.py +0 -0
  512. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/footer.py +0 -0
  513. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/input_area.py +0 -0
  514. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/input_container.py +0 -0
  515. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/key_hints.py +0 -0
  516. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/output.py +0 -0
  517. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/output_alt.bak +0 -0
  518. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/selectable_log.py +0 -0
  519. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/status_bar.py +0 -0
  520. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/subagent_pills.py +0 -0
  521. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/widgets/thin_scrollbar.py +0 -0
  522. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/tui/worker.py +0 -0
  523. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/urls.py +0 -0
  524. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/utils.py +0 -0
  525. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/versioncheck.py +0 -0
  526. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/voice.py +0 -0
  527. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/waiting.py +0 -0
  528. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/watch_prompts.py +0 -0
  529. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/blame.md +0 -0
  530. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/get-started.md +0 -0
  531. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/help-tip.md +0 -0
  532. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/help.md +0 -0
  533. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/install.md +0 -0
  534. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/keys.md +0 -0
  535. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/model-warnings.md +0 -0
  536. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/multi-line.md +0 -0
  537. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/python-m-aider.md +0 -0
  538. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/recording.css +0 -0
  539. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/recording.md +0 -0
  540. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_includes/works-best.md +0 -0
  541. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_features.scss +0 -0
  542. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_footer.scss +0 -0
  543. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_hero.scss +0 -0
  544. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_info.scss +0 -0
  545. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_layout.scss +0 -0
  546. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_reset.scss +0 -0
  547. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_testimonials.scss +0 -0
  548. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_typography.scss +0 -0
  549. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/_variables.scss +0 -0
  550. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/custom/custom.scss +0 -0
  551. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/_sass/global-overrides.scss +0 -0
  552. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docmd.config.json +0 -0
  553. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  554. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/adv-model-settings.md +0 -0
  555. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/agent-mode.md +0 -0
  556. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/api-keys.md +0 -0
  557. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/api.md +0 -0
  558. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/conf.md +0 -0
  559. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/custom-commands.md +0 -0
  560. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  561. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/dotenv.md +0 -0
  562. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/editor.md +0 -0
  563. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/hooks.md +0 -0
  564. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/mcp.md +0 -0
  565. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-aliases.md +0 -0
  566. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-configuration.md +0 -0
  567. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/model-providers.md +0 -0
  568. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/options.md +0 -0
  569. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/persistent-memory.md +0 -0
  570. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/reasoning.md +0 -0
  571. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/retries.md +0 -0
  572. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/security.md +0 -0
  573. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/skills.md +0 -0
  574. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/subagents.md +0 -0
  575. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/system-one.md +0 -0
  576. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/tui.md +0 -0
  577. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config/workspaces.md +0 -0
  578. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/config.md +0 -0
  579. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/git.md +0 -0
  580. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/index.md +0 -0
  581. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/install/docker.md +0 -0
  582. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/install.md +0 -0
  583. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/languages.md +0 -0
  584. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  585. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/legal/privacy.md +0 -0
  586. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/anthropic.md +0 -0
  587. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/azure.md +0 -0
  588. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/bedrock.md +0 -0
  589. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/cohere.md +0 -0
  590. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/deepseek.md +0 -0
  591. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/gemini.md +0 -0
  592. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/github.md +0 -0
  593. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/groq.md +0 -0
  594. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/lm-studio.md +0 -0
  595. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/ollama.md +0 -0
  596. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openai-compat.md +0 -0
  597. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openai.md +0 -0
  598. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/opencode-go.md +0 -0
  599. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/openrouter.md +0 -0
  600. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/other.md +0 -0
  601. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/vertex.md +0 -0
  602. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/warnings.md +0 -0
  603. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms/xai.md +0 -0
  604. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/llms.md +0 -0
  605. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/analytics.md +0 -0
  606. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/edit-formats.md +0 -0
  607. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/more/infinite-output.md +0 -0
  608. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/more-info.md +0 -0
  609. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/repomap.md +0 -0
  610. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/scripting.md +0 -0
  611. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  612. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  613. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/imports.md +0 -0
  614. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  615. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/support.md +0 -0
  616. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  617. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  618. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/troubleshooting.md +0 -0
  619. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/commands.md +0 -0
  620. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/conventions.md +0 -0
  621. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/copypaste.md +0 -0
  622. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/images-urls.md +0 -0
  623. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/lint-test.md +0 -0
  624. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/modes.md +0 -0
  625. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/not-code.md +0 -0
  626. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/notifications.md +0 -0
  627. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/optional.md +0 -0
  628. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/sessions.md +0 -0
  629. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/voice.md +0 -0
  630. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage/watch.md +0 -0
  631. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/docs/usage.md +0 -0
  632. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/package-lock.json +0 -0
  633. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/package.json +0 -0
  634. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli/website/share/index.md +0 -0
  635. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/dependency_links.txt +0 -0
  636. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/entry_points.txt +0 -0
  637. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/requires.txt +0 -0
  638. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/cecli_dev.egg-info/top_level.txt +0 -0
  639. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/docker/Dockerfile +0 -0
  640. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  641. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/pyproject.toml +0 -0
  642. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/pytest.ini +0 -0
  643. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/common-constraints.txt +0 -0
  644. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-dev.in +0 -0
  645. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-dev.txt +0 -0
  646. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-help.in +0 -0
  647. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-help.txt +0 -0
  648. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-playwright.in +0 -0
  649. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements-playwright.txt +0 -0
  650. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/requirements.in +0 -0
  651. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements/tree-sitter.in +0 -0
  652. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/requirements.txt +0 -0
  653. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/30k-image.py +0 -0
  654. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/__init__.py +0 -0
  655. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/blame.py +0 -0
  656. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/clean_metadata.py +0 -0
  657. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/compare-message-history.py +0 -0
  658. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/condense_model_settings.py +0 -0
  659. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/cost_analyzer.py +0 -0
  660. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/cost_calculator.py +0 -0
  661. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/dl_icons.py +0 -0
  662. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/docmd_build.sh +0 -0
  663. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/filter-chat-mode.js +0 -0
  664. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/generate_providers.py +0 -0
  665. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/get_contributor_list.js +0 -0
  666. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/get_hashline.py +0 -0
  667. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/history_prompts.py +0 -0
  668. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/homepage.py +0 -0
  669. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/issues.py +0 -0
  670. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/logo_svg.py +0 -0
  671. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/optimize_tokens.sh +0 -0
  672. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/pip-compile.sh +0 -0
  673. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/recording_audio.py +0 -0
  674. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/redact-cast.py +0 -0
  675. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/rename_to_cecli.py +0 -0
  676. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/tmux_record.sh +0 -0
  677. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/tsl_pack_langs.py +0 -0
  678. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/update-blame.sh +0 -0
  679. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/update-docs.sh +0 -0
  680. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/update-history.py +0 -0
  681. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/versionbump.py +0 -0
  682. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/scripts/yank-old-versions.py +0 -0
  683. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/setup.cfg +0 -0
  684. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/shim.pyproject.toml +0 -0
  685. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/__init__.py +0 -0
  686. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/__init__.py +0 -0
  687. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/conftest.py +0 -0
  688. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_aws_credentials.py +0 -0
  689. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_background_commands.py +0 -0
  690. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_coder.py +0 -0
  691. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_commands.py +0 -0
  692. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_custom_commands.py +0 -0
  693. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_deprecated.py +0 -0
  694. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_editblock.py +0 -0
  695. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_editor.py +0 -0
  696. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_empty_response.py +0 -0
  697. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_exceptions.py +0 -0
  698. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_file_system_service.py +0 -0
  699. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_find_or_blocks.py +0 -0
  700. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_hashline.py +0 -0
  701. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_hashline_closure.py +0 -0
  702. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_history.py +0 -0
  703. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_io.py +0 -0
  704. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_linter.py +0 -0
  705. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_main.py +0 -0
  706. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_model_info_manager.py +0 -0
  707. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_model_provider_manager.py +0 -0
  708. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_models.py +0 -0
  709. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_onboarding.py +0 -0
  710. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_plugin_manager.py +0 -0
  711. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_prompts.py +0 -0
  712. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_reasoning.py +0 -0
  713. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_repo.py +0 -0
  714. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_repomap.py +0 -0
  715. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_retry_config.py +0 -0
  716. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_run_cmd.py +0 -0
  717. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_sanity_check_repo.py +0 -0
  718. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_scripting.py +0 -0
  719. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_select_selector.py +0 -0
  720. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_sendchat.py +0 -0
  721. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_session_args.py +0 -0
  722. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_session_crypto.py +0 -0
  723. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_sessions.py +0 -0
  724. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_sessions_manager.py +0 -0
  725. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_skills.py +0 -0
  726. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_special.py +0 -0
  727. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_spinner.py +0 -0
  728. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_ssl_verification.py +0 -0
  729. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_system_one.py +0 -0
  730. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_udiff.py +0 -0
  731. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_urls.py +0 -0
  732. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_voice.py +0 -0
  733. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/basic/test_wholefile.py +0 -0
  734. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/coders/test_coder_switching.py +0 -0
  735. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/coders/test_copypaste_coder.py +0 -0
  736. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/coders/test_rate_limit.py +0 -0
  737. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/coders/test_tool_call_consolidation.py +0 -0
  738. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_auto_memory.py +0 -0
  739. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_compaction.py +0 -0
  740. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_remove_memory.py +0 -0
  741. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_search_memory.py +0 -0
  742. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_switch_agent.py +0 -0
  743. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_voice.py +0 -0
  744. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_workflows.py +0 -0
  745. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/commands/test_workspace.py +0 -0
  746. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/conftest.py +0 -0
  747. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/conversations/test_background_command_injection.py +0 -0
  748. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/conversations/test_conversation_integration.py +0 -0
  749. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/conversations/test_conversation_system.py +0 -0
  750. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  751. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/chat-history.md +0 -0
  752. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/arduino/test.ino +0 -0
  753. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/bash/test.sh +0 -0
  754. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/c/test.c +0 -0
  755. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/chatito/test.chatito +0 -0
  756. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/clojure/test.clj +0 -0
  757. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  758. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/cpp/test.cpp +0 -0
  759. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/csharp/test.cs +0 -0
  760. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/d/test.d +0 -0
  761. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/dart/test.dart +0 -0
  762. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elisp/test.el +0 -0
  763. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elixir/test.ex +0 -0
  764. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/elm/test.elm +0 -0
  765. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/gleam/test.gleam +0 -0
  766. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/go/test.go +0 -0
  767. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/haskell/test.hs +0 -0
  768. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/hcl/test.tf +0 -0
  769. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/java/test.java +0 -0
  770. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/javascript/test.js +0 -0
  771. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/kotlin/test.kt +0 -0
  772. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/lua/test.lua +0 -0
  773. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/matlab/test.m +0 -0
  774. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ocaml/test.ml +0 -0
  775. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  776. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/php/test.php +0 -0
  777. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/pony/test.pony +0 -0
  778. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/properties/test.properties +0 -0
  779. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/python/test.py +0 -0
  780. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ql/test.ql +0 -0
  781. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/r/test.r +0 -0
  782. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/racket/test.rkt +0 -0
  783. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/ruby/test.rb +0 -0
  784. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/rust/test.rs +0 -0
  785. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/scala/test.scala +0 -0
  786. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/solidity/test.sol +0 -0
  787. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/swift/test.swift +0 -0
  788. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/tsx/test.tsx +0 -0
  789. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/typescript/test.ts +0 -0
  790. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/udev/test.rules +0 -0
  791. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/languages/zig/test.zig +0 -0
  792. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base/sample.js +0 -0
  793. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base/sample.py +0 -0
  794. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  795. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.js +0 -0
  796. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.lisp +0 -0
  797. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/watch.py +0 -0
  798. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/fixtures/watch_question.js +0 -0
  799. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/help/test_help.py +0 -0
  800. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/observations/test_observation_service.py +0 -0
  801. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/__init__.py +0 -0
  802. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_cron.py +0 -0
  803. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/scheduler/test_db.py +0 -0
  804. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/__init__.py +0 -0
  805. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_bridge.py +0 -0
  806. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_dispatch.py +0 -0
  807. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_models.py +0 -0
  808. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/server/acp/test_protocol.py +0 -0
  809. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_api_base.py +0 -0
  810. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  811. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_cache_control.py +0 -0
  812. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_gemini_auth.py +0 -0
  813. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  814. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_hyperscalers.py +0 -0
  815. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_messages_stream.py +0 -0
  816. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_messages_wire.py +0 -0
  817. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  818. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_mistral_provider.py +0 -0
  819. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_ollama_native.py +0 -0
  820. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_providers_json.py +0 -0
  821. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_config.py +0 -0
  822. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  823. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  824. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_llms_vision.py +0 -0
  825. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_loop_detect.py +0 -0
  826. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_memory_control.py +0 -0
  827. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_model_config.py +0 -0
  828. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_onboarding.py +0 -0
  829. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_orchestration.py +0 -0
  830. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/test_skills_importer.py +0 -0
  831. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/__init__.py +0 -0
  832. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_config.py +0 -0
  833. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_runner.py +0 -0
  834. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workflows/test_subagents.py +0 -0
  835. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/conftest.py +0 -0
  836. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_config.py +0 -0
  837. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_paths.py +0 -0
  838. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_subagents.py +0 -0
  839. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  840. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/hooks/__init__.py +0 -0
  841. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/hooks/test_base.py +0 -0
  842. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/hooks/test_manager.py +0 -0
  843. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/hooks/test_registry.py +0 -0
  844. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/integration/test_agent_mcp_management.py +0 -0
  845. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/integration/test_config_loading.py +0 -0
  846. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/integration/test_mcp_management.py +0 -0
  847. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/integration/test_workflows_e2e.py +0 -0
  848. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/__init__.py +0 -0
  849. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/conftest.py +0 -0
  850. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/mock_server.py +0 -0
  851. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_concurrency.py +0 -0
  852. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_config.py +0 -0
  853. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_integration.py +0 -0
  854. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_logging.py +0 -0
  855. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_resilience.py +0 -0
  856. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_keepalive_unit.py +0 -0
  857. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_manager.py +0 -0
  858. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_manager_retry.py +0 -0
  859. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_server_name_normalization.py +0 -0
  860. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_server_sdk_compat.py +0 -0
  861. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/mcp/test_tool_name_sanitization.py +0 -0
  862. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/scrape/test_playwright_disable.py +0 -0
  863. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/scrape/test_scrape.py +0 -0
  864. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/__init__.py +0 -0
  865. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/conftest.py +0 -0
  866. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_commands.py +0 -0
  867. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_config.py +0 -0
  868. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_delegate.py +0 -0
  869. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_finished.py +0 -0
  870. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/subagents/test_sub_agent_coder.py +0 -0
  871. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/test_requests.py +0 -0
  872. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_command_format_output.py +0 -0
  873. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_command_timeout_paging.py +0 -0
  874. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_edit_file_format_output.py +0 -0
  875. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_extractions.py +0 -0
  876. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_get_lines.py +0 -0
  877. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_git_branch.py +0 -0
  878. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_git_diff.py +0 -0
  879. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_grep.py +0 -0
  880. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_insert_block.py +0 -0
  881. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_read_range_execute.py +0 -0
  882. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_registry.py +0 -0
  883. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_remove_mcp_tool.py +0 -0
  884. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_resource_manager_paging.py +0 -0
  885. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_tool_arguments.py +0 -0
  886. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  887. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tools/validations.py +0 -0
  888. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tui/test_app.py +0 -0
  889. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tui/test_completion_bar.py +0 -0
  890. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/tui/test_output.py +0 -0
  891. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/conftest.py +0 -0
  892. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_deep_merge.py +0 -0
  893. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_edge_cases.py +0 -0
  894. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_load_mcp.py +0 -0
  895. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_performance.py +0 -0
  896. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_remove_mcp.py +0 -0
  897. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_retry_backoff.py +0 -0
  898. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_shallow_merge.py +0 -0
  899. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_signals.py +0 -0
  900. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  901. {cecli_dev-1.8.1rc2 → cecli_dev-1.8.1rc3}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  902. {cecli_dev-1.8.1rc2 → 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.1rc2
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.1rc2'
22
- __version_tuple__ = version_tuple = (1, 8, 1, 'rc2')
21
+ __version__ = version = '1.8.1rc3'
22
+ __version_tuple__ = version_tuple = (1, 8, 1, 'rc3')
23
23
 
24
- __commit_id__ = commit_id = 'g9c5114f1f'
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",
@@ -2717,7 +2717,7 @@ class Coder(metaclass=UsageMeta):
2717
2717
  async def check_tokens(self, messages):
2718
2718
  """Check if the messages will fit within the model's token limits."""
2719
2719
  input_tokens = self.get_active_model().token_count(messages)
2720
- 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
2721
2721
 
2722
2722
  if max_input_tokens and input_tokens >= max_input_tokens:
2723
2723
  if (
@@ -2728,7 +2728,7 @@ class Coder(metaclass=UsageMeta):
2728
2728
  f"Estimated chat context of {input_tokens:,} tokens exceeds the"
2729
2729
  f" {max_input_tokens:,} token limit. Attempting to compact..."
2730
2730
  )
2731
- await self.compact_context_if_needed(force=True)
2731
+ await self.compact_context_if_needed()
2732
2732
 
2733
2733
  # After compaction, re-format messages and re-check tokens
2734
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)
@@ -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
 
@@ -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
 
@@ -322,6 +322,12 @@ class FileWatcher:
322
322
  # before this scan can share the threshold tick and must not be re-found.
323
323
  threshold = self.last_scan_time
324
324
  found = set()
325
+ # Track the newest filesystem mtime observed during this scan. On
326
+ # Windows the wall clock (time.time) is coarser than file mtimes, so a
327
+ # file written just before this scan can carry an mtime slightly ahead
328
+ # of scan_started; advancing the threshold from the filesystem clock
329
+ # instead of the wall clock keeps such a file from being re-found.
330
+ max_mtime = threshold
325
331
 
326
332
  for root in self.get_roots_to_watch():
327
333
  root_path = Path(root)
@@ -335,12 +341,15 @@ class FileWatcher:
335
341
 
336
342
  for path in candidates:
337
343
  try:
344
+ max_mtime = max(max_mtime, path.stat().st_mtime)
338
345
  if self.filter_func(None, str(path)):
339
346
  found.add(str(path.absolute()))
340
347
  except Exception:
341
348
  continue
342
349
 
343
- self.last_scan_time = scan_started
350
+ # Advance to the newest filesystem timestamp we saw so the next scan's
351
+ # threshold is never behind a file's mtime (see note above).
352
+ self.last_scan_time = max(scan_started, max_mtime)
344
353
 
345
354
  if found:
346
355
  self.changed_files.update(found)
@@ -9,14 +9,7 @@ The [scheduler](workflows.html) is the component that turns a [workflow](workflo
9
9
 
10
10
  ## Running it
11
11
 
12
- The scheduler starts automatically in any interactive cecli session that has at least one enabled, scheduled workflow. Control it explicitly per session with:
13
-
14
- ```bash
15
- cecli --scheduler # force on for this session
16
- cecli --no-scheduler # force off (workflows are still usable via /workflows run)
17
- ```
18
-
19
- or persistently in `.cecli.conf.yml`:
12
+ The scheduler starts automatically in any interactive cecli session that has at least one enabled, scheduled workflow. It is configured as an object in `.cecli.conf.yml`:
20
13
 
21
14
  ```yaml
22
15
  scheduler:
@@ -26,7 +19,9 @@ scheduler:
26
19
  max_catchup: 1 # how many missed slots to replay before skipping ahead
27
20
  ```
28
21
 
29
- Resolution order for whether it runs: the CLI flag (`--scheduler` / `--no-scheduler`) wins, then `scheduler.enabled` from config, then auto — on when any enabled workflow has a `schedule:`, off otherwise. Nothing touches the coordination database when no scheduled workflow exists, and one-shot (`--message`) runs return before the scheduler can tick.
22
+ `--scheduler <json>` overrides it for a single session with the same object, e.g. `cecli --scheduler '{"enabled": false}'`. Disabling is always expressed through the object's `enabled` key — there is no separate off switch — and workflows remain usable manually via `/workflows run`.
23
+
24
+ Resolution order for whether it runs: `enabled` (from the CLI `--scheduler <json>` deep-merged over the `scheduler:` config key) decides on/off; when `enabled` is omitted the mode is auto — on when any enabled workflow has a `schedule:`, off otherwise. Nothing touches the coordination database when no scheduled workflow exists, and one-shot (`--message`) runs return before the scheduler can tick.
30
25
 
31
26
  The `catch_up` pair controls what happens after downtime (e.g. a sleeping laptop):
32
27
 
@@ -35,10 +30,6 @@ The `catch_up` pair controls what happens after downtime (e.g. a sleeping laptop
35
30
 
36
31
  An individual workflow may override the global setting with its own top-level `catch_up: true|false` key (see [Workflows](workflows.html)); unset means "follow the scheduler".
37
32
 
38
- A headless daemon mode (scheduling on a server with no interactive session) is planned but not yet available; today scheduled runs only fire while a cecli session is alive.
39
-
40
- In TUI mode the scheduler ticks and dispatches on the primary event loop while the interactive coder runs on the TUI worker-thread loop. Scheduled runs still get their own sub-agent pane: the container notifications handle being called from the app's own thread. Workflow dispatch itself is loop-safe (the DB is threaded, sub-agent spawning marshals through `AgentService`), but a run's worker conversation shares MCP connections across loops; prefer linear (non-TUI) sessions or a dedicated `--scheduler` instance for production schedules until a `run_coroutine_threadsafe` bridge lands.
41
-
42
33
  ## Multi-instance coordination
43
34
 
44
35
  You can safely run **many** cecli instances at once (same machine, or one shared `~/.cecli` on a network filesystem — see caveats). They cooperate through a global SQLite database:
@@ -68,5 +59,6 @@ Scheduler state is visible from any session with the [workflow commands](workflo
68
59
 
69
60
  ## Arguments
70
61
 
71
- - `--scheduler` / `--no-scheduler`: Force the workflow scheduler on or off for this session.
62
+ - `--scheduler <json>`: Override scheduler configuration for this session (same object as the `scheduler:` config key).
72
63
  - `--workflows <json|yaml>`: Workflow definitions the scheduler will consider (see [Workflows](workflows.html)).
64
+ - To disable the scheduler, pass `--scheduler '{"enabled": false}'` (or set `enabled: false` under the `scheduler:` config key).
@@ -154,4 +154,4 @@ tasks:
154
154
  ## Arguments
155
155
 
156
156
  - `--workflows <json|yaml>`: Provide an inline workflows configuration or a path to a workflows file, overriding all file-based sources.
157
- - `--scheduler` / `--no-scheduler`: Force the [scheduler](scheduler.html) on or off for this session.
157
+ - `--scheduler <json>`: Override [scheduler](scheduler.html) configuration for this session (same object as the `scheduler:` config key).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.8.1rc2
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
@@ -708,6 +708,7 @@ tests/basic/test_repomap.py
708
708
  tests/basic/test_retry_config.py
709
709
  tests/basic/test_run_cmd.py
710
710
  tests/basic/test_sanity_check_repo.py
711
+ tests/basic/test_scheduler_config.py
711
712
  tests/basic/test_scripting.py
712
713
  tests/basic/test_select_selector.py
713
714
  tests/basic/test_sendchat.py
@@ -948,6 +948,7 @@
948
948
  "tests/basic/test_retry_config.py",
949
949
  "tests/basic/test_run_cmd.py",
950
950
  "tests/basic/test_sanity_check_repo.py",
951
+ "tests/basic/test_scheduler_config.py",
951
952
  "tests/basic/test_scripting.py",
952
953
  "tests/basic/test_select_selector.py",
953
954
  "tests/basic/test_sendchat.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.8.1rc3",
3
+ "distance": 0,
4
+ "node": "gb07a9f6ade6f7b329efc64426f6411f275318357",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-16"
8
+ }
@@ -113,6 +113,7 @@ def test_all_yaml_to_json_args_deep_merge_with_config_file():
113
113
  "system_one",
114
114
  "server_config",
115
115
  "workflows",
116
+ "scheduler",
116
117
  }
117
118
  assert all("_" not in key for key in YAML_TO_JSON_ARG_KEYS.values())
118
119