cecli-dev 1.0.0rc9__tar.gz → 1.0.0rc11__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 (719) hide show
  1. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/PKG-INFO +1 -1
  2. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/_version.py +3 -3
  3. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/agent_proxy.py +10 -0
  4. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/environment.py +27 -18
  5. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/safe_methods.py +297 -4
  6. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/security.py +13 -0
  7. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/command.py +21 -5
  8. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/PKG-INFO +1 -1
  9. cecli_dev-1.0.0rc11/cecli_dev.egg-info/scm_version.json +8 -0
  10. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_integration.py +31 -4
  11. cecli_dev-1.0.0rc9/cecli_dev.egg-info/scm_version.json +0 -8
  12. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.dockerignore +0 -0
  13. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.flake8 +0 -0
  14. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.gitattributes +0 -0
  15. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  16. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/check_pypi_version.yml +0 -0
  17. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/docker-build-test.yml +0 -0
  18. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/docker-release.yml +0 -0
  19. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/issues.yml +0 -0
  20. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/pages.yml +0 -0
  21. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/pre-commit.yml +0 -0
  22. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/release.yml +0 -0
  23. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/ubuntu-tests.yml +0 -0
  24. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/windows-tests.yml +0 -0
  25. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.github/workflows/windows_check_pypi_version.yml +0 -0
  26. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.gitignore +0 -0
  27. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/.pre-commit-config.yaml +0 -0
  28. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/CHANGELOG.md +0 -0
  29. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/CNAME +0 -0
  30. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/CONTRIBUTING.md +0 -0
  31. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/HISTORY.md +0 -0
  32. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/LICENSE.txt +0 -0
  33. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/MANIFEST.in +0 -0
  34. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/README.md +0 -0
  35. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/Dockerfile +0 -0
  36. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/README.md +0 -0
  37. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/__init__.py +0 -0
  38. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/benchmark.py +0 -0
  39. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/benchmark_classic.py +0 -0
  40. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/clone-exercism.sh +0 -0
  41. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/cpp-test.sh +0 -0
  42. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/docker.sh +0 -0
  43. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/docker_build.sh +0 -0
  44. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/install-docker-ubuntu.sh +0 -0
  45. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/npm-test.sh +0 -0
  46. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/over_time.py +0 -0
  47. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/plot.sh +0 -0
  48. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/plots.py +0 -0
  49. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/problem_stats.py +0 -0
  50. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/prompts.py +0 -0
  51. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/refactor_tools.py +0 -0
  52. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/rsync.sh +0 -0
  53. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/rungrid.py +0 -0
  54. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/swe-bench-lite.txt +0 -0
  55. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/swe-bench.txt +0 -0
  56. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/swe_bench.py +0 -0
  57. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/test_benchmark.py +0 -0
  58. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/variations.1.sh +0 -0
  59. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/variations.2.sh +0 -0
  60. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/variations.3.sh +0 -0
  61. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/benchmark/variations.4.sh +0 -0
  62. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/__init__.py +0 -0
  63. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/__main__.py +0 -0
  64. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/args.py +0 -0
  65. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/args_formatter.py +0 -0
  66. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/change_tracker.py +0 -0
  67. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/__init__.py +0 -0
  68. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/agent_coder.py +0 -0
  69. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/architect_coder.py +0 -0
  70. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/ask_coder.py +0 -0
  71. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/base_coder.py +0 -0
  72. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/chat_chunks.py +0 -0
  73. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/context_coder.py +0 -0
  74. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/copypaste_coder.py +0 -0
  75. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editblock_coder.py +0 -0
  76. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editblock_fenced_coder.py +0 -0
  77. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editblock_func_coder.py +0 -0
  78. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  79. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editor_editblock_coder.py +0 -0
  80. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/editor_whole_coder.py +0 -0
  81. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/hashline_coder.py +0 -0
  82. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/help_coder.py +0 -0
  83. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/patch_coder.py +0 -0
  84. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/search_replace.py +0 -0
  85. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/shell.py +0 -0
  86. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/single_wholefile_func_coder.py +0 -0
  87. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/sub_agent_coder.py +0 -0
  88. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/udiff_coder.py +0 -0
  89. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/udiff_simple.py +0 -0
  90. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/wholefile_coder.py +0 -0
  91. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/coders/wholefile_func_coder.py +0 -0
  92. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/__init__.py +0 -0
  93. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/add.py +0 -0
  94. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/agent.py +0 -0
  95. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/agent_model.py +0 -0
  96. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/agent_tree.py +0 -0
  97. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/architect.py +0 -0
  98. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/ask.py +0 -0
  99. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/chat_mode.py +0 -0
  100. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/clear.py +0 -0
  101. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/code.py +0 -0
  102. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/command_prefix.py +0 -0
  103. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/commit.py +0 -0
  104. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/compact.py +0 -0
  105. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/context.py +0 -0
  106. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/context_blocks.py +0 -0
  107. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/context_management.py +0 -0
  108. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/copy.py +0 -0
  109. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/copy_context.py +0 -0
  110. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/core.py +0 -0
  111. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/diff.py +0 -0
  112. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/drop.py +0 -0
  113. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/editor.py +0 -0
  114. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/editor_model.py +0 -0
  115. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/exclude_skill.py +0 -0
  116. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/exit.py +0 -0
  117. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/git.py +0 -0
  118. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/hashline.py +0 -0
  119. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/help.py +0 -0
  120. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/history_search.py +0 -0
  121. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/hooks.py +0 -0
  122. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/hot_reload.py +0 -0
  123. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/include_skill.py +0 -0
  124. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/lint.py +0 -0
  125. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/list_mcp.py +0 -0
  126. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/list_sessions.py +0 -0
  127. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/list_skills.py +0 -0
  128. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/load.py +0 -0
  129. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/load_hook.py +0 -0
  130. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/load_mcp.py +0 -0
  131. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/load_session.py +0 -0
  132. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/load_skill.py +0 -0
  133. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/ls.py +0 -0
  134. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/map.py +0 -0
  135. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/map_refresh.py +0 -0
  136. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/merge.py +0 -0
  137. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/model.py +0 -0
  138. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/models.py +0 -0
  139. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/multiline_mode.py +0 -0
  140. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/paste.py +0 -0
  141. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/quit.py +0 -0
  142. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/read_only.py +0 -0
  143. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/read_only_stub.py +0 -0
  144. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/reap_agent.py +0 -0
  145. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/reasoning_effort.py +0 -0
  146. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/remove_hook.py +0 -0
  147. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/remove_mcp.py +0 -0
  148. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/remove_skill.py +0 -0
  149. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/report.py +0 -0
  150. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/reset.py +0 -0
  151. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/rules.py +0 -0
  152. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/run.py +0 -0
  153. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/save.py +0 -0
  154. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/save_session.py +0 -0
  155. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/settings.py +0 -0
  156. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/spawn_agent.py +0 -0
  157. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/switch_agent.py +0 -0
  158. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/terminal_data/linux.keytab +0 -0
  159. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/terminal_setup.py +0 -0
  160. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/test.py +0 -0
  161. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/think_tokens.py +0 -0
  162. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/tokens.py +0 -0
  163. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/undo.py +0 -0
  164. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/utils/__init__.py +0 -0
  165. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/utils/base_command.py +0 -0
  166. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/utils/helpers.py +0 -0
  167. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/utils/registry.py +0 -0
  168. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/utils/save_load_manager.py +0 -0
  169. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/voice.py +0 -0
  170. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/weak_model.py +0 -0
  171. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/web.py +0 -0
  172. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/commands/workspace.py +0 -0
  173. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/deprecated_args.py +0 -0
  174. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/diffs.py +0 -0
  175. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/dump.py +0 -0
  176. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/editor.py +0 -0
  177. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/exceptions.py +0 -0
  178. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/format_settings.py +0 -0
  179. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/help.py +0 -0
  180. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/help_pats.py +0 -0
  181. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/__init__.py +0 -0
  182. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/agents/__init__.py +0 -0
  183. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/agents/config.py +0 -0
  184. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/agents/service.py +0 -0
  185. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/background_commands.py +0 -0
  186. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/command_parser.py +0 -0
  187. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/__init__.py +0 -0
  188. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/base_message.py +0 -0
  189. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/files.py +0 -0
  190. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/integration.py +0 -0
  191. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/manager.py +0 -0
  192. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/service.py +0 -0
  193. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/tags.py +0 -0
  194. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/conversation/utils.py +0 -0
  195. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/copypaste.py +0 -0
  196. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/coroutines.py +0 -0
  197. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/crypto.py +0 -0
  198. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_searcher.py +0 -0
  199. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/__init__.py +0 -0
  200. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/builders.py +0 -0
  201. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/ignore.py +0 -0
  202. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/ngram_index.py +0 -0
  203. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/service.py +0 -0
  204. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/file_system/trie_index.py +0 -0
  205. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/__init__.py +0 -0
  206. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/dump.py +0 -0
  207. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  208. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/main.py +0 -0
  209. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/parsers.py +0 -0
  210. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/grep_ast/tsl.py +0 -0
  211. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/hashline.py +0 -0
  212. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/hashpos/__init__.py +0 -0
  213. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/hashpos/hashpos.py +0 -0
  214. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  215. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/hashpos/transformations.py +0 -0
  216. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/io_proxy.py +0 -0
  217. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/leak_detect.py +0 -0
  218. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/lock_detect.py +0 -0
  219. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/model_providers.py +0 -0
  220. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/__init__.py +0 -0
  221. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/config.py +0 -0
  222. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/local_workspace.py +0 -0
  223. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/project.py +0 -0
  224. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/workspace.py +0 -0
  225. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/monorepo/worktree.py +0 -0
  226. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/nested.py +0 -0
  227. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/observations/__init__.py +0 -0
  228. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/observations/service.py +0 -0
  229. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/__init__.py +0 -0
  230. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/region_resolver.py +0 -0
  231. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/service.py +0 -0
  232. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  233. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/plugin_manager.py +0 -0
  234. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/profiler.py +0 -0
  235. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/requests.py +0 -0
  236. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/responses.py +0 -0
  237. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/similarity.py +0 -0
  238. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/skills.py +0 -0
  239. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/helpers/threading.py +0 -0
  240. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/history.py +0 -0
  241. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/__init__.py +0 -0
  242. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/base.py +0 -0
  243. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/helpers.py +0 -0
  244. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/integration.py +0 -0
  245. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/manager.py +0 -0
  246. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/registry.py +0 -0
  247. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/service.py +0 -0
  248. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/hooks/types.py +0 -0
  249. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/interruptible_input.py +0 -0
  250. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/io.py +0 -0
  251. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/linter.py +0 -0
  252. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/llm.py +0 -0
  253. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/main.py +0 -0
  254. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mcp/__init__.py +0 -0
  255. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mcp/manager.py +0 -0
  256. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mcp/oauth.py +0 -0
  257. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mcp/server.py +0 -0
  258. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mcp/utils.py +0 -0
  259. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/mdstream.py +0 -0
  260. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/models.py +0 -0
  261. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/onboarding.py +0 -0
  262. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/__init__.py +0 -0
  263. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/agent.yml +0 -0
  264. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/architect.yml +0 -0
  265. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/ask.yml +0 -0
  266. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/base.yml +0 -0
  267. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/context.yml +0 -0
  268. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/copypaste.yml +0 -0
  269. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editblock.yml +0 -0
  270. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editblock_fenced.yml +0 -0
  271. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editblock_func.yml +0 -0
  272. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editor_diff_fenced.yml +0 -0
  273. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editor_editblock.yml +0 -0
  274. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/editor_whole.yml +0 -0
  275. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/hashline.yml +0 -0
  276. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/help.yml +0 -0
  277. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/patch.yml +0 -0
  278. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/single_wholefile_func.yml +0 -0
  279. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/subagent.yml +0 -0
  280. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/udiff.yml +0 -0
  281. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/udiff_simple.yml +0 -0
  282. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/utils/__init__.py +0 -0
  283. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/utils/registry.py +0 -0
  284. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/utils/system.py +0 -0
  285. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/wholefile.yml +0 -0
  286. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/prompts/wholefile_func.yml +0 -0
  287. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  288. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  289. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  290. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  291. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  292. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  293. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  294. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  295. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  296. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  297. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  298. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  299. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  300. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  301. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  302. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  303. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  304. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  305. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  306. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  307. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  308. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  309. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  310. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  311. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  312. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  313. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  314. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  315. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  316. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  317. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  318. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  319. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/README.md +0 -0
  320. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  321. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  322. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  323. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  324. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  325. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  326. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  327. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  328. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  329. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  330. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  331. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  332. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  333. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  334. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  335. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  336. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  337. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  338. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  339. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  340. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  341. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  342. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  343. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  344. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  345. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  346. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  347. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/reasoning_tags.py +0 -0
  348. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/repo.py +0 -0
  349. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/repomap.py +0 -0
  350. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/report.py +0 -0
  351. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/resources/__init__.py +0 -0
  352. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/resources/model-metadata.json +0 -0
  353. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/resources/model-settings.yml +0 -0
  354. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/resources/providers.json +0 -0
  355. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/run_cmd.py +0 -0
  356. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/scrape.py +0 -0
  357. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/sendchat.py +0 -0
  358. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/sessions.py +0 -0
  359. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/signals.py +0 -0
  360. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/special.py +0 -0
  361. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/__init__.py +0 -0
  362. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/_yield.py +0 -0
  363. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/delegate.py +0 -0
  364. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/edit_file.py +0 -0
  365. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/explore_code.py +0 -0
  366. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_branch.py +0 -0
  367. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_diff.py +0 -0
  368. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_log.py +0 -0
  369. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_remote.py +0 -0
  370. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_show.py +0 -0
  371. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/git_status.py +0 -0
  372. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/grep.py +0 -0
  373. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/ls.py +0 -0
  374. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/orchestrate.py +0 -0
  375. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/read_file.py +0 -0
  376. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/resource_manager.py +0 -0
  377. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/thinking.py +0 -0
  378. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/undo_change.py +0 -0
  379. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/update_todo_list.py +0 -0
  380. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/__init__.py +0 -0
  381. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/base_tool.py +0 -0
  382. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/helpers.py +0 -0
  383. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/output.py +0 -0
  384. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/registry.py +0 -0
  385. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/utils/responses.py +0 -0
  386. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/validations/__init__.py +0 -0
  387. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tools/validations/validations.py +0 -0
  388. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/__init__.py +0 -0
  389. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/app.py +0 -0
  390. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/io.py +0 -0
  391. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/styles.tcss +0 -0
  392. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/__init__.py +0 -0
  393. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/completion_bar.py +0 -0
  394. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/file_list.py +0 -0
  395. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/footer.py +0 -0
  396. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/input_area.py +0 -0
  397. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/input_container.py +0 -0
  398. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/key_hints.py +0 -0
  399. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/output.py +0 -0
  400. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/status_bar.py +0 -0
  401. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/widgets/subagent_pills.py +0 -0
  402. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/tui/worker.py +0 -0
  403. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/urls.py +0 -0
  404. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/utils.py +0 -0
  405. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/versioncheck.py +0 -0
  406. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/voice.py +0 -0
  407. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/waiting.py +0 -0
  408. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/watch.py +0 -0
  409. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/watch_prompts.py +0 -0
  410. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/Gemfile +0 -0
  411. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/blame.md +0 -0
  412. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/get-started.md +0 -0
  413. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/help-tip.md +0 -0
  414. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/help.md +0 -0
  415. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/install.md +0 -0
  416. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/keys.md +0 -0
  417. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/model-warnings.md +0 -0
  418. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/multi-line.md +0 -0
  419. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/python-m-aider.md +0 -0
  420. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/recording.css +0 -0
  421. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/recording.md +0 -0
  422. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_includes/works-best.md +0 -0
  423. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_features.scss +0 -0
  424. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_footer.scss +0 -0
  425. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_hero.scss +0 -0
  426. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_info.scss +0 -0
  427. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_layout.scss +0 -0
  428. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_reset.scss +0 -0
  429. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_testimonials.scss +0 -0
  430. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_typography.scss +0 -0
  431. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/_variables.scss +0 -0
  432. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/custom/custom.scss +0 -0
  433. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/_sass/global-overrides.scss +0 -0
  434. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/adv-model-settings.md +0 -0
  435. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/agent-mode.md +0 -0
  436. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/api-keys.md +0 -0
  437. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/conf.md +0 -0
  438. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/custom-commands.md +0 -0
  439. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  440. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/dotenv.md +0 -0
  441. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/editor.md +0 -0
  442. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/hooks.md +0 -0
  443. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/mcp.md +0 -0
  444. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/model-aliases.md +0 -0
  445. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/model-configuration.md +0 -0
  446. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/model-providers.md +0 -0
  447. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/options.md +0 -0
  448. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/reasoning.md +0 -0
  449. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/retries.md +0 -0
  450. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/security.md +0 -0
  451. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/skills.md +0 -0
  452. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/subagents.md +0 -0
  453. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/tui.md +0 -0
  454. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config/workspaces.md +0 -0
  455. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/config.md +0 -0
  456. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/git.md +0 -0
  457. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/index.md +0 -0
  458. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/install/docker.md +0 -0
  459. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/install.md +0 -0
  460. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/languages.md +0 -0
  461. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  462. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/legal/privacy.md +0 -0
  463. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/anthropic.md +0 -0
  464. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/azure.md +0 -0
  465. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/bedrock.md +0 -0
  466. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/cohere.md +0 -0
  467. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/deepseek.md +0 -0
  468. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/gemini.md +0 -0
  469. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/github.md +0 -0
  470. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/groq.md +0 -0
  471. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/lm-studio.md +0 -0
  472. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/ollama.md +0 -0
  473. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/openai-compat.md +0 -0
  474. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/openai.md +0 -0
  475. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/openrouter.md +0 -0
  476. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/other.md +0 -0
  477. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/vertex.md +0 -0
  478. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/warnings.md +0 -0
  479. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms/xai.md +0 -0
  480. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/llms.md +0 -0
  481. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/more/analytics.md +0 -0
  482. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/more/edit-formats.md +0 -0
  483. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/more/infinite-output.md +0 -0
  484. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/more-info.md +0 -0
  485. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/repomap.md +0 -0
  486. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/scripting.md +0 -0
  487. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  488. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  489. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/imports.md +0 -0
  490. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  491. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/support.md +0 -0
  492. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  493. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  494. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/troubleshooting.md +0 -0
  495. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/commands.md +0 -0
  496. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/conventions.md +0 -0
  497. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/copypaste.md +0 -0
  498. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/images-urls.md +0 -0
  499. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/lint-test.md +0 -0
  500. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/modes.md +0 -0
  501. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/not-code.md +0 -0
  502. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/notifications.md +0 -0
  503. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/optional.md +0 -0
  504. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/sessions.md +0 -0
  505. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/tips.md +0 -0
  506. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/voice.md +0 -0
  507. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage/watch.md +0 -0
  508. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/docs/usage.md +0 -0
  509. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli/website/share/index.md +0 -0
  510. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/SOURCES.txt +0 -0
  511. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/dependency_links.txt +0 -0
  512. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/entry_points.txt +0 -0
  513. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/requires.txt +0 -0
  514. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/scm_file_list.json +0 -0
  515. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/cecli_dev.egg-info/top_level.txt +0 -0
  516. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/docker/Dockerfile +0 -0
  517. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  518. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/pyproject.toml +0 -0
  519. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/pytest.ini +0 -0
  520. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/common-constraints.txt +0 -0
  521. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-dev.in +0 -0
  522. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-dev.txt +0 -0
  523. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-help.in +0 -0
  524. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-help.txt +0 -0
  525. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-playwright.in +0 -0
  526. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements-playwright.txt +0 -0
  527. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/requirements.in +0 -0
  528. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements/tree-sitter.in +0 -0
  529. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/requirements.txt +0 -0
  530. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/30k-image.py +0 -0
  531. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/Dockerfile.jekyll +0 -0
  532. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/__init__.py +0 -0
  533. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/blame.py +0 -0
  534. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/clean_metadata.py +0 -0
  535. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/compare-message-history.py +0 -0
  536. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/cost_analyzer.py +0 -0
  537. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/cost_calculator.py +0 -0
  538. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/dl_icons.py +0 -0
  539. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/filter-chat-mode.js +0 -0
  540. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/generate_providers.py +0 -0
  541. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/get_contributor_list.js +0 -0
  542. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/get_hashline.py +0 -0
  543. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/history_prompts.py +0 -0
  544. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/homepage.py +0 -0
  545. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/issues.py +0 -0
  546. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/jekyll_build.sh +0 -0
  547. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/jekyll_run.sh +0 -0
  548. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/logo_svg.py +0 -0
  549. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/optimize_tokens.sh +0 -0
  550. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/pip-compile.sh +0 -0
  551. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/recording_audio.py +0 -0
  552. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/redact-cast.py +0 -0
  553. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/rename_to_cecli.py +0 -0
  554. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/tmux_record.sh +0 -0
  555. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/tsl_pack_langs.py +0 -0
  556. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/update-blame.sh +0 -0
  557. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/update-docs.sh +0 -0
  558. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/update-history.py +0 -0
  559. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/versionbump.py +0 -0
  560. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/scripts/yank-old-versions.py +0 -0
  561. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/setup.cfg +0 -0
  562. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/shim.pyproject.toml +0 -0
  563. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/__init__.py +0 -0
  564. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/__init__.py +0 -0
  565. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/conftest.py +0 -0
  566. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_aws_credentials.py +0 -0
  567. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_background_commands.py +0 -0
  568. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_coder.py +0 -0
  569. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_commands.py +0 -0
  570. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_custom_commands.py +0 -0
  571. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_deprecated.py +0 -0
  572. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_editblock.py +0 -0
  573. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_editor.py +0 -0
  574. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_exceptions.py +0 -0
  575. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_find_or_blocks.py +0 -0
  576. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_hashline.py +0 -0
  577. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_hashline_closure.py +0 -0
  578. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_history.py +0 -0
  579. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_io.py +0 -0
  580. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_linter.py +0 -0
  581. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_main.py +0 -0
  582. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_model_info_manager.py +0 -0
  583. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_model_provider_manager.py +0 -0
  584. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_models.py +0 -0
  585. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_onboarding.py +0 -0
  586. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_plugin_manager.py +0 -0
  587. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_prompts.py +0 -0
  588. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_reasoning.py +0 -0
  589. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_repo.py +0 -0
  590. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_repomap.py +0 -0
  591. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_run_cmd.py +0 -0
  592. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_sanity_check_repo.py +0 -0
  593. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_scripting.py +0 -0
  594. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_select_selector.py +0 -0
  595. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_sendchat.py +0 -0
  596. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_session_args.py +0 -0
  597. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_session_crypto.py +0 -0
  598. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_sessions.py +0 -0
  599. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_sessions_manager.py +0 -0
  600. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_skills.py +0 -0
  601. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_special.py +0 -0
  602. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_spinner.py +0 -0
  603. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_ssl_verification.py +0 -0
  604. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_udiff.py +0 -0
  605. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_urls.py +0 -0
  606. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_voice.py +0 -0
  607. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_watch.py +0 -0
  608. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/basic/test_wholefile.py +0 -0
  609. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/coders/test_coder_switching.py +0 -0
  610. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/coders/test_copypaste_coder.py +0 -0
  611. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/commands/test_compaction.py +0 -0
  612. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/commands/test_switch_agent.py +0 -0
  613. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/conftest.py +0 -0
  614. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/conversations/test_conversation_integration.py +0 -0
  615. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/conversations/test_conversation_system.py +0 -0
  616. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  617. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/chat-history.md +0 -0
  618. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/arduino/test.ino +0 -0
  619. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/bash/test.sh +0 -0
  620. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/c/test.c +0 -0
  621. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/chatito/test.chatito +0 -0
  622. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/clojure/test.clj +0 -0
  623. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  624. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/cpp/test.cpp +0 -0
  625. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/csharp/test.cs +0 -0
  626. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/d/test.d +0 -0
  627. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/dart/test.dart +0 -0
  628. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/elisp/test.el +0 -0
  629. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/elixir/test.ex +0 -0
  630. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/elm/test.elm +0 -0
  631. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/gleam/test.gleam +0 -0
  632. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/go/test.go +0 -0
  633. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/haskell/test.hs +0 -0
  634. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/hcl/test.tf +0 -0
  635. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/java/test.java +0 -0
  636. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/javascript/test.js +0 -0
  637. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/kotlin/test.kt +0 -0
  638. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/lua/test.lua +0 -0
  639. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/matlab/test.m +0 -0
  640. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/ocaml/test.ml +0 -0
  641. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  642. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/php/test.php +0 -0
  643. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/pony/test.pony +0 -0
  644. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/properties/test.properties +0 -0
  645. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/python/test.py +0 -0
  646. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/ql/test.ql +0 -0
  647. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/r/test.r +0 -0
  648. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/racket/test.rkt +0 -0
  649. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/ruby/test.rb +0 -0
  650. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/rust/test.rs +0 -0
  651. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/scala/test.scala +0 -0
  652. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/solidity/test.sol +0 -0
  653. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/swift/test.swift +0 -0
  654. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/tsx/test.tsx +0 -0
  655. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/typescript/test.ts +0 -0
  656. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/udev/test.rules +0 -0
  657. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/languages/zig/test.zig +0 -0
  658. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/sample-code-base/sample.js +0 -0
  659. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/sample-code-base/sample.py +0 -0
  660. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  661. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/watch.js +0 -0
  662. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/watch.lisp +0 -0
  663. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/watch.py +0 -0
  664. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/fixtures/watch_question.js +0 -0
  665. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/help/test_help.py +0 -0
  666. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  667. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_config.py +0 -0
  668. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_config_active.py +0 -0
  669. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  670. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  671. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  672. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/monorepo/test_workspace.py +0 -0
  673. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/observations/test_observation_service.py +0 -0
  674. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/helpers/test_orchestration.py +0 -0
  675. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/hooks/__init__.py +0 -0
  676. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/hooks/test_base.py +0 -0
  677. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/hooks/test_manager.py +0 -0
  678. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/hooks/test_registry.py +0 -0
  679. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/integration/test_agent_mcp_management.py +0 -0
  680. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/integration/test_mcp_management.py +0 -0
  681. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/__init__.py +0 -0
  682. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/conftest.py +0 -0
  683. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/mock_server.py +0 -0
  684. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_concurrency.py +0 -0
  685. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_config.py +0 -0
  686. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_logging.py +0 -0
  687. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_resilience.py +0 -0
  688. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_keepalive_unit.py +0 -0
  689. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_manager.py +0 -0
  690. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/mcp/test_manager_retry.py +0 -0
  691. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/scrape/test_playwright_disable.py +0 -0
  692. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/scrape/test_scrape.py +0 -0
  693. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/__init__.py +0 -0
  694. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/conftest.py +0 -0
  695. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_commands.py +0 -0
  696. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_config.py +0 -0
  697. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_delegate.py +0 -0
  698. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_finished.py +0 -0
  699. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_io_proxy.py +0 -0
  700. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_service.py +0 -0
  701. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/subagents/test_sub_agent_coder.py +0 -0
  702. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/test_requests.py +0 -0
  703. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_extractions.py +0 -0
  704. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_get_lines.py +0 -0
  705. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_git_branch.py +0 -0
  706. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_git_diff.py +0 -0
  707. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_grep.py +0 -0
  708. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_insert_block.py +0 -0
  709. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_read_range_execute.py +0 -0
  710. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_registry.py +0 -0
  711. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_remove_mcp_tool.py +0 -0
  712. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_tool_arguments.py +0 -0
  713. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  714. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tools/validations.py +0 -0
  715. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/tui/test_app.py +0 -0
  716. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/unit/test_load_mcp.py +0 -0
  717. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/unit/test_remove_mcp.py +0 -0
  718. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  719. {cecli_dev-1.0.0rc9 → cecli_dev-1.0.0rc11}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.0.0rc9
