cecli-dev 1.5.0rc2__tar.gz → 1.5.0rc4__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 (847) hide show
  1. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/PKG-INFO +1 -1
  2. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/_version.py +3 -3
  3. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/args.py +12 -0
  4. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/base_coder.py +234 -52
  5. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/__init__.py +14 -10
  6. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/core.py +6 -0
  7. cecli_dev-1.5.0rc4/cecli/commands/insert_queue.py +86 -0
  8. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/list_queue.py +1 -1
  9. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/queue.py +9 -5
  10. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/remove_queue.py +7 -2
  11. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/voice.py +35 -26
  12. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/format_settings.py +12 -0
  13. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/service.py +4 -0
  14. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/background_commands.py +9 -6
  15. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/command_queue.py +34 -0
  16. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/integration.py +5 -19
  17. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/config.py +1 -1
  18. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/responses.py +5 -0
  19. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/observations/service.py +20 -6
  20. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/history.py +2 -2
  21. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/helpers.py +2 -1
  22. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/models.py +19 -10
  23. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/repo.py +7 -7
  24. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/model-metadata.json +6097 -738
  25. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/sessions.py +3 -0
  26. cecli_dev-1.5.0rc4/cecli/tests/test_queue_commands.py +792 -0
  27. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/_yield.py +4 -4
  28. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/command.py +38 -44
  29. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/resource_manager.py +97 -7
  30. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/app.py +71 -30
  31. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/input_container.py +0 -1
  32. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/voice.py +137 -61
  33. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/commands.md +50 -0
  34. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/PKG-INFO +1 -1
  35. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/SOURCES.txt +6 -0
  36. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/scm_file_list.json +6 -0
  37. cecli_dev-1.5.0rc4/cecli_dev.egg-info/scm_version.json +8 -0
  38. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_background_commands.py +80 -24
  39. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_coder.py +3 -3
  40. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_commands.py +1 -2
  41. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_history.py +4 -2
  42. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_reasoning.py +1 -1
  43. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_repo.py +6 -6
  44. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_sendchat.py +4 -3
  45. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_spinner.py +2 -2
  46. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_voice.py +177 -0
  47. cecli_dev-1.5.0rc4/tests/coders/test_rate_limit.py +125 -0
  48. cecli_dev-1.5.0rc4/tests/commands/test_voice.py +194 -0
  49. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/observations/test_observation_service.py +3 -0
  50. cecli_dev-1.5.0rc4/tests/tools/test_command_timeout_paging.py +192 -0
  51. cecli_dev-1.5.0rc4/tests/tools/test_resource_manager_paging.py +315 -0
  52. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tui/test_app.py +116 -0
  53. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_retry_backoff.py +3 -3
  54. cecli_dev-1.5.0rc2/cecli_dev.egg-info/scm_version.json +0 -8
  55. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.dockerignore +0 -0
  56. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.flake8 +0 -0
  57. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.gitattributes +0 -0
  58. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  59. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/check_pypi_version.yml +0 -0
  60. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/docker-build-test.yml +0 -0
  61. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/docker-release.yml +0 -0
  62. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/issues.yml +0 -0
  63. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/pages.yml +0 -0
  64. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/pre-commit.yml +0 -0
  65. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/release.yml +0 -0
  66. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/ubuntu-tests.yml +0 -0
  67. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/windows-tests.yml +0 -0
  68. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.github/workflows/windows_check_pypi_version.yml +0 -0
  69. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.gitignore +0 -0
  70. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/.pre-commit-config.yaml +0 -0
  71. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/CHANGELOG.md +0 -0
  72. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/CNAME +0 -0
  73. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/CONTRIBUTING.md +0 -0
  74. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/HISTORY.md +0 -0
  75. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/LICENSE.txt +0 -0
  76. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/MANIFEST.in +0 -0
  77. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/README.md +0 -0
  78. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/Dockerfile +0 -0
  79. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/README.md +0 -0
  80. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/__init__.py +0 -0
  81. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/benchmark.py +0 -0
  82. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/benchmark_classic.py +0 -0
  83. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/clone-exercism.sh +0 -0
  84. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/cpp-test.sh +0 -0
  85. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/docker.sh +0 -0
  86. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/docker_build.sh +0 -0
  87. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/install-docker-ubuntu.sh +0 -0
  88. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/npm-test.sh +0 -0
  89. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/over_time.py +0 -0
  90. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/plot.sh +0 -0
  91. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/plots.py +0 -0
  92. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/problem_stats.py +0 -0
  93. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/prompts.py +0 -0
  94. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/refactor_tools.py +0 -0
  95. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/rsync.sh +0 -0
  96. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/rungrid.py +0 -0
  97. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/swe-bench-lite.txt +0 -0
  98. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/swe-bench.txt +0 -0
  99. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/swe_bench.py +0 -0
  100. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/test_benchmark.py +0 -0
  101. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/variations.1.sh +0 -0
  102. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/variations.2.sh +0 -0
  103. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/variations.3.sh +0 -0
  104. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/benchmark/variations.4.sh +0 -0
  105. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/__init__.py +0 -0
  106. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/__main__.py +0 -0
  107. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/args_formatter.py +0 -0
  108. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/change_tracker.py +0 -0
  109. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/__init__.py +0 -0
  110. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/agent_coder.py +0 -0
  111. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/architect_coder.py +0 -0
  112. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/ask_coder.py +0 -0
  113. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/chat_chunks.py +0 -0
  114. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/context_coder.py +0 -0
  115. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/copypaste_coder.py +0 -0
  116. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editblock_coder.py +0 -0
  117. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editblock_fenced_coder.py +0 -0
  118. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editblock_func_coder.py +0 -0
  119. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  120. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editor_editblock_coder.py +0 -0
  121. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/editor_whole_coder.py +0 -0
  122. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/hashline_coder.py +0 -0
  123. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/help_coder.py +0 -0
  124. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/patch_coder.py +0 -0
  125. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/search_replace.py +0 -0
  126. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/shell.py +0 -0
  127. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/single_wholefile_func_coder.py +0 -0
  128. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/sub_agent_coder.py +0 -0
  129. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/udiff_coder.py +0 -0
  130. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/udiff_simple.py +0 -0
  131. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/wholefile_coder.py +0 -0
  132. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/coders/wholefile_func_coder.py +0 -0
  133. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/add.py +0 -0
  134. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/agent.py +0 -0
  135. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/agent_model.py +0 -0
  136. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/agent_tree.py +0 -0
  137. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/architect.py +0 -0
  138. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/ask.py +0 -0
  139. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/auto_memory.py +0 -0
  140. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/chat_mode.py +0 -0
  141. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/clear.py +0 -0
  142. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/code.py +0 -0
  143. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/command_prefix.py +0 -0
  144. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/commit.py +0 -0
  145. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/compact.py +0 -0
  146. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/context.py +0 -0
  147. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/context_blocks.py +0 -0
  148. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/context_management.py +0 -0
  149. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/copy.py +0 -0
  150. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/copy_context.py +0 -0
  151. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/diff.py +0 -0
  152. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/drop.py +0 -0
  153. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/editor.py +0 -0
  154. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/editor_model.py +0 -0
  155. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/exclude_skill.py +0 -0
  156. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/exit.py +0 -0
  157. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/git.py +0 -0
  158. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/hashline.py +0 -0
  159. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/help.py +0 -0
  160. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/history_search.py +0 -0
  161. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/hooks.py +0 -0
  162. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/hot_reload.py +0 -0
  163. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/import_skill.py +0 -0
  164. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/include_skill.py +0 -0
  165. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/lint.py +0 -0
  166. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/list_mcp.py +0 -0
  167. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/list_sessions.py +0 -0
  168. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/list_skills.py +0 -0
  169. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/load.py +0 -0
  170. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/load_hook.py +0 -0
  171. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/load_mcp.py +0 -0
  172. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/load_session.py +0 -0
  173. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/load_skill.py +0 -0
  174. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/ls.py +0 -0
  175. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/map.py +0 -0
  176. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/map_refresh.py +0 -0
  177. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/merge.py +0 -0
  178. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/model.py +0 -0
  179. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/models.py +0 -0
  180. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/multiline_mode.py +0 -0
  181. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/paste.py +0 -0
  182. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/quit.py +0 -0
  183. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/read_only.py +0 -0
  184. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/read_only_stub.py +0 -0
  185. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/reap_agent.py +0 -0
  186. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/reasoning_effort.py +0 -0
  187. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/remove_hook.py +0 -0
  188. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/remove_mcp.py +0 -0
  189. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/remove_memory.py +0 -0
  190. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/remove_skill.py +0 -0
  191. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/report.py +0 -0
  192. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/reset.py +0 -0
  193. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/rules.py +0 -0
  194. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/run.py +0 -0
  195. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/save.py +0 -0
  196. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/save_session.py +0 -0
  197. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/search_memory.py +0 -0
  198. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/settings.py +0 -0
  199. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/spawn_agent.py +0 -0
  200. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/switch_agent.py +0 -0
  201. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/terminal_data/linux.keytab +0 -0
  202. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/terminal_setup.py +0 -0
  203. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/test.py +0 -0
  204. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/think_tokens.py +0 -0
  205. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/tokens.py +0 -0
  206. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/undo.py +0 -0
  207. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/utils/__init__.py +0 -0
  208. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/utils/base_command.py +0 -0
  209. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/utils/helpers.py +0 -0
  210. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/utils/registry.py +0 -0
  211. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/utils/save_load_manager.py +0 -0
  212. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/weak_model.py +0 -0
  213. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/web.py +0 -0
  214. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/commands/workspace.py +0 -0
  215. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/decoding.py +0 -0
  216. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/deprecated_args.py +0 -0
  217. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/diffs.py +0 -0
  218. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/dump.py +0 -0
  219. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/editor.py +0 -0
  220. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/exceptions.py +0 -0
  221. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/help.py +0 -0
  222. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/help_pats.py +0 -0
  223. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/__init__.py +0 -0
  224. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/__init__.py +0 -0
  225. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/config.py +0 -0
  226. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/defaults/__init__.py +0 -0
  227. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  228. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/agents/defaults/worker.md +0 -0
  229. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/command_parser.py +0 -0
  230. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/config_utils.py +0 -0
  231. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/__init__.py +0 -0
  232. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/base_message.py +0 -0
  233. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/files.py +0 -0
  234. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/manager.py +0 -0
  235. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/service.py +0 -0
  236. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/tags.py +0 -0
  237. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/conversation/utils.py +0 -0
  238. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/copypaste.py +0 -0
  239. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/coroutines.py +0 -0
  240. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/crypto.py +0 -0
  241. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/extensions/__init__.py +0 -0
  242. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/extensions/skills_importer.py +0 -0
  243. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_searcher.py +0 -0
  244. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/__init__.py +0 -0
  245. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/builders.py +0 -0
  246. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/ignore.py +0 -0
  247. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/ngram_index.py +0 -0
  248. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/service.py +0 -0
  249. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/file_system/trie_index.py +0 -0
  250. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/__init__.py +0 -0
  251. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/dump.py +0 -0
  252. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  253. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/main.py +0 -0
  254. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/parsers.py +0 -0
  255. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/grep_ast/tsl.py +0 -0
  256. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/hashline.py +0 -0
  257. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/hashpos/__init__.py +0 -0
  258. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/hashpos/hashpos.py +0 -0
  259. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  260. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/hashpos/transformations.py +0 -0
  261. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/io_proxy.py +0 -0
  262. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/leak_detect.py +0 -0
  263. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/__init__.py +0 -0
  264. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/aws_sigv4.py +0 -0
  265. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/__init__.py +0 -0
  266. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/bedrock.py +0 -0
  267. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/chat.py +0 -0
  268. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/gemini.py +0 -0
  269. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/domains/messages.py +0 -0
  270. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/formatters/__init__.py +0 -0
  271. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  272. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/formatters/thinking.py +0 -0
  273. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/identifiers.py +0 -0
  274. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/litellm_compat.py +0 -0
  275. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/pipeline.py +0 -0
  276. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/__init__.py +0 -0
  277. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/anthropic.py +0 -0
  278. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/azure.py +0 -0
  279. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/base.py +0 -0
  280. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/bedrock.py +0 -0
  281. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  282. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/deepseek.py +0 -0
  283. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/gemini.py +0 -0
  284. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  285. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/meta.py +0 -0
  286. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/openai.py +0 -0
  287. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/providers/openrouter.py +0 -0
  288. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/runtime.py +0 -0
  289. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/types.py +0 -0
  290. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/llms/utils.py +0 -0
  291. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/lock_detect.py +0 -0
  292. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/loop_detect.py +0 -0
  293. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/memory/__init__.py +0 -0
  294. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/memory/db.py +0 -0
  295. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/memory/utils.py +0 -0
  296. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/memory_control.py +0 -0
  297. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/__init__.py +0 -0
  298. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/agent.py +0 -0
  299. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/api.py +0 -0
  300. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  301. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  302. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  303. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/identifiers.py +0 -0
  304. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/llm.py +0 -0
  305. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/pipeline.py +0 -0
  306. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/registry.py +0 -0
  307. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_config/utils.py +0 -0
  308. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/model_providers.py +0 -0
  309. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/nested.py +0 -0
  310. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/observations/__init__.py +0 -0
  311. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/__init__.py +0 -0
  312. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  313. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/environment.py +0 -0
  314. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/region_resolver.py +0 -0
  315. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/safe_methods.py +0 -0
  316. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/security.py +0 -0
  317. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/service.py +0 -0
  318. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  319. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/plugin_manager.py +0 -0
  320. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/profiler.py +0 -0
  321. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/queues.py +0 -0
  322. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/requests.py +0 -0
  323. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/responses.py +0 -0
  324. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/__init__.py +0 -0
  325. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/acp/__init__.py +0 -0
  326. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/acp/bridge.py +0 -0
  327. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/acp/models.py +0 -0
  328. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/acp/protocol.py +0 -0
  329. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/signals.py +0 -0
  330. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/server/ws_server.py +0 -0
  331. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/similarity.py +0 -0
  332. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/skills.py +0 -0
  333. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/threading.py +0 -0
  334. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/workspaces/__init__.py +0 -0
  335. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/workspaces/config.py +0 -0
  336. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/workspaces/paths.py +0 -0
  337. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/workspaces/subagents.py +0 -0
  338. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/helpers/workspaces/workspace.py +0 -0
  339. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/__init__.py +0 -0
  340. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/base.py +0 -0
  341. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/integration.py +0 -0
  342. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/manager.py +0 -0
  343. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/registry.py +0 -0
  344. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/service.py +0 -0
  345. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/hooks/types.py +0 -0
  346. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/http.py +0 -0
  347. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/interruptible_input.py +0 -0
  348. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/io.py +0 -0
  349. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/linter.py +0 -0
  350. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/llm.py +0 -0
  351. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/main.py +0 -0
  352. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mcp/__init__.py +0 -0
  353. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mcp/manager.py +0 -0
  354. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mcp/oauth.py +0 -0
  355. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mcp/server.py +0 -0
  356. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mcp/utils.py +0 -0
  357. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/mdstream.py +0 -0
  358. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/onboarding.py +0 -0
  359. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/__init__.py +0 -0
  360. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/agent.yml +0 -0
  361. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/architect.yml +0 -0
  362. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/ask.yml +0 -0
  363. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/base.yml +0 -0
  364. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/context.yml +0 -0
  365. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/copypaste.yml +0 -0
  366. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editblock.yml +0 -0
  367. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editblock_fenced.yml +0 -0
  368. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editblock_func.yml +0 -0
  369. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editor_diff_fenced.yml +0 -0
  370. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editor_editblock.yml +0 -0
  371. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/editor_whole.yml +0 -0
  372. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/hashline.yml +0 -0
  373. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/help.yml +0 -0
  374. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/patch.yml +0 -0
  375. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/single_wholefile_func.yml +0 -0
  376. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/subagent.yml +0 -0
  377. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/udiff.yml +0 -0
  378. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/udiff_simple.yml +0 -0
  379. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/utils/__init__.py +0 -0
  380. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/utils/registry.py +0 -0
  381. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/utils/system.py +0 -0
  382. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/wholefile.yml +0 -0
  383. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/prompts/wholefile_func.yml +0 -0
  384. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  385. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  386. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  387. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  388. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  389. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  390. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  391. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  392. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  393. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  394. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  395. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  396. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  397. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  398. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  399. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  400. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  401. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  402. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  403. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  404. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  405. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  406. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  407. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  408. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  409. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  410. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  411. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  412. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  413. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  414. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  415. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  416. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/README.md +0 -0
  417. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  418. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  419. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  420. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  421. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  422. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  423. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  424. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  425. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  426. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  427. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  428. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  429. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  430. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  431. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  432. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  433. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  434. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  435. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  436. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  437. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  438. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  439. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  440. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  441. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  442. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  443. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  444. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/reasoning_tags.py +0 -0
  445. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/repomap.py +0 -0
  446. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/report.py +0 -0
  447. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/__init__.py +0 -0
  448. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/model-metadata.ext.json +0 -0
  449. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/model-settings-condensed.yml +0 -0
  450. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/model-settings.yml +0 -0
  451. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/resources/providers.json +0 -0
  452. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/run_cmd.py +0 -0
  453. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/scrape.py +0 -0
  454. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/sendchat.py +0 -0
  455. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/signals.py +0 -0
  456. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/special.py +0 -0
  457. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/__init__.py +0 -0
  458. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/broadcast.py +0 -0
  459. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/delegate.py +0 -0
  460. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/edit_file.py +0 -0
  461. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/explore_code.py +0 -0
  462. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_branch.py +0 -0
  463. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_diff.py +0 -0
  464. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_log.py +0 -0
  465. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_remote.py +0 -0
  466. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_show.py +0 -0
  467. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/git_status.py +0 -0
  468. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/grep.py +0 -0
  469. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/ls.py +0 -0
  470. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/orchestrate.py +0 -0
  471. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/read_file.py +0 -0
  472. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/replace_facts.py +0 -0
  473. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/search_facts.py +0 -0
  474. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/thinking.py +0 -0
  475. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/undo_change.py +0 -0
  476. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/update_todo_list.py +0 -0
  477. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/__init__.py +0 -0
  478. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/base_tool.py +0 -0
  479. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/helpers.py +0 -0
  480. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/output.py +0 -0
  481. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/registry.py +0 -0
  482. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/utils/responses.py +0 -0
  483. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/validations/__init__.py +0 -0
  484. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tools/validations/validations.py +0 -0
  485. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/__init__.py +0 -0
  486. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/io.py +0 -0
  487. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/styles.tcss +0 -0
  488. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/__init__.py +0 -0
  489. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/completion_bar.py +0 -0
  490. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/file_list.py +0 -0
  491. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/footer.py +0 -0
  492. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/input_area.py +0 -0
  493. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/key_hints.py +0 -0
  494. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/output.py +0 -0
  495. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/output_alt.bak +0 -0
  496. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/selectable_log.py +0 -0
  497. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/status_bar.py +0 -0
  498. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/widgets/subagent_pills.py +0 -0
  499. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/tui/worker.py +0 -0
  500. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/urls.py +0 -0
  501. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/utils.py +0 -0
  502. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/versioncheck.py +0 -0
  503. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/waiting.py +0 -0
  504. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/watch.py +0 -0
  505. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/watch_prompts.py +0 -0
  506. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/blame.md +0 -0
  507. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/get-started.md +0 -0
  508. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/help-tip.md +0 -0
  509. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/help.md +0 -0
  510. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/install.md +0 -0
  511. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/keys.md +0 -0
  512. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/model-warnings.md +0 -0
  513. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/multi-line.md +0 -0
  514. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/python-m-aider.md +0 -0
  515. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/recording.css +0 -0
  516. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/recording.md +0 -0
  517. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_includes/works-best.md +0 -0
  518. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_features.scss +0 -0
  519. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_footer.scss +0 -0
  520. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_hero.scss +0 -0
  521. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_info.scss +0 -0
  522. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_layout.scss +0 -0
  523. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_reset.scss +0 -0
  524. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_testimonials.scss +0 -0
  525. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_typography.scss +0 -0
  526. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/_variables.scss +0 -0
  527. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/custom/custom.scss +0 -0
  528. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/_sass/global-overrides.scss +0 -0
  529. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docmd.config.json +0 -0
  530. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  531. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/adv-model-settings.md +0 -0
  532. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/agent-mode.md +0 -0
  533. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/api-keys.md +0 -0
  534. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/api.md +0 -0
  535. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/conf.md +0 -0
  536. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/custom-commands.md +0 -0
  537. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  538. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/dotenv.md +0 -0
  539. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/editor.md +0 -0
  540. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/hooks.md +0 -0
  541. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/mcp.md +0 -0
  542. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/model-aliases.md +0 -0
  543. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/model-configuration.md +0 -0
  544. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/model-providers.md +0 -0
  545. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/options.md +0 -0
  546. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/persistent-memory.md +0 -0
  547. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/reasoning.md +0 -0
  548. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/retries.md +0 -0
  549. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/security.md +0 -0
  550. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/skills.md +0 -0
  551. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/subagents.md +0 -0
  552. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/tui.md +0 -0
  553. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config/workspaces.md +0 -0
  554. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/config.md +0 -0
  555. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/git.md +0 -0
  556. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/index.md +0 -0
  557. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/install/docker.md +0 -0
  558. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/install.md +0 -0
  559. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/languages.md +0 -0
  560. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  561. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/legal/privacy.md +0 -0
  562. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/anthropic.md +0 -0
  563. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/azure.md +0 -0
  564. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/bedrock.md +0 -0
  565. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/cohere.md +0 -0
  566. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/deepseek.md +0 -0
  567. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/gemini.md +0 -0
  568. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/github.md +0 -0
  569. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/groq.md +0 -0
  570. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/lm-studio.md +0 -0
  571. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/ollama.md +0 -0
  572. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/openai-compat.md +0 -0
  573. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/openai.md +0 -0
  574. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/opencode-go.md +0 -0
  575. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/openrouter.md +0 -0
  576. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/other.md +0 -0
  577. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/vertex.md +0 -0
  578. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/warnings.md +0 -0
  579. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms/xai.md +0 -0
  580. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/llms.md +0 -0
  581. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/more/analytics.md +0 -0
  582. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/more/edit-formats.md +0 -0
  583. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/more/infinite-output.md +0 -0
  584. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/more-info.md +0 -0
  585. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/repomap.md +0 -0
  586. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/scripting.md +0 -0
  587. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  588. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  589. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/imports.md +0 -0
  590. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  591. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/support.md +0 -0
  592. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  593. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  594. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/troubleshooting.md +0 -0
  595. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/conventions.md +0 -0
  596. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/copypaste.md +0 -0
  597. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/images-urls.md +0 -0
  598. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/lint-test.md +0 -0
  599. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/modes.md +0 -0
  600. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/not-code.md +0 -0
  601. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/notifications.md +0 -0
  602. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/optional.md +0 -0
  603. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/sessions.md +0 -0
  604. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/tips.md +0 -0
  605. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/voice.md +0 -0
  606. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage/watch.md +0 -0
  607. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/docs/usage.md +0 -0
  608. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/package-lock.json +0 -0
  609. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/package.json +0 -0
  610. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli/website/share/index.md +0 -0
  611. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/dependency_links.txt +0 -0
  612. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/entry_points.txt +0 -0
  613. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/requires.txt +0 -0
  614. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/cecli_dev.egg-info/top_level.txt +0 -0
  615. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/docker/Dockerfile +0 -0
  616. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  617. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/pyproject.toml +0 -0
  618. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/pytest.ini +0 -0
  619. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/common-constraints.txt +0 -0
  620. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-dev.in +0 -0
  621. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-dev.txt +0 -0
  622. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-help.in +0 -0
  623. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-help.txt +0 -0
  624. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-playwright.in +0 -0
  625. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements-playwright.txt +0 -0
  626. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/requirements.in +0 -0
  627. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements/tree-sitter.in +0 -0
  628. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/requirements.txt +0 -0
  629. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/30k-image.py +0 -0
  630. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/__init__.py +0 -0
  631. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/blame.py +0 -0
  632. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/clean_metadata.py +0 -0
  633. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/compare-message-history.py +0 -0
  634. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/condense_model_settings.py +0 -0
  635. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/cost_analyzer.py +0 -0
  636. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/cost_calculator.py +0 -0
  637. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/dl_icons.py +0 -0
  638. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/docmd_build.sh +0 -0
  639. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/filter-chat-mode.js +0 -0
  640. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/generate_providers.py +0 -0
  641. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/get_contributor_list.js +0 -0
  642. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/get_hashline.py +0 -0
  643. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/history_prompts.py +0 -0
  644. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/homepage.py +0 -0
  645. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/issues.py +0 -0
  646. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/logo_svg.py +0 -0
  647. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/optimize_tokens.sh +0 -0
  648. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/pip-compile.sh +0 -0
  649. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/recording_audio.py +0 -0
  650. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/redact-cast.py +0 -0
  651. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/rename_to_cecli.py +0 -0
  652. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/tmux_record.sh +0 -0
  653. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/tsl_pack_langs.py +0 -0
  654. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/update-blame.sh +0 -0
  655. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/update-docs.sh +0 -0
  656. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/update-history.py +0 -0
  657. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/versionbump.py +0 -0
  658. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/scripts/yank-old-versions.py +0 -0
  659. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/setup.cfg +0 -0
  660. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/shim.pyproject.toml +0 -0
  661. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/__init__.py +0 -0
  662. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/__init__.py +0 -0
  663. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/conftest.py +0 -0
  664. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_agent_config_merge.py +0 -0
  665. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_aws_credentials.py +0 -0
  666. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_custom_commands.py +0 -0
  667. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_deprecated.py +0 -0
  668. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_editblock.py +0 -0
  669. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_editor.py +0 -0
  670. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_exceptions.py +0 -0
  671. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_file_system_service.py +0 -0
  672. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_find_or_blocks.py +0 -0
  673. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_hashline.py +0 -0
  674. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_hashline_closure.py +0 -0
  675. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_io.py +0 -0
  676. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_linter.py +0 -0
  677. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_main.py +0 -0
  678. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_model_info_manager.py +0 -0
  679. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_model_provider_manager.py +0 -0
  680. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_models.py +0 -0
  681. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_onboarding.py +0 -0
  682. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_plugin_manager.py +0 -0
  683. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_prompts.py +0 -0
  684. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_repomap.py +0 -0
  685. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_run_cmd.py +0 -0
  686. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_sanity_check_repo.py +0 -0
  687. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_scripting.py +0 -0
  688. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_select_selector.py +0 -0
  689. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_session_args.py +0 -0
  690. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_session_crypto.py +0 -0
  691. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_sessions.py +0 -0
  692. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_sessions_manager.py +0 -0
  693. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_skills.py +0 -0
  694. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_special.py +0 -0
  695. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_ssl_verification.py +0 -0
  696. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_udiff.py +0 -0
  697. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_urls.py +0 -0
  698. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_watch.py +0 -0
  699. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/basic/test_wholefile.py +0 -0
  700. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/coders/test_coder_switching.py +0 -0
  701. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/coders/test_copypaste_coder.py +0 -0
  702. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/coders/test_tool_call_consolidation.py +0 -0
  703. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_auto_memory.py +0 -0
  704. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_compaction.py +0 -0
  705. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_remove_memory.py +0 -0
  706. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_search_memory.py +0 -0
  707. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_switch_agent.py +0 -0
  708. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/commands/test_workspace.py +0 -0
  709. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/conftest.py +0 -0
  710. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/conversations/test_conversation_integration.py +0 -0
  711. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/conversations/test_conversation_system.py +0 -0
  712. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  713. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/chat-history.md +0 -0
  714. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/arduino/test.ino +0 -0
  715. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/bash/test.sh +0 -0
  716. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/c/test.c +0 -0
  717. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/chatito/test.chatito +0 -0
  718. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/clojure/test.clj +0 -0
  719. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  720. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/cpp/test.cpp +0 -0
  721. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/csharp/test.cs +0 -0
  722. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/d/test.d +0 -0
  723. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/dart/test.dart +0 -0
  724. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/elisp/test.el +0 -0
  725. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/elixir/test.ex +0 -0
  726. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/elm/test.elm +0 -0
  727. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/gleam/test.gleam +0 -0
  728. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/go/test.go +0 -0
  729. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/haskell/test.hs +0 -0
  730. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/hcl/test.tf +0 -0
  731. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/java/test.java +0 -0
  732. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/javascript/test.js +0 -0
  733. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/kotlin/test.kt +0 -0
  734. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/lua/test.lua +0 -0
  735. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/matlab/test.m +0 -0
  736. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/ocaml/test.ml +0 -0
  737. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  738. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/php/test.php +0 -0
  739. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/pony/test.pony +0 -0
  740. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/properties/test.properties +0 -0
  741. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/python/test.py +0 -0
  742. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/ql/test.ql +0 -0
  743. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/r/test.r +0 -0
  744. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/racket/test.rkt +0 -0
  745. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/ruby/test.rb +0 -0
  746. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/rust/test.rs +0 -0
  747. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/scala/test.scala +0 -0
  748. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/solidity/test.sol +0 -0
  749. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/swift/test.swift +0 -0
  750. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/tsx/test.tsx +0 -0
  751. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/typescript/test.ts +0 -0
  752. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/udev/test.rules +0 -0
  753. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/languages/zig/test.zig +0 -0
  754. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/sample-code-base/sample.js +0 -0
  755. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/sample-code-base/sample.py +0 -0
  756. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  757. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/watch.js +0 -0
  758. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/watch.lisp +0 -0
  759. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/watch.py +0 -0
  760. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/fixtures/watch_question.js +0 -0
  761. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/help/test_help.py +0 -0
  762. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/server/acp/__init__.py +0 -0
  763. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/server/acp/test_bridge.py +0 -0
  764. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/server/acp/test_dispatch.py +0 -0
  765. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/server/acp/test_models.py +0 -0
  766. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/server/acp/test_protocol.py +0 -0
  767. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_api_base.py +0 -0
  768. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  769. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_cache_control.py +0 -0
  770. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_gemini_auth.py +0 -0
  771. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  772. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_hyperscalers.py +0 -0
  773. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_messages_stream.py +0 -0
  774. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_messages_wire.py +0 -0
  775. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_providers_json.py +0 -0
  776. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_reasoning_config.py +0 -0
  777. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  778. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_llms_vision.py +0 -0
  779. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_loop_detect.py +0 -0
  780. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_memory_control.py +0 -0
  781. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_model_config.py +0 -0
  782. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_orchestration.py +0 -0
  783. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/test_skills_importer.py +0 -0
  784. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/workspaces/conftest.py +0 -0
  785. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/workspaces/test_config.py +0 -0
  786. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/workspaces/test_paths.py +0 -0
  787. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/workspaces/test_subagents.py +0 -0
  788. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  789. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/hooks/__init__.py +0 -0
  790. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/hooks/test_base.py +0 -0
  791. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/hooks/test_manager.py +0 -0
  792. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/hooks/test_registry.py +0 -0
  793. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/integration/test_agent_mcp_management.py +0 -0
  794. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/integration/test_config_loading.py +0 -0
  795. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/integration/test_mcp_management.py +0 -0
  796. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/__init__.py +0 -0
  797. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/conftest.py +0 -0
  798. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/mock_server.py +0 -0
  799. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_concurrency.py +0 -0
  800. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_config.py +0 -0
  801. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_integration.py +0 -0
  802. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_logging.py +0 -0
  803. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_resilience.py +0 -0
  804. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_keepalive_unit.py +0 -0
  805. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_manager.py +0 -0
  806. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_manager_retry.py +0 -0
  807. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_server_name_normalization.py +0 -0
  808. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/mcp/test_server_sdk_compat.py +0 -0
  809. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/scrape/test_playwright_disable.py +0 -0
  810. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/scrape/test_scrape.py +0 -0
  811. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/__init__.py +0 -0
  812. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/conftest.py +0 -0
  813. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_commands.py +0 -0
  814. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_config.py +0 -0
  815. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_delegate.py +0 -0
  816. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_finished.py +0 -0
  817. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_io_proxy.py +0 -0
  818. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_service.py +0 -0
  819. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/subagents/test_sub_agent_coder.py +0 -0
  820. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/test_requests.py +0 -0
  821. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_command_format_output.py +0 -0
  822. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_edit_file_format_output.py +0 -0
  823. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_extractions.py +0 -0
  824. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_get_lines.py +0 -0
  825. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_git_branch.py +0 -0
  826. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_git_diff.py +0 -0
  827. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_grep.py +0 -0
  828. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_insert_block.py +0 -0
  829. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_read_range_execute.py +0 -0
  830. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_registry.py +0 -0
  831. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_remove_mcp_tool.py +0 -0
  832. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_tool_arguments.py +0 -0
  833. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  834. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tools/validations.py +0 -0
  835. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/tui/test_completion_bar.py +0 -0
  836. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/conftest.py +0 -0
  837. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_deep_merge.py +0 -0
  838. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_edge_cases.py +0 -0
  839. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_load_mcp.py +0 -0
  840. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_performance.py +0 -0
  841. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_queues.py +0 -0
  842. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_remove_mcp.py +0 -0
  843. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_shallow_merge.py +0 -0
  844. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_signals.py +0 -0
  845. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  846. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  847. {cecli_dev-1.5.0rc2 → cecli_dev-1.5.0rc4}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.5.0rc2
