cecli-dev 1.4.0__tar.gz → 1.4.1__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 (840) hide show
  1. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.flake8 +1 -0
  2. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/PKG-INFO +1 -1
  3. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/_version.py +3 -3
  4. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/agent_coder.py +4 -3
  5. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/base_coder.py +11 -9
  6. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/__init__.py +0 -3
  7. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/load_mcp.py +1 -0
  8. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/run.py +1 -1
  9. cecli_dev-1.4.1/cecli/commands/workspace.py +238 -0
  10. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/files.py +102 -1
  11. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/integration.py +58 -8
  12. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/tags.py +3 -0
  13. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/config.py +1 -0
  14. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/pipeline.py +11 -0
  15. cecli_dev-1.4.1/cecli/helpers/model_config/api.py +110 -0
  16. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/identifiers.py +10 -0
  17. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/pipeline.py +1 -1
  18. cecli_dev-1.4.1/cecli/helpers/model_config/registry.py +43 -0
  19. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_providers.py +9 -0
  20. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/skills.py +47 -0
  21. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/main.py +15 -31
  22. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mcp/server.py +14 -15
  23. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/models.py +18 -6
  24. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/agent.yml +2 -2
  25. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/subagent.yml +2 -2
  26. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/model-metadata.json +8042 -874
  27. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/providers.json +4 -2
  28. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/edit_file.py +1 -1
  29. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/read_file.py +18 -1
  30. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/helpers.py +9 -0
  31. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/app.py +80 -0
  32. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/completion_bar.py +21 -12
  33. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/model-providers.md +54 -0
  34. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/subagents.md +1 -1
  35. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/workspaces.md +10 -22
  36. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/PKG-INFO +1 -1
  37. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/SOURCES.txt +4 -3
  38. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/scm_file_list.json +4 -3
  39. cecli_dev-1.4.1/cecli_dev.egg-info/scm_version.json +8 -0
  40. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_main.py +0 -110
  41. cecli_dev-1.4.0/tests/commands/test_open.py → cecli_dev-1.4.1/tests/commands/test_workspace.py +58 -20
  42. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/conftest.py +8 -0
  43. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_model_config.py +9 -0
  44. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_sub_agent_coder.py +1 -0
  45. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tui/test_app.py +51 -0
  46. cecli_dev-1.4.1/tests/tui/test_completion_bar.py +65 -0
  47. cecli_dev-1.4.0/cecli/commands/open.py +0 -76
  48. cecli_dev-1.4.0/cecli/commands/workspace.py +0 -35
  49. cecli_dev-1.4.0/cecli/helpers/model_config/api.py +0 -62
  50. cecli_dev-1.4.0/cecli_dev.egg-info/scm_version.json +0 -8
  51. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.dockerignore +0 -0
  52. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.gitattributes +0 -0
  53. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  54. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/check_pypi_version.yml +0 -0
  55. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/docker-build-test.yml +0 -0
  56. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/docker-release.yml +0 -0
  57. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/issues.yml +0 -0
  58. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/pages.yml +0 -0
  59. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/pre-commit.yml +0 -0
  60. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/release.yml +0 -0
  61. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/ubuntu-tests.yml +0 -0
  62. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/windows-tests.yml +0 -0
  63. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.github/workflows/windows_check_pypi_version.yml +0 -0
  64. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.gitignore +0 -0
  65. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/.pre-commit-config.yaml +0 -0
  66. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/CHANGELOG.md +0 -0
  67. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/CNAME +0 -0
  68. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/CONTRIBUTING.md +0 -0
  69. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/HISTORY.md +0 -0
  70. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/LICENSE.txt +0 -0
  71. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/MANIFEST.in +0 -0
  72. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/README.md +0 -0
  73. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/Dockerfile +0 -0
  74. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/README.md +0 -0
  75. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/__init__.py +0 -0
  76. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/benchmark.py +0 -0
  77. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/benchmark_classic.py +0 -0
  78. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/clone-exercism.sh +0 -0
  79. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/cpp-test.sh +0 -0
  80. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/docker.sh +0 -0
  81. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/docker_build.sh +0 -0
  82. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/install-docker-ubuntu.sh +0 -0
  83. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/npm-test.sh +0 -0
  84. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/over_time.py +0 -0
  85. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/plot.sh +0 -0
  86. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/plots.py +0 -0
  87. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/problem_stats.py +0 -0
  88. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/prompts.py +0 -0
  89. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/refactor_tools.py +0 -0
  90. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/rsync.sh +0 -0
  91. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/rungrid.py +0 -0
  92. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/swe-bench-lite.txt +0 -0
  93. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/swe-bench.txt +0 -0
  94. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/swe_bench.py +0 -0
  95. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/test_benchmark.py +0 -0
  96. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/variations.1.sh +0 -0
  97. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/variations.2.sh +0 -0
  98. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/variations.3.sh +0 -0
  99. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/benchmark/variations.4.sh +0 -0
  100. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/__init__.py +0 -0
  101. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/__main__.py +0 -0
  102. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/args.py +0 -0
  103. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/args_formatter.py +0 -0
  104. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/change_tracker.py +0 -0
  105. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/__init__.py +0 -0
  106. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/architect_coder.py +0 -0
  107. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/ask_coder.py +0 -0
  108. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/chat_chunks.py +0 -0
  109. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/context_coder.py +0 -0
  110. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/copypaste_coder.py +0 -0
  111. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editblock_coder.py +0 -0
  112. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editblock_fenced_coder.py +0 -0
  113. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editblock_func_coder.py +0 -0
  114. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  115. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editor_editblock_coder.py +0 -0
  116. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/editor_whole_coder.py +0 -0
  117. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/hashline_coder.py +0 -0
  118. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/help_coder.py +0 -0
  119. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/patch_coder.py +0 -0
  120. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/search_replace.py +0 -0
  121. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/shell.py +0 -0
  122. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/single_wholefile_func_coder.py +0 -0
  123. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/sub_agent_coder.py +0 -0
  124. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/udiff_coder.py +0 -0
  125. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/udiff_simple.py +0 -0
  126. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/wholefile_coder.py +0 -0
  127. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/coders/wholefile_func_coder.py +0 -0
  128. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/add.py +0 -0
  129. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/agent.py +0 -0
  130. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/agent_model.py +0 -0
  131. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/agent_tree.py +0 -0
  132. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/architect.py +0 -0
  133. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/ask.py +0 -0
  134. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/auto_memory.py +0 -0
  135. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/chat_mode.py +0 -0
  136. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/clear.py +0 -0
  137. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/code.py +0 -0
  138. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/command_prefix.py +0 -0
  139. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/commit.py +0 -0
  140. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/compact.py +0 -0
  141. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/context.py +0 -0
  142. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/context_blocks.py +0 -0
  143. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/context_management.py +0 -0
  144. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/copy.py +0 -0
  145. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/copy_context.py +0 -0
  146. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/core.py +0 -0
  147. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/diff.py +0 -0
  148. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/drop.py +0 -0
  149. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/editor.py +0 -0
  150. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/editor_model.py +0 -0
  151. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/exclude_skill.py +0 -0
  152. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/exit.py +0 -0
  153. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/git.py +0 -0
  154. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/hashline.py +0 -0
  155. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/help.py +0 -0
  156. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/history_search.py +0 -0
  157. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/hooks.py +0 -0
  158. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/hot_reload.py +0 -0
  159. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/include_skill.py +0 -0
  160. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/lint.py +0 -0
  161. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/list_mcp.py +0 -0
  162. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/list_queue.py +0 -0
  163. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/list_sessions.py +0 -0
  164. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/list_skills.py +0 -0
  165. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/load.py +0 -0
  166. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/load_hook.py +0 -0
  167. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/load_session.py +0 -0
  168. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/load_skill.py +0 -0
  169. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/ls.py +0 -0
  170. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/map.py +0 -0
  171. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/map_refresh.py +0 -0
  172. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/merge.py +0 -0
  173. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/model.py +0 -0
  174. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/models.py +0 -0
  175. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/multiline_mode.py +0 -0
  176. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/paste.py +0 -0
  177. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/queue.py +0 -0
  178. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/quit.py +0 -0
  179. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/read_only.py +0 -0
  180. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/read_only_stub.py +0 -0
  181. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/reap_agent.py +0 -0
  182. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/reasoning_effort.py +0 -0
  183. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/remove_hook.py +0 -0
  184. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/remove_mcp.py +0 -0
  185. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/remove_memory.py +0 -0
  186. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/remove_queue.py +0 -0
  187. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/remove_skill.py +0 -0
  188. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/report.py +0 -0
  189. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/reset.py +0 -0
  190. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/rules.py +0 -0
  191. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/save.py +0 -0
  192. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/save_session.py +0 -0
  193. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/search_memory.py +0 -0
  194. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/settings.py +0 -0
  195. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/spawn_agent.py +0 -0
  196. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/switch_agent.py +0 -0
  197. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/terminal_data/linux.keytab +0 -0
  198. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/terminal_setup.py +0 -0
  199. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/test.py +0 -0
  200. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/think_tokens.py +0 -0
  201. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/tokens.py +0 -0
  202. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/undo.py +0 -0
  203. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/utils/__init__.py +0 -0
  204. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/utils/base_command.py +0 -0
  205. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/utils/helpers.py +0 -0
  206. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/utils/registry.py +0 -0
  207. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/utils/save_load_manager.py +0 -0
  208. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/voice.py +0 -0
  209. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/weak_model.py +0 -0
  210. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/commands/web.py +0 -0
  211. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/decoding.py +0 -0
  212. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/deprecated_args.py +0 -0
  213. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/diffs.py +0 -0
  214. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/dump.py +0 -0
  215. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/editor.py +0 -0
  216. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/exceptions.py +0 -0
  217. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/format_settings.py +0 -0
  218. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/help.py +0 -0
  219. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/help_pats.py +0 -0
  220. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/__init__.py +0 -0
  221. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/__init__.py +0 -0
  222. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/config.py +0 -0
  223. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/defaults/__init__.py +0 -0
  224. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  225. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/defaults/worker.md +0 -0
  226. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/agents/service.py +0 -0
  227. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/background_commands.py +0 -0
  228. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/command_parser.py +0 -0
  229. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/command_queue.py +0 -0
  230. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/config_utils.py +0 -0
  231. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/__init__.py +0 -0
  232. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/base_message.py +0 -0
  233. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/manager.py +0 -0
  234. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/service.py +0 -0
  235. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/conversation/utils.py +0 -0
  236. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/copypaste.py +0 -0
  237. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/coroutines.py +0 -0
  238. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/crypto.py +0 -0
  239. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_searcher.py +0 -0
  240. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/__init__.py +0 -0
  241. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/builders.py +0 -0
  242. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/ignore.py +0 -0
  243. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/ngram_index.py +0 -0
  244. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/service.py +0 -0
  245. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/file_system/trie_index.py +0 -0
  246. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/__init__.py +0 -0
  247. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/dump.py +0 -0
  248. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  249. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/main.py +0 -0
  250. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/parsers.py +0 -0
  251. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/grep_ast/tsl.py +0 -0
  252. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/hashline.py +0 -0
  253. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/hashpos/__init__.py +0 -0
  254. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/hashpos/hashpos.py +0 -0
  255. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  256. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/hashpos/transformations.py +0 -0
  257. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/io_proxy.py +0 -0
  258. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/leak_detect.py +0 -0
  259. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/__init__.py +0 -0
  260. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/aws_sigv4.py +0 -0
  261. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/__init__.py +0 -0
  262. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/bedrock.py +0 -0
  263. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/chat.py +0 -0
  264. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/gemini.py +0 -0
  265. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/messages.py +0 -0
  266. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/domains/responses.py +0 -0
  267. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/formatters/__init__.py +0 -0
  268. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  269. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/formatters/thinking.py +0 -0
  270. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/identifiers.py +0 -0
  271. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/litellm_compat.py +0 -0
  272. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/__init__.py +0 -0
  273. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/anthropic.py +0 -0
  274. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/azure.py +0 -0
  275. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/base.py +0 -0
  276. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/bedrock.py +0 -0
  277. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  278. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/deepseek.py +0 -0
  279. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/gemini.py +0 -0
  280. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  281. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/meta.py +0 -0
  282. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/openai.py +0 -0
  283. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/providers/openrouter.py +0 -0
  284. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/runtime.py +0 -0
  285. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/types.py +0 -0
  286. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/llms/utils.py +0 -0
  287. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/lock_detect.py +0 -0
  288. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/loop_detect.py +0 -0
  289. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/memory/__init__.py +0 -0
  290. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/memory/db.py +0 -0
  291. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/memory/utils.py +0 -0
  292. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/memory_control.py +0 -0
  293. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/__init__.py +0 -0
  294. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/agent.py +0 -0
  295. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  296. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  297. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  298. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/llm.py +0 -0
  299. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/model_config/utils.py +0 -0
  300. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/nested.py +0 -0
  301. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/observations/__init__.py +0 -0
  302. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/observations/service.py +0 -0
  303. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/__init__.py +0 -0
  304. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  305. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/environment.py +0 -0
  306. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/region_resolver.py +0 -0
  307. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/safe_methods.py +0 -0
  308. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/security.py +0 -0
  309. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/service.py +0 -0
  310. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  311. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/plugin_manager.py +0 -0
  312. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/profiler.py +0 -0
  313. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/queues.py +0 -0
  314. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/requests.py +0 -0
  315. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/responses.py +0 -0
  316. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/__init__.py +0 -0
  317. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/acp/__init__.py +0 -0
  318. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/acp/bridge.py +0 -0
  319. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/acp/models.py +0 -0
  320. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/acp/protocol.py +0 -0
  321. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/signals.py +0 -0
  322. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/server/ws_server.py +0 -0
  323. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/similarity.py +0 -0
  324. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/threading.py +0 -0
  325. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/workspaces/__init__.py +0 -0
  326. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/workspaces/config.py +0 -0
  327. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/workspaces/paths.py +0 -0
  328. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/workspaces/subagents.py +0 -0
  329. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/helpers/workspaces/workspace.py +0 -0
  330. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/history.py +0 -0
  331. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/__init__.py +0 -0
  332. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/base.py +0 -0
  333. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/helpers.py +0 -0
  334. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/integration.py +0 -0
  335. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/manager.py +0 -0
  336. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/registry.py +0 -0
  337. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/service.py +0 -0
  338. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/hooks/types.py +0 -0
  339. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/http.py +0 -0
  340. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/interruptible_input.py +0 -0
  341. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/io.py +0 -0
  342. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/linter.py +0 -0
  343. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/llm.py +0 -0
  344. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mcp/__init__.py +0 -0
  345. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mcp/manager.py +0 -0
  346. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mcp/oauth.py +0 -0
  347. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mcp/utils.py +0 -0
  348. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/mdstream.py +0 -0
  349. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/onboarding.py +0 -0
  350. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/__init__.py +0 -0
  351. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/architect.yml +0 -0
  352. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/ask.yml +0 -0
  353. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/base.yml +0 -0
  354. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/context.yml +0 -0
  355. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/copypaste.yml +0 -0
  356. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editblock.yml +0 -0
  357. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editblock_fenced.yml +0 -0
  358. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editblock_func.yml +0 -0
  359. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editor_diff_fenced.yml +0 -0
  360. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editor_editblock.yml +0 -0
  361. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/editor_whole.yml +0 -0
  362. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/hashline.yml +0 -0
  363. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/help.yml +0 -0
  364. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/patch.yml +0 -0
  365. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/single_wholefile_func.yml +0 -0
  366. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/udiff.yml +0 -0
  367. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/udiff_simple.yml +0 -0
  368. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/utils/__init__.py +0 -0
  369. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/utils/registry.py +0 -0
  370. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/utils/system.py +0 -0
  371. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/wholefile.yml +0 -0
  372. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/prompts/wholefile_func.yml +0 -0
  373. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  374. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  375. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  376. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  377. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  378. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  379. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  380. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  381. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  382. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  383. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  384. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  385. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  386. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  387. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  388. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  389. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  390. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  391. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  392. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  393. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  394. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  395. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  396. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  397. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  398. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  399. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  400. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  401. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  402. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  403. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  404. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  405. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/README.md +0 -0
  406. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  407. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  408. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  409. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  410. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  411. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  412. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  413. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  414. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  415. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  416. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  417. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  418. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  419. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  420. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  421. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  422. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  423. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  424. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  425. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  426. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  427. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  428. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  429. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  430. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  431. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  432. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  433. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/reasoning_tags.py +0 -0
  434. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/repo.py +0 -0
  435. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/repomap.py +0 -0
  436. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/report.py +0 -0
  437. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/__init__.py +0 -0
  438. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/model-metadata.ext.json +0 -0
  439. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/model-settings-condensed.yml +0 -0
  440. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/resources/model-settings.yml +0 -0
  441. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/run_cmd.py +0 -0
  442. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/scrape.py +0 -0
  443. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/sendchat.py +0 -0
  444. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/sessions.py +0 -0
  445. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/signals.py +0 -0
  446. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/special.py +0 -0
  447. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/__init__.py +0 -0
  448. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/_yield.py +0 -0
  449. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/broadcast.py +0 -0
  450. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/command.py +0 -0
  451. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/delegate.py +0 -0
  452. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/explore_code.py +0 -0
  453. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_branch.py +0 -0
  454. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_diff.py +0 -0
  455. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_log.py +0 -0
  456. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_remote.py +0 -0
  457. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_show.py +0 -0
  458. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/git_status.py +0 -0
  459. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/grep.py +0 -0
  460. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/ls.py +0 -0
  461. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/orchestrate.py +0 -0
  462. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/replace_facts.py +0 -0
  463. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/resource_manager.py +0 -0
  464. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/search_facts.py +0 -0
  465. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/thinking.py +0 -0
  466. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/undo_change.py +0 -0
  467. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/update_todo_list.py +0 -0
  468. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/__init__.py +0 -0
  469. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/base_tool.py +0 -0
  470. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/output.py +0 -0
  471. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/registry.py +0 -0
  472. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/utils/responses.py +0 -0
  473. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/validations/__init__.py +0 -0
  474. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tools/validations/validations.py +0 -0
  475. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/__init__.py +0 -0
  476. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/io.py +0 -0
  477. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/styles.tcss +0 -0
  478. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/__init__.py +0 -0
  479. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/file_list.py +0 -0
  480. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/footer.py +0 -0
  481. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/input_area.py +0 -0
  482. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/input_container.py +0 -0
  483. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/key_hints.py +0 -0
  484. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/output.py +0 -0
  485. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/output_alt.bak +0 -0
  486. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/selectable_log.py +0 -0
  487. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/status_bar.py +0 -0
  488. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/widgets/subagent_pills.py +0 -0
  489. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/tui/worker.py +0 -0
  490. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/urls.py +0 -0
  491. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/utils.py +0 -0
  492. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/versioncheck.py +0 -0
  493. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/voice.py +0 -0
  494. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/waiting.py +0 -0
  495. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/watch.py +0 -0
  496. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/watch_prompts.py +0 -0
  497. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/blame.md +0 -0
  498. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/get-started.md +0 -0
  499. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/help-tip.md +0 -0
  500. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/help.md +0 -0
  501. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/install.md +0 -0
  502. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/keys.md +0 -0
  503. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/model-warnings.md +0 -0
  504. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/multi-line.md +0 -0
  505. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/python-m-aider.md +0 -0
  506. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/recording.css +0 -0
  507. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/recording.md +0 -0
  508. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_includes/works-best.md +0 -0
  509. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_features.scss +0 -0
  510. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_footer.scss +0 -0
  511. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_hero.scss +0 -0
  512. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_info.scss +0 -0
  513. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_layout.scss +0 -0
  514. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_reset.scss +0 -0
  515. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_testimonials.scss +0 -0
  516. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_typography.scss +0 -0
  517. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/_variables.scss +0 -0
  518. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/custom/custom.scss +0 -0
  519. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/_sass/global-overrides.scss +0 -0
  520. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docmd.config.json +0 -0
  521. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  522. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/adv-model-settings.md +0 -0
  523. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/agent-mode.md +0 -0
  524. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/api-keys.md +0 -0
  525. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/api.md +0 -0
  526. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/conf.md +0 -0
  527. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/custom-commands.md +0 -0
  528. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  529. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/dotenv.md +0 -0
  530. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/editor.md +0 -0
  531. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/hooks.md +0 -0
  532. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/mcp.md +0 -0
  533. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/model-aliases.md +0 -0
  534. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/model-configuration.md +0 -0
  535. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/options.md +0 -0
  536. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/persistent-memory.md +0 -0
  537. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/reasoning.md +0 -0
  538. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/retries.md +0 -0
  539. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/security.md +0 -0
  540. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/skills.md +0 -0
  541. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config/tui.md +0 -0
  542. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/config.md +0 -0
  543. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/git.md +0 -0
  544. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/index.md +0 -0
  545. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/install/docker.md +0 -0
  546. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/install.md +0 -0
  547. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/languages.md +0 -0
  548. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  549. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/legal/privacy.md +0 -0
  550. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/anthropic.md +0 -0
  551. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/azure.md +0 -0
  552. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/bedrock.md +0 -0
  553. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/cohere.md +0 -0
  554. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/deepseek.md +0 -0
  555. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/gemini.md +0 -0
  556. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/github.md +0 -0
  557. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/groq.md +0 -0
  558. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/lm-studio.md +0 -0
  559. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/ollama.md +0 -0
  560. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/openai-compat.md +0 -0
  561. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/openai.md +0 -0
  562. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/opencode-go.md +0 -0
  563. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/openrouter.md +0 -0
  564. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/other.md +0 -0
  565. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/vertex.md +0 -0
  566. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/warnings.md +0 -0
  567. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms/xai.md +0 -0
  568. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/llms.md +0 -0
  569. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/more/analytics.md +0 -0
  570. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/more/edit-formats.md +0 -0
  571. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/more/infinite-output.md +0 -0
  572. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/more-info.md +0 -0
  573. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/repomap.md +0 -0
  574. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/scripting.md +0 -0
  575. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  576. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  577. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/imports.md +0 -0
  578. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  579. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/support.md +0 -0
  580. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  581. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  582. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/troubleshooting.md +0 -0
  583. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/commands.md +0 -0
  584. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/conventions.md +0 -0
  585. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/copypaste.md +0 -0
  586. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/images-urls.md +0 -0
  587. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/lint-test.md +0 -0
  588. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/modes.md +0 -0
  589. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/not-code.md +0 -0
  590. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/notifications.md +0 -0
  591. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/optional.md +0 -0
  592. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/sessions.md +0 -0
  593. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/tips.md +0 -0
  594. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/voice.md +0 -0
  595. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage/watch.md +0 -0
  596. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/docs/usage.md +0 -0
  597. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/package-lock.json +0 -0
  598. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/package.json +0 -0
  599. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli/website/share/index.md +0 -0
  600. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/dependency_links.txt +0 -0
  601. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/entry_points.txt +0 -0
  602. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/requires.txt +0 -0
  603. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/cecli_dev.egg-info/top_level.txt +0 -0
  604. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/docker/Dockerfile +0 -0
  605. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  606. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/pyproject.toml +0 -0
  607. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/pytest.ini +0 -0
  608. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/common-constraints.txt +0 -0
  609. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-dev.in +0 -0
  610. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-dev.txt +0 -0
  611. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-help.in +0 -0
  612. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-help.txt +0 -0
  613. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-playwright.in +0 -0
  614. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements-playwright.txt +0 -0
  615. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/requirements.in +0 -0
  616. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements/tree-sitter.in +0 -0
  617. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/requirements.txt +0 -0
  618. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/30k-image.py +0 -0
  619. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/__init__.py +0 -0
  620. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/blame.py +0 -0
  621. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/clean_metadata.py +0 -0
  622. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/compare-message-history.py +0 -0
  623. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/condense_model_settings.py +0 -0
  624. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/cost_analyzer.py +0 -0
  625. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/cost_calculator.py +0 -0
  626. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/dl_icons.py +0 -0
  627. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/docmd_build.sh +0 -0
  628. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/filter-chat-mode.js +0 -0
  629. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/generate_providers.py +0 -0
  630. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/get_contributor_list.js +0 -0
  631. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/get_hashline.py +0 -0
  632. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/history_prompts.py +0 -0
  633. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/homepage.py +0 -0
  634. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/issues.py +0 -0
  635. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/logo_svg.py +0 -0
  636. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/optimize_tokens.sh +0 -0
  637. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/pip-compile.sh +0 -0
  638. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/recording_audio.py +0 -0
  639. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/redact-cast.py +0 -0
  640. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/rename_to_cecli.py +0 -0
  641. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/tmux_record.sh +0 -0
  642. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/tsl_pack_langs.py +0 -0
  643. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/update-blame.sh +0 -0
  644. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/update-docs.sh +0 -0
  645. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/update-history.py +0 -0
  646. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/versionbump.py +0 -0
  647. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/scripts/yank-old-versions.py +0 -0
  648. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/setup.cfg +0 -0
  649. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/shim.pyproject.toml +0 -0
  650. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/__init__.py +0 -0
  651. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/__init__.py +0 -0
  652. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/conftest.py +0 -0
  653. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_agent_config_merge.py +0 -0
  654. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_aws_credentials.py +0 -0
  655. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_background_commands.py +0 -0
  656. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_coder.py +0 -0
  657. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_commands.py +0 -0
  658. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_custom_commands.py +0 -0
  659. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_deprecated.py +0 -0
  660. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_editblock.py +0 -0
  661. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_editor.py +0 -0
  662. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_exceptions.py +0 -0
  663. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_file_system_service.py +0 -0
  664. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_find_or_blocks.py +0 -0
  665. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_hashline.py +0 -0
  666. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_hashline_closure.py +0 -0
  667. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_history.py +0 -0
  668. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_io.py +0 -0
  669. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_linter.py +0 -0
  670. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_model_info_manager.py +0 -0
  671. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_model_provider_manager.py +0 -0
  672. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_models.py +0 -0
  673. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_onboarding.py +0 -0
  674. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_plugin_manager.py +0 -0
  675. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_prompts.py +0 -0
  676. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_reasoning.py +0 -0
  677. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_repo.py +0 -0
  678. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_repomap.py +0 -0
  679. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_run_cmd.py +0 -0
  680. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_sanity_check_repo.py +0 -0
  681. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_scripting.py +0 -0
  682. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_select_selector.py +0 -0
  683. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_sendchat.py +0 -0
  684. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_session_args.py +0 -0
  685. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_session_crypto.py +0 -0
  686. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_sessions.py +0 -0
  687. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_sessions_manager.py +0 -0
  688. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_skills.py +0 -0
  689. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_special.py +0 -0
  690. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_spinner.py +0 -0
  691. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_ssl_verification.py +0 -0
  692. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_udiff.py +0 -0
  693. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_urls.py +0 -0
  694. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_voice.py +0 -0
  695. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_watch.py +0 -0
  696. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/basic/test_wholefile.py +0 -0
  697. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/coders/test_coder_switching.py +0 -0
  698. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/coders/test_copypaste_coder.py +0 -0
  699. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/coders/test_tool_call_consolidation.py +0 -0
  700. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/commands/test_auto_memory.py +0 -0
  701. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/commands/test_compaction.py +0 -0
  702. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/commands/test_remove_memory.py +0 -0
  703. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/commands/test_search_memory.py +0 -0
  704. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/commands/test_switch_agent.py +0 -0
  705. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/conversations/test_conversation_integration.py +0 -0
  706. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/conversations/test_conversation_system.py +0 -0
  707. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  708. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/chat-history.md +0 -0
  709. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/arduino/test.ino +0 -0
  710. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/bash/test.sh +0 -0
  711. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/c/test.c +0 -0
  712. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/chatito/test.chatito +0 -0
  713. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/clojure/test.clj +0 -0
  714. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  715. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/cpp/test.cpp +0 -0
  716. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/csharp/test.cs +0 -0
  717. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/d/test.d +0 -0
  718. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/dart/test.dart +0 -0
  719. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/elisp/test.el +0 -0
  720. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/elixir/test.ex +0 -0
  721. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/elm/test.elm +0 -0
  722. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/gleam/test.gleam +0 -0
  723. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/go/test.go +0 -0
  724. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/haskell/test.hs +0 -0
  725. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/hcl/test.tf +0 -0
  726. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/java/test.java +0 -0
  727. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/javascript/test.js +0 -0
  728. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/kotlin/test.kt +0 -0
  729. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/lua/test.lua +0 -0
  730. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/matlab/test.m +0 -0
  731. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/ocaml/test.ml +0 -0
  732. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  733. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/php/test.php +0 -0
  734. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/pony/test.pony +0 -0
  735. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/properties/test.properties +0 -0
  736. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/python/test.py +0 -0
  737. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/ql/test.ql +0 -0
  738. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/r/test.r +0 -0
  739. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/racket/test.rkt +0 -0
  740. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/ruby/test.rb +0 -0
  741. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/rust/test.rs +0 -0
  742. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/scala/test.scala +0 -0
  743. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/solidity/test.sol +0 -0
  744. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/swift/test.swift +0 -0
  745. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/tsx/test.tsx +0 -0
  746. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/typescript/test.ts +0 -0
  747. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/udev/test.rules +0 -0
  748. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/languages/zig/test.zig +0 -0
  749. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/sample-code-base/sample.js +0 -0
  750. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/sample-code-base/sample.py +0 -0
  751. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  752. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/watch.js +0 -0
  753. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/watch.lisp +0 -0
  754. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/watch.py +0 -0
  755. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/fixtures/watch_question.js +0 -0
  756. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/help/test_help.py +0 -0
  757. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/observations/test_observation_service.py +0 -0
  758. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/server/acp/__init__.py +0 -0
  759. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/server/acp/test_bridge.py +0 -0
  760. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/server/acp/test_dispatch.py +0 -0
  761. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/server/acp/test_models.py +0 -0
  762. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/server/acp/test_protocol.py +0 -0
  763. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_api_base.py +0 -0
  764. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  765. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_cache_control.py +0 -0
  766. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_gemini_auth.py +0 -0
  767. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  768. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_hyperscalers.py +0 -0
  769. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_messages_stream.py +0 -0
  770. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_messages_wire.py +0 -0
  771. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_providers_json.py +0 -0
  772. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_reasoning_config.py +0 -0
  773. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  774. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_llms_vision.py +0 -0
  775. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_loop_detect.py +0 -0
  776. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_memory_control.py +0 -0
  777. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/test_orchestration.py +0 -0
  778. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/workspaces/conftest.py +0 -0
  779. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/workspaces/test_config.py +0 -0
  780. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/workspaces/test_paths.py +0 -0
  781. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/helpers/workspaces/test_subagents.py +0 -0
  782. /cecli_dev-1.4.0/tests/helpers/workspaces/test_workspace.py → /cecli_dev-1.4.1/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  783. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/hooks/__init__.py +0 -0
  784. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/hooks/test_base.py +0 -0
  785. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/hooks/test_manager.py +0 -0
  786. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/hooks/test_registry.py +0 -0
  787. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/integration/test_agent_mcp_management.py +0 -0
  788. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/integration/test_config_loading.py +0 -0
  789. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/integration/test_mcp_management.py +0 -0
  790. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/__init__.py +0 -0
  791. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/conftest.py +0 -0
  792. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/mock_server.py +0 -0
  793. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_concurrency.py +0 -0
  794. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_config.py +0 -0
  795. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_integration.py +0 -0
  796. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_logging.py +0 -0
  797. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_resilience.py +0 -0
  798. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_keepalive_unit.py +0 -0
  799. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_manager.py +0 -0
  800. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_manager_retry.py +0 -0
  801. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_server_name_normalization.py +0 -0
  802. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/mcp/test_server_sdk_compat.py +0 -0
  803. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/scrape/test_playwright_disable.py +0 -0
  804. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/scrape/test_scrape.py +0 -0
  805. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/__init__.py +0 -0
  806. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/conftest.py +0 -0
  807. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_commands.py +0 -0
  808. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_config.py +0 -0
  809. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_delegate.py +0 -0
  810. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_finished.py +0 -0
  811. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_io_proxy.py +0 -0
  812. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/subagents/test_service.py +0 -0
  813. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/test_requests.py +0 -0
  814. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_command_format_output.py +0 -0
  815. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_edit_file_format_output.py +0 -0
  816. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_extractions.py +0 -0
  817. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_get_lines.py +0 -0
  818. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_git_branch.py +0 -0
  819. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_git_diff.py +0 -0
  820. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_grep.py +0 -0
  821. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_insert_block.py +0 -0
  822. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_read_range_execute.py +0 -0
  823. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_registry.py +0 -0
  824. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_remove_mcp_tool.py +0 -0
  825. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_tool_arguments.py +0 -0
  826. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  827. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/tools/validations.py +0 -0
  828. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/conftest.py +0 -0
  829. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_deep_merge.py +0 -0
  830. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_edge_cases.py +0 -0
  831. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_load_mcp.py +0 -0
  832. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_performance.py +0 -0
  833. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_queues.py +0 -0
  834. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_remove_mcp.py +0 -0
  835. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_retry_backoff.py +0 -0
  836. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_shallow_merge.py +0 -0
  837. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_signals.py +0 -0
  838. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  839. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  840. {cecli_dev-1.4.0 → cecli_dev-1.4.1}/tests/unit/test_ws_server.py +0 -0
