cecli-dev 1.0.1__tar.gz → 1.0.2__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 (755) hide show
  1. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/PKG-INFO +2 -1
  2. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/__init__.py +1 -1
  3. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/_version.py +3 -3
  4. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/base_coder.py +7 -3
  5. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/history_search.py +2 -1
  6. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/terminal_setup.py +23 -22
  7. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/save_load_manager.py +4 -2
  8. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/workspace.py +2 -1
  9. cecli_dev-1.0.2/cecli/decoding.py +115 -0
  10. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/diffs.py +4 -2
  11. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/editor.py +2 -1
  12. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/config.py +3 -1
  13. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/background_commands.py +3 -1
  14. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/config_utils.py +4 -2
  15. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/manager.py +2 -1
  16. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/builders.py +67 -31
  17. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/ignore.py +3 -1
  18. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/service.py +6 -4
  19. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/main.py +3 -1
  20. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/io_proxy.py +21 -1
  21. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/lock_detect.py +3 -1
  22. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/config.py +4 -2
  23. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/workspace.py +2 -1
  24. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/history.py +2 -1
  25. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/registry.py +2 -1
  26. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/io.py +9 -7
  27. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/main.py +38 -8
  28. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/oauth.py +5 -3
  29. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/server.py +3 -1
  30. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/utils.py +3 -1
  31. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mdstream.py +2 -1
  32. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/models.py +5 -4
  33. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/onboarding.py +2 -1
  34. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/registry.py +3 -1
  35. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/repo.py +3 -2
  36. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/model-metadata.json +3409 -1375
  37. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/sessions.py +2 -1
  38. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/command.py +7 -6
  39. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/resource_manager.py +2 -1
  40. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/app.py +25 -10
  41. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/voice.py +3 -1
  42. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/watch.py +2 -1
  43. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/mcp.md +51 -30
  44. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/PKG-INFO +2 -1
  45. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/SOURCES.txt +1 -0
  46. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/requires.txt +1 -0
  47. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/scm_file_list.json +1 -0
  48. cecli_dev-1.0.2/cecli_dev.egg-info/scm_version.json +8 -0
  49. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/common-constraints.txt +4 -2
  50. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-help.txt +1 -1
  51. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements.in +1 -1
  52. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements.txt +2 -1
  53. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_coder.py +1 -1
  54. cecli_dev-1.0.1/cecli_dev.egg-info/scm_version.json +0 -8
  55. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.dockerignore +0 -0
  56. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.flake8 +0 -0
  57. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.gitattributes +0 -0
  58. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  59. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/check_pypi_version.yml +0 -0
  60. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/docker-build-test.yml +0 -0
  61. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/docker-release.yml +0 -0
  62. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/issues.yml +0 -0
  63. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/pages.yml +0 -0
  64. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/pre-commit.yml +0 -0
  65. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/release.yml +0 -0
  66. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/ubuntu-tests.yml +0 -0
  67. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/windows-tests.yml +0 -0
  68. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/windows_check_pypi_version.yml +0 -0
  69. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.gitignore +0 -0
  70. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.pre-commit-config.yaml +0 -0
  71. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CHANGELOG.md +0 -0
  72. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CNAME +0 -0
  73. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CONTRIBUTING.md +0 -0
  74. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/HISTORY.md +0 -0
  75. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/LICENSE.txt +0 -0
  76. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/MANIFEST.in +0 -0
  77. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/README.md +0 -0
  78. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/Dockerfile +0 -0
  79. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/README.md +0 -0
  80. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/__init__.py +0 -0
  81. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/benchmark.py +0 -0
  82. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/benchmark_classic.py +0 -0
  83. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/clone-exercism.sh +0 -0
  84. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/cpp-test.sh +0 -0
  85. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/docker.sh +0 -0
  86. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/docker_build.sh +0 -0
  87. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/install-docker-ubuntu.sh +0 -0
  88. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/npm-test.sh +0 -0
  89. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/over_time.py +0 -0
  90. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/plot.sh +0 -0
  91. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/plots.py +0 -0
  92. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/problem_stats.py +0 -0
  93. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/prompts.py +0 -0
  94. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/refactor_tools.py +0 -0
  95. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/rsync.sh +0 -0
  96. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/rungrid.py +0 -0
  97. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe-bench-lite.txt +0 -0
  98. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe-bench.txt +0 -0
  99. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe_bench.py +0 -0
  100. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/test_benchmark.py +0 -0
  101. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.1.sh +0 -0
  102. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.2.sh +0 -0
  103. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.3.sh +0 -0
  104. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.4.sh +0 -0
  105. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/__main__.py +0 -0
  106. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/args.py +0 -0
  107. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/args_formatter.py +0 -0
  108. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/change_tracker.py +0 -0
  109. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/__init__.py +0 -0
  110. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/agent_coder.py +0 -0
  111. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/architect_coder.py +0 -0
  112. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/ask_coder.py +0 -0
  113. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/chat_chunks.py +0 -0
  114. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/context_coder.py +0 -0
  115. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/copypaste_coder.py +0 -0
  116. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_coder.py +0 -0
  117. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_fenced_coder.py +0 -0
  118. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_func_coder.py +0 -0
  119. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  120. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_editblock_coder.py +0 -0
  121. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_whole_coder.py +0 -0
  122. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/hashline_coder.py +0 -0
  123. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/help_coder.py +0 -0
  124. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/patch_coder.py +0 -0
  125. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/search_replace.py +0 -0
  126. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/shell.py +0 -0
  127. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/single_wholefile_func_coder.py +0 -0
  128. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/sub_agent_coder.py +0 -0
  129. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/udiff_coder.py +0 -0
  130. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/udiff_simple.py +0 -0
  131. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/wholefile_coder.py +0 -0
  132. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/wholefile_func_coder.py +0 -0
  133. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/__init__.py +0 -0
  134. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/add.py +0 -0
  135. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent.py +0 -0
  136. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent_model.py +0 -0
  137. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent_tree.py +0 -0
  138. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/architect.py +0 -0
  139. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/ask.py +0 -0
  140. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/chat_mode.py +0 -0
  141. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/clear.py +0 -0
  142. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/code.py +0 -0
  143. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/command_prefix.py +0 -0
  144. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/commit.py +0 -0
  145. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/compact.py +0 -0
  146. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context.py +0 -0
  147. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context_blocks.py +0 -0
  148. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context_management.py +0 -0
  149. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/copy.py +0 -0
  150. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/copy_context.py +0 -0
  151. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/core.py +0 -0
  152. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/diff.py +0 -0
  153. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/drop.py +0 -0
  154. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/editor.py +0 -0
  155. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/editor_model.py +0 -0
  156. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/exclude_skill.py +0 -0
  157. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/exit.py +0 -0
  158. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/git.py +0 -0
  159. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hashline.py +0 -0
  160. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/help.py +0 -0
  161. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hooks.py +0 -0
  162. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hot_reload.py +0 -0
  163. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/include_skill.py +0 -0
  164. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/lint.py +0 -0
  165. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_mcp.py +0 -0
  166. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_sessions.py +0 -0
  167. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_skills.py +0 -0
  168. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load.py +0 -0
  169. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_hook.py +0 -0
  170. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_mcp.py +0 -0
  171. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_session.py +0 -0
  172. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_skill.py +0 -0
  173. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/ls.py +0 -0
  174. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/map.py +0 -0
  175. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/map_refresh.py +0 -0
  176. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/merge.py +0 -0
  177. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/model.py +0 -0
  178. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/models.py +0 -0
  179. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/multiline_mode.py +0 -0
  180. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/paste.py +0 -0
  181. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/quit.py +0 -0
  182. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/read_only.py +0 -0
  183. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/read_only_stub.py +0 -0
  184. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reap_agent.py +0 -0
  185. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reasoning_effort.py +0 -0
  186. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_hook.py +0 -0
  187. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_mcp.py +0 -0
  188. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_skill.py +0 -0
  189. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/report.py +0 -0
  190. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reset.py +0 -0
  191. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/rules.py +0 -0
  192. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/run.py +0 -0
  193. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/save.py +0 -0
  194. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/save_session.py +0 -0
  195. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/settings.py +0 -0
  196. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/spawn_agent.py +0 -0
  197. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/switch_agent.py +0 -0
  198. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/terminal_data/linux.keytab +0 -0
  199. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/test.py +0 -0
  200. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/think_tokens.py +0 -0
  201. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/tokens.py +0 -0
  202. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/undo.py +0 -0
  203. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/__init__.py +0 -0
  204. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/base_command.py +0 -0
  205. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/helpers.py +0 -0
  206. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/registry.py +0 -0
  207. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/voice.py +0 -0
  208. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/weak_model.py +0 -0
  209. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/web.py +0 -0
  210. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/deprecated_args.py +0 -0
  211. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/dump.py +0 -0
  212. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/exceptions.py +0 -0
  213. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/format_settings.py +0 -0
  214. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/help.py +0 -0
  215. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/help_pats.py +0 -0
  216. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/__init__.py +0 -0
  217. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/__init__.py +0 -0
  218. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/__init__.py +0 -0
  219. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  220. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/worker.md +0 -0
  221. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/service.py +0 -0
  222. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/command_parser.py +0 -0
  223. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/__init__.py +0 -0
  224. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/base_message.py +0 -0
  225. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/files.py +0 -0
  226. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/integration.py +0 -0
  227. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/service.py +0 -0
  228. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/tags.py +0 -0
  229. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/utils.py +0 -0
  230. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/copypaste.py +0 -0
  231. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/coroutines.py +0 -0
  232. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/crypto.py +0 -0
  233. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_searcher.py +0 -0
  234. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/__init__.py +0 -0
  235. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/ngram_index.py +0 -0
  236. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/trie_index.py +0 -0
  237. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/__init__.py +0 -0
  238. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/dump.py +0 -0
  239. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  240. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/parsers.py +0 -0
  241. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/tsl.py +0 -0
  242. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashline.py +0 -0
  243. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/__init__.py +0 -0
  244. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/hashpos.py +0 -0
  245. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  246. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/transformations.py +0 -0
  247. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/leak_detect.py +0 -0
  248. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/__init__.py +0 -0
  249. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/db.py +0 -0
  250. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/utils.py +0 -0
  251. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/model_providers.py +0 -0
  252. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/__init__.py +0 -0
  253. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/local_workspace.py +0 -0
  254. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/project.py +0 -0
  255. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/worktree.py +0 -0
  256. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/nested.py +0 -0
  257. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/observations/__init__.py +0 -0
  258. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/observations/service.py +0 -0
  259. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/__init__.py +0 -0
  260. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  261. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/environment.py +0 -0
  262. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/region_resolver.py +0 -0
  263. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/safe_methods.py +0 -0
  264. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/security.py +0 -0
  265. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/service.py +0 -0
  266. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  267. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/plugin_manager.py +0 -0
  268. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/profiler.py +0 -0
  269. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/queues.py +0 -0
  270. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/requests.py +0 -0
  271. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/responses.py +0 -0
  272. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/__init__.py +0 -0
  273. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/__init__.py +0 -0
  274. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/bridge.py +0 -0
  275. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/models.py +0 -0
  276. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/protocol.py +0 -0
  277. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/signals.py +0 -0
  278. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/ws_server.py +0 -0
  279. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/similarity.py +0 -0
  280. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/skills.py +0 -0
  281. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/threading.py +0 -0
  282. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/__init__.py +0 -0
  283. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/base.py +0 -0
  284. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/helpers.py +0 -0
  285. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/integration.py +0 -0
  286. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/manager.py +0 -0
  287. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/service.py +0 -0
  288. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/types.py +0 -0
  289. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/interruptible_input.py +0 -0
  290. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/linter.py +0 -0
  291. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/llm.py +0 -0
  292. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/__init__.py +0 -0
  293. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/manager.py +0 -0
  294. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/__init__.py +0 -0
  295. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/agent.yml +0 -0
  296. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/architect.yml +0 -0
  297. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/ask.yml +0 -0
  298. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/base.yml +0 -0
  299. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/context.yml +0 -0
  300. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/copypaste.yml +0 -0
  301. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock.yml +0 -0
  302. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock_fenced.yml +0 -0
  303. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock_func.yml +0 -0
  304. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_diff_fenced.yml +0 -0
  305. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_editblock.yml +0 -0
  306. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_whole.yml +0 -0
  307. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/hashline.yml +0 -0
  308. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/help.yml +0 -0
  309. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/patch.yml +0 -0
  310. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/single_wholefile_func.yml +0 -0
  311. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/subagent.yml +0 -0
  312. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/udiff.yml +0 -0
  313. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/udiff_simple.yml +0 -0
  314. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/__init__.py +0 -0
  315. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/system.py +0 -0
  316. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/wholefile.yml +0 -0
  317. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/wholefile_func.yml +0 -0
  318. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  319. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  320. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  321. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  322. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  323. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  324. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  325. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  326. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  327. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  328. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  329. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  330. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  331. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  332. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  333. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  334. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  335. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  336. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  337. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  338. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  339. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  340. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  341. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  342. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  343. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  344. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  345. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  346. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  347. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  348. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  349. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  350. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/README.md +0 -0
  351. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  352. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  353. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  354. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  355. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  356. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  357. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  358. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  359. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  360. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  361. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  362. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  363. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  364. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  365. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  366. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  367. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  368. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  369. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  370. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  371. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  372. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  373. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  374. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  375. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  376. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  377. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  378. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/reasoning_tags.py +0 -0
  379. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/repomap.py +0 -0
  380. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/report.py +0 -0
  381. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/__init__.py +0 -0
  382. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/model-settings.yml +0 -0
  383. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/providers.json +0 -0
  384. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/run_cmd.py +0 -0
  385. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/scrape.py +0 -0
  386. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/sendchat.py +0 -0
  387. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/signals.py +0 -0
  388. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/special.py +0 -0
  389. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/__init__.py +0 -0
  390. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/_yield.py +0 -0
  391. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/delegate.py +0 -0
  392. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/edit_file.py +0 -0
  393. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/explore_code.py +0 -0
  394. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_branch.py +0 -0
  395. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_diff.py +0 -0
  396. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_log.py +0 -0
  397. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_remote.py +0 -0
  398. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_show.py +0 -0
  399. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_status.py +0 -0
  400. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/grep.py +0 -0
  401. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/ls.py +0 -0
  402. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/orchestrate.py +0 -0
  403. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/read_file.py +0 -0
  404. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/replace_facts.py +0 -0
  405. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/search_facts.py +0 -0
  406. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/thinking.py +0 -0
  407. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/undo_change.py +0 -0
  408. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/update_todo_list.py +0 -0
  409. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/__init__.py +0 -0
  410. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/base_tool.py +0 -0
  411. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/helpers.py +0 -0
  412. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/output.py +0 -0
  413. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/registry.py +0 -0
  414. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/responses.py +0 -0
  415. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/validations/__init__.py +0 -0
  416. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/validations/validations.py +0 -0
  417. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/__init__.py +0 -0
  418. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/io.py +0 -0
  419. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/styles.tcss +0 -0
  420. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/__init__.py +0 -0
  421. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/completion_bar.py +0 -0
  422. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/file_list.py +0 -0
  423. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/footer.py +0 -0
  424. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/input_area.py +0 -0
  425. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/input_container.py +0 -0
  426. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/key_hints.py +0 -0
  427. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/output.py +0 -0
  428. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/output_alt.bak +0 -0
  429. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/selectable_log.py +0 -0
  430. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/status_bar.py +0 -0
  431. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/subagent_pills.py +0 -0
  432. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/worker.py +0 -0
  433. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/urls.py +0 -0
  434. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/utils.py +0 -0
  435. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/versioncheck.py +0 -0
  436. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/waiting.py +0 -0
  437. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/watch_prompts.py +0 -0
  438. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/Gemfile +0 -0
  439. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/blame.md +0 -0
  440. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/get-started.md +0 -0
  441. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/help-tip.md +0 -0
  442. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/help.md +0 -0
  443. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/install.md +0 -0
  444. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/keys.md +0 -0
  445. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/model-warnings.md +0 -0
  446. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/multi-line.md +0 -0
  447. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/python-m-aider.md +0 -0
  448. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/recording.css +0 -0
  449. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/recording.md +0 -0
  450. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/works-best.md +0 -0
  451. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_features.scss +0 -0
  452. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_footer.scss +0 -0
  453. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_hero.scss +0 -0
  454. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_info.scss +0 -0
  455. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_layout.scss +0 -0
  456. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_reset.scss +0 -0
  457. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_testimonials.scss +0 -0
  458. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_typography.scss +0 -0
  459. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_variables.scss +0 -0
  460. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/custom/custom.scss +0 -0
  461. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/global-overrides.scss +0 -0
  462. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/adv-model-settings.md +0 -0
  463. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/agent-mode.md +0 -0
  464. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/api-keys.md +0 -0
  465. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/api.md +0 -0
  466. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/conf.md +0 -0
  467. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/custom-commands.md +0 -0
  468. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  469. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/dotenv.md +0 -0
  470. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/editor.md +0 -0
  471. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/hooks.md +0 -0
  472. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-aliases.md +0 -0
  473. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-configuration.md +0 -0
  474. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-providers.md +0 -0
  475. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/options.md +0 -0
  476. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/persistent-memory.md +0 -0
  477. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/reasoning.md +0 -0
  478. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/retries.md +0 -0
  479. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/security.md +0 -0
  480. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/skills.md +0 -0
  481. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/subagents.md +0 -0
  482. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/tui.md +0 -0
  483. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/workspaces.md +0 -0
  484. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config.md +0 -0
  485. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/git.md +0 -0
  486. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/index.md +0 -0
  487. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/install/docker.md +0 -0
  488. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/install.md +0 -0
  489. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/languages.md +0 -0
  490. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  491. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/legal/privacy.md +0 -0
  492. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/anthropic.md +0 -0
  493. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/azure.md +0 -0
  494. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/bedrock.md +0 -0
  495. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/cohere.md +0 -0
  496. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/deepseek.md +0 -0
  497. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/gemini.md +0 -0
  498. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/github.md +0 -0
  499. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/groq.md +0 -0
  500. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/lm-studio.md +0 -0
  501. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/ollama.md +0 -0
  502. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openai-compat.md +0 -0
  503. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openai.md +0 -0
  504. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openrouter.md +0 -0
  505. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/other.md +0 -0
  506. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/vertex.md +0 -0
  507. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/warnings.md +0 -0
  508. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/xai.md +0 -0
  509. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms.md +0 -0
  510. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/analytics.md +0 -0
  511. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/edit-formats.md +0 -0
  512. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/infinite-output.md +0 -0
  513. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more-info.md +0 -0
  514. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/repomap.md +0 -0
  515. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/scripting.md +0 -0
  516. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  517. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  518. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/imports.md +0 -0
  519. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  520. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/support.md +0 -0
  521. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  522. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  523. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting.md +0 -0
  524. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/commands.md +0 -0
  525. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/conventions.md +0 -0
  526. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/copypaste.md +0 -0
  527. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/images-urls.md +0 -0
  528. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/lint-test.md +0 -0
  529. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/modes.md +0 -0
  530. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/not-code.md +0 -0
  531. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/notifications.md +0 -0
  532. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/optional.md +0 -0
  533. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/sessions.md +0 -0
  534. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/tips.md +0 -0
  535. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/voice.md +0 -0
  536. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/watch.md +0 -0
  537. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage.md +0 -0
  538. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/share/index.md +0 -0
  539. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/dependency_links.txt +0 -0
  540. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/entry_points.txt +0 -0
  541. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/top_level.txt +0 -0
  542. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/docker/Dockerfile +0 -0
  543. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  544. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/pyproject.toml +0 -0
  545. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/pytest.ini +0 -0
  546. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-dev.in +0 -0
  547. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-dev.txt +0 -0
  548. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-help.in +0 -0
  549. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-playwright.in +0 -0
  550. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-playwright.txt +0 -0
  551. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/tree-sitter.in +0 -0
  552. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/30k-image.py +0 -0
  553. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/Dockerfile.jekyll +0 -0
  554. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/__init__.py +0 -0
  555. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/blame.py +0 -0
  556. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/clean_metadata.py +0 -0
  557. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/compare-message-history.py +0 -0
  558. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/cost_analyzer.py +0 -0
  559. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/cost_calculator.py +0 -0
  560. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/dl_icons.py +0 -0
  561. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/filter-chat-mode.js +0 -0
  562. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/generate_providers.py +0 -0
  563. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/get_contributor_list.js +0 -0
  564. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/get_hashline.py +0 -0
  565. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/history_prompts.py +0 -0
  566. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/homepage.py +0 -0
  567. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/issues.py +0 -0
  568. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/jekyll_build.sh +0 -0
  569. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/jekyll_run.sh +0 -0
  570. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/logo_svg.py +0 -0
  571. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/optimize_tokens.sh +0 -0
  572. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/pip-compile.sh +0 -0
  573. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/recording_audio.py +0 -0
  574. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/redact-cast.py +0 -0
  575. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/rename_to_cecli.py +0 -0
  576. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/tmux_record.sh +0 -0
  577. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/tsl_pack_langs.py +0 -0
  578. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-blame.sh +0 -0
  579. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-docs.sh +0 -0
  580. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-history.py +0 -0
  581. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/versionbump.py +0 -0
  582. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/yank-old-versions.py +0 -0
  583. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/setup.cfg +0 -0
  584. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/shim.pyproject.toml +0 -0
  585. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/__init__.py +0 -0
  586. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/__init__.py +0 -0
  587. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/conftest.py +0 -0
  588. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_aws_credentials.py +0 -0
  589. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_background_commands.py +0 -0
  590. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_commands.py +0 -0
  591. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_custom_commands.py +0 -0
  592. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_deprecated.py +0 -0
  593. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_editblock.py +0 -0
  594. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_editor.py +0 -0
  595. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_exceptions.py +0 -0
  596. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_find_or_blocks.py +0 -0
  597. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_hashline.py +0 -0
  598. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_hashline_closure.py +0 -0
  599. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_history.py +0 -0
  600. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_io.py +0 -0
  601. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_linter.py +0 -0
  602. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_main.py +0 -0
  603. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_model_info_manager.py +0 -0
  604. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_model_provider_manager.py +0 -0
  605. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_models.py +0 -0
  606. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_onboarding.py +0 -0
  607. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_plugin_manager.py +0 -0
  608. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_prompts.py +0 -0
  609. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_reasoning.py +0 -0
  610. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_repo.py +0 -0
  611. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_repomap.py +0 -0
  612. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_run_cmd.py +0 -0
  613. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sanity_check_repo.py +0 -0
  614. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_scripting.py +0 -0
  615. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_select_selector.py +0 -0
  616. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sendchat.py +0 -0
  617. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_session_args.py +0 -0
  618. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_session_crypto.py +0 -0
  619. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sessions.py +0 -0
  620. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sessions_manager.py +0 -0
  621. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_skills.py +0 -0
  622. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_special.py +0 -0
  623. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_spinner.py +0 -0
  624. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_ssl_verification.py +0 -0
  625. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_udiff.py +0 -0
  626. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_urls.py +0 -0
  627. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_voice.py +0 -0
  628. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_watch.py +0 -0
  629. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_wholefile.py +0 -0
  630. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/coders/test_coder_switching.py +0 -0
  631. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/coders/test_copypaste_coder.py +0 -0
  632. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/commands/test_compaction.py +0 -0
  633. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/commands/test_switch_agent.py +0 -0
  634. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conftest.py +0 -0
  635. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conversations/test_conversation_integration.py +0 -0
  636. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conversations/test_conversation_system.py +0 -0
  637. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  638. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/chat-history.md +0 -0
  639. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/arduino/test.ino +0 -0
  640. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/bash/test.sh +0 -0
  641. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/c/test.c +0 -0
  642. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/chatito/test.chatito +0 -0
  643. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/clojure/test.clj +0 -0
  644. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  645. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/cpp/test.cpp +0 -0
  646. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/csharp/test.cs +0 -0
  647. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/d/test.d +0 -0
  648. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/dart/test.dart +0 -0
  649. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elisp/test.el +0 -0
  650. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elixir/test.ex +0 -0
  651. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elm/test.elm +0 -0
  652. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/gleam/test.gleam +0 -0
  653. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/go/test.go +0 -0
  654. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/haskell/test.hs +0 -0
  655. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/hcl/test.tf +0 -0
  656. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/java/test.java +0 -0
  657. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/javascript/test.js +0 -0
  658. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/kotlin/test.kt +0 -0
  659. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/lua/test.lua +0 -0
  660. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/matlab/test.m +0 -0
  661. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ocaml/test.ml +0 -0
  662. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  663. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/php/test.php +0 -0
  664. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/pony/test.pony +0 -0
  665. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/properties/test.properties +0 -0
  666. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/python/test.py +0 -0
  667. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ql/test.ql +0 -0
  668. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/r/test.r +0 -0
  669. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/racket/test.rkt +0 -0
  670. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ruby/test.rb +0 -0
  671. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/rust/test.rs +0 -0
  672. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/scala/test.scala +0 -0
  673. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/solidity/test.sol +0 -0
  674. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/swift/test.swift +0 -0
  675. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/tsx/test.tsx +0 -0
  676. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/typescript/test.ts +0 -0
  677. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/udev/test.rules +0 -0
  678. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/zig/test.zig +0 -0
  679. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base/sample.js +0 -0
  680. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base/sample.py +0 -0
  681. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  682. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.js +0 -0
  683. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.lisp +0 -0
  684. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.py +0 -0
  685. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch_question.js +0 -0
  686. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/help/test_help.py +0 -0
  687. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
  688. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_config.py +0 -0
  689. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_config_active.py +0 -0
  690. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
  691. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
  692. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
  693. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_workspace.py +0 -0
  694. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/observations/test_observation_service.py +0 -0
  695. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/__init__.py +0 -0
  696. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_bridge.py +0 -0
  697. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_dispatch.py +0 -0
  698. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_models.py +0 -0
  699. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_protocol.py +0 -0
  700. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/test_orchestration.py +0 -0
  701. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/__init__.py +0 -0
  702. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_base.py +0 -0
  703. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_manager.py +0 -0
  704. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_registry.py +0 -0
  705. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_agent_mcp_management.py +0 -0
  706. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_config_loading.py +0 -0
  707. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_mcp_management.py +0 -0
  708. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/__init__.py +0 -0
  709. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/conftest.py +0 -0
  710. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/mock_server.py +0 -0
  711. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_concurrency.py +0 -0
  712. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_config.py +0 -0
  713. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_integration.py +0 -0
  714. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_logging.py +0 -0
  715. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_resilience.py +0 -0
  716. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_unit.py +0 -0
  717. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_manager.py +0 -0
  718. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_manager_retry.py +0 -0
  719. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/scrape/test_playwright_disable.py +0 -0
  720. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/scrape/test_scrape.py +0 -0
  721. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/__init__.py +0 -0
  722. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/conftest.py +0 -0
  723. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_commands.py +0 -0
  724. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_config.py +0 -0
  725. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_delegate.py +0 -0
  726. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_finished.py +0 -0
  727. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_io_proxy.py +0 -0
  728. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_service.py +0 -0
  729. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_sub_agent_coder.py +0 -0
  730. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/test_requests.py +0 -0
  731. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_extractions.py +0 -0
  732. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_get_lines.py +0 -0
  733. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_git_branch.py +0 -0
  734. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_git_diff.py +0 -0
  735. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_grep.py +0 -0
  736. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_insert_block.py +0 -0
  737. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_read_range_execute.py +0 -0
  738. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_registry.py +0 -0
  739. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_remove_mcp_tool.py +0 -0
  740. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_tool_arguments.py +0 -0
  741. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  742. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/validations.py +0 -0
  743. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tui/test_app.py +0 -0
  744. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/conftest.py +0 -0
  745. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_deep_merge.py +0 -0
  746. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_edge_cases.py +0 -0
  747. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_load_mcp.py +0 -0
  748. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_performance.py +0 -0
  749. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_queues.py +0 -0
  750. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_remove_mcp.py +0 -0
  751. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_shallow_merge.py +0 -0
  752. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_signals.py +0 -0
  753. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  754. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  755. {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.0.1
3
+ Version: 1.0.2
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
@@ -24,6 +24,7 @@ Requires-Dist: oslex>=0.1.3
24
24
  Requires-Dist: pexpect>=4.9.0
25
25
  Requires-Dist: psutil>=7.0.0
26
26
  Requires-Dist: watchfiles>=1.1.0
27
+ Requires-Dist: charset-normalizer>=3.4.7
27
28
  Requires-Dist: GitPython>=3.1.45
28
29
  Requires-Dist: pathspec>=0.12.1
29
30
  Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.80.11
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "1.0.1.dev"
3
+ __version__ = "1.0.2.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -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.1'
22
- __version_tuple__ = version_tuple = (1, 0, 1)
21
+ __version__ = version = '1.0.2'
22
+ __version_tuple__ = version_tuple = (1, 0, 2)
23
23
 
24
- __commit_id__ = commit_id = 'ga4f09aadf'
24
+ __commit_id__ = commit_id = 'gbe5c3ba9d'
@@ -34,6 +34,7 @@ from uuid import uuid4 as generate_unique_id
34
34
  import cecli.prompts.utils.system as prompts
35
35
  from cecli import __version__, models, urls, utils
36
36
  from cecli.commands import Commands, SwitchCoderSignal
37
+ from cecli.decoding import safe_open
37
38
  from cecli.exceptions import LiteLLMExceptions
38
39
  from cecli.helpers import command_parser, coroutines, nested, responses
39
40
  from cecli.helpers.conversation import ConversationService, MessageTag
@@ -245,6 +246,7 @@ class Coder(metaclass=UsageMeta):
245
246
  model_kwargs = {}
246
247
  cost_multiplier = 1
247
248
  stop_on_empty = True
249
+ error_code = None
248
250
 
249
251
  # Task coordination state variables
250
252
  input_running = False
@@ -1429,7 +1431,7 @@ class Coder(metaclass=UsageMeta):
1429
1431
  if not mime_type:
1430
1432
  continue
1431
1433
 
1432
- with open(fname, "rb") as image_file:
1434
+ with safe_open(fname, "rb") as image_file:
1433
1435
  encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
1434
1436
  image_url = f"data:{mime_type};base64,{encoded_string}"
1435
1437
  rel_fname = self.get_rel_fname(fname)
@@ -1873,7 +1875,7 @@ class Coder(metaclass=UsageMeta):
1873
1875
  if not self.commands.is_command(user_message):
1874
1876
  ConversationService.get_chunks(self).flush_removals()
1875
1877
  self.last_user_message = user_message
1876
-
1878
+ self.error_code = None
1877
1879
  # Fire memorizer after each user request
1878
1880
  # if self.auto_memory and self.edit_format not in ["subagent"]:
1879
1881
  # from cecli.helpers.memory.utils import invoke_memorizer
@@ -3648,6 +3650,7 @@ class Coder(metaclass=UsageMeta):
3648
3650
  self.calculate_and_show_tokens_and_cost(messages, completion)
3649
3651
 
3650
3652
  except litellm_ex.exceptions_tuple() as err:
3653
+ self.error_code = 1
3651
3654
  ex_info = litellm_ex.get_ex_info(err)
3652
3655
  if ex_info.name == "ContextWindowExceededError":
3653
3656
  # Still calculate costs for context window errors
@@ -3655,6 +3658,7 @@ class Coder(metaclass=UsageMeta):
3655
3658
  self.calculate_and_show_tokens_and_cost(messages, completion)
3656
3659
  raise
3657
3660
  except (KeyboardInterrupt, asyncio.CancelledError) as kbi:
3661
+ self.error_code = 130 # apparently standard?
3658
3662
  self.keyboard_interrupt()
3659
3663
  raise kbi
3660
3664
  finally:
@@ -3755,7 +3759,7 @@ class Coder(metaclass=UsageMeta):
3755
3759
  completion, self.interrupt_event
3756
3760
  ):