3
+ Version: 1.5.0rc4
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.5.0rc2'
22
- __version_tuple__ = version_tuple = (1, 5, 0, 'rc2')
21
+ __version__ = version = '1.5.0rc4'
22
+ __version_tuple__ = version_tuple = (1, 5, 0, 'rc4')
23
23
 
24
- __commit_id__ = commit_id = 'g12134c928'
24
+ __commit_id__ = commit_id = 'gd6d4059fc'
@@ -578,6 +578,18 @@ def get_parser(default_config_files, git_root):
578
578
  help="Number of times to ping at 5min intervals to keep prompt cache warm (default: 0)",
579
579
  )
580
580
 
581
+ ##########
582
+ group = parser.add_argument_group("Rate limiting")
583
+ group.add_argument(
584
+ "--tokens-per-minute",
585
+ type=int,
586
+ default=1000000,
587
+ help=(
588
+ "Set the maximum tokens sent per minute before rate limiting sleeps are"
589
+ " inserted before LLM API calls (default: 1000000, use 0 to disable)"
590
+ ),
591
+ )
592
+
581
593
  ##########
582
594
  group = parser.add_argument_group("Repomap settings")
583
595
  group.add_argument(
@@ -74,6 +74,9 @@ from ..prompts.utils.registry import PromptObject, PromptRegistry
74
74
 
75
75
  GLOBAL_DATE = date.today().isoformat()
76
76
 
77
+ # Default per-minute token budget used for rate limiting when not configured.
78
+ DEFAULT_TOKENS_PER_MINUTE = 1000000
79
+
77
80
 
78
81
  class UnknownEditFormat(ValueError):
79
82
  def __init__(self, edit_format, valid_formats):
@@ -119,6 +122,8 @@ class UsageMeta(type):
119
122
  _total_tokens_sent = 0
120
123
  _total_tokens_received = 0
121
124
  _total_cached_tokens = 0
125
+ _token_usage_buffer = {}
126
+ _token_usage_window = 60.0
122
127
 
123
128
  @property
124
129
  def total_cost(cls):
@@ -152,6 +157,47 @@ class UsageMeta(type):
152
157
  def total_cached_tokens(cls, value):
153
158
  UsageMeta._total_cached_tokens = value
154
159
 
160
+ @classmethod
161
+ def _purge_token_usage(cls, model, now=None):
162
+ """Drop a model's token-usage entries older than the rolling window."""
163
+ if now is None:
164
+ now = time.time()
165
+ cutoff = now - UsageMeta._token_usage_window
166
+ entries = UsageMeta._token_usage_buffer.get(model, [])
167
+ UsageMeta._token_usage_buffer[model] = [
168
+ (tokens, ts) for tokens, ts in entries if ts >= cutoff
169
+ ]
170
+
171
+ @classmethod
172
+ def _record_token_usage(cls, model, delta, now=None):
173
+ """Record a model's request prompt-token usage as (tokens, timestamp)."""
174
+ if delta <= 0 or model is None:
175
+ return
176
+ if now is None:
177
+ now = time.time()
178
+ UsageMeta._token_usage_buffer.setdefault(model, []).append((delta, now))
179
+ UsageMeta._purge_token_usage(model, now)
180
+
181
+ @classmethod
182
+ def _get_token_usage_stats(cls, model, now=None):
183
+ """Return a model's (tokens_last_minute, max_single_request, requests_per_minute)."""
184
+ if now is None:
185
+ now = time.time()
186
+ UsageMeta._purge_token_usage(model, now)
187
+ buffer = UsageMeta._token_usage_buffer.get(model, [])
188
+ tokens_last_minute = sum(tokens for tokens, _ in buffer)
189
+ max_single_request = max((tokens for tokens, _ in buffer), default=0)
190
+ requests_per_minute = len(buffer)
191
+ return tokens_last_minute, max_single_request, requests_per_minute
192
+
193
+ @classmethod
194
+ def _reset_token_usage(cls, model=None):
195
+ """Clear the rolling token-usage buffer for one model, or all when model is None."""
196
+ if model is None:
197
+ UsageMeta._token_usage_buffer = {}
198
+ else:
199
+ UsageMeta._token_usage_buffer.pop(model, None)
200
+
155
201
 
156
202
  class Coder(metaclass=UsageMeta):
157
203
 
@@ -188,6 +234,10 @@ class Coder(metaclass=UsageMeta):
188
234
  def total_cached_tokens(self, value):
189
235
  type(self).total_cached_tokens = value
190
236
 
237
+ def _reset_token_usage(self):
238
+ """Clear rolling token usage after restoring a saved session."""
239
+ UsageMeta._reset_token_usage()
240
+
191
241
  abs_fnames = None
192
242
  abs_read_only_fnames = None
193
243
  abs_read_only_stubs_fnames = None
@@ -315,7 +365,7 @@ class Coder(metaclass=UsageMeta):
315
365
  read_only_stubs_fnames=list(
316
366
  from_coder.abs_read_only_stubs_fnames
317
367
  ), # Copy read-only stubs
318
- rules_fnames=list(from_coder.abs_rules_fnames), # Copy read-only stubs
368
+ rules_fnames=list(from_coder.abs_rules_fnames), # Copy rules files
319
369
  done_messages=[],
320
370
  cur_messages=[],
321
371
  coder_commit_hashes=from_coder.coder_commit_hashes,
@@ -383,6 +433,10 @@ class Coder(metaclass=UsageMeta):
383
433
  if local_server and local_server.is_connected:
384
434
  await res.mcp_manager.disconnect_server("Local")
385
435
 
436
+ if res.uuid == from_coder.uuid:
437
+ res.prompt_queue = from_coder.prompt_queue.copy()
438
+ res._queue_counter = from_coder._queue_counter
439
+
386
440
  await res.initialize_mcp_tools()
387
441
 
388
442
  # Store only small/primitive kwargs to avoid retaining large object references.
@@ -2293,6 +2347,7 @@ class Coder(metaclass=UsageMeta):
2293
2347
 
2294
2348
  asyncio.create_task(invoke_memorizer(self, additional_context=text))
2295
2349
 
2350
+ await self._rate_limit_sleep()
2296
2351
  if done_tokens > self.context_compaction_max_tokens or done_tokens > cur_tokens:
2297
2352
  await summarize_and_update(done_messages, MessageTag.DONE)
2298
2353
 
@@ -3756,6 +3811,7 @@ class Coder(metaclass=UsageMeta):
3756
3811
 
3757
3812
  while True:
3758
3813
  try:
3814
+ await self._rate_limit_sleep(model)
3759
3815
  completion_coro = model.send_completion(
3760
3816
  messages,
3761
3817
  functions,
@@ -3764,6 +3820,7 @@ class Coder(metaclass=UsageMeta):
3764
3820
  tools=tools,
3765
3821
  override_kwargs=self.model_kwargs.copy(),
3766
3822
  interrupt_event=self.interrupt_event,
3823
+ uuid=self.uuid,
3767
3824
  )
3768
3825
 
3769
3826
  try:
@@ -3830,7 +3887,7 @@ class Coder(metaclass=UsageMeta):
3830
3887
  if response:
3831
3888
  completion = response
3832
3889
  # Calculate costs for successful responses
3833
- self.calculate_and_show_tokens_and_cost(messages, completion)
3890
+ self.calculate_and_show_tokens_and_cost(messages, completion, model=model)
3834
3891
 
3835
3892
  except litellm_ex.exceptions_tuple() as err:
3836
3893
  self.error_code = 1
@@ -3838,7 +3895,7 @@ class Coder(metaclass=UsageMeta):
3838
3895
  if ex_info.name == "ContextWindowExceededError":
3839
3896
  # Still calculate costs for context window errors
3840
3897
  self.token_profiler.on_error()
3841
- self.calculate_and_show_tokens_and_cost(messages, completion)
3898
+ self.calculate_and_show_tokens_and_cost(messages, completion, model=model)
3842
3899
  raise
3843
3900
  except (KeyboardInterrupt, asyncio.CancelledError) as kbi:
3844
3901
  self.error_code = 130 # apparently standard?
@@ -4431,56 +4488,55 @@ class Coder(metaclass=UsageMeta):
4431
4488
  self.reasoning_tag_name,
4432
4489
  )