@@ -1,3 +1,4 @@
1
1
  [flake8]
2
2
  ignore = E203,W503
3
3
  max-line-length = 120
4
+ exclude = *.md,*.markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.4.0
3
+ Version: 1.4.1
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.4.0'
22
- __version_tuple__ = version_tuple = (1, 4, 0)
21
+ __version__ = version = '1.4.1'
22
+ __version_tuple__ = version_tuple = (1, 4, 1)
23
23
 
24
- __commit_id__ = commit_id = 'g1933dd2b7'
24
+ __commit_id__ = commit_id = 'g2b8c49bf9'
@@ -463,7 +463,6 @@ class AgentCoder(Coder):
463
463
  "skills",
464
464
  "servers",
465
465
  "sub_agents",
466
- "loaded_skills",
467
466
  "orchestration",
468
467
  ]
469
468
  for block_type in block_types:
@@ -499,8 +498,6 @@ class AgentCoder(Coder):
499
498
  content = self.get_skills_context()
500
499
  elif block_name == "servers":
501
500
  content = self.get_servers_context()
502
- elif block_name == "loaded_skills":
503
- content = self.get_skills_content()
504
501
  elif block_name == "orchestration":
505
502
  content = self.get_orchestration_context()
506
503
  elif block_name == "sub_agents" and (
@@ -643,6 +640,10 @@ class AgentCoder(Coder):
643
640
  # Add pre-message context blocks (priority 125 - between REPO and READONLY_FILES)
644
641
  ConversationService.get_chunks(self).add_pre_message_context_blocks()
645
642
 
643
+ ConversationService.get_chunks(self).add_active_skills_messages(
644
+ getattr(self, "skills_manager", None)
645
+ )
646
+
646
647
  ConversationService.get_chunks(self).add_readonly_files_messages()
647
648
  ConversationService.get_chunks(self).add_chat_files_messages()
648
649
 
@@ -2919,6 +2919,17 @@ class Coder(metaclass=UsageMeta):
2919
2919
 
2920
2920
  edited = await self.apply_updates()
2921
2921
 
2922
+ # Run tests before committing so failing tests abort the commit and
2923
+ # reflect the errors back for the model to fix first.
2924
+ if edited and self.auto_test and self.test_cmd:
2925
+ test_errors = await self.commands.execute("test", self.test_cmd)
2926
+ self.test_outcome = not test_errors
2927
+ if test_errors:
2928
+ ok = await self.io.confirm_ask("Attempt to fix test errors?")
2929
+ if ok:
2930
+ self.reflected_message = test_errors
2931
+ return
2932
+
2922
2933
  if edited:
2923
2934
  self.coder_edited_files.update(edited)
2924
2935
  saved_message = await self.auto_commit(edited)
@@ -2991,15 +3002,6 @@ class Coder(metaclass=UsageMeta):
2991
3002
  mark_for_demotion=1,
2992
3003
  )