3
+ Version: 1.0.0rc11
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.0.0rc9'
22
- __version_tuple__ = version_tuple = (1, 0, 0, 'rc9')
21
+ __version__ = version = '1.0.0rc11'
22
+ __version_tuple__ = version_tuple = (1, 0, 0, 'rc11')
23
23
 
24
- __commit_id__ = commit_id = 'g898d1fac5'
24
+ __commit_id__ = commit_id = 'g9f297cdf7'
@@ -151,6 +151,16 @@ class AgentProxy:
151
151
  """
152
152
  from cecli.helpers import nested
153
153
 
154
+ # SECURITY: Reject paths that access private/dunder attributes
155
+ # (unless disable_security is active)
156
+ if not (self._env and self._env._orchestration_config.get("disable_security", False)):
157
+ for segment in path.replace("[", ".").replace("]", "").split("."):
158
+ segment = segment.strip()
159
+ if segment.startswith("_") and segment != "_":
160
+ from cecli.helpers.orchestration.security import SecurityError
161
+
162
+ raise SecurityError(f"Access to private attribute '{segment}' is forbidden")
163
+
154
164
  return nested.getter(result, path, default)
155
165
 
156
166
  @staticmethod
@@ -26,12 +26,16 @@ from cecli.helpers.orchestration.safe_methods import (
26
26
  _HelpfulBuiltins,
27
27
  _safe_dir,
28
28
  _safe_gather,
29
+ _safe_getattr,
30
+ _safe_hasattr,
29
31
  _safe_sleep,
30
32
  _safe_typeof,
31
33
  _safe_vars,
32
34
  _SafeJson,
33
35
  _SafeModuleProxy,
34
36
  _SafePathlib,
37
+ _SafeRe,
38
+ _SafeTraceback,
35
39
  _strip_allowed_imports,
36
40
  )
37
41
  from cecli.helpers.orchestration.security import (
@@ -225,6 +229,8 @@ class AgentExecutionEnv:
225
229
  self.globals: dict[str, _Any] = {}
226
230
  self.locals: dict[str, _Any] = {}
227
231
 
232
+ _disable_sec = self._orchestration_config.get("disable_security", False)
233
+
228
234
  self._safe_builtins: dict[str, _Any] = {
229
235
  "print": print,
230
236
  "range": range,
@@ -242,8 +248,8 @@ class AgentExecutionEnv:
242
248
  "vars": _safe_vars,
243
249
  "dir": _make_sandbox_dir(self.globals, self.locals),
244
250
  "isinstance": isinstance,
245
- "hasattr": hasattr,
246
- "getattr": getattr,
251
+ "hasattr": _safe_hasattr,
252
+ "getattr": _safe_getattr,
247
253
  "repr": repr,
248
254
  "enumerate": enumerate,
249
255
  "zip": zip,
@@ -272,12 +278,12 @@ class AgentExecutionEnv:
272
278
  "StopIteration": StopIteration,
273
279
  "ArithmeticError": ArithmeticError,
274
280
  "LookupError": LookupError,
275
- "re": _SafeModuleProxy(re),
276
- "math": _SafeModuleProxy(math),
277
- "itertools": _SafeModuleProxy(itertools),
278
- "collections": _SafeModuleProxy(collections),
279
- "datetime": _SafeModuleProxy(datetime),
280
- "traceback": _SafeModuleProxy(traceback),
281
+ "re": _SafeRe,
282
+ "math": _SafeModuleProxy(math, disable_security=_disable_sec),
283
+ "itertools": _SafeModuleProxy(itertools, disable_security=_disable_sec),
284
+ "collections": _SafeModuleProxy(collections, disable_security=_disable_sec),
285
+ "datetime": _SafeModuleProxy(datetime, disable_security=_disable_sec),
286
+ "traceback": _SafeTraceback,
281
287
  "pathlib": _SafePathlib,
282
288
  }
283
289
 
@@ -296,6 +302,9 @@ class AgentExecutionEnv:
296
302
  if self._orchestration_config.get("disable_security", False):
297
303
  for name in self._DANGEROUS_BUILTINS:
298
304
  self._safe_builtins[name] = __builtins__[name]
305
+ # Restore real getattr/hasattr when security is disabled
306
+ self._safe_builtins["getattr"] = getattr
307
+ self._safe_builtins["hasattr"] = hasattr
299
308
 
300
309
  # When allow_classes is enabled, expose __build_class__ needed by Python
301
310
  if self._orchestration_config.get("allow_classes", False):
@@ -451,6 +460,16 @@ class AgentExecutionEnv:
451
460
  code = f"Syntax Error in orchestration code: {e}"
452
461
  return {"results": code, "state_variables": self._state_snapshot()}
453
462
 
463
+ def _build_result(msg: str = "") -> dict:
464
+ print_output = "".join(captured_output)
465
+ parts = []
466
+ if print_output:
467
+ parts.append(print_output.rstrip("\n"))
468
+ if msg:
469
+ parts.append(msg)
470
+ code = "\n".join(parts) if parts else ""
471
+ return {"results": code, "state_variables": self._state_snapshot()}
472
+
454
473
  try:
455
474
  if not self._orchestration_config.get("disable_security", False):
456
475
  tree = SecurityFilter(
@@ -481,16 +500,6 @@ class AgentExecutionEnv:
481
500
  code = f"Compilation Error: {e}"
482
501
  return {"results": code, "state_variables": self._state_snapshot()}
483
502
 
484
- def _build_result(msg: str = "") -> dict:
485
- print_output = "".join(captured_output)
486
- parts = []
487
- if print_output:
488
- parts.append(print_output.rstrip("\n"))
489
- if msg:
490
- parts.append(msg)
491
- code = "\n".join(parts) if parts else ""
492
- return {"results": code, "state_variables": self._state_snapshot()}
493
-
494
503
  try:
495
504
  exec(compiled_code, self.globals, self.locals)
496
505
  runner_coro = self.locals["__agent_async_runner"]()
@@ -10,6 +10,8 @@ from __future__ import annotations
10
10
  import asyncio
11
11
  import json
12
12
  import pathlib
13
+ import re as _re_mod
14
+ import traceback as _tb_mod
13
15
  from typing import Any
14
16
 
15
17
  # ---------------------------------------------------------------------------
@@ -264,8 +266,21 @@ def _safe_typeof(obj: Any) -> type:
264
266
 
265
267
  Unlike ``type(name, bases, dict)`` which can create new classes at runtime,
266
268
  ``_safe_typeof(obj)`` only returns the type of an object for inspection.
269
+
270
+ Additionally, when *obj* is itself a type/class whose metaclass is ``type``,
271
+ the result would be ``<class 'type'>`` — the real ``type`` metaclass.
272
+ This is blocked because the metaclass can be used to dynamically create
273
+ arbitrary classes, bypassing the AST-level ``ClassDef`` filter.
267
274
  """