3757
3761
  if self.args.debug:
3758
- with open(".cecli/logs/chunks.log", "a") as f:
3762
+ with safe_open(".cecli/logs/chunks.log", "a") as f:
3759
3763
  print(chunk, file=f)
3760
3764
 
3761
3765
  # Check if confirmation is in progress and wait if needed
@@ -3,6 +3,7 @@ from typing import List
3
3
 
4
4
  from cecli.commands.utils.base_command import BaseCommand
5
5
  from cecli.commands.utils.helpers import format_command_result
6
+ from cecli.decoding import safe_open
6
7
  from cecli.utils import run_fzf
7
8
 
8
9
 
@@ -68,7 +69,7 @@ class HistorySearchCommand(BaseCommand):
68
69
  return []
69
70
 
70
71
  try:
71
- with open(file_path, "r") as f:
72
+ with safe_open(file_path, "r") as f:
72
73
  content = f.read()
73
74
  except (OSError, IOError):
74
75
  return []
@@ -12,6 +12,7 @@ except ImportError:
12
12
 
13
13
  from cecli.commands.utils.base_command import BaseCommand
14
14
  from cecli.commands.utils.helpers import format_command_result
15
+ from cecli.decoding import safe_open
15
16
 
16
17
 
17
18
  class TerminalSetupCommand(BaseCommand):