2993
3004
 
2994
- if edited and self.auto_test and self.test_cmd:
2995
- test_errors = await self.commands.execute("test", self.test_cmd)
2996
- self.test_outcome = not test_errors
2997
- if test_errors:
2998
- ok = await self.io.confirm_ask("Attempt to fix test errors?")
2999
- if ok:
3000
- self.reflected_message = test_errors
3001
- return
3002
-
3003
3005
  # Turn complete: drop the per-turn LLM stream buffers. They are reset at
3004
3006
  # the start of the next send(), so holding on to them while idle only
3005
3007
  # wastes memory (chunks can be large for long streaming responses).
@@ -55,7 +55,6 @@ from .merge import MergeCommand
55
55
  from .model import ModelCommand
56
56
  from .models import ModelsCommand
57
57
  from .multiline_mode import MultilineModeCommand
58
- from .open import OpenCommand
59
58
  from .paste import PasteCommand
60
59
  from .queue import QueueCommand
61
60
  from .quit import QuitCommand
@@ -152,7 +151,6 @@ CommandRegistry.register(MergeCommand)
152
151
  CommandRegistry.register(ModelCommand)
153
152
  CommandRegistry.register(ModelsCommand)
154
153
  CommandRegistry.register(MultilineModeCommand)
155
- CommandRegistry.register(OpenCommand)
156
154
  CommandRegistry.register(PasteCommand)