268
- return type(obj)
275
+ result = type(obj)
276
+ if result is type:
277
+ from cecli.helpers.orchestration.security import SecurityError
278
+
279
+ raise SecurityError(
280
+ "Access to the 'type' metaclass is forbidden in the sandbox. "
281
+ "Use isinstance() for type checks instead of comparing type objects."
282
+ )
283
+ return result
269
284
 
270
285
 
271
286
  def _safe_vars(obj: Any) -> dict:
@@ -337,6 +352,39 @@ def _safe_dir(obj: Any) -> list:
337
352
  ]
338
353
 
339
354
 
355
+ def _safe_getattr(obj: Any, name: str, *args: Any) -> Any:
356
+ """Safe getattr() - blocks access to private/dunder attributes.
357
+
358
+ Raises ``AttributeError`` (matching ``getattr``'s default behavior) when
359
+ the attribute name starts with ``_``, preventing sandboxed code from
360
+ bypassing the AST-level private-attribute filter.
361
+
362
+ When ``disable_security`` is enabled in orchestration config, the real
363
+ ``getattr`` is restored so this restriction doesn't apply.
364
+ """
365
+ if type(name) is not str:
366
+ raise TypeError(f"getattr() attribute name must be str, not {type(name).__name__}")
367
+ if name.startswith("_") and name != "_":
368
+ raise AttributeError(f"Cannot access private attribute {name!r} in sandbox")
369
+ return getattr(obj, name, *args)
370
+
371
+
372
+ def _safe_hasattr(obj: Any, name: str) -> bool:
373
+ """Safe hasattr() - blocks probing of private/dunder attributes.
374
+
375
+ Returns ``False`` for any attribute name starting with ``_`` so that
376
+ sandboxed code cannot detect the presence of private attributes.
377
+
378
+ When ``disable_security`` is enabled in orchestration config, the real
379
+ ``hasattr`` is restored so this restriction doesn't apply.
380
+ """
381
+ if type(name) is not str:
382
+ raise TypeError(f"hasattr() attribute name must be str, not {type(name).__name__}")
383
+ if name.startswith("_") and name != "_":
384
+ return False
385
+ return hasattr(obj, name)
386
+
387
+
340
388
  def _find_closing_quote(code: str, quote: str, start: int) -> int:
341
389
  """Find the position of the closing *quote* in *code*, skipping
342
390
  backslash-escaped characters so that ``\"`` (escaped quote) is not
@@ -714,23 +762,265 @@ class _SafeJson:
714
762
  return json.dumps(obj, **safe_kwargs)
715
763
 
716
764
 
765
+ class _SafeTraceback:
766
+ """Drop-in ``traceback`` namespace exposing only safe print and format methods.
767
+
768
+ Unlike ``_SafeModuleProxy`` which forwards all non-blocked attributes to the
769
+ real module, this class only exposes an explicit allowlist of print/format
770
+ methods. Module-level imports like ``traceback.sys`` and ``traceback.io``
771
+ are not accessible through this wrapper, closing the ``sys.modules``
772
+ sandbox-escape vector.
773
+
774
+ Exposed methods:
775
+
776
+ **Printing** (output to stderr or a given file):
777
+ - ``print_exc(limit=None, file=None)`` — print current exception
778
+ - ``print_exception(exc, limit=None, file=None)`` — print a given exception
779
+ - ``print_stack(f=None, limit=None, file=None)`` — print current call stack
780
+ - ``print_tb(tb, limit=None, file=None)`` — print a given traceback
781
+ - ``print_last(limit=None, file=None)`` — print the last exception
782
+
783
+ **Formatting** (return strings for logging):
784
+ - ``format_exc(limit=None)`` — format current exception as string
785
+ - ``format_exception(exc, limit=None)`` — format a given exception to list of strings
786
+ - ``format_stack(f=None, limit=None)`` — format current stack to list of strings
787
+ - ``format_tb(tb, limit=None)`` — format a given traceback to list of strings
788
+ - ``format_list(extracted)`` — format extracted stack entries
789
+ - ``format_exception_only(exc)`` — format exception type + value only
790
+
791
+ **Utility**:
792
+ - ``clear_frames(tb)`` — clear local variables from traceback frames
793
+
794
+ **Classes**:
795
+ - ``TracebackException`` — programmatic traceback representation
796
+ - ``FrameSummary`` — single frame summary
797
+ - ``StackSummary`` — list of frame summaries
798
+ """
799
+
800
+ @classmethod
801
+ def format_exc(cls, limit=None):
802
+ import traceback
803
+
804
+ return traceback.format_exc(limit=limit)
805
+
806
+ @classmethod
807
+ def format_exception(cls, exc, limit=None):
808
+ import traceback
809
+
810
+ return traceback.format_exception(exc, limit=limit)
811
+
812
+ @classmethod
813
+ def format_stack(cls, f=None, limit=None):
814
+ import traceback
815
+
816
+ return traceback.format_stack(f=f, limit=limit)
817
+
818
+ @classmethod
819
+ def format_tb(cls, tb, limit=None):
820
+ import traceback
821
+
822
+ return traceback.format_tb(tb, limit=limit)
823
+
824
+ @classmethod
825
+ def format_list(cls, extracted):
826
+ import traceback
827
+
828
+ return traceback.format_list(extracted)
829
+
830
+ @classmethod
831
+ def format_exception_only(cls, exc):
832
+ import traceback
833
+
834
+ return traceback.format_exception_only(exc)
835
+
836
+ @classmethod
837
+ def print_exc(cls, limit=None, file=None):
838
+ import traceback
839
+
840
+ traceback.print_exc(limit=limit, file=file)
841
+
842
+ @classmethod
843
+ def print_exception(cls, exc, limit=None, file=None):
844
+ import traceback
845
+
846
+ traceback.print_exception(exc, limit=limit, file=file)
847
+
848
+ @classmethod
849
+ def print_stack(cls, f=None, limit=None, file=None):
850
+ import traceback
851
+
852
+ traceback.print_stack(f=f, limit=limit, file=file)
853
+
854
+ @classmethod
855
+ def print_tb(cls, tb, limit=None, file=None):
856
+ import traceback
857
+
858
+ traceback.print_tb(tb, limit=limit, file=file)
859
+
860
+ @classmethod
861
+ def print_last(cls, limit=None, file=None):
862
+ import traceback
863
+
864
+ traceback.print_last(limit=limit, file=file)
865
+
866
+ @classmethod
867
+ def clear_frames(cls, tb):
868
+ import traceback
869
+
870
+ traceback.clear_frames(tb)
871
+
872
+ # Classes from traceback — accessed via class attribute, not instance
873
+ TracebackException = None
874
+ FrameSummary = None
875
+ StackSummary = None
876
+
877
+
878
+ _SafeTraceback.TracebackException = _tb_mod.TracebackException
879
+ _SafeTraceback.FrameSummary = _tb_mod.FrameSummary
880
+ _SafeTraceback.StackSummary = _tb_mod.StackSummary
881
+
882
+
883
+ class _SafeRe:
884
+ """Drop-in ``re`` namespace exposing only safe regex operations.
885
+
886
+ Unlike ``_SafeModuleProxy`` which forwards all non-blocked attributes to the
887
+ real module, this class only exposes an explicit allowlist of regex
888
+ functions, flags, and types. Module-level imports like ``re.enum``,
889
+ ``re.copyreg``, and ``re.functools`` are not accessible through this
890
+ wrapper, closing the ``re.enum.sys`` sandbox-escape vector.
891
+
892
+ Exposed:
893
+
894
+ **Compilation**:
895
+ - ``compile(pattern, flags=0)`` — compile a regex pattern
896
+
897
+ **Searching / Matching**:
898
+ - ``search(pattern, string, flags=0)`` — scan through string
899
+ - ``match(pattern, string, flags=0)`` — match at start of string
900
+ - ``fullmatch(pattern, string, flags=0)`` — match whole string
901
+ - ``findall(pattern, string, flags=0)`` — all non-overlapping matches
902
+ - ``finditer(pattern, string, flags=0)`` — iterator over matches
903
+
904
+ **Substitution / Splitting**:
905
+ - ``sub(pattern, repl, string, ...)`` — substitute
906
+ - ``subn(pattern, repl, string, ...)`` — substitute with count
907
+ - ``split(pattern, string, ...)`` — split by pattern
908
+
909
+ **Utilities**:
910
+ - ``escape(string)`` — escape special characters
911
+ - ``purge()`` — clear the regex cache
912
+
913
+ **Flags**:
914
+ - ``NOFLAG``, ``IGNORECASE`` / ``I``, ``MULTILINE`` / ``M``,
915
+ ``DOTALL`` / ``S``, ``VERBOSE`` / ``X``, ``ASCII`` / ``A``
916
+ - ``RegexFlag`` — the flag enum type
917
+
918
+ **Types / Exceptions**:
919
+ - ``Pattern`` — compiled pattern type
920
+ - ``Match`` — match result type
921
+ - ``error`` — regex exception class
922
+ """
923
+
924
+ # Compilation
925
+ compile = None
926
+
927
+ # Searching / Matching
928
+ search = None
929
+ match = None
930
+ fullmatch = None
931
+ findall = None
932
+ finditer = None
933
+
934
+ # Substitution / Splitting
935
+ sub = None
936
+ subn = None
937
+ split = None
938
+
939
+ # Utilities
940
+ escape = None
941
+ purge = None
942
+
943
+ # Flags
944
+ NOFLAG = None
945
+ IGNORECASE = None
946
+ I = None # noqa: E741
947
+ MULTILINE = None
948
+ M = None
949
+ DOTALL = None
950
+ S = None
951
+ VERBOSE = None
952
+ X = None
953
+ ASCII = None
954
+ A = None
955
+ RegexFlag = None
956
+
957
+ # Types / Exceptions
958
+ Pattern = None
959
+ Match = None
960
+ error = None
961
+
962
+
963
+ for _name in dir(_SafeRe):
964
+ if not _name.startswith("_"):
965
+ try:
966
+ setattr(_SafeRe, _name, getattr(_re_mod, _name))
967
+ except AttributeError:
968
+ pass
969
+
970
+
717
971
  class _SafeModuleProxy:
718
972
  """Proxy that forwards attribute reads to a real module but prevents mutation.
