cecli-dev 1.3.2rc3__tar.gz → 1.4.0__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 (836) hide show
  1. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/PKG-INFO +1 -1
  2. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/_version.py +3 -3
  3. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/base_coder.py +37 -6
  4. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/service.py +10 -1
  5. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/litellm_compat.py +10 -6
  6. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/main.py +18 -7
  7. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/models.py +168 -25
  8. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/delegate.py +30 -9
  9. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/app.py +1 -1
  10. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/agent-mode.md +1 -1
  11. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/subagents.md +1 -1
  12. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/PKG-INFO +1 -1
  13. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/SOURCES.txt +1 -0
  14. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/scm_file_list.json +1 -0
  15. cecli_dev-1.4.0/cecli_dev.egg-info/scm_version.json +8 -0
  16. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_main.py +32 -0
  17. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_delegate.py +52 -2
  18. cecli_dev-1.4.0/tests/unit/test_retry_backoff.py +536 -0
  19. cecli_dev-1.3.2rc3/cecli_dev.egg-info/scm_version.json +0 -8
  20. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.dockerignore +0 -0
  21. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.flake8 +0 -0
  22. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.gitattributes +0 -0
  23. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  24. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/check_pypi_version.yml +0 -0
  25. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/docker-build-test.yml +0 -0
  26. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/docker-release.yml +0 -0
  27. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/issues.yml +0 -0
  28. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/pages.yml +0 -0
  29. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/pre-commit.yml +0 -0
  30. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/release.yml +0 -0
  31. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/ubuntu-tests.yml +0 -0
  32. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/windows-tests.yml +0 -0
  33. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  34. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.gitignore +0 -0
  35. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.pre-commit-config.yaml +0 -0
  36. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CHANGELOG.md +0 -0
  37. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CNAME +0 -0
  38. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CONTRIBUTING.md +0 -0
  39. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/HISTORY.md +0 -0
  40. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/LICENSE.txt +0 -0
  41. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/MANIFEST.in +0 -0
  42. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/README.md +0 -0
  43. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/Dockerfile +0 -0
  44. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/README.md +0 -0
  45. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/__init__.py +0 -0
  46. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/benchmark.py +0 -0
  47. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/benchmark_classic.py +0 -0
  48. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/clone-exercism.sh +0 -0
  49. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/cpp-test.sh +0 -0
  50. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/docker.sh +0 -0
  51. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/docker_build.sh +0 -0
  52. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/install-docker-ubuntu.sh +0 -0
  53. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/npm-test.sh +0 -0
  54. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/over_time.py +0 -0
  55. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/plot.sh +0 -0
  56. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/plots.py +0 -0
  57. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/problem_stats.py +0 -0
  58. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/prompts.py +0 -0
  59. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/refactor_tools.py +0 -0
  60. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/rsync.sh +0 -0
  61. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/rungrid.py +0 -0
  62. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe-bench-lite.txt +0 -0
  63. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe-bench.txt +0 -0
  64. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe_bench.py +0 -0
  65. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/test_benchmark.py +0 -0
  66. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.1.sh +0 -0
  67. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.2.sh +0 -0
  68. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.3.sh +0 -0
  69. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.4.sh +0 -0
  70. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/__init__.py +0 -0
  71. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/__main__.py +0 -0
  72. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/args.py +0 -0
  73. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/args_formatter.py +0 -0
  74. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/change_tracker.py +0 -0
  75. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/__init__.py +0 -0
  76. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/agent_coder.py +0 -0
  77. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/architect_coder.py +0 -0
  78. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/ask_coder.py +0 -0
  79. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/chat_chunks.py +0 -0
  80. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/context_coder.py +0 -0
  81. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/copypaste_coder.py +0 -0
  82. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_coder.py +0 -0
  83. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  84. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_func_coder.py +0 -0
  85. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  86. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_editblock_coder.py +0 -0
  87. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_whole_coder.py +0 -0
  88. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/hashline_coder.py +0 -0
  89. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/help_coder.py +0 -0
  90. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/patch_coder.py +0 -0
  91. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/search_replace.py +0 -0
  92. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/shell.py +0 -0
  93. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  94. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/sub_agent_coder.py +0 -0
  95. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/udiff_coder.py +0 -0
  96. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/udiff_simple.py +0 -0
  97. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/wholefile_coder.py +0 -0
  98. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/wholefile_func_coder.py +0 -0
  99. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/__init__.py +0 -0
  100. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/add.py +0 -0
  101. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent.py +0 -0
  102. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent_model.py +0 -0
  103. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent_tree.py +0 -0
  104. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/architect.py +0 -0
  105. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/ask.py +0 -0
  106. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/auto_memory.py +0 -0
  107. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/chat_mode.py +0 -0
  108. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/clear.py +0 -0
  109. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/code.py +0 -0
  110. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/command_prefix.py +0 -0
  111. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/commit.py +0 -0
  112. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/compact.py +0 -0
  113. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context.py +0 -0
  114. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context_blocks.py +0 -0
  115. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context_management.py +0 -0
  116. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/copy.py +0 -0
  117. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/copy_context.py +0 -0
  118. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/core.py +0 -0
  119. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/diff.py +0 -0
  120. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/drop.py +0 -0
  121. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/editor.py +0 -0
  122. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/editor_model.py +0 -0
  123. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/exclude_skill.py +0 -0
  124. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/exit.py +0 -0
  125. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/git.py +0 -0
  126. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hashline.py +0 -0
  127. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/help.py +0 -0
  128. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/history_search.py +0 -0
  129. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hooks.py +0 -0
  130. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hot_reload.py +0 -0
  131. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/include_skill.py +0 -0
  132. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/lint.py +0 -0
  133. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_mcp.py +0 -0
  134. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_queue.py +0 -0
  135. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_sessions.py +0 -0
  136. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_skills.py +0 -0
  137. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load.py +0 -0
  138. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_hook.py +0 -0
  139. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_mcp.py +0 -0
  140. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_session.py +0 -0
  141. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_skill.py +0 -0
  142. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/ls.py +0 -0
  143. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/map.py +0 -0
  144. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/map_refresh.py +0 -0
  145. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/merge.py +0 -0
  146. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/model.py +0 -0
  147. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/models.py +0 -0
  148. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/multiline_mode.py +0 -0
  149. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/open.py +0 -0
  150. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/paste.py +0 -0
  151. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/queue.py +0 -0
  152. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/quit.py +0 -0
  153. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/read_only.py +0 -0
  154. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/read_only_stub.py +0 -0
  155. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reap_agent.py +0 -0
  156. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reasoning_effort.py +0 -0
  157. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_hook.py +0 -0
  158. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_mcp.py +0 -0
  159. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_memory.py +0 -0
  160. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_queue.py +0 -0
  161. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_skill.py +0 -0
  162. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/report.py +0 -0
  163. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reset.py +0 -0
  164. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/rules.py +0 -0
  165. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/run.py +0 -0
  166. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/save.py +0 -0
  167. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/save_session.py +0 -0
  168. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/search_memory.py +0 -0
  169. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/settings.py +0 -0
  170. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/spawn_agent.py +0 -0
  171. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/switch_agent.py +0 -0
  172. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  173. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/terminal_setup.py +0 -0
  174. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/test.py +0 -0
  175. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/think_tokens.py +0 -0
  176. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/tokens.py +0 -0
  177. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/undo.py +0 -0
  178. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/__init__.py +0 -0
  179. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/base_command.py +0 -0
  180. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/helpers.py +0 -0
  181. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/registry.py +0 -0
  182. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/save_load_manager.py +0 -0
  183. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/voice.py +0 -0
  184. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/weak_model.py +0 -0
  185. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/web.py +0 -0
  186. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/workspace.py +0 -0
  187. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/decoding.py +0 -0
  188. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/deprecated_args.py +0 -0
  189. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/diffs.py +0 -0
  190. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/dump.py +0 -0
  191. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/editor.py +0 -0
  192. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/exceptions.py +0 -0
  193. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/format_settings.py +0 -0
  194. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/help.py +0 -0
  195. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/help_pats.py +0 -0
  196. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/__init__.py +0 -0
  197. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/__init__.py +0 -0
  198. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/config.py +0 -0
  199. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/__init__.py +0 -0
  200. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  201. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/worker.md +0 -0
  202. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/background_commands.py +0 -0
  203. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/command_parser.py +0 -0
  204. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/command_queue.py +0 -0
  205. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/config_utils.py +0 -0
  206. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/__init__.py +0 -0
  207. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/base_message.py +0 -0
  208. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/files.py +0 -0
  209. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/integration.py +0 -0
  210. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/manager.py +0 -0
  211. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/service.py +0 -0
  212. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/tags.py +0 -0
  213. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/utils.py +0 -0
  214. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/copypaste.py +0 -0
  215. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/coroutines.py +0 -0
  216. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/crypto.py +0 -0
  217. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_searcher.py +0 -0
  218. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/__init__.py +0 -0
  219. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/builders.py +0 -0
  220. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/ignore.py +0 -0
  221. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/ngram_index.py +0 -0
  222. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/service.py +0 -0
  223. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/trie_index.py +0 -0
  224. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  225. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/dump.py +0 -0
  226. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  227. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/main.py +0 -0
  228. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  229. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  230. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashline.py +0 -0
  231. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/__init__.py +0 -0
  232. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  233. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  234. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/transformations.py +0 -0
  235. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/io_proxy.py +0 -0
  236. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/leak_detect.py +0 -0
  237. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/__init__.py +0 -0
  238. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/aws_sigv4.py +0 -0
  239. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/config.py +0 -0
  240. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/__init__.py +0 -0
  241. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/bedrock.py +0 -0
  242. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/chat.py +0 -0
  243. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/gemini.py +0 -0
  244. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/messages.py +0 -0
  245. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/responses.py +0 -0
  246. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/__init__.py +0 -0
  247. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  248. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/thinking.py +0 -0
  249. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/identifiers.py +0 -0
  250. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/pipeline.py +0 -0
  251. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/__init__.py +0 -0
  252. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/anthropic.py +0 -0
  253. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/azure.py +0 -0
  254. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/base.py +0 -0
  255. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/bedrock.py +0 -0
  256. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  257. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/deepseek.py +0 -0
  258. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/gemini.py +0 -0
  259. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  260. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/meta.py +0 -0
  261. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/openai.py +0 -0
  262. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/openrouter.py +0 -0
  263. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/runtime.py +0 -0
  264. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/types.py +0 -0
  265. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/utils.py +0 -0
  266. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/lock_detect.py +0 -0
  267. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/loop_detect.py +0 -0
  268. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/__init__.py +0 -0
  269. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/db.py +0 -0
  270. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/utils.py +0 -0
  271. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory_control.py +0 -0
  272. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/__init__.py +0 -0
  273. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/agent.py +0 -0
  274. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/api.py +0 -0
  275. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  276. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  277. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  278. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/identifiers.py +0 -0
  279. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/llm.py +0 -0
  280. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/pipeline.py +0 -0
  281. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/utils.py +0 -0
  282. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_providers.py +0 -0
  283. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/nested.py +0 -0
  284. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/observations/__init__.py +0 -0
  285. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/observations/service.py +0 -0
  286. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/__init__.py +0 -0
  287. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  288. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/environment.py +0 -0
  289. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/region_resolver.py +0 -0
  290. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/safe_methods.py +0 -0
  291. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/security.py +0 -0
  292. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/service.py +0 -0
  293. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  294. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/plugin_manager.py +0 -0
  295. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/profiler.py +0 -0
  296. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/queues.py +0 -0
  297. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/requests.py +0 -0
  298. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/responses.py +0 -0
  299. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/__init__.py +0 -0
  300. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/__init__.py +0 -0
  301. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/bridge.py +0 -0
  302. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/models.py +0 -0
  303. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/protocol.py +0 -0
  304. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/signals.py +0 -0
  305. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/ws_server.py +0 -0
  306. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/similarity.py +0 -0
  307. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/skills.py +0 -0
  308. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/threading.py +0 -0
  309. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/__init__.py +0 -0
  310. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/config.py +0 -0
  311. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/paths.py +0 -0
  312. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/subagents.py +0 -0
  313. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/workspace.py +0 -0
  314. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/history.py +0 -0
  315. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/__init__.py +0 -0
  316. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/base.py +0 -0
  317. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/helpers.py +0 -0
  318. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/integration.py +0 -0
  319. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/manager.py +0 -0
  320. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/registry.py +0 -0
  321. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/service.py +0 -0
  322. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/types.py +0 -0
  323. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/http.py +0 -0
  324. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/interruptible_input.py +0 -0
  325. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/io.py +0 -0
  326. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/linter.py +0 -0
  327. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/llm.py +0 -0
  328. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/__init__.py +0 -0
  329. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/manager.py +0 -0
  330. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/oauth.py +0 -0
  331. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/server.py +0 -0
  332. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/utils.py +0 -0
  333. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mdstream.py +0 -0
  334. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/onboarding.py +0 -0
  335. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/__init__.py +0 -0
  336. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/agent.yml +0 -0
  337. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/architect.yml +0 -0
  338. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/ask.yml +0 -0
  339. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/base.yml +0 -0
  340. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/context.yml +0 -0
  341. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/copypaste.yml +0 -0
  342. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock.yml +0 -0
  343. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock_fenced.yml +0 -0
  344. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock_func.yml +0 -0
  345. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  346. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_editblock.yml +0 -0
  347. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_whole.yml +0 -0
  348. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/hashline.yml +0 -0
  349. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/help.yml +0 -0
  350. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/patch.yml +0 -0
  351. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  352. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/subagent.yml +0 -0
  353. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/udiff.yml +0 -0
  354. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/udiff_simple.yml +0 -0
  355. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/__init__.py +0 -0
  356. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/registry.py +0 -0
  357. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/system.py +0 -0
  358. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/wholefile.yml +0 -0
  359. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/wholefile_func.yml +0 -0
  360. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  361. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  362. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  363. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  364. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  365. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  366. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  367. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  368. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  369. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  370. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  371. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  372. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  373. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  374. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  375. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  376. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  377. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  378. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  379. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  380. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  381. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  382. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  383. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  384. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  385. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  386. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  387. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  388. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  389. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  390. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  391. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  392. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  393. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  394. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  395. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  396. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  397. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  398. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  399. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  400. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  401. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  402. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  403. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  404. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  405. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  406. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  407. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  408. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  409. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  410. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  411. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  412. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  413. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  414. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  415. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  416. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  417. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  418. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  419. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  420. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/reasoning_tags.py +0 -0
  421. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/repo.py +0 -0
  422. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/repomap.py +0 -0
  423. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/report.py +0 -0
  424. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/__init__.py +0 -0
  425. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-metadata.ext.json +0 -0
  426. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-metadata.json +0 -0
  427. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-settings-condensed.yml +0 -0
  428. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-settings.yml +0 -0
  429. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/providers.json +0 -0
  430. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/run_cmd.py +0 -0
  431. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/scrape.py +0 -0
  432. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/sendchat.py +0 -0
  433. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/sessions.py +0 -0
  434. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/signals.py +0 -0
  435. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/special.py +0 -0
  436. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/__init__.py +0 -0
  437. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/_yield.py +0 -0
  438. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/broadcast.py +0 -0
  439. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/command.py +0 -0
  440. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/edit_file.py +0 -0
  441. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/explore_code.py +0 -0
  442. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_branch.py +0 -0
  443. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_diff.py +0 -0
  444. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_log.py +0 -0
  445. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_remote.py +0 -0
  446. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_show.py +0 -0
  447. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_status.py +0 -0
  448. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/grep.py +0 -0
  449. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/ls.py +0 -0
  450. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/orchestrate.py +0 -0
  451. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/read_file.py +0 -0
  452. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/replace_facts.py +0 -0
  453. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/resource_manager.py +0 -0
  454. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/search_facts.py +0 -0
  455. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/thinking.py +0 -0
  456. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/undo_change.py +0 -0
  457. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/update_todo_list.py +0 -0
  458. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/__init__.py +0 -0
  459. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/base_tool.py +0 -0
  460. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/helpers.py +0 -0
  461. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/output.py +0 -0
  462. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/registry.py +0 -0
  463. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/responses.py +0 -0
  464. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/validations/__init__.py +0 -0
  465. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/validations/validations.py +0 -0
  466. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/__init__.py +0 -0
  467. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/io.py +0 -0
  468. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/styles.tcss +0 -0
  469. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/__init__.py +0 -0
  470. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/completion_bar.py +0 -0
  471. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/file_list.py +0 -0
  472. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/footer.py +0 -0
  473. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/input_area.py +0 -0
  474. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/input_container.py +0 -0
  475. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/key_hints.py +0 -0
  476. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/output.py +0 -0
  477. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/output_alt.bak +0 -0
  478. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/selectable_log.py +0 -0
  479. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/status_bar.py +0 -0
  480. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/subagent_pills.py +0 -0
  481. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/worker.py +0 -0
  482. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/urls.py +0 -0
  483. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/utils.py +0 -0
  484. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/versioncheck.py +0 -0
  485. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/voice.py +0 -0
  486. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/waiting.py +0 -0
  487. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/watch.py +0 -0
  488. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/watch_prompts.py +0 -0
  489. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/blame.md +0 -0
  490. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/get-started.md +0 -0
  491. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/help-tip.md +0 -0
  492. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/help.md +0 -0
  493. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/install.md +0 -0
  494. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/keys.md +0 -0
  495. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/model-warnings.md +0 -0
  496. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/multi-line.md +0 -0
  497. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/python-m-aider.md +0 -0
  498. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/recording.css +0 -0
  499. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/recording.md +0 -0
  500. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/works-best.md +0 -0
  501. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_features.scss +0 -0
  502. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_footer.scss +0 -0
  503. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_hero.scss +0 -0
  504. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_info.scss +0 -0
  505. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_layout.scss +0 -0
  506. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_reset.scss +0 -0
  507. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_testimonials.scss +0 -0
  508. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_typography.scss +0 -0
  509. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_variables.scss +0 -0
  510. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/custom/custom.scss +0 -0
  511. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/global-overrides.scss +0 -0
  512. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docmd.config.json +0 -0
  513. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  514. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  515. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/api-keys.md +0 -0
  516. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/api.md +0 -0
  517. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/conf.md +0 -0
  518. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/custom-commands.md +0 -0
  519. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  520. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/dotenv.md +0 -0
  521. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/editor.md +0 -0
  522. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/hooks.md +0 -0
  523. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/mcp.md +0 -0
  524. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-aliases.md +0 -0
  525. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-configuration.md +0 -0
  526. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-providers.md +0 -0
  527. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/options.md +0 -0
  528. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/persistent-memory.md +0 -0
  529. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/reasoning.md +0 -0
  530. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/retries.md +0 -0
  531. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/security.md +0 -0
  532. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/skills.md +0 -0
  533. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/tui.md +0 -0
  534. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/workspaces.md +0 -0
  535. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config.md +0 -0
  536. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/git.md +0 -0
  537. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/index.md +0 -0
  538. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/install/docker.md +0 -0
  539. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/install.md +0 -0
  540. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/languages.md +0 -0
  541. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  542. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/legal/privacy.md +0 -0
  543. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/anthropic.md +0 -0
  544. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/azure.md +0 -0
  545. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/bedrock.md +0 -0
  546. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/cohere.md +0 -0
  547. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/deepseek.md +0 -0
  548. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/gemini.md +0 -0
  549. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/github.md +0 -0
  550. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/groq.md +0 -0
  551. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  552. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/ollama.md +0 -0
  553. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  554. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openai.md +0 -0
  555. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/opencode-go.md +0 -0
  556. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openrouter.md +0 -0
  557. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/other.md +0 -0
  558. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/vertex.md +0 -0
  559. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/warnings.md +0 -0
  560. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/xai.md +0 -0
  561. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms.md +0 -0
  562. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/analytics.md +0 -0
  563. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/edit-formats.md +0 -0
  564. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/infinite-output.md +0 -0
  565. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more-info.md +0 -0
  566. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/repomap.md +0 -0
  567. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/scripting.md +0 -0
  568. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  569. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  570. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  571. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  572. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  573. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  574. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  575. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting.md +0 -0
  576. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/commands.md +0 -0
  577. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/conventions.md +0 -0
  578. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/copypaste.md +0 -0
  579. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/images-urls.md +0 -0
  580. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/lint-test.md +0 -0
  581. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/modes.md +0 -0
  582. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/not-code.md +0 -0
  583. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/notifications.md +0 -0
  584. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/optional.md +0 -0
  585. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/sessions.md +0 -0
  586. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/tips.md +0 -0
  587. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/voice.md +0 -0
  588. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/watch.md +0 -0
  589. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage.md +0 -0
  590. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/package-lock.json +0 -0
  591. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/package.json +0 -0
  592. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/share/index.md +0 -0
  593. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  594. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  595. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/requires.txt +0 -0
  596. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/top_level.txt +0 -0
  597. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/docker/Dockerfile +0 -0
  598. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  599. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/pyproject.toml +0 -0
  600. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/pytest.ini +0 -0
  601. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/common-constraints.txt +0 -0
  602. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-dev.in +0 -0
  603. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-dev.txt +0 -0
  604. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-help.in +0 -0
  605. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-help.txt +0 -0
  606. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-playwright.in +0 -0
  607. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-playwright.txt +0 -0
  608. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements.in +0 -0
  609. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/tree-sitter.in +0 -0
  610. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements.txt +0 -0
  611. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/30k-image.py +0 -0
  612. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/__init__.py +0 -0
  613. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/blame.py +0 -0
  614. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/clean_metadata.py +0 -0
  615. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/compare-message-history.py +0 -0
  616. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/condense_model_settings.py +0 -0
  617. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/cost_analyzer.py +0 -0
  618. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/cost_calculator.py +0 -0
  619. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/dl_icons.py +0 -0
  620. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/docmd_build.sh +0 -0
  621. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/filter-chat-mode.js +0 -0
  622. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/generate_providers.py +0 -0
  623. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/get_contributor_list.js +0 -0
  624. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/get_hashline.py +0 -0
  625. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/history_prompts.py +0 -0
  626. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/homepage.py +0 -0
  627. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/issues.py +0 -0
  628. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/logo_svg.py +0 -0
  629. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/optimize_tokens.sh +0 -0
  630. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/pip-compile.sh +0 -0
  631. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/recording_audio.py +0 -0
  632. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/redact-cast.py +0 -0
  633. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/rename_to_cecli.py +0 -0
  634. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/tmux_record.sh +0 -0
  635. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/tsl_pack_langs.py +0 -0
  636. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-blame.sh +0 -0
  637. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-docs.sh +0 -0
  638. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-history.py +0 -0
  639. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/versionbump.py +0 -0
  640. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/yank-old-versions.py +0 -0
  641. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/setup.cfg +0 -0
  642. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/shim.pyproject.toml +0 -0
  643. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/__init__.py +0 -0
  644. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/__init__.py +0 -0
  645. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/conftest.py +0 -0
  646. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_agent_config_merge.py +0 -0
  647. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_aws_credentials.py +0 -0
  648. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_background_commands.py +0 -0
  649. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_coder.py +0 -0
  650. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_commands.py +0 -0
  651. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_custom_commands.py +0 -0
  652. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_deprecated.py +0 -0
  653. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_editblock.py +0 -0
  654. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_editor.py +0 -0
  655. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_exceptions.py +0 -0
  656. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_file_system_service.py +0 -0
  657. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_find_or_blocks.py +0 -0
  658. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_hashline.py +0 -0
  659. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_hashline_closure.py +0 -0
  660. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_history.py +0 -0
  661. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_io.py +0 -0
  662. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_linter.py +0 -0
  663. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_model_info_manager.py +0 -0
  664. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_model_provider_manager.py +0 -0
  665. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_models.py +0 -0
  666. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_onboarding.py +0 -0
  667. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_plugin_manager.py +0 -0
  668. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_prompts.py +0 -0
  669. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_reasoning.py +0 -0
  670. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_repo.py +0 -0
  671. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_repomap.py +0 -0
  672. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_run_cmd.py +0 -0
  673. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sanity_check_repo.py +0 -0
  674. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_scripting.py +0 -0
  675. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_select_selector.py +0 -0
  676. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sendchat.py +0 -0
  677. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_session_args.py +0 -0
  678. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_session_crypto.py +0 -0
  679. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sessions.py +0 -0
  680. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sessions_manager.py +0 -0
  681. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_skills.py +0 -0
  682. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_special.py +0 -0
  683. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_spinner.py +0 -0
  684. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_ssl_verification.py +0 -0
  685. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_udiff.py +0 -0
  686. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_urls.py +0 -0
  687. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_voice.py +0 -0
  688. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_watch.py +0 -0
  689. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_wholefile.py +0 -0
  690. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_coder_switching.py +0 -0
  691. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_copypaste_coder.py +0 -0
  692. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_tool_call_consolidation.py +0 -0
  693. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_auto_memory.py +0 -0
  694. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_compaction.py +0 -0
  695. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_open.py +0 -0
  696. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_remove_memory.py +0 -0
  697. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_search_memory.py +0 -0
  698. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_switch_agent.py +0 -0
  699. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conftest.py +0 -0
  700. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conversations/test_conversation_integration.py +0 -0
  701. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conversations/test_conversation_system.py +0 -0
  702. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  703. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/chat-history.md +0 -0
  704. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  705. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/bash/test.sh +0 -0
  706. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/c/test.c +0 -0
  707. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  708. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  709. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  710. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  711. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  712. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/d/test.d +0 -0
  713. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/dart/test.dart +0 -0
  714. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elisp/test.el +0 -0
  715. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  716. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elm/test.elm +0 -0
  717. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  718. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/go/test.go +0 -0
  719. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  720. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  721. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/java/test.java +0 -0
  722. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/javascript/test.js +0 -0
  723. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  724. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/lua/test.lua +0 -0
  725. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/matlab/test.m +0 -0
  726. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  727. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  728. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/php/test.php +0 -0
  729. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/pony/test.pony +0 -0
  730. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/properties/test.properties +0 -0
  731. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/python/test.py +0 -0
  732. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ql/test.ql +0 -0
  733. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/r/test.r +0 -0
  734. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  735. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  736. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/rust/test.rs +0 -0
  737. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/scala/test.scala +0 -0
  738. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  739. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/swift/test.swift +0 -0
  740. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  741. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  742. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/udev/test.rules +0 -0
  743. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/zig/test.zig +0 -0
  744. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  745. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  746. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  747. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.js +0 -0
  748. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.lisp +0 -0
  749. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.py +0 -0
  750. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch_question.js +0 -0
  751. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/help/test_help.py +0 -0
  752. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/observations/test_observation_service.py +0 -0
  753. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/__init__.py +0 -0
  754. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_bridge.py +0 -0
  755. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_dispatch.py +0 -0
  756. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_models.py +0 -0
  757. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_protocol.py +0 -0
  758. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_api_base.py +0 -0
  759. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  760. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_cache_control.py +0 -0
  761. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_gemini_auth.py +0 -0
  762. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  763. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_hyperscalers.py +0 -0
  764. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_messages_stream.py +0 -0
  765. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_messages_wire.py +0 -0
  766. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_providers_json.py +0 -0
  767. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_reasoning_config.py +0 -0
  768. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  769. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_vision.py +0 -0
  770. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_loop_detect.py +0 -0
  771. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_memory_control.py +0 -0
  772. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_model_config.py +0 -0
  773. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_orchestration.py +0 -0
  774. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/conftest.py +0 -0
  775. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_config.py +0 -0
  776. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_paths.py +0 -0
  777. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_subagents.py +0 -0
  778. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_workspace.py +0 -0
  779. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/__init__.py +0 -0
  780. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_base.py +0 -0
  781. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_manager.py +0 -0
  782. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_registry.py +0 -0
  783. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_agent_mcp_management.py +0 -0
  784. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_config_loading.py +0 -0
  785. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_mcp_management.py +0 -0
  786. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/__init__.py +0 -0
  787. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/conftest.py +0 -0
  788. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/mock_server.py +0 -0
  789. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_concurrency.py +0 -0
  790. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_config.py +0 -0
  791. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_integration.py +0 -0
  792. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_logging.py +0 -0
  793. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_resilience.py +0 -0
  794. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_unit.py +0 -0
  795. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_manager.py +0 -0
  796. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_manager_retry.py +0 -0
  797. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_server_name_normalization.py +0 -0
  798. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_server_sdk_compat.py +0 -0
  799. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/scrape/test_playwright_disable.py +0 -0
  800. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/scrape/test_scrape.py +0 -0
  801. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/__init__.py +0 -0
  802. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/conftest.py +0 -0
  803. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_commands.py +0 -0
  804. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_config.py +0 -0
  805. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_finished.py +0 -0
  806. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_io_proxy.py +0 -0
  807. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_service.py +0 -0
  808. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_sub_agent_coder.py +0 -0
  809. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/test_requests.py +0 -0
  810. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_command_format_output.py +0 -0
  811. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_edit_file_format_output.py +0 -0
  812. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_extractions.py +0 -0
  813. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_get_lines.py +0 -0
  814. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_git_branch.py +0 -0
  815. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_git_diff.py +0 -0
  816. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_grep.py +0 -0
  817. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_insert_block.py +0 -0
  818. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_read_range_execute.py +0 -0
  819. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_registry.py +0 -0
  820. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_remove_mcp_tool.py +0 -0
  821. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_tool_arguments.py +0 -0
  822. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  823. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/validations.py +0 -0
  824. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tui/test_app.py +0 -0
  825. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/conftest.py +0 -0
  826. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_deep_merge.py +0 -0
  827. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_edge_cases.py +0 -0
  828. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_load_mcp.py +0 -0
  829. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_performance.py +0 -0
  830. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_queues.py +0 -0
  831. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_remove_mcp.py +0 -0
  832. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_shallow_merge.py +0 -0
  833. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_signals.py +0 -0
  834. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  835. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  836. {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.3.2rc3
3
+ Version: 1.4.0
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.3.2rc3'
22
- __version_tuple__ = version_tuple = (1, 3, 2, 'rc3')
21
+ __version__ = version = '1.4.0'
22
+ __version_tuple__ = version_tuple = (1, 4, 0)
23
23
 
24
- __commit_id__ = commit_id = 'ge2f9c56b1'
24
+ __commit_id__ = commit_id = 'g1933dd2b7'
@@ -474,14 +474,14 @@ class Coder(metaclass=UsageMeta):
474
474
  self._inherited_tools = True
475
475
 
476
476
  self.interrupt_event = ThreadSafeEvent()
477
- self.uuid = str(generate_unique_id())
477
+ self.uuid = str(generate_unique_id()).split("-")[0]
478
478
  self.reflected_message = None
479
479
 
480
480
  if uuid:
481
- self.uuid = str(uuid)
481
+ self.uuid = str(uuid).split("-")[0]
482
482
 
483
483
  if parent_uuid:
484
- self.parent_uuid = str(parent_uuid)
484
+ self.parent_uuid = str(parent_uuid).split("-")[0]
485
485
 
486
486
  self.map_cache_dir = map_cache_dir
487
487
 
@@ -4962,13 +4962,44 @@ class Coder(metaclass=UsageMeta):
4962
4962
  return edits
4963
4963
 
4964
4964
  def local_agent_folder(self, path):
4965
+ primary_uuid = self._resolve_primary_agent_uuid()
4966
+ primary_root = os.path.abspath(self.primary_root)
4967
+
4968
+ stripped = path.lstrip("/")
4969
+
4970
+ if self.uuid == primary_uuid:
4971
+ rel_dir = f"{primary_root}/.cecli/agents/{GLOBAL_DATE}/{primary_uuid}"
4972
+ else:
4973
+ rel_dir = f"{primary_root}/.cecli/agents/{GLOBAL_DATE}/{primary_uuid}/s/{self.uuid}"
4974
+
4965
4975
  os.makedirs(
4966
- self.abs_root_path(f".cecli/agents/{GLOBAL_DATE}/{self.uuid}"),
4976
+ self.abs_root_path(rel_dir),
4967
4977
  exist_ok=True,
4968
4978
  )
4969
4979
 
4970
- stripped = path.lstrip("/")
4971
- return f".cecli/agents/{GLOBAL_DATE}/{self.uuid}/{stripped}"
4980
+ return f"{rel_dir}/{stripped}"
4981
+
4982
+ def _resolve_primary_agent_uuid(self):
4983
+ """Return the primary coder's uuid for this session (memoized).
4984
+
4985
+ All agents spawned under a primary coder share the same base folder,
4986
+ so sub-agent files nest under one location regardless of delegation
4987
+ depth. Falls back to this coder's own uuid when the service is
4988
+ unavailable (e.g. in unit tests).
4989
+ """
4990
+ if getattr(self, "_primary_agent_uuid", None):
4991
+ return self._primary_agent_uuid
4992
+
4993
+ primary_uuid = self.uuid
4994
+ try:
4995
+ from cecli.helpers.agents.service import AgentService
4996
+
4997
+ primary_uuid = AgentService.get_primary_uuid() or self.uuid
4998
+ except Exception:
4999
+ pass
5000
+
5001
+ self._primary_agent_uuid = primary_uuid
5002
+ return primary_uuid
4972
5003
 
4973
5004
  async def auto_save_session(self, force=False):
4974
5005
  """Automatically save the current session to {auto-save-session-name}.json."""
@@ -137,6 +137,15 @@ class AgentService:
137
137
  """Return the global sub-agent registry (name -> config)."""
138
138
  return cls._global_registry
139
139
 
140
+ @classmethod
141
+ def get_primary_uuid(cls) -> Optional[str]:
142
+ """Return the primary coder's uuid for the current session (memoized).
143
+
144
+ Fixed on the first :meth:`get_instance` call, so every agent spawned
145
+ in a session resolves to the same shared base uuid.
146
+ """
147
+ return cls._primary_agent_uuid
148
+
140
149
  @classmethod
141
150
  def get_all_agents(cls) -> List[Any]:
142
151
  """Return all live coder instances tracked in the global uuid map.
@@ -576,7 +585,7 @@ class AgentService:
576
585
 
577
586
  async with self._get_lock(self._spawn_locks, parent_coder.uuid):
578
587
  self._check_max_sub_agents()
579
- new_uuid = str(uuid4())
588
+ new_uuid = str(uuid4()).split("-")[0]
580
589
 
581
590
  from cecli.coders import Coder
582
591
 
@@ -395,6 +395,8 @@ class _FacadeException(Exception):
395
395
  ) -> None:
396
396
  super().__init__(message or "")
397
397
  self.status_code = status_code
398
+ for k, v in kwargs.items():
399
+ setattr(self, k, v)
398
400
 
399
401
 
400
402
  class APIConnectionError(_FacadeException):
@@ -508,21 +510,23 @@ def _translate_http_error(err: httpx.HTTPStatusError) -> _FacadeException:
508
510
  if status == 400 and any(
509
511
  token in body for token in ("context", "context_length", "maximum context")
510
512
  ):
511
- return ContextWindowExceededError(message=message, status_code=status)
513
+ return ContextWindowExceededError(
514
+ message=message, status_code=status, response=err.response
515
+ )
512
516
 
513
517
  if status in (401, 403):
514
- return AuthenticationError(message=message, status_code=status)
518
+ return AuthenticationError(message=message, status_code=status, response=err.response)
515
519
 
516
520
  if status == 404:
517
- return NotFoundError(message=message, status_code=status)
521
+ return NotFoundError(message=message, status_code=status, response=err.response)
518
522
 
519
523
  if status == 429:
520
- return RateLimitError(message=message, status_code=status)
524
+ return RateLimitError(message=message, status_code=status, response=err.response)
521
525
 
522
526
  if status >= 500:
523
- return InternalServerError(message=message, status_code=status)
527
+ return InternalServerError(message=message, status_code=status, response=err.response)
524
528
 
525
- return APIError(message=message, status_code=status)
529
+ return APIError(message=message, status_code=status, response=err.response)
526
530
 
527
531
 
528
532
  # ---------------------------------------------------------------------------
@@ -1424,7 +1424,10 @@ async def main_async(
1424
1424
  pre_init_io.tool_output()
1425
1425
  webbrowser.open(urls.release_notes)
1426
1426
  return await graceful_exit(coder)
1427
- elif args.show_release_notes is None and is_first_run:
1427
+ elif args.show_release_notes is None and is_first_run and not args.yes_always:
1428
+ # Suppress the first-run release-notes prompt when --yes-always is set,
1429
+ # so automated/headless runs don't have the browser hijacked by an
1430
+ # auto-confirmed offer_url. Explicit --show-release-notes still opens.
1428
1431
  pre_init_io.tool_output()
1429
1432
  await pre_init_io.offer_url(
1430
1433
  urls.release_notes,
@@ -1781,13 +1784,21 @@ async def graceful_exit(coder=None, exit_code=0):
1781
1784
  if (now - mtime) > week_seconds:
1782
1785
  shutil.rmtree(agent_folder, ignore_errors=True)
1783
1786
  else:
1784
- # Remove empty sub-folders in remaining folders
1785
- for sub_folder in agent_folder.iterdir():
1786
- if sub_folder.is_dir():
1787
- try:
1787
+ # Find all nested subdirectories inside this agent folder
1788
+ all_subdirs = [d for d in agent_folder.rglob("*") if d.is_dir()]
1789
+
1790
+ # Sort them by depth (deepest first) so child dirs are processed before parents
1791
+ all_subdirs.sort(key=lambda x: len(x.parts), reverse=True)
1792
+
1793
+ for sub_folder in all_subdirs:
1794
+ try:
1795
+ # rmdir() safely fails if a file is present
1796
+ # any() checks if the directory has any files or remaining folders
1797
+ if not any(sub_folder.iterdir()):
1788
1798
  sub_folder.rmdir()
1789
- except OSError:
1790
- pass
1799
+ except OSError:
1800
+ pass
1801
+
1791
1802
  except (OSError, PermissionError):
1792
1803
  pass
1793
1804
  except Exception:
@@ -12,12 +12,15 @@ from uuid import uuid4 as generate_unique_id
12
12
 
13
13
  import yaml
14
14
 
15
- from cecli import __version__
15
+ from cecli import __version__, utils
16
16
  from cecli.decoding import safe_open
17
17
  from cecli.dump import dump
18
18
  from cecli.exceptions import LiteLLMExceptions
19
19
  from cecli.helpers import coroutines, nested
20
- from cecli.helpers.file_searcher import generate_search_path_list, handle_core_files
20
+ from cecli.helpers.file_searcher import (
21
+ generate_search_path_list,
22
+ handle_core_files,
23
+ )
21
24
  from cecli.helpers.model_config import get_default_config
22
25
  from cecli.helpers.model_config.utils import get_entry_from_raw
23
26
  from cecli.helpers.model_providers import ModelProviderManager
@@ -289,7 +292,9 @@ class ModelInfoManager:
289
292
  import re
290
293
 
291
294
  if re.search(
292
- f"The model\\s*.*{re.escape(url_part)}.* is not available", html, re.IGNORECASE
295
+ f"The model\\s*.*{re.escape(url_part)}.* is not available",
296
+ html,
297
+ re.IGNORECASE,
293
298
  ):
294
299
  print(f"\x1b[91mError: Model '{url_part}' is not available\x1b[0m")
295
300
  return {}
@@ -497,7 +502,8 @@ class Model(ModelSettings):
497
502
  "editor_model", nested.getter(from_model, "editor_model", None)
498
503
  )
499
504
  editor_edit_format = kwargs.get(
500
- "editor_edit_format", nested.getter(from_model, "editor_edit_format", None)
505
+ "editor_edit_format",
506
+ nested.getter(from_model, "editor_edit_format", None),
501
507
  )
502
508
  else:
503
509
  agent_model = kwargs.get("agent_model", None)
@@ -538,7 +544,8 @@ class Model(ModelSettings):
538
544
  self.editor_model = None
539
545
  self.agent_model = None
540
546
  self.extra_model_settings = next(
541
- (ms for ms in MODEL_SETTINGS if ms.name == "cecli/extra_params"), None
547
+ (ms for ms in MODEL_SETTINGS if ms.name == "cecli/extra_params"),
548
+ None,
542
549
  )
543
550
  self.info = self.get_model_info(model)
544
551
  self.model_config_defaults = get_default_config(
@@ -654,18 +661,24 @@ class Model(ModelSettings):
654
661
  for key, value in config.items():
655
662
  if key in ("agent", "model_settings", "model-settings"):
656
663
  if not isinstance(value, dict):
657
- raise ValueError(f"override_kwargs '{key}' must be a dict, got {type(value)}")
664
+ raise ValueError(
665
+ f"override_kwargs '{key}' must be a dict, got" f" {type(value)}"
666
+ )
658
667
 
659
668
  for setting_key, setting_value in value.items():
660
669
  if setting_key not in valid_model_settings_fields:
661
670
  raise ValueError(
662
- f"Invalid model_settings key '{setting_key}'. "
663
- f"Must be one of: {sorted(valid_model_settings_fields)}"
671
+ f"Invalid model_settings key '{setting_key}'. Must"
672
+ f" be one of: {sorted(valid_model_settings_fields)}"
664
673
  )
665
674
 
666
675
  setattr(self, setting_key, setting_value)
667
676
 
668
- elif has_structured_keys and key in ("api", "api_settings", "api-settings"):
677
+ elif has_structured_keys and key in (
678
+ "api",
679
+ "api_settings",
680
+ "api-settings",
681
+ ):
669
682
  # api_settings: merge each sub-key into extra_params
670
683
  if not isinstance(value, dict):
671
684
  raise ValueError(f"override_kwargs '{key}' must be a dict, got {type(value)}")
@@ -687,11 +700,18 @@ class Model(ModelSettings):
687
700
  if isinstance(api_value, dict) and isinstance(
688
701
  self.extra_params.get(api_key), dict
689
702
  ):
690
- self.extra_params[api_key] = {**self.extra_params[api_key], **api_value}
703
+ self.extra_params[api_key] = {
704
+ **self.extra_params[api_key],
705
+ **api_value,
706
+ }
691
707
  else:
692
708
  self.extra_params[api_key] = api_value
693
709
 
694
- elif has_structured_keys and key in ("llm", "llm_settings", "llm-settings"):
710
+ elif has_structured_keys and key in (
711
+ "llm",
712
+ "llm_settings",
713
+ "llm-settings",
714
+ ):
695
715
  # llm_settings: merge into self.info
696
716
  if not isinstance(value, dict):
697
717
  raise ValueError(f"override_kwargs '{key}' must be a dict, got {type(value)}")
@@ -1213,7 +1233,10 @@ class Model(ModelSettings):
1213
1233
  elif "reasoning" in extra_body:
1214
1234
  del extra_body["reasoning"]
1215
1235
  elif num_tokens > 0:
1216
- extra_body["thinking"] = {"type": "enabled", "budget_tokens": num_tokens}
1236
+ extra_body["thinking"] = {
1237
+ "type": "enabled",
1238
+ "budget_tokens": num_tokens,
1239
+ }
1217
1240
  # extra_body is authoritative; drop any legacy top-level copy.
1218
1241
  self.extra_params.pop("thinking", None)
1219
1242
  else:
@@ -1322,7 +1345,8 @@ class Model(ModelSettings):
1322
1345
 
1323
1346
  if effective_tools:
1324
1347
  sorted_tools = sorted(
1325
- effective_tools, key=lambda x: x.get("function", {}).get("name", "Invalid Name")
1348
+ effective_tools,
1349
+ key=lambda x: x.get("function", {}).get("name", "Invalid Name"),
1326
1350
  )
1327
1351
 
1328
1352
  try:
@@ -1352,7 +1376,10 @@ class Model(ModelSettings):
1352
1376
  if "name" in function:
1353
1377
  tool_name = function.get("name")
1354
1378
  if tool_name:
1355
- kwargs["tool_choice"] = {"type": "function", "function": {"name": tool_name}}
1379
+ kwargs["tool_choice"] = {
1380
+ "type": "function",
1381
+ "function": {"name": tool_name},
1382
+ }
1356
1383
 
1357
1384
  if self.extra_params:
1358
1385
  kwargs.update(self.extra_params)
@@ -1456,10 +1483,15 @@ class Model(ModelSettings):
1456
1483
  if ex_info.name == "ServiceUnavailableError":
1457
1484
  should_retry = should_retry or self.retry_on_unavailable
1458
1485
 
1459
- if should_retry:
1486
+ custom_retry_delay = self._extract_retry_delay(err)
1487
+ if custom_retry_delay is not None:
1488
+ retry_delay = custom_retry_delay
1489
+ should_retry = True
1490
+ elif should_retry:
1460
1491
  retry_delay *= self.retry_backoff_factor
1461
- if retry_delay > self.retry_timeout:
1462
- should_retry = False
1492
+
1493
+ if retry_delay > self.retry_timeout:
1494
+ should_retry = False
1463
1495
 
1464
1496
  # Check for non-retryable RateLimitError within ServiceUnavailableError
1465
1497
  if (
@@ -1550,10 +1582,16 @@ class Model(ModelSettings):
1550
1582
  if ex_info.description:
1551
1583
  print(ex_info.description)
1552
1584
  should_retry = ex_info.retry
1553
- if should_retry:
1585
+ custom_retry_delay = self._extract_retry_delay(err)
1586
+ if custom_retry_delay is not None:
1587
+ retry_delay = custom_retry_delay
1588
+ should_retry = True
1589
+ elif should_retry:
1554
1590
  retry_delay *= 2
1555
- if retry_delay > RETRY_TIMEOUT:
1556
- should_retry = False
1591
+
1592
+ if retry_delay > RETRY_TIMEOUT:
1593
+ should_retry = False
1594
+
1557
1595
  if not should_retry:
1558
1596
  return None
1559
1597
  print(f"Retrying in {retry_delay:.1f} seconds...")
@@ -1574,7 +1612,7 @@ class Model(ModelSettings):
1574
1612
  finish_reason="stop",
1575
1613
  index=0,
1576
1614
  message=litellm.Message(
1577
- content="Model API Response Error. Please retry the previous request"
1615
+ content=("Model API Response Error. Please retry the previous request")
1578
1616
  ),
1579
1617
  )
1580
1618
  ],
@@ -1584,6 +1622,104 @@ class Model(ModelSettings):
1584
1622
  async def model_error_response_stream(self):
1585
1623
  yield self.model_error_response()
1586
1624
 
1625
+ def _extract_retry_delay(self, err):
1626
+ """
1627
+ Extract suggested retry delay (in seconds) from a 429 rate-limit error.
1628
+
1629
+ 1. Gemini payload body: Google RPC APIs return `google.rpc.RetryInfo` with
1630
+ a `retryDelay` field (e.g. "15.2s") inside the `error.details` array.
1631
+ 2. HTTP headers fallback: Standard providers (OpenAI, Anthropic, Groq, etc.)
1632
+ supply `retry-after` (seconds) or `retry-after-ms` (milliseconds) headers.
1633
+ """
1634
+ status_code = nested.getter(err, ["status_code", "response.status_code"], None)
1635
+ if isinstance(status_code, (int, str, float)) and str(status_code) != "429":
1636
+ return None
1637
+
1638
+ # 1. Check Gemini response payload for google.rpc.RetryInfo retryDelay
1639
+ candidates = []
1640
+ response = nested.getter(err, "response")
1641
+ if callable(getattr(response, "json", None)):
1642
+ try:
1643
+ data = response.json()
1644
+ if isinstance(data, dict):
1645
+ candidates.append(data)
1646
+ except Exception:
1647
+ pass
1648
+
1649
+ sources = [
1650
+ response,
1651
+ nested.getter(err, "message"),
1652
+ nested.getter(err, "body"),
1653
+ nested.getter(err, "error"),
1654
+ nested.getter(err, "raw_response"),
1655
+ str(err) if isinstance(err, Exception) else None,
1656
+ err,
1657
+ ]
1658
+
1659
+ for src in sources:
1660
+ if not src:
1661
+ continue
1662
+ if isinstance(src, dict):
1663
+ candidates.append(src)
1664
+ elif isinstance(src, (str, bytes)):
1665
+ text_str = src.decode("utf-8", errors="ignore") if isinstance(src, bytes) else src
1666
+ for chunk in utils.split_concatenated_json(text_str):
1667
+ try:
1668
+ parsed = json.loads(chunk)
1669
+ if isinstance(parsed, dict):
1670
+ candidates.append(parsed)
1671
+ except Exception:
1672
+ pass
1673
+ else:
1674
+ text = nested.getter(src, ["text", "content"])
1675
+ if isinstance(text, (str, bytes)):
1676
+ text_str = (
1677
+ text.decode("utf-8", errors="ignore") if isinstance(text, bytes) else text
1678
+ )
1679
+ for chunk in utils.split_concatenated_json(text_str):
1680
+ try:
1681
+ parsed = json.loads(chunk)
1682
+ if isinstance(parsed, dict):
1683
+ candidates.append(parsed)
1684
+ except Exception:
1685
+ pass
1686
+
1687
+ for candidate in candidates:
1688
+ if not isinstance(candidate, dict):
1689
+ continue
1690
+
1691
+ details = nested.getter(candidate, "error.details")
1692
+ if isinstance(details, list):
1693
+ for item in details:
1694
+ delay_val = nested.getter(item, "retryDelay")
1695
+ if delay_val is not None:
1696
+ delay_str = str(delay_val).strip()
1697
+ if delay_str.endswith("s"):
1698
+ delay_str = delay_str[:-1]
1699
+ try:
1700
+ return float(delay_str)
1701
+ except (ValueError, TypeError):
1702
+ pass
1703
+
1704
+ # 2. Check HTTP headers fallback (retry-after, retry-after-ms)
1705
+ headers = nested.getter(err, ["response.headers", "headers"], None)
1706
+ if headers is not None:
1707
+ retry_after = nested.getter(headers, ["retry-after"], None)
1708
+ if retry_after is not None:
1709
+ try:
1710
+ return float(str(retry_after).strip())
1711
+ except (ValueError, TypeError):
1712
+ pass
1713
+
1714
+ retry_after_ms = nested.getter(headers, ["retry-after-ms"], None)
1715
+ if retry_after_ms is not None:
1716
+ try:
1717
+ return float(str(retry_after_ms).strip()) / 1000.0
1718
+ except (ValueError, TypeError):
1719
+ pass
1720
+
1721
+ return None
1722
+
1587
1723
  def _log_messages(self, messages, name="message"):
1588
1724
  """
1589
1725
  Log conversation messages to a JSON file.
@@ -1591,7 +1727,11 @@ class Model(ModelSettings):
1591
1727
  os.makedirs(".cecli/logs/messages", exist_ok=True)
1592
1728
  with safe_open(f".cecli/logs/messages/{name}-{time.time()}.log", "w") as f:
1593
1729
  json.dump(
1594
- messages, f, indent=4, ensure_ascii=False, default=lambda o: "<not serializable>"
1730
+ messages,
1731
+ f,
1732
+ indent=4,
1733
+ ensure_ascii=False,
1734
+ default=lambda o: "<not serializable>",
1595
1735
  )
1596
1736
 
1597
1737
  def _log_request(self, model_call_dict):
@@ -1691,8 +1831,8 @@ async def sanity_check_model(io, model):
1691
1831
  io.tool_output(f"- {key}: {status}")
1692
1832
  if platform.system() == "Windows":
1693
1833
  io.tool_output(
1694
- "Note: You may need to restart your terminal or command prompt for `setx` to take"
1695
- " effect."
1834
+ "Note: You may need to restart your terminal or command prompt"
1835
+ " for `setx` to take effect."
1696
1836
  )
1697
1837
  elif not model.keys_in_environment:
1698
1838
  show = True
@@ -1721,7 +1861,10 @@ async def check_for_dependencies(io, model_name):
1721
1861
  """
1722
1862
  if model_name.startswith("bedrock/"):
1723
1863
  await check_pip_install_extra(
1724
- io, "boto3", "AWS Bedrock models require the boto3 package.", ["boto3"]
1864
+ io,
1865
+ "boto3",
1866
+ "AWS Bedrock models require the boto3 package.",
1867
+ ["boto3"],
1725
1868
  )
1726
1869
  elif model_name.startswith("vertex_ai/"):
1727
1870
  await check_pip_install_extra(
@@ -49,6 +49,13 @@ class Tool(BaseTool):
49
49
  " If false, wait for the result."
50
50
  ),
51
51
  },
52
+ "persist": {
53
+ "type": "boolean",
54
+ "default": False,
55
+ "description": (
56
+ "If true, keep the sub-agent active after the task is complete."
57
+ ),
58
+ },
52
59
  },
53
60
  "required": ["name", "prompt"],
54
61
  },
@@ -69,7 +76,7 @@ class Tool(BaseTool):
69
76
 
70
77
  if not delegations or not isinstance(delegations, list):
71
78
  response.append_error(
72
- "'delegations' parameter must be a non-empty array of {name, prompt, async} objects."
79
+ "'delegations' parameter must be a non-empty array of {name, prompt, async, persist} objects."
73
80
  )
74
81
  return response
75
82
 
@@ -90,23 +97,35 @@ class Tool(BaseTool):
90
97
  agent_service = AgentService.get_instance(coder)
91
98
 
92
99
  # Separate async (fire-and-forget) and sync (blocking) delegations
93
- async_delegations = [(d["name"], d["prompt"]) for d in delegations if d.get("async", True)]
100
+ async_delegations = [
101
+ (d["name"], d["prompt"], d.get("persist", False))
102
+ for d in delegations
103
+ if d.get("async", True)
104
+ ]
94
105
  sync_delegations = [
95
- (d["name"], d["prompt"]) for d in delegations if not d.get("async", True)
106
+ (d["name"], d["prompt"], d.get("persist", False))
107
+ for d in delegations
108
+ if not d.get("async", True)
96
109
  ]
97
110
 
98
- async def _spawn_one(name: str, prompt: str) -> tuple:
111
+ async def _spawn_one(name: str, prompt: str, persist: bool) -> tuple:
99
112
  """Spawn a single sub-agent (fire-and-forget). Returns (name, uuid_or_error, error)."""
113
+ auto_reap = None if not persist else False
100
114
  try:
101
- new_coder, info = await agent_service.spawn(name, prompt, parent=coder)
115
+ new_coder, info = await agent_service.spawn(
116
+ name, prompt, parent=coder, auto_reap=auto_reap
117
+ )
102
118
  return name, info.coder.uuid, None
103
119
  except Exception as e:
104
120
  return name, None, f"failed: {e}"
105
121
 
106
- async def _invoke_one(name: str, prompt: str) -> tuple:
122
+ async def _invoke_one(name: str, prompt: str, persist: bool) -> tuple:
107
123
  """Invoke a single sub-agent (blocking). Returns (name, summary_or_error, error)."""
124
+ auto_reap = None if not persist else False
108
125
  try:
109
- summary = await agent_service.invoke(name, prompt, parent=coder)
126
+ summary = await agent_service.invoke(
127
+ name, prompt, parent=coder, auto_reap=auto_reap
128
+ )
110
129
  return name, summary or "(no summary)", None
111
130
  except Exception as e:
112
131
  return name, None, f"failed: {e}"
@@ -114,13 +133,13 @@ class Tool(BaseTool):
114
133
  # Process async delegations (fire-and-forget spawn)
115
134
  async_results = []
116
135
  if async_delegations:
117
- tasks = [_spawn_one(n, p) for n, p in async_delegations]
136
+ tasks = [_spawn_one(n, p, persist) for n, p, persist in async_delegations]
118
137
  async_results = list(await asyncio.gather(*tasks))
119
138
 
120
139
  # Process sync delegations (blocking invoke)
121
140
  sync_results = []
122
141
  if sync_delegations:
123
- tasks = [_invoke_one(n, p) for n, p in sync_delegations]
142
+ tasks = [_invoke_one(n, p, persist) for n, p, persist in sync_delegations]
124
143
  sync_results = list(await asyncio.gather(*tasks))
125
144
 
126
145
  # Build response
@@ -185,9 +204,11 @@ class Tool(BaseTool):
185
204
  name = d.get("name", "")
186
205
  prompt = d.get("prompt", "")
187
206
  is_async = d.get("async", True)
207
+ is_persist = d.get("persist", False)
188
208
  coder.io.tool_output(f"{color_start}delegation_{i + 1}:{color_end}")
189
209
  coder.io.tool_output(f"agent: {name}")
190
210
  coder.io.tool_output(f"mode: {'async' if is_async else 'sync'}")
211
+ coder.io.tool_output(f"persist: {'true' if is_persist else 'false'}")
191
212
  coder.io.tool_output(f"task: {prompt}")
192
213
  if i < len(delegations) - 1:
193
214
  coder.io.tool_output("")
@@ -1636,7 +1636,7 @@ class TUI(App):
1636
1636
  tuple[list[str], set[str]]: A tuple of (ordered_list, fast_lookup_set)
1637
1637
  containing the matched path completions.
1638
1638
  """
1639
- coder = self.worker.coder
1639
+ coder = AgentService.get_instance(self.worker.coder).foreground_coder
1640
1640
  root = Path(coder.root) if hasattr(coder, "root") else Path.cwd()
1641
1641
 
1642
1642
  # Try FileSystemService first for efficient lookups
@@ -287,7 +287,7 @@ Tools are loaded automatically when the registry is built and will be available
287
287
 
288
288
  #### Sub-agent Behavior
289
289
 
290
- `Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and an optional `async` flag. Asynchronous delegations run in the background; synchronous delegations wait for the sub-agent result. The system uses `Yield` to wait for outstanding child tasks when finishing the parent task.
290
+ `Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and optional `async` and `persist` flags. Asynchronous delegations run in the background; synchronous delegations wait for the sub-agent result. The system uses `Yield` to wait for outstanding child tasks when finishing the parent task.
291
291
 
292
292
  Sub-agent results are reported back to the parent conversation as summaries or errors. Sub-agents use `auto_reap: true` by default, so completed agents can be removed automatically after their work and descendants finish. Independent agents may be cleaned up shortly after completion, while the service also reaps completed agents when the configured limit requires space. Set `max_sub_agents` to `-1` to remove the limit on simultaneous sub agents.
293
293
 
@@ -164,7 +164,7 @@ You are a code review specialist.
164
164
  ```
165
165
 
166
166
  - **`/spawn-agent`** always spawns sub-agents with `auto_reap=false` — since these agents are created manually by the user, they should persist until explicitly reaped with `/reap-agent`.
167
- - **`Delegate` tool** uses the sub-agent's configured `auto_reap` value from its definition. If not set in the `.md` front matter, it defaults to `true`.
167
+ - **`Delegate` tool** uses the sub-agent's configured `auto_reap` value from its definition. If not set in the `.md` front matter, it defaults to `true`. A delegation may set `persist: true` to keep that sub-agent alive by passing `auto_reap: false`; by default `persist` is `false`, deferring to the sub-agent's configured behavior.
168
168
 
169
169
  Sub-agents with `auto_reap: true` that finish their work are candidates for automatic cleanup when the agent limit is reached. Sub-agents with `auto_reap: false` are never automatically reaped and must be cleaned up manually.
170
170
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.3.2rc3
3
+ Version: 1.4.0
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
@@ -825,6 +825,7 @@ tests/unit/test_load_mcp.py
825
825
  tests/unit/test_performance.py
826
826
  tests/unit/test_queues.py
827
827
  tests/unit/test_remove_mcp.py
828
+ tests/unit/test_retry_backoff.py
828
829
  tests/unit/test_shallow_merge.py
829
830
  tests/unit/test_signals.py
830
831
  tests/unit/test_unit_load_mcp_tool.py
@@ -1067,6 +1067,7 @@
1067
1067
  "tests/unit/test_performance.py",
1068
1068
  "tests/unit/test_queues.py",
1069
1069
  "tests/unit/test_remove_mcp.py",
1070
+ "tests/unit/test_retry_backoff.py",
1070
1071
  "tests/unit/test_shallow_merge.py",
1071
1072
  "tests/unit/test_signals.py",
1072
1073
  "tests/unit/test_unit_load_mcp_tool.py",