157
155
  CommandRegistry.register(QueueCommand)
158
156
  CommandRegistry.register(QuitCommand)
@@ -242,7 +240,6 @@ __all__ = [
242
240
  "ModelCommand",
243
241
  "ModelsCommand",
244
242
  "MultilineModeCommand",
245
- "OpenCommand",
246
243
  "parse_quoted_filenames",
247
244
  "PasteCommand",
248
245
  "quote_filename",
@@ -119,6 +119,7 @@ class LoadMcpCommand(BaseCommand):
119
119
  server.name
120
120
  for server in coder.mcp_manager
121
121
  if server not in coder.mcp_manager.connected_servers
122
+ and server.name != "unnamed-server"
122
123
  ]
123
124
  return server_names
124
125
  except Exception:
@@ -85,7 +85,7 @@ class RunCommand(BaseCommand):
85
85
  io.placeholder = "What's wrong? Fix"
86
86
 
87
87
  if add_on_nonzero_exit and not exit_status:
88
- return "" # No test failures
88
+ return "Test command ran by user. All tests passed." # No test failures
89
89
 
90
90
  # Return None if output wasn't added or command succeeded
91
91
  return format_command_result(io, "run", "Command executed successfully")
@@ -0,0 +1,238 @@
1
+ from cecli.commands.utils.base_command import BaseCommand
2
+
3
+
4
+ class WorkspaceCommand(BaseCommand):
5
+ NORM_NAME = "workspace"
6
+ DESCRIPTION = "List, open or register workspace sub-agents"
7
+ show_completion_notification = True
8
+
9
+ @classmethod
10
+ async def execute(cls, io, coder, args, **kwargs):
11
+ """List active workspace sub-agents, or open / register one.
12
+
13
+ Syntax:
14
+ /workspace — List active workspace sub-agents
15
+ /workspace <ws:name> — Open an already-registered ``ws:name`` sub-agent (like /spawn-agent)
16
+ /workspace <name> <path> — Register and open a ``ws:{name}`` sub-agent rooted at ``<path>``
17
+ """
18
+ parts = args.strip().split(maxsplit=1)
19
+
20
+ if not parts:
21
+ cls._list_workspace_subagents(io)
22
+ return
23
+
24
+ name = parts[0]
25
+ path_arg = parts[1].strip() if len(parts) > 1 else None
26
+
27
+ if path_arg is None:
28
+ await cls._open_existing(io, coder, name)
29
+ return
30
+
31
+ await cls._register_and_open(io, coder, name, path_arg)
32
+
33
+ @classmethod
34
+ def get_help(cls) -> str:
35
+ """Get help text for the workspace command."""
36
+ help_text = super().get_help()
37
+ help_text += "\nUsage:\n"
38
+ help_text += " /workspace # List active workspace sub-agents\n"
39
+ help_text += " /workspace <ws:name> # Open an already-registered ws: sub-agent (like /spawn-agent)\n"
40
+ help_text += " /workspace <name> <path> # Register and open a ws:{name} sub-agent rooted at <path>\n"
41
+ return help_text
42
+
43
+ @classmethod
44
+ def get_completions(cls, io, coder, args) -> list[str]:
45
+ """Return tab-completions for the workspace command.
46
+
47
+ - The first argument (the ``ws:{name}`` sub-agent name) is completed from
48
+ the active workspace sub-agent names, including the ``ws:`` prefix.
49
+ - The second argument (the project path) is completed by browsing the
50
+ folders at the typed path, independent of the coder's file completion
51
+ index. The folder list is ranked with rapidfuzz + ngram so prefix
52
+ matches surface first.
53
+ """
54
+ from cecli.helpers.agents.service import AgentService
55
+
56
+ partial = (args or "").strip()
57
+
58
+ if not partial or partial.startswith("ws:"):
59
+ return [name for name in AgentService.get_registry() if name.startswith("ws:")]
60
+
61
+ return cls._get_path_completions(partial)
62
+
63
+ @classmethod
64
+ def _list_workspace_subagents(cls, io) -> None:
65
+ """Print the registered ``ws:{name}`` workspace sub-agents and their roots."""
66
+ from cecli.helpers.agents.service import AgentService
67
+
68
+ registry = AgentService.get_registry()
69
+ ws_agents = sorted((name, cfg) for name, cfg in registry.items() if name.startswith("ws:"))
70
+
71
+ if not ws_agents:
72
+ io.tool_output("No workspace sub-agents are active.")
73
+ return
74
+
75
+ io.print("Workspace Sub-Agents:")
76
+ for name, cfg in ws_agents:
77
+ metadata = getattr(cfg, "metadata", {}) or {}
78
+ io.print(f" - {name}")
79
+ io.print(f" Root: {metadata.get('root')}")
80
+ io.print(f" Layout: {metadata.get('layout')}")
81
+ io.print("")
82
+
83
+ @classmethod
84
+ async def _open_existing(cls, io, coder, name) -> None:
85
+ """Open an already-registered workspace sub-agent, mirroring /spawn-agent."""
86
+ from cecli.helpers.agents.service import AgentService
87
+
88
+ if not name.startswith("ws:"):
89
+ io.tool_error(f"Error: '{name}' is not a registered workspace sub-agent.")
90
+ return
91
+
92
+ if name not in AgentService.get_registry():
93
+ io.tool_error(f"Error: workspace sub-agent '{name}' is not registered.")
94
+ return
95
+
96
+ try:
97
+ agent_service = AgentService.get_instance(coder)
98
+ new_coder, info = await agent_service.spawn(
99
+ name, prompt=None, parent=coder, auto_reap=False, independent=True
100
+ )
101
+
102
+ agent_service.foreground_uuid = info.coder.uuid
103
+
104
+ if coder.tui and coder.tui():
105
+ tui = coder.tui()
106
+ switch_key = tui.get_keys_for("next_agent")
107
+ io.tool_output(f"Sub-agent '{name}' spawned and active. Switch with {switch_key}")
108
+
109
+ try:
110
+ tui.call_from_thread(tui._switch_to_container, info.coder.uuid)
111
+ except Exception:
112
+ pass
113
+ else:
114
+ io.tool_output(f"Opened workspace sub-agent '{name}'.")
115
+ except ValueError as e:
116
+ io.tool_error(f"Error: {e}")
117
+ except RuntimeError as e:
118
+ io.tool_error(f"Error: {e}")
119
+ except Exception as e:
120
+ io.tool_error(f"Error spawning sub-agent '{name}': {e}")
121
+
122
+ @classmethod
123
+ async def _register_and_open(cls, io, coder, name, path_arg) -> None:
124
+ """Register a ``ws:{name}`` sub-agent rooted at ``<path>`` and open it."""
125
+ from pathlib import Path
126
+
127
+ from cecli.helpers.agents.service import AgentService
128
+ from cecli.helpers.workspaces.subagents import register_workspace_subagents
129
+
130
+ project_name = name[3:] if name.startswith("ws:") else name
131
+ agent_name = f"ws:{project_name}"
132
+ path = Path(path_arg).expanduser()
133
+
134
+ config = {
135
+ "name": project_name,
136
+ "projects": [{"name": project_name, "path": str(path)}],
137
+ }
138
+ registered = register_workspace_subagents(config)
139
+ if agent_name not in registered:
140
+ io.tool_error(f"Error: '{path}' is not a valid git repository or does not exist.")
141
+ return
142
+
143
+ root = AgentService.get_registry()[agent_name].metadata.get("root")
144
+
145
+ try:
146
+ agent_service = AgentService.get_instance(coder)
147
+ new_coder, info = await agent_service.spawn(
148
+ agent_name, prompt=None, parent=coder, auto_reap=False, independent=True
149
+ )
150
+
151
+ agent_service.foreground_uuid = info.coder.uuid
152
+
153
+ if coder.tui and coder.tui():
154
+ tui = coder.tui()
155
+ switch_key = tui.get_keys_for("next_agent")
156
+ io.tool_output(
157
+ f"Opened workspace sub-agent '{agent_name}' rooted at {root}. Switch with {switch_key}"
158
+ )
159
+
160
+ try:
161
+ tui.call_from_thread(tui._switch_to_container, info.coder.uuid)
162
+ except Exception:
163
+ pass
164
+ else:
165
+ io.tool_output(f"Opened workspace sub-agent '{agent_name}' rooted at {root}.")
166
+ except Exception as e:
167
+ io.tool_error(f"Error opening workspace sub-agent '{agent_name}': {e}")
168
+
169
+ @classmethod
170
+ def _get_path_completions(cls, partial: str) -> list[str]:
171
+ """Browse the filesystem for folders matching the typed path prefix."""
172
+ from pathlib import Path
173
+
174
+ path = Path(partial)
175
+ if partial.endswith("/"):
176
+ search_dir = path
177
+ name_prefix = ""
178
+ else:
179
+ search_dir = path.parent
180
+ name_prefix = path.name
181
+
182
+ if not search_dir.is_dir():
183
+ return []
184
+
185
+ if search_dir == Path("."):
186
+ path_prefix = ""
187
+ else:
188
+ path_prefix = str(search_dir).rstrip("/") + "/"
189
+
190
+ folders: list[str] = []
191
+ try:
192
+ for entry in search_dir.iterdir():
193
+ if entry.is_dir():
194
+ folders.append(path_prefix + entry.name + "/")
195
+ except (PermissionError, OSError):
196
+ return []
197
+
198
+ if name_prefix:
199
+ prefix_lower = name_prefix.lower()
200
+ folders = [f for f in folders if Path(f).name.lower().startswith(prefix_lower)]
201
+
202
+ return cls._rank_paths(partial, folders)
203
+
204
+ @staticmethod
205
+ def _rank_paths(query: str, candidates: list[str]) -> list[str]:
206
+ """Order path candidates with rapidfuzz + ngram so prefix matches surface first."""
207
+ if not candidates:
208
+ return []
209
+
210
+ query_lower = query.lower()
211
+
212
+ try:
213
+ from ngram import NGram
214
+ from rapidfuzz import fuzz, process
215
+ except ImportError:
216
+ return sorted(
217
+ candidates,
218
+ key=lambda c: (not c.lower().startswith(query_lower), c.lower()),
219
+ )
220
+
221
+ lower_candidates = [c.lower() for c in candidates]
222
+ results = process.extract(
223
+ query_lower,
224
+ lower_candidates,
225
+ scorer=fuzz.partial_ratio,
226
+ limit=min(len(candidates), 20),
227
+ score_cutoff=0,
228
+ )
229
+
230
+ matched = [candidates[idx] for _, _, idx in results]
231
+
232
+ if len(matched) < 100:
233
+ ng = NGram([c.lower() for c in matched], N=3)
234
+ reranked = ng.search(query_lower, threshold=0.0)
235
+ original_by_lower = {c.lower(): c for c in matched}
236
+ matched = [original_by_lower.get(item.lower(), item) for item, _ in reranked]
237
+
238
+ return matched
@@ -39,6 +39,9 @@ class ConversationFiles:
39
39
  self._image_files: Dict[str, bool] = {}