4433
4490
 
4434
- def calculate_and_show_tokens_and_cost(self, messages, completion=None):
4491
+ def calculate_and_show_tokens_and_cost(self, messages, completion=None, model=None):
4492
+ active_model = model or self.get_active_model()
4435
4493
  prompt_tokens = 0
4436
4494
  completion_tokens = 0
4437
4495
  cache_hit_tokens = 0
4438
4496
  cache_write_tokens = 0
4497
+ usage = nested.getter(completion, "usage") if completion else None
4439
4498
 
4440
4499
  if (
4441
- completion
4442
- and nested.getter(completion, "usage.prompt_tokens") is not None
4443
- and nested.getter(completion, "usage.completion_tokens") is not None
4500
+ usage is not None
4501
+ and nested.getter(usage, ["prompt_tokens", "input_tokens"]) is not None
4502
+ and nested.getter(usage, ["completion_tokens", "output_tokens"]) is not None
4444
4503
  ):
4445
4504
  prompt_tokens = (
4446
- nested.getter(completion.usage, "prompt_tokens", 0)
4447
- or nested.getter(completion.usage, "prompt_eval_count", 0)
4448
- or 0
4505
+ nested.getter(usage, ["prompt_tokens", "input_tokens", "prompt_eval_count"], 0) or 0
4449
4506
  )