719
973
 
720
974
  Setting an attribute on the proxy only affects the proxy, not the real module.
721
975
  This prevents sandbox code from monkey-patching standard library modules.
976
+
977
+ The following methods are blocked and raise SecurityError:
978
+ - ``walk_stack()``, ``walk_tb()``, ``extract_stack()`` — frame introspection
979
+ that exposes unwrapped frame objects with access to parent-frame
980
+ ``f_locals`` / ``f_globals``.
722
981
  """
723
982
 
724
- def __init__(self, module: Any) -> None:
983
+ _BLOCKED_METHODS: frozenset[str] = frozenset({"walk_stack", "walk_tb", "extract_stack"})
984
+
985
+ def __init__(self, module: Any, *, disable_security: bool = False) -> None:
725
986
  object.__setattr__(self, "_module", module)
987
+ object.__setattr__(self, "_disable_security", disable_security)
726
988
 
727
989
  def __getattr__(self, name: str) -> Any:
728
990
  if name.startswith("_"):
729
991
  raise AttributeError(
730
992
  "Cannot access private attribute " + repr(name) + " on module proxy"
731
993
  )
994
+ if name in self._BLOCKED_METHODS and not object.__getattribute__(self, "_disable_security"):
995
+ from cecli.helpers.orchestration.security import SecurityError
996
+
997
+ raise SecurityError(
998
+ f"Cannot access '{name}' on module proxy. "
999
+ f"Frame introspection methods are blocked in the sandbox."
1000
+ )
1001
+ if name == "modules" and not object.__getattribute__(self, "_disable_security"):
1002
+ from cecli.helpers.orchestration.security import SecurityError
1003
+
1004
+ raise SecurityError(
1005
+ f"Cannot access '{name}' on module proxy. "
1006
+ f"Direct module registry access is blocked in the sandbox."
1007
+ )
732
1008
  module = object.__getattribute__(self, "_module")
733
- return getattr(module, name)
1009
+ attr = getattr(module, name)
1010
+
1011
+ # Re-wrap sub-modules to prevent transitive sandbox escape.
1012
+ # Without this, `re.enum.sys` would return the real `sys` module
1013
+ # (since `re` imports `enum` and `enum` imports `sys`), giving
1014
+ # attackers access to `sys.modules["builtins"].getattr` and from
1015
+ # there unrestricted private-attribute access.
1016
+ from types import ModuleType
1017
+
1018
+ if isinstance(attr, ModuleType):
1019
+ return _SafeModuleProxy(
1020
+ attr, disable_security=object.__getattribute__(self, "_disable_security")
1021
+ )
1022
+
1023
+ return attr
734
1024
 
735
1025
  def __setattr__(self, name: str, value: Any) -> None:
736
1026
  if not name.startswith("_"):
@@ -739,7 +1029,10 @@ class _SafeModuleProxy:
739
1029
 
740
1030
  def __dir__(self) -> list:
741
1031
  module = object.__getattribute__(self, "_module")
742
- return [x for x in dir(module) if not x.startswith("_")]
1032
+ blocked = (
1033
+ set() if object.__getattribute__(self, "_disable_security") else self._BLOCKED_METHODS
1034
+ )
1035
+ return [x for x in dir(module) if not x.startswith("_") and x not in blocked]
743
1036
 
744
1037
 
745
1038
  # ---------------------------------------------------------------------------
@@ -217,6 +217,19 @@ class SecurityFilter(ast.NodeTransformer):
217
217
 
218
218
  return self.generic_visit(node)
219
219
 
220
+ def visit_Match(self, node: ast.Match) -> ast.Expr:
221
+ """Block all ``match``/``case`` statements.
222
+
223
+ Class patterns destructure objects via runtime ``getattr()``,
224
+ bypassing the AST-level ``visit_Attribute`` guard entirely.
225
+ Rather than trying to cover every pattern variant, we reject
226
+ the ``match`` statement wholesale.
227
+ """
228
+ return self._make_raise_stmt(
229
+ f"Security filter error at line {node.lineno}: "
230
+ "The 'match'/'case' statement is disabled in the orchestration environment."
231
+ )
232
+
220
233
 
221
234
  class LoopYieldInjector(ast.NodeTransformer):
222
235
  """