40
40
  self._numbered_contexts: Dict[str, List[Tuple[int, int]]] = {}
41
41
  self._last_merged_ranges: Dict[str, List[Tuple[int, int]]] = {}
42
+ self._emitted_contexts: Dict[str, List[Tuple[int, int]]] = (
43
+ {}
44
+ ) # intervals already delivered as FILE_CONTEXTS
42
45
  self._initialized = True
43
46
 
44
47
  @classmethod
@@ -388,6 +391,7 @@ class ConversationFiles:
388
391
  self._file_stub_contents.clear()
389
392
  self._file_json_contents.clear()
390
393
  self._file_to_message_id.clear()
394
+ self._emitted_contexts.clear()
391
395
  if clear_contexts:
392
396
  self._numbered_contexts.clear()
393
397
  else:
@@ -402,6 +406,7 @@ class ConversationFiles:
402
406
  self._file_json_contents.pop(abs_fname, None)
403
407
  self._file_to_message_id.pop(abs_fname, None)
404
408
  self._image_files.pop(abs_fname, None)
409
+ self._emitted_contexts.pop(abs_fname, None)
405
410
  if clear_contexts:
406
411
  self._numbered_contexts.pop(abs_fname, None)
407
412
 
@@ -463,7 +468,9 @@ class ConversationFiles:
463
468
 