4450
4507
  completion_tokens = (
4451
- nested.getter(completion.usage, "completion_tokens", 0)
4452
- or nested.getter(completion.usage, "eval_count", 0)
4453
- or 0
4508
+ nested.getter(usage, ["completion_tokens", "output_tokens", "eval_count"], 0) or 0
4454
4509
  )
4455
4510
  cache_hit_tokens = (
4456
- getattr(completion.usage, "prompt_cache_hit_tokens", 0)
4457
- or getattr(completion.usage, "cache_read_input_tokens", 0)
4458
- or nested.getter(completion.usage, "prompt_tokens_details.cached_tokens", 0)
4511
+ nested.getter(
4512
+ usage,
4513
+ [
4514
+ "prompt_cache_hit_tokens",
4515
+ "cache_read_input_tokens",
4516
+ "input_tokens_details.cached_tokens",
4517
+ "prompt_tokens_details.cached_tokens",
4518
+ ],
4519
+ 0,
4520
+ )
4459
4521
  or 0
4460
4522
  )
4461
- cache_write_tokens = getattr(completion.usage, "cache_creation_input_tokens", 0) or 0
4523
+ cache_write_tokens = nested.getter(usage, "cache_creation_input_tokens", 0) or 0
4462
4524
  self.message_cached_tokens += cache_hit_tokens
4463
-
4464
- # ``prompt_tokens`` is normalized to the full input (including any
4465
- # cache read/write) for anthropic usage, so no separate add here.
4466
4525
  self.message_tokens_sent += prompt_tokens
4467
-
4468
4526
  else:
4469
- prompt_tokens = self.get_active_model().token_count(messages)
4470
- completion_tokens = self.get_active_model().token_count(self.partial_response_content)
4527
+ prompt_tokens = active_model.token_count(messages)
4528
+ completion_tokens = active_model.token_count(self.partial_response_content)
4471
4529
  self.message_tokens_sent += prompt_tokens
4472
4530
 
4473
4531
  self.message_tokens_received += completion_tokens
4532
+ UsageMeta._record_token_usage(active_model.name, prompt_tokens)
4474
4533
 
4475
- # Build tokens string as "{prompt} CH {hit_rate:.1f}% ↑ {completion} ↓"
4476
4534
  if prompt_tokens > 0:
4477
4535
  hit_rate = round(cache_hit_tokens / prompt_tokens * 100, 1) if cache_hit_tokens else 0.0
4478
4536
  else:
4479
4537
  hit_rate = 0.0
4480
4538
  tokens_str = f"{format_tokens(prompt_tokens)} ◇ {hit_rate:.1f}%"
4481
-
4482
4539
  tokens_report = f"{tokens_str} ↑ {format_tokens(completion_tokens)} ↓"
4483
-
4484
4540
  tokens_report = self.token_profiler.add_to_usage_report(
4485
4541
  tokens_report, self.message_tokens_sent, self.message_tokens_received
4486
4542
  )
@@ -4503,36 +4559,31 @@ class Coder(metaclass=UsageMeta):
4503
4559
  total_hit_rate = 0.0
4504
4560
 
4505
4561
  total_stats = f"{format_tokens(total_combined_tokens)} ◇ {total_hit_rate:.1f}% ↑↓"
4506
-
4507
- if not self.get_active_model().info.get("input_cost_per_token"):
4562
+ if not active_model.info.get("input_cost_per_token"):
4508
4563
  self.usage_report = tokens_report + " " + total_stats
4509
4564
  return
4510
4565
 
4511
4566
  try:
4512
- # Try and use litellm's built in cost calculator. Seems to work for non-streaming only?
4513
4567
  cost = litellm.completion_cost(completion_response=completion)
4514
4568
  except Exception:
4515
4569
  cost = 0
4516
4570
 
4517
4571
  if not cost:
4518
4572
  cost = self.compute_costs_from_tokens(
4519
- prompt_tokens, completion_tokens, cache_write_tokens, cache_hit_tokens
4573
+ prompt_tokens,
4574
+ completion_tokens,
4575
+ cache_write_tokens,
4576
+ cache_hit_tokens,
4577
+ model=active_model,
4520
4578
  )
4521
4579
 
4522
4580
  self.total_cost += cost
4523
4581
  self.message_cost += cost
4524
-
4525
4582
  cost_report = (
4526
4583
  f"${self.format_cost(self.message_cost)} • {total_stats}"
4527
4584
  f" ${self.format_cost(self.total_cost)}"
4528
4585
  )
4529
-
4530
- if cache_hit_tokens and cache_write_tokens:
4531
- sep = " "
4532
- else:
4533
- sep = " "
4534
-
4535
- self.usage_report = tokens_report + sep + cost_report
4586
+ self.usage_report = tokens_report + " " + cost_report
4536
4587
 
4537
4588
  def format_cost(self, value):
4538
4589
  if value == 0:
@@ -4544,31 +4595,24 @@ class Coder(metaclass=UsageMeta):
4544
4595
  return f"{value:.{max(2, 2 - int(math.log10(magnitude)))}f}"
4545
4596
 
4546
4597
  def compute_costs_from_tokens(
4547
- self, prompt_tokens, completion_tokens, cache_write_tokens, cache_hit_tokens
4598
+ self, prompt_tokens, completion_tokens, cache_write_tokens, cache_hit_tokens, model=None
4548
4599
  ):
4549
4600
  cost = 0
4601
+ active_model = model or self.get_active_model()
4602
+ info = getattr(active_model, "info", {}) or {}
4550
4603
 
4551
- input_cost_per_token = self.get_active_model().info.get("input_cost_per_token") or 0
4552
- output_cost_per_token = self.get_active_model().info.get("output_cost_per_token") or 0
4604
+ input_cost_per_token = info.get("input_cost_per_token") or 0
4605
+ output_cost_per_token = info.get("output_cost_per_token") or 0
4553
4606
  input_cost_per_token_cache_hit = (
4554
- self.get_active_model().info.get("input_cost_per_token_cache_hit")
4555
- or self.get_active_model().info.get("cache_read_input_token_cost")
4607
+ info.get("input_cost_per_token_cache_hit")
4608
+ or info.get("cache_read_input_token_cost")
4556
4609
  or 0
4557
4610
  )
4558
4611
 
4559
- # deepseek
4560
- # prompt_cache_hit_tokens + prompt_cache_miss_tokens
4561
- # == prompt_tokens == total tokens that were sent
4562
- #
4563
- # Anthropic
4564
- # cache_creation_input_tokens + cache_read_input_tokens + prompt
4565
- # == total tokens that were
4566
-
4567
4612
  if input_cost_per_token_cache_hit:
4568
4613
  cost += cache_hit_tokens * input_cost_per_token_cache_hit
4569
4614
  cost += (prompt_tokens - cache_hit_tokens) * input_cost_per_token
4570
4615
  else:
4571
- # hard code the anthropic adjustments, no-ops for other models since cache_x_tokens==0
4572
4616
  cost += cache_write_tokens * input_cost_per_token * 1.25
4573
4617
  cost += cache_hit_tokens * input_cost_per_token * 0.10
4574
4618
  cost += (prompt_tokens - cache_hit_tokens) * input_cost_per_token
@@ -4576,6 +4620,144 @@ class Coder(metaclass=UsageMeta):
4576
4620
  cost += completion_tokens * output_cost_per_token
4577
4621
  return cost
4578
4622
 
4623
+ def record_background_usage_and_cost(self, messages, completion=None, model=None):
4624
+ """Account for token usage and cost of a background model call."""
4625
+ active_model = model or self.get_active_model()
4626
+ prompt_tokens = 0
4627
+ completion_tokens = 0
4628
+ cache_hit_tokens = 0
4629
+ cache_write_tokens = 0
4630
+ usage = nested.getter(completion, "usage") if completion else None
4631
+
4632
+ if usage is not None:
4633
+ prompt_tokens = (
4634
+ nested.getter(usage, ["prompt_tokens", "input_tokens", "prompt_eval_count"], 0) or 0
4635
+ )
4636
+ completion_tokens = (
4637
+ nested.getter(usage, ["completion_tokens", "output_tokens", "eval_count"], 0) or 0
4638
+ )
4639
+ cache_hit_tokens = (
4640
+ nested.getter(
4641
+ usage,
4642
+ [
4643
+ "prompt_cache_hit_tokens",
4644
+ "cache_read_input_tokens",
4645
+ "input_tokens_details.cached_tokens",
4646
+ "prompt_tokens_details.cached_tokens",
4647
+ ],
4648
+ 0,
4649
+ )
4650
+ or 0
4651
+ )
4652
+ cache_write_tokens = nested.getter(usage, "cache_creation_input_tokens", 0) or 0
4653
+ elif active_model is not None:
4654
+ prompt_tokens = active_model.token_count(messages) or 0
4655
+
4656
+ model_name = getattr(active_model, "name", None)
4657
+ UsageMeta._record_token_usage(model_name, prompt_tokens)
4658
+ self.total_tokens_sent += prompt_tokens
4659
+ self.total_tokens_received += completion_tokens
4660
+ self.total_cached_tokens += cache_hit_tokens
4661
+
4662
+ info = getattr(active_model, "info", {}) or {}
4663
+ if not info.get("input_cost_per_token"):
4664
+ return
4665
+
4666
+ try:
4667
+ cost = litellm.completion_cost(completion_response=completion)
4668
+ except Exception:
4669
+ cost = 0
4670
+
4671
+ if not cost:
4672
+ cost = self.compute_costs_from_tokens(
4673
+ prompt_tokens,
4674
+ completion_tokens,
4675
+ cache_write_tokens,
4676
+ cache_hit_tokens,
4677
+ model=active_model,
4678
+ )
4679
+
4680
+ self.total_cost += cost
4681
+
4682
+ def calculate_dynamic_sleep(self, model=None):
4683
+ """Compute how long to sleep before the next LLM API call to stay under the configured per-minute token limit.
4684
+
4685
+ Uses the rolling token-usage buffer (last 60s) to estimate:
4686
+
4687
+ * ``used_last_min`` - prompt tokens already consumed in the window
4688
+ * ``max_request`` - largest single request observed in the window
4689
+ * ``requests_per_min`` - request rate observed in the window
4690
+
4691
+ Returns a sleep duration (seconds) that is ``0`` when the current
4692
+ trajectory stays within 90% of ``tokens_per_minute`` both over the next
4693
+ 15 seconds and, if sustained, over a full minute. Otherwise it returns a
4694
+ pause rounded up to the nearest 0.25s interval.
4695
+ """
4696
+ limit = nested.getter(
4697
+ getattr(self, "args", None), "tokens_per_minute", DEFAULT_TOKENS_PER_MINUTE
4698
+ )
4699
+ if not isinstance(limit, (int, float)):
4700
+ limit = DEFAULT_TOKENS_PER_MINUTE
4701
+ if limit <= 0:
4702
+ return 0.0
4703
+
4704
+ active_model = model or getattr(self, "main_model", None)
4705
+ if active_model is None:
4706
+ get_active_model = getattr(self, "get_active_model", None)
4707
+ if callable(get_active_model):
4708
+ active_model = get_active_model()
4709
+
4710
+ model_name = getattr(active_model, "name", None)
4711
+ if not model_name:
4712
+ return 0.0
4713
+
4714
+ budget = limit * 0.9
4715
+ used_last_min, max_request, requests_per_min = UsageMeta._get_token_usage_stats(model_name)
4716
+
4717
+ if max_request <= 0 or requests_per_min <= 0:
4718
+ # No recent usage to throttle.
4719
+ return 0.0
4720
+
4721
+ # Tokens we would consume in the next 15 seconds at the current rate.
4722
+ projected_15s = max_request * (requests_per_min / 60.0) * 15.0
4723
+
4724
+ # If the current trajectory stays within budget (both over the next 15s
4725
+ # and if sustained for a full minute) there is nothing to do.
4726
+ if (used_last_min + projected_15s) <= budget and (max_request * requests_per_min) <= budget:
4727
+ return 0.0
4728
+
4729
+ # Slow the request rate so a sustained minute at max_request size fits
4730
+ # the budget.
4731
+ sustainable_rpm = budget / max_request
4732
+ sustainable_interval = 60.0 / sustainable_rpm if sustainable_rpm > 0 else 60.0
4733
+ current_interval = 60.0 / requests_per_min
4734
+ sleep = max(0.0, sustainable_interval - current_interval)
4735
+
4736
+ # If the next 15 seconds (plus what we've already used) would breach the
4737
+ # budget, wait for the rolling window to drain enough to absorb it.
4738
+ overshoot = (used_last_min + projected_15s) - budget
4739
+ if overshoot > 0:
4740
+ drain = 60.0 * (overshoot / max(used_last_min, 1.0))
4741
+ sleep = max(sleep, drain)
4742
+
4743
+ # Cap at one full window; round up to the nearest 0.25s.
4744
+ sleep = min(sleep, UsageMeta._token_usage_window)
4745
+ return math.ceil(sleep / 0.25) * 0.25
4746
+
4747
+ async def _rate_limit_sleep(self, model=None):
4748
+ """Sleep (if needed) before an LLM API call to respect the per-minute token limit.
4749
+
4750
+ Best-effort: an interrupt simply skips the pause and is handled at the
4751
+ next interruptible API point.
4752
+ """
4753
+ delay = self.calculate_dynamic_sleep(model=model)
4754
+ if delay <= 0:
4755
+ return
4756
+
4757
+ _, interrupted = await coroutines.interruptible(asyncio.sleep(delay), self.interrupt_event)
4758
+ if interrupted:
4759
+ return
4760
+
4579
4761
  def show_usage_report(self):
4580
4762
  if not self.usage_report:
4581
4763
  return
@@ -39,6 +39,7 @@ from .hooks import HooksCommand
39
39
  from .hot_reload import HotReloadCommand
40
40
  from .import_skill import ImportSkillCommand
41
41
  from .include_skill import IncludeSkillCommand
42
+ from .insert_queue import InsertQueueCommand
42
43
  from .lint import LintCommand
43
44
  from .list_mcp import ListMcpCommand
44
45
  from .list_queue import ListQueueCommand
@@ -131,11 +132,9 @@ CommandRegistry.register(HelpCommand)
131
132
  CommandRegistry.register(HistorySearchCommand)
132
133
  CommandRegistry.register(HooksCommand)
133
134
  CommandRegistry.register(HotReloadCommand)
134
- CommandRegistry.register(ReapAgentCommand)
135
- CommandRegistry.register(SpawnAgentCommand)
136
- CommandRegistry.register(SwitchAgentCommand)
137
- CommandRegistry.register(IncludeSkillCommand)
138
135
  CommandRegistry.register(ImportSkillCommand)
136
+ CommandRegistry.register(IncludeSkillCommand)
137
+ CommandRegistry.register(InsertQueueCommand)
139
138
  CommandRegistry.register(LintCommand)
140
139
  CommandRegistry.register(ListMcpCommand)
141
140
  CommandRegistry.register(ListQueueCommand)
@@ -158,6 +157,7 @@ CommandRegistry.register(QueueCommand)
158
157
  CommandRegistry.register(QuitCommand)
159
158
  CommandRegistry.register(ReadOnlyCommand)
160
159
  CommandRegistry.register(ReadOnlyStubCommand)
160
+ CommandRegistry.register(ReapAgentCommand)
161
161
  CommandRegistry.register(ReasoningEffortCommand)
162
162
  CommandRegistry.register(RemoveHookCommand)
163
163
  CommandRegistry.register(RemoveMcpCommand)
@@ -172,6 +172,8 @@ CommandRegistry.register(SaveCommand)
172
172
  CommandRegistry.register(SaveSessionCommand)
173
173
  CommandRegistry.register(SearchMemoryCommand)
174
174
  CommandRegistry.register(SettingsCommand)
175
+ CommandRegistry.register(SpawnAgentCommand)
176
+ CommandRegistry.register(SwitchAgentCommand)
175
177
  CommandRegistry.register(TerminalSetupCommand)
176
178
  CommandRegistry.register(TestCommand)
177
179
  CommandRegistry.register(ThinkTokensCommand)
@@ -222,18 +224,17 @@ __all__ = [
222
224
  "HistorySearchCommand",
223
225
  "HooksCommand",
224
226
  "HotReloadCommand",
225
- "IncludeSkillCommand",
226
227
  "ImportSkillCommand",
227
- "ReapAgentCommand",
228
- "SpawnAgentCommand",
229
- "SwitchAgentCommand",
228
+ "IncludeSkillCommand",
229
+ "InsertQueueCommand",
230
230
  "LintCommand",
231
+ "ListMcpCommand",
232
+ "ListQueueCommand",
231
233
  "ListSessionsCommand",
232
234
  "ListSkillsCommand",
233
235
  "LoadCommand",
234
236
  "LoadHookCommand",
235
237
  "LoadMcpCommand",
236
- "ListMcpCommand",
237
238
  "LoadSessionCommand",
238
239
  "LoadSkillCommand",
239
240
  "LsCommand",
@@ -245,11 +246,12 @@ __all__ = [
245
246
  "MultilineModeCommand",
246
247
  "parse_quoted_filenames",
247
248
  "PasteCommand",
248
- "quote_filename",
249
249
  "QueueCommand",
250
250
  "QuitCommand",
251
+ "quote_filename",
251
252
  "ReadOnlyCommand",
252
253
  "ReadOnlyStubCommand",
254
+ "ReapAgentCommand",
253
255
  "ReasoningEffortCommand",
254
256
  "ReloadProgramSignal",
255
257
  "RemoveHookCommand",
@@ -265,6 +267,8 @@ __all__ = [
265
267
  "SaveSessionCommand",
266
268
  "SearchMemoryCommand",
267
269
  "SettingsCommand",
270
+ "SpawnAgentCommand",
271
+ "SwitchAgentCommand",
268
272
  "SwitchCoderSignal",
269
273
  "TerminalSetupCommand",
270
274
  "TestCommand",
@@ -107,6 +107,12 @@ class Commands:
107
107
  coder = self.coder
108
108
  return coder.prompt_queue if coder is not None else []
109
109
 
110
+ def _insert_prompt(self, text: str, index: int) -> dict:
111
+ """Insert a prompt at the given index in the active coder's queue."""
112
+ from cecli.helpers import command_queue
113
+
114
+ return command_queue.insert_prompt(self._active_coder(), text, index)
115
+
110
116
  def _enqueue_prompt(self, text: str) -> dict:
111
117
  """Add a prompt to the owning coder's queue."""
112
118
  from cecli.helpers import command_queue
@@ -0,0 +1,86 @@
1
+ """Insert-queue command for CLI-33: inserts a prompt at a specific queue position."""
2
+
3
+ from typing import List
4
+
5
+ from cecli.commands.utils.base_command import BaseCommand
6
+ from cecli.commands.utils.helpers import format_command_result
7
+
8
+
9
+ class InsertQueueCommand(BaseCommand):
10
+ NORM_NAME = "insert-queue"
11
+ DESCRIPTION = "Insert a prompt into the queue at a specific position"
12
+
13
+ @classmethod
14
+ async def execute(cls, io, coder, args, **kwargs):
15
+ """Execute the insert-queue command with given parameters.
16
+
17
+ Args:
18
+ io: InputOutput instance
19
+ coder: Coder instance (may be None for some commands)
20
+ args: Command arguments as string ("<index> <prompt text>")
21
+ **kwargs: Additional context
22
+
23
+ Returns:
24
+ Formatted result string
25
+ """
26
+ # Sad path: coder.commands is None
27
+ if not coder.commands:
28
+ return format_command_result(
29
+ io,
30
+ cls.NORM_NAME,
31
+ "",
32
+ error="Command system not available. Cannot insert into queue.",
33
+ )
34
+
35
+ # Sad path: missing index or prompt text
36
+ parts = (args or "").strip().split(maxsplit=1)
37
+ if len(parts) != 2:
38
+ return format_command_result(
39
+ io,
40
+ cls.NORM_NAME,
41
+ "",
42
+ error="Usage: /insert-queue <index> <prompt text>",
43
+ )
44
+
45
+ # Sad path: non-integer index
46
+ try:
47
+ index = int(parts[0])
48
+ except ValueError:
49
+ return format_command_result(
50
+ io,
51
+ cls.NORM_NAME,
52
+ "",
53
+ error=f"Invalid index: '{parts[0]}'. Please provide a number.",
54
+ )
55
+
56
+ prompt_text = parts[1].strip()
57
+
58
+ # Happy path: insert the prompt
59
+ try:
60
+ item = coder.commands._insert_prompt(prompt_text, index)
61
+ io.tool_output(f"Prompt inserted at position {index + 1} (id: {item['id']})")
62
+ return f"Successfully executed {cls.NORM_NAME}."
63
+ except ValueError as e:
64
+ return format_command_result(io, cls.NORM_NAME, "", error=str(e))
65
+ except RuntimeError as e:
66
+ return format_command_result(io, cls.NORM_NAME, "", error=str(e))
67
+
68
+ @classmethod
69
+ def get_completions(cls, io, coder, args) -> List[str]:
70
+ """Get completion options for insert-queue command."""
71
+ return []
72
+
73
+ @classmethod
74
+ def get_help(cls) -> str:
75
+ """Get help text for the insert-queue command."""
76
+ help_text = super().get_help()
77
+ help_text += "\nUsage:\n"
78
+ help_text += " /insert-queue <index> <prompt text> # Insert at a specific position\n"
79
+ help_text += "\nDescription:\n"
80
+ help_text += " Inserts a prompt into the queue at the given 1-based position.\n"
81
+ help_text += " Existing items shift down. Index is clamped to the queue bounds.\n"
82
+ help_text += "\nExamples:\n"
83
+ help_text += " /insert-queue 1 Review the changes in src/main.py\n"
84
+ help_text += " /insert-queue 3 Write unit tests for the new feature\n"
85
+ help_text += "\nSee also: /queue, /list-queue, /remove-queue\n"
86
+ return help_text
@@ -27,7 +27,7 @@ class ListQueueCommand(BaseCommand):
27
27
  # Sad path: coder.commands is None
28
28
  if not coder.commands:
29
29
  return format_command_result(
30
- io, cls.NORM_NAME, error="Command system not available. Cannot list queue."
30
+ io, cls.NORM_NAME, "", error="Command system not available. Cannot list queue."
31
31
  )
32
32
 
33
33
  queue = coder.commands.prompt_queue