@@ -88,6 +88,13 @@ class Tool(BaseTool):
88
88
  ),
89
89
  "default": False,
90
90
  },
91
+ "timeout": {
92
+ "type": "integer",
93
+ "description": (
94
+ "Timeout in seconds for command execution. " "Default is 30 seconds."
95
+ ),
96
+ "default": 30,
97
+ },
91
98
  },
92
99
  "required": [],
93
100
  },
@@ -114,6 +121,7 @@ class Tool(BaseTool):
114
121
  stdin=None,
115
122
  pty=False,
116
123
  user_input_required=False,
124
+ timeout=0,
117
125
  **kwargs,
118
126
  ):
119
127
  """
@@ -125,7 +133,7 @@ class Tool(BaseTool):
125
133
  or navigate terminal interfaces.
126
134
  For background interactions: provide 'background_key' + 'action' (stdin/stop).
127
135
 
128
- Commands run with timeout based on agent_config['command_timeout'] (default: 30 seconds).
136
+ Commands run with timeout from agent_config['command_timeout'] (default: 30 seconds),
129
137
  """
130
138
  response = ToolResponse(
131
139
  "command",
@@ -181,10 +189,15 @@ class Tool(BaseTool):
181
189
 
182
190
  command = coder.format_command_with_prefix(command)
183
191
 
184
- # Determine timeout from agent_config (default: 30 seconds)
185
- timeout = 0
192
+ # Determine timeout from agent_config (default: 30 seconds) as fallback
193
+ config_timeout = 0
186
194
  if hasattr(coder, "agent_config"):
187
- timeout = coder.agent_config.get("command_timeout", 30)
195
+ config_timeout = coder.agent_config.get("command_timeout", 30)
196
+ # Use LLM-specified timeout if provided, otherwise fallback to config
197
+ if timeout == 0:
198
+ timeout = config_timeout
199
+ # Clamp LLM timeout between config_timeout (minimum) and max(300, config_timeout) (maximum)
200
+ timeout = max(config_timeout, min(timeout, max(300, config_timeout)))
188
201
 
189
202
  if user_input_required:
190
203
  return await cls._execute_interactive(coder, command)
@@ -390,7 +403,7 @@ class Tool(BaseTool):
390
403
  # Format output
391
404
  output_content = output or ""
392
405
  # Tokens are roughly 3-4 characters
393
- output_limit = coder.large_file_token_threshold * 3.5
406
+ output_limit = int(coder.large_file_token_threshold * 3.5)
394
407
 
395
408
  if coder.context_management_enabled and len(output_content) > output_limit * 1.25:
396
409
  # Save full output to paginated files instead of truncating
@@ -641,6 +654,7 @@ class Tool(BaseTool):
641
654
  action = params.get("action")
642
655
  stdin = params.get("stdin")
643
656
  pty = params.get("pty", False)
657
+ timeout = params.get("timeout", 30)
644
658
  user_input_required = params.get("user_input_required", False)
645
659
 
646
660
  coder.io.tool_output("")
@@ -655,6 +669,8 @@ class Tool(BaseTool):
655
669
  extras.append(f"action={action}")
656
670
  if pty:
657
671
  extras.append("pty=True")
672
+ if timeout != 30:
673
+ extras.append(f"timeout={timeout}s")
658
674
  if user_input_required:
659
675
  extras.append("user_input_required=True")
660
676
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.0.0rc9
3
+ Version: 1.0.0rc11
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.0.0rc11",
3
+ "distance": 0,
4
+ "node": "g9f297cdf776e8d04e590cb7648f69ab638ff489a",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-22"
8
+ }
@@ -68,10 +68,18 @@ class TestKeepaliveWithMockServer:
68
68
  running_mock_server.set_status(500)
69
69
 
70
70
  # Wait for failed ping
71
- await asyncio.sleep(1.2)
71
+ # Wait for failed ping with polling for cross-platform reliability
72
+ for _ in range(30): # 30 * 0.2s = 6s timeout
73
+ if inspector.get_state(server) == ConnectionState.UNHEALTHY:
74
+ break
75
+ await asyncio.sleep(0.2)
76
+ else:
77
+ pytest.fail(
78
+ f"Server did not become UNHEALTHY after failures, state was "
79
+ f"{inspector.get_state(server).name}"
80
+ )
72
81
 
73
82
  # Should transition to UNHEALTHY
74
- assert inspector.get_state(server) == ConnectionState.UNHEALTHY
75
83
  assert inspector.get_failed_pings(server) == 1
76
84
 
77
85
  await server.disconnect()
@@ -115,14 +123,33 @@ class TestKeepaliveWithMockServer:
115
123
 
116
124
  # Cause a failure
117
125
  running_mock_server.set_status(500)
118
- await asyncio.sleep(1.2)
126
+ for _ in range(30): # 30 * 0.2s = 6s timeout
127
+ if inspector.get_state(server) == ConnectionState.UNHEALTHY:
128
+ break
129
+ await asyncio.sleep(0.2)
130
+ else:
131
+ pytest.fail(
132
+ f"Server did not become UNHEALTHY after failures, state was "
133
+ f"{inspector.get_state(server).name}"
134
+ )
119
135
  assert inspector.get_state(server) == ConnectionState.UNHEALTHY
120
136
 
121
137
  # Restore success
122
138
  running_mock_server.set_status(200)
123
- await asyncio.sleep(1.2)
139
+ for _ in range(30): # 30 * 0.2s = 6s timeout
140
+ if inspector.get_state(server) == ConnectionState.CONNECTED:
141
+ break
142
+ await asyncio.sleep(0.2)
143
+ else:
144
+ pytest.fail(
145
+ f"Server did not become CONNECTED after success, state was "
146
+ f"{inspector.get_state(server).name}"
147
+ )
124
148
 
125
149
  # Should be back to CONNECTED
150
+
151
+ # Brief cooldown after state transition
152
+ await asyncio.sleep(0.2)
126
153
  assert inspector.get_state(server) == ConnectionState.CONNECTED
127
154
  assert inspector.get_failed_pings(server) == 0
128
155
 
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.0.0rc9",
3
- "distance": 0,
4
- "node": "g898d1fac51b39c298f49969fc613017e5544712f",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-07-21"
8
- }
File without changes