464
469
  if diff_version != context_version:
465
470
  self._file_context_versions[abs_fname] = diff_version
466
- # auto clear on edit
471
+ # Content changed: force re-emission of context (stale blocks won't
472
+ # refresh otherwise).
473
+ self._emitted_contexts.pop(abs_fname, None)
467
474
  # existing_ranges = []
468
475
 
469
476
  # Add new range
@@ -642,6 +649,73 @@ class ConversationFiles:
642
649
 
643
650
  return None
644
651
 
652
+ def get_new_file_context(self, file_path: str) -> str:
653
+ """Return hashline content for ranges NOT yet emitted as FILE_CONTEXTS.
654
+
655
+ Append-only delta: only genuinely-new line ranges are emitted against
656
+ the previously-emitted intervals, so overlapping reads don't re-send
657
+ content already in the conversation. Nothing is removed, so the
658
+ conversation stays an append-only log.
659
+ """
660
+ abs_fname = os.path.abspath(file_path)
661
+ current = sorted(self._numbered_contexts.get(abs_fname, []))
662
+ if not current:
663
+ return ""
664
+ emitted = sorted(self._emitted_contexts.get(abs_fname, []))
665
+ delta = _subtract_intervals(current, emitted)
666
+ if not delta:
667
+ return ""
668
+ rendered = self._render_context_ranges(abs_fname, delta)
669
+ if not rendered:
670
+ return ""
671
+ # Mark everything currently requested as emitted so future reads only
672
+ # emit the overlap-free remainder.
673
+ self._emitted_contexts[abs_fname] = current
674
+ return rendered
675
+
676
+ def _render_context_ranges(self, abs_fname: str, ranges: List[Tuple[int, int]]) -> str:
677
+ """Render hashline content for the given 1-based line ranges. Returns JSON or ''."""
678
+ coder = self.get_coder()
679
+ if not coder:
680
+ return ""
681
+ try:
682
+ content = coder.io.read_text(abs_fname, silent=True)
683
+ if not content:
684
+ return ""
685
+ except Exception:
686
+ return ""
687
+ content_lines = content.splitlines()
688
+ results = []
689
+ for start_line, end_line in ranges:
690
+ start_line_adj = max(1, start_line)
691
+ end_line_adj = min(len(content_lines), end_line)
692
+ if start_line_adj > end_line_adj:
693
+ continue
694
+ # Hash the full file so adjacent-line hashes are consistent with ReadFile.
695
+ full_prefixed, _ = hashline_formatted(
696
+ content,
697
+ file_name=abs_fname,
698
+ total_lines=len(content_lines),
699
+ start_line=1,
700
+ )
701
+ prefixed_lines = full_prefixed.splitlines()
702
+ range_prefixed_lines = prefixed_lines[start_line_adj - 1 : end_line_adj]
703
+ range_prefixed_content = "\n".join(range_prefixed_lines)
704
+ json_str = json.dumps(
705
+ {
706
+ "file_name": abs_fname,
707
+ "start_line": start_line_adj,
708
+ "end_line": end_line_adj,
709
+ "total_lines": len(content_lines),
710
+ "prefixed_contents": range_prefixed_content,
711
+ },
712
+ ensure_ascii=False,
713
+ )
714
+ results.append(json.loads(json_str))
715
+ if results:
716
+ return json.dumps({"file_path": abs_fname, "results": results}, ensure_ascii=False)
717
+ return ""
718
+
645
719
  def remove_file_context(self, file_path: str) -> None:
646
720
  """
647
721
  Remove all cached context for a file.
@@ -738,3 +812,30 @@ class ConversationFiles:
738
812
  "diff_count": len(self._file_diffs),
739
813
  "message_mappings": len(self._file_to_message_id),
740
814
  }
815
+
816
+
817
+ def _subtract_intervals(
818
+ base: List[Tuple[int, int]], remove: List[Tuple[int, int]]
819
+ ) -> List[Tuple[int, int]]:
820
+ """Return the portions of ``base`` not covered by ``remove``.
821
+
822
+ Both inputs are lists of inclusive, disjoint, 1-based ``(start, end)``
823
+ intervals already sorted by start line. Used to compute the append-only
824
+ FILE_CONTEXTS delta (only genuinely-new ranges are emitted).
825
+ """
826
+ remaining = []
827
+ for a, b in base:
828
+ parts = [(a, b)]
829
+ for r0, r1 in remove:
830
+ new_parts = []
831
+ for s, e in parts:
832
+ if e < r0 or s > r1:
833
+ new_parts.append((s, e))
834
+ else:
835
+ if s < r0:
836
+ new_parts.append((s, r0 - 1))
837
+ if e > r1:
838
+ new_parts.append((r1 + 1, e))
839
+ parts = new_parts
840
+ remaining.extend(parts)
841
+ return remaining
@@ -762,8 +762,8 @@ class ConversationChunks:
762
762
  if not ranges:
763
763
  continue
764
764
 
765
- # Generate context content
766
- context_content = ConversationService.get_files(coder).get_file_context(file_path)
765
+ # Generate context content (append-only delta: only new ranges are emitted)
766
+ context_content = ConversationService.get_files(coder).get_new_file_context(file_path)
767
767
  if not context_content:
768
768
  continue
769
769
 
@@ -775,6 +775,9 @@ class ConversationChunks:
775
775
  "content": f"ID-Prefixed Context For:\n{rel_fname}\n\n{context_content}",
776
776
  }
777
777
 
778
+ # Append-only: new FILE_CONTEXTS blocks are added, never removed, so
779
+ # the conversation message stream stays a log (no prefix rewrite).
780
+
778
781
  # Add to conversation manager
779
782
  content_hash = xxhash.xxh3_128_hexdigest(context_content.encode("utf-8"))
780
783
  ConversationService.get_manager(coder).queue_message(
@@ -850,8 +853,7 @@ class ConversationChunks:
850
853
  """