@@ -177,7 +178,7 @@ class TerminalSetupCommand(BaseCommand):
177
178
  data = {
178
179
  "keyboard": {"bindings": [{"key": "Return", "mods": "Shift", "chars": "\n"}]}
179
180
  }
180
- with open(path, "w", encoding="utf-8") as f:
181
+ with safe_open(path, "w") as f:
181
182
  tomlkit.dump(data, f)
182
183
  io.tool_output("Created Alacritty config with shift+enter binding.")
183
184
  return True
@@ -189,7 +190,7 @@ class TerminalSetupCommand(BaseCommand):
189
190
  io.tool_output(f"DRY-RUN: Would check Alacritty config at {path}")
190
191
  io.tool_output(f"DRY-RUN: Would add binding: {new_binding}")
191
192
  try:
192
- with open(path, "r", encoding="utf-8") as f:
193
+ with safe_open(path, "r") as f:
193
194
  data = tomlkit.load(f)
194
195
 
195
196
  # Check if binding already exists
@@ -222,7 +223,7 @@ class TerminalSetupCommand(BaseCommand):
222
223
  cls._backup_file(path, io)
223
224
 
224
225
  try:
225
- with open(path, "r", encoding="utf-8") as f:
226
+ with safe_open(path, "r") as f:
226
227
  data = tomlkit.load(f)
227
228
 
228
229
  # Ensure keyboard section exists
@@ -253,7 +254,7 @@ class TerminalSetupCommand(BaseCommand):
253
254
  data["keyboard"]["bindings"].append(new_binding)
254
255
 
255
256
  # Write back to file
256
- with open(path, "w", encoding="utf-8") as f:
257
+ with safe_open(path, "w") as f:
257
258
  tomlkit.dump(data, f)
258
259
 
259
260
  io.tool_output("Updated Alacritty config.")
@@ -280,7 +281,7 @@ class TerminalSetupCommand(BaseCommand):
280
281
  else:
281
282
  io.tool_output(f"Creating Kitty config at {path}")
282
283
  # Create Kitty config with shift+enter binding
283
- with open(path, "w", encoding="utf-8") as f:
284
+ with safe_open(path, "w") as f:
284
285
  f.write(cls.KITTY_BINDING)
285
286
  io.tool_output("Created Kitty config with shift+enter binding.")
286
287
  return True
@@ -290,7 +291,7 @@ class TerminalSetupCommand(BaseCommand):
290
291
  io.tool_output(f"DRY-RUN: Would append binding:\n{cls.KITTY_BINDING.strip()}")
291
292
  # Simulate checking for duplicates
292
293
  try:
293
- with open(path, "r", encoding="utf-8") as f:
294
+ with safe_open(path, "r") as f:
294
295
  content = f.read()
295
296
  if "map shift+enter send_text all \\n" in content:
296
297
  io.tool_output("DRY-RUN: Kitty already configured.")
@@ -304,14 +305,14 @@ class TerminalSetupCommand(BaseCommand):
304
305
 
305
306
  cls._backup_file(path, io)
306
307
 
307
- with open(path, "r", encoding="utf-8") as f:
308
+ with safe_open(path, "r") as f:
308
309
  content = f.read()
309
310
 
310
311
  if "map shift+enter send_text all \\n" in content:
311
312
  io.tool_output("Kitty already configured.")
312
313
  return False
313
314
 
314
- with open(path, "a", encoding="utf-8") as f:
315
+ with safe_open(path, "a") as f:
315
316
  f.write(cls.KITTY_BINDING)
316
317
  io.tool_output("Updated Kitty config.")
317
318
  return True
@@ -336,7 +337,7 @@ class TerminalSetupCommand(BaseCommand):
336
337
  return False
337
338
 
338
339
  try:
339
- with open(path, "r", encoding="utf-8") as f:
340
+ with safe_open(path, "r") as f:
340
341
  content = f.read()
341
342
 
342
343
  import re
@@ -359,7 +360,7 @@ class TerminalSetupCommand(BaseCommand):
359
360
 
360
361
  cls._backup_file(path, io)
361
362
  new_content = re.sub(pattern, new_rule, content, flags=re.MULTILINE)
362
- with open(path, "w", encoding="utf-8") as f:
363
+ with safe_open(path, "w") as f:
363
364
  f.write(new_content)
364
365
  io.tool_output("Updated Konsole keytab rule.")
365
366
  return True
@@ -369,7 +370,7 @@ class TerminalSetupCommand(BaseCommand):
369
370
  return True
370
371
 
371
372
  cls._backup_file(path, io)
372
- with open(path, "a", encoding="utf-8") as f:
373
+ with safe_open(path, "a") as f:
373
374
  f.write(f"\n{new_rule}\n")
374
375
  io.tool_output("Added Konsole Return+Shift rule.")
375
376
  return True
@@ -399,7 +400,7 @@ class TerminalSetupCommand(BaseCommand):
399
400
  io.tool_output(f"Creating Windows Terminal config at {path}")
400
401
  # Create minimal Windows Terminal config with shift+enter binding
401
402
  data = {"actions": [cls.WT_ACTION], "keybindings": [cls.WT_KEYBINDING]}
402
- with open(path, "w", encoding="utf-8") as f:
403
+ with safe_open(path, "w") as f:
403
404
  json.dump(data, f, indent=4)
404
405
  io.tool_output("Created Windows Terminal config with shift+enter binding.")
405
406
  return True
@@ -412,7 +413,7 @@ class TerminalSetupCommand(BaseCommand):
412
413
  )
413
414
  # Simulate checking for duplicates
414
415
  try:
415
- with open(path, "r", encoding="utf-8") as f:
416
+ with safe_open(path, "r") as f:
416
417
  data = json.load(f)
417
418
 
418
419
  # Check if already configured
@@ -451,7 +452,7 @@ class TerminalSetupCommand(BaseCommand):
451
452
  return False
452
453
 
453
454
  try:
454
- with open(path, "r", encoding="utf-8") as f:
455
+ with safe_open(path, "r") as f:
455
456
  data = json.load(f)
456
457
 
457
458
  # Check if already configured
@@ -493,7 +494,7 @@ class TerminalSetupCommand(BaseCommand):
493
494
 
494
495
  cls._backup_file(path, io)
495
496
 
496
- with open(path, "w", encoding="utf-8") as f:
497
+ with safe_open(path, "w") as f:
497
498
  json.dump(data, f, indent=4)
498
499
  io.tool_output("Updated Windows Terminal config.")
499
500
  return True
@@ -522,7 +523,7 @@ class TerminalSetupCommand(BaseCommand):
522
523
  io.tool_output(f"Creating VS Code keybindings.json at {path}")
523
524
  # Create file with our binding
524
525
  data = [cls.VSCODE_SHIFT_ENTER_BINDING]
525
- with open(path, "w", encoding="utf-8") as f:
526
+ with safe_open(path, "w") as f:
526
527
  json.dump(data, f, indent=4)
527
528
  io.tool_output("Created VS Code config with shift+enter binding.")
528
529
  return True
@@ -536,7 +537,7 @@ class TerminalSetupCommand(BaseCommand):
536
537
  # Simulate checking for duplicates
537
538
  try:
538
539
  content = ""
539
- with open(path, "r", encoding="utf-8") as f:
540
+ with safe_open(path, "r") as f:
540
541
  content = f.read()
541
542
 
542
543
  # Strip comments before parsing
@@ -580,7 +581,7 @@ class TerminalSetupCommand(BaseCommand):
580
581
 
581
582
  try:
582
583
  content = ""
583
- with open(path, "r", encoding="utf-8") as f:
584
+ with safe_open(path, "r") as f:
584
585
  content = f.read()
585
586
 
586
587
  # Strip comments before parsing
@@ -618,7 +619,7 @@ class TerminalSetupCommand(BaseCommand):
618
619
  data.append(cls.VSCODE_SHIFT_ENTER_BINDING)
619
620
 
620
621
  # Write back to file
621
- with open(path, "w", encoding="utf-8") as f:
622
+ with safe_open(path, "w") as f:
622
623
  json.dump(data, f, indent=4)
623
624
 
624
625
  io.tool_output("Updated VS Code config.")
@@ -647,7 +648,7 @@ class TerminalSetupCommand(BaseCommand):
647
648
  try:
648
649
  if settings_path.exists():
649
650
  content = ""
650
- with open(settings_path, "r", encoding="utf-8") as f:
651
+ with safe_open(settings_path, "r") as f:
651
652
  content = f.read()
652
653
 
653
654
  content_no_comments = cls._strip_json_comments(content)
@@ -703,7 +704,7 @@ class TerminalSetupCommand(BaseCommand):
703
704
  if settings_path.exists():
704
705
  cls._backup_file(settings_path, io)
705
706
  content = ""
706
- with open(settings_path, "r", encoding="utf-8") as f:
707
+ with safe_open(settings_path, "r") as f:
707
708
  content = f.read()
708
709
 
709
710
  # Strip comments before parsing
@@ -770,7 +771,7 @@ class TerminalSetupCommand(BaseCommand):
770
771
  ]
771
772
 
772
773
  # Write back to file
773
- with open(settings_path, "w", encoding="utf-8") as f:
774
+ with safe_open(settings_path, "w") as f:
774
775
  json.dump(data, f, indent=4)
775
776
 
776
777
  io.tool_output("Updated VS Code settings.")
@@ -2,6 +2,8 @@ import os
2
2
  from pathlib import Path
3
3
  from typing import List
4
4
 
5
+ from cecli.decoding import safe_open
6
+
5
7
 
6
8
  class SaveLoadManager:
7
9
  """Manager for saving and loading command files."""
@@ -35,7 +37,7 @@ class SaveLoadManager:
35
37
  # Ensure parent directory exists
36
38
  os.makedirs(filepath.parent, exist_ok=True)
37
39
 
38
- with open(filepath, "w", encoding=self.io.encoding) as f:
40
+ with safe_open(filepath, "w") as f:
39
41
  f.write("/drop\n")
40
42
  # Write commands to add editable files
41
43
  for fname in sorted(self.coder.abs_fnames):
@@ -68,7 +70,7 @@ class SaveLoadManager:
68
70
  filepath = self.resolve_filepath(filename)
69
71
 
70
72
  try:
71
- with open(filepath, "r", encoding=self.io.encoding, errors="replace") as f:
73
+ with safe_open(filepath, "r", errors="replace") as f:
72
74
  commands = f.readlines()
73
75
  return [
74
76
  cmd.strip() for cmd in commands if cmd.strip() and not cmd.strip().startswith("#")
@@ -1,6 +1,7 @@
1
1
  import subprocess
2
2
 
3
3
  from cecli.commands.utils.base_command import BaseCommand
4
+ from cecli.decoding import safe_open
4
5
 
5
6
 
6
7
  class WorkspaceCommand(BaseCommand):
@@ -26,7 +27,7 @@ class WorkspaceCommand(BaseCommand):
26
27
  config = {}
27
28
  if metadata_path.exists():
28
29
  try:
29
- with open(metadata_path, "r") as f:
30
+ with safe_open(metadata_path, "r") as f:
30
31
  config = json.load(f)
31
32
  except Exception:
32
33
  pass
@@ -0,0 +1,115 @@
1
+ """
2
+ Encoding-aware file operations with automatic encoding detection for reading
3
+ and configurable encoding for writing.
4
+
5
+ Provides safe_open() as a drop-in replacement for built-in open() that handles
6
+ encoding intelligently on reads, smart_read() for direct file reading with
7
+ fallback encoding detection via charset_normalizer, and safe_write() for
8
+ writing files with a configurable default encoding.
9
+
10
+ The module-level DEFAULT_ENCODING variable can be overridden at runtime
11
+ (e.g., from main.py) to set the preferred encoding for write operations.
12
+ """
13
+
14
+ import charset_normalizer
15
+
16
+ # Global encoding setting used by safe_open() and safe_write() for write
17
+ # operations. Can be overridden at runtime from main.py or elsewhere.
18
+ DEFAULT_ENCODING = "utf-8"
19
+
20
+
21
+ def smart_read(filepath):
22
+ """
23
+ Read a text file, automatically detecting the encoding if not UTF-8.
24
+
25
+ Attempts a fast UTF-8 decode first using Python's optimized native
26
+ decoder. Falls back to charset_normalizer for legacy encodings (e.g.
27
+ GBK, Latin-1, Shift-JIS) when a UnicodeDecodeError is raised.
28
+
29
+ Args:
30
+ filepath: Path to the file to read.
31
+
32
+ Returns:
33
+ The file contents as a string.
34
+
35
+ Raises:
36
+ ValueError: If the encoding cannot be determined.
37
+ FileNotFoundError: If the file does not exist.
38
+ """
39
+ try:
40
+ # FAST PATH: Try standard UTF-8 first using Python's optimized
41
+ # native decoder — this handles the vast majority of modern files.
42
+ with open(filepath, "r", encoding="utf-8") as f:
43
+ return f.read()
44
+
45
+ except UnicodeDecodeError:
46
+ # SLOW PATH: A decode error means this is likely a legacy encoding.
47
+ # Let the library read the raw bytes and guess the correct encoding.
48
+ results = charset_normalizer.from_path(filepath)
49
+ match = results.best()
50
+
51
+ if match is None:
52
+ raise ValueError(f"Could not determine text encoding for {filepath}")
53
+
54
+ return str(match)
55
+
56
+
57
+ def safe_write(filepath, content, encoding=None):
58
+ """
59
+ Write string content to a file using the specified or default encoding.
60
+
61
+ Args:
62
+ filepath: Path to the file to write.
63
+ content: The string content to write.
64
+ encoding: Encoding to use. Defaults to the module-level
65
+ DEFAULT_ENCODING if not provided.
66
+
67
+ Returns:
68
+ The content that was written (for convenience / chaining).
69
+ """
70
+ if encoding is None:
71
+ encoding = DEFAULT_ENCODING
72
+
73
+ with open(filepath, "w", encoding=encoding) as f:
74
+ f.write(content)
75
+
76
+ return content
77
+
78
+
79
+ def safe_open(filepath, mode="r", encoding=None, **kwargs):
80
+ """
81
+ Open a file with intelligent encoding handling.
82
+ """
83
+ # Binary modes — pass through to built-in open() unchanged.
84
+ if "b" in mode:
85
+ return open(filepath, mode, **kwargs)
86
+
87
+ # If the user explicitly provided an encoding, respect it unconditionally.
88
+ if encoding is not None:
89
+ return open(filepath, mode, encoding=encoding, **kwargs)
90
+
91
+ # Write / append modes (with no explicit encoding) — use DEFAULT_ENCODING.
92
+ # Note: We don't check for "r+" here because if a file is being read,
93
+ # we must detect its existing encoding first so we don't corrupt it.
94
+ if "w" in mode or "a" in mode or "x" in mode:
95
+ return open(filepath, mode, encoding=DEFAULT_ENCODING, **kwargs)
96
+
97
+ # Read modes (and read/write "r+" modes) — Auto-detect the encoding.
98
+ try:
99
+ # FAST PATH: Try UTF-8 first by opening and reading a tiny chunk
100
+ with open(filepath, mode, encoding="utf-8", **kwargs) as f:
101
+ f.read(1) # Test if it raises a DecodeError
102
+
103
+ # If we got here, UTF-8 is valid. Return a fresh file object.
104
+ return open(filepath, mode, encoding="utf-8", **kwargs)
105
+
106
+ except UnicodeDecodeError:
107
+ # SLOW PATH: Detect encoding using charset_normalizer
108
+ results = charset_normalizer.from_path(filepath)
109
+ match = results.best()
110
+
111
+ if match is None:
112
+ raise ValueError(f"Could not determine text encoding for {filepath}")
113
+
114
+ # Return a real file object using the detected encoding
115
+ return open(filepath, mode, encoding=match.encoding, **kwargs)
@@ -1,6 +1,8 @@
1
1
  import difflib
2
2
  import sys
3
3
 
4
+ from cecli.decoding import safe_open
5
+
4
6
  from .dump import dump # noqa: F401
5
7
 
6
8
 
@@ -11,10 +13,10 @@ def main():
11
13
 
12
14
  file_orig, file_updated = sys.argv[1], sys.argv[2]
13
15
 
14
- with open(file_orig, "r", encoding="utf-8") as f:
16
+ with safe_open(file_orig, "r") as f:
15
17
  lines_orig = f.readlines()
16
18
 
17
- with open(file_updated, "r", encoding="utf-8") as f:
19
+ with safe_open(file_updated, "r") as f:
18
20
  lines_updated = f.readlines()
19
21
 
20
22
  for i in range(len(file_updated)):
@@ -15,6 +15,7 @@ import tempfile
15
15
 
16
16
  from rich.console import Console
17
17
 
18
+ from cecli.decoding import safe_open
18
19
  from cecli.dump import dump # noqa
19
20
 
20
21
  DEFAULT_EDITOR_NIX = "vi"
@@ -132,7 +133,7 @@ def pipe_editor(input_data="", suffix=None, editor=None):
132
133
  command_str += " " + filepath
133
134
 
134
135
  subprocess.call(command_str, shell=True)
135
- with open(filepath, "r") as f:
136
+ with safe_open(filepath, "r") as f:
136
137
  output_data = f.read()
137
138
  try:
138
139
  os.remove(filepath)
@@ -10,6 +10,8 @@ from typing import Any, Dict, Optional
10
10
 
11
11
  import yaml
12
12
 
13
+ from cecli.decoding import safe_open
14
+
13
15
 
14
16
  @dataclass
15
17
  class SubAgentConfig:
@@ -49,7 +51,7 @@ def parse_subagent_file(file_path: str) -> Optional[SubAgentConfig]:
49
51
  """
50
52
 
51
53
  try:
52
- with open(file_path, "r", encoding="utf-8") as f:
54
+ with safe_open(file_path, "r") as f:
53
55
  content = f.read()
54
56
  except (FileNotFoundError, IOError, OSError) as e:
55
57
  raise ValueError(f"Cannot read file '{file_path}': {e}")
@@ -12,6 +12,8 @@ import threading
12
12
  from collections import deque
13
13
  from typing import Dict, List, Optional, Tuple
14
14
 
15
+ from cecli.decoding import safe_open
16
+
15
17
  try:
16
18
  import pty
17
19
  import termios
@@ -783,7 +785,7 @@ class BackgroundCommandManager:
783
785
  filename = f"{page_num}.txt"
784
786
  abs_path = os.path.join(abs_folder, filename)
785
787
  page_content = output[i * page_size : (i + 1) * page_size]
786
- with open(abs_path, "w") as f:
788
+ with safe_open(abs_path, "w") as f:
787
789
  f.write(page_content)
788
790
 
789
791
  file_paths = [f"{folder_path}/{page_num}.txt" for page_num in range(1, num_pages + 1)]
@@ -6,6 +6,8 @@ from typing import Any, Dict, List
6
6
 
7
7
  import yaml
8
8
 
9
+ from cecli.decoding import safe_open
10
+
9
11
 
10
12
  def load_and_apply_cecli_conf_files(
11
13
  cecli_conf_yml_files: List[str], args: Any, parser: Any
@@ -23,7 +25,7 @@ def load_and_apply_cecli_conf_files(
23
25
 
24
26
  for config_file in existing_cecli_conf:
25
27
  try:
26
- with open(config_file, "r") as f:
28
+ with safe_open(config_file, "r") as f:
27
29
  config_data = yaml.safe_load(f)
28
30
 
29
31
  if isinstance(config_data, dict):
@@ -199,7 +201,7 @@ def read_and_merge_all_configs(
199
201
  for path in all_config_paths:
200
202
  if os.path.exists(path):
201
203
  try:
202
- with open(path, "r") as f:
204
+ with safe_open(path, "r") as f:
203
205
  data = yaml.safe_load(f)
204
206
 
205
207
  if isinstance(data, dict):
@@ -4,6 +4,7 @@ import time
4
4
  import weakref
5
5
  from typing import Any, Dict, List, Optional, Tuple, Union
6
6
 
7
+ from cecli.decoding import safe_open
7
8
  from cecli.helpers import nested
8
9
 
9
10
  from .base_message import BaseMessage
@@ -354,7 +355,7 @@ class ConversationManager:
354
355
  import os
355
356
 
356
357
  os.makedirs(".cecli/logs", exist_ok=True)
357
- with open(".cecli/logs/conversation.log", "w") as f:
358
+ with safe_open(".cecli/logs/conversation.log", "w") as f:
358
359
  json.dump(messages_dict, f, indent=4, default=lambda o: "<not serializable>")
359
360
 
360
361
  # Add cache control headers when getting all messages (for LLM consumption)