851
854
  Add pre-message context blocks to conversation (priority 125).
852
855
 
853
- Pre-message blocks include: symbol_outline, git_status, todo_list,
854
- loaded_skills, context_summary
856
+ Pre-message blocks include: symbol_outline, git_status, todo_list, context_summary
855
857
  """
856
858
  coder = self.get_coder()
857
859
  if not coder:
@@ -875,10 +877,6 @@ class ConversationChunks:
875
877
  block = coder.get_cached_context_block("git_status")
876
878
  if block:
877
879
  message_blocks["git_status"] = block
878
- if "skills" in coder.allowed_context_blocks:
879
- block = coder._generate_context_block("loaded_skills")
880
- if block:
881
- message_blocks["loaded_skills"] = block
882
880
 
883
881
  # Process other blocks
884
882
  for block_type, block_content in message_blocks.items():
@@ -890,6 +888,58 @@ class ConversationChunks:
890
888
  force=True,
891
889
  )
892
890
 
891
+ def add_active_skills_messages(self, skills_manager) -> None:
892
+ """Add a distinct message per active (loaded) skill.
893
+
894
+ Unlike the prior single ``loaded_skills`` context block, this emits one
895
+ message per loaded skill so the model can see each skill's content in
896
+ isolation. Replacement is driven by a stable per-skill hash key, and any
897
+ message for a skill that is no longer loaded is pruned.
898
+
899
+ Args:
900
+ skills_manager: The SkillsManager instance from which to source
901
+ active skills.
902
+ """
903
+ coder = self.get_coder()
904
+ if not coder:
905
+ return
906
+
907
+ if not skills_manager:
908
+ return
909
+
910
+ if not hasattr(coder, "use_enhanced_context") or not coder.use_enhanced_context:
911
+ return
912
+
913
+ loaded_skills = getattr(skills_manager, "_loaded_skills", set())
914
+
915
+ # Prune messages for skills that are no longer loaded.
916
+ def is_stale_skill(hash_key) -> bool:
917
+ if not hash_key or hash_key[0] != "active_skill":
918
+ return False
919
+ return hash_key[1] not in loaded_skills
920
+
921
+ ConversationService.get_manager(coder).remove_messages_by_hash_key_pattern(is_stale_skill)
922
+
923
+ if not loaded_skills:
924
+ return
925
+
926
+ for skill_name in sorted(loaded_skills):
927
+ skill_content = skills_manager.get_skill_content(skill_name)
928
+ if not skill_content:
929
+ continue
930
+
931
+ block = skills_manager.format_active_skill_message(skill_content)
932
+ if not block:
933
+ continue
934
+
935
+ ConversationService.get_manager(coder).add_message(
936
+ message_dict={"role": "user", "content": block},
937
+ tag=MessageTag.ACTIVE_SKILLS,
938
+ hash_key=("active_skill", skill_name),
939
+ force=True,
940
+ update_timestamp=False,
941
+ )
942
+
893
943
  def add_post_message_context_blocks(self) -> None:
894
944
  """
895
945
  Add post-message context blocks to conversation (priority 250).
@@ -21,6 +21,7 @@ class MessageTag(str, Enum):
21
21
  DIFFS = "diffs"
22
22
  LINT = "lint"
23
23
  FILE_CONTEXTS = "file_contexts"
24
+ ACTIVE_SKILLS = "active_skills"
24
25
  CUR = "cur"
25
26
  DONE = "done"
26
27
  REMINDER = "reminder"
@@ -42,6 +43,7 @@ DEFAULT_TAG_PRIORITY: Dict[MessageTag, int] = {
42
43
  MessageTag.FILE_CONTEXTS: 200,
43
44
  MessageTag.DONE: 200,
44
45
  MessageTag.CUR: 200,
46
+ MessageTag.ACTIVE_SKILLS: 200,
45
47
  MessageTag.REMINDER: 300,
46
48
  }
47
49
 
@@ -62,6 +64,7 @@ DEFAULT_TAG_TIMESTAMP_OFFSET: Dict[MessageTag, int] = {
62
64
  MessageTag.FILE_CONTEXTS: 0,
63
65
  MessageTag.DONE: 0,
64
66
  MessageTag.CUR: 0,
67
+ MessageTag.ACTIVE_SKILLS: 0,
65
68
  MessageTag.REMINDER: 0,
66
69
  }
67
70
 
@@ -159,6 +159,7 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
159
159
  "extra_headers": extra_headers,
160
160
  "extra_body": extra_body,
161
161
  "extra_query": dict(pcfg.get("extra_query") or {}),
162
+ "session_header": mpm.get_provider_session_header(provider),
162
163
  "api_block": api_block,
163
164
  "llm_block": llm_block,
164
165
  "agent_block": agent_block,
@@ -58,6 +58,17 @@ async def acompletion(
58
58
 
59
59
  headers = dict(resolved.get("extra_headers") or {})
60
60
  headers.update(extra_headers or {})
61
+
62
+ # Some providers expose a ``session_header`` that carries the per-session
63
+ # prompt cache key (unique per agent session).
64
+ session_header = resolved.get("session_header")
65
+
66
+ if session_header:
67
+ prompt_cache_key = kwargs.get("prompt_cache_key")
68
+
69
+ if prompt_cache_key:
70
+ headers[session_header] = prompt_cache_key
71
+
61
72
  headers = provider.build_headers(resolved, key, family, headers)
62
73
 
63
74
  if stream: