cecli-dev 1.6.2rc6__tar.gz → 1.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (877) hide show
  1. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/PKG-INFO +1 -1
  2. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/_version.py +3 -3
  3. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/args.py +12 -1
  4. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/args_formatter.py +1 -0
  5. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/base_coder.py +3 -5
  6. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/add.py +2 -2
  7. cecli_dev-1.7.0/cecli/commands/paste.py +206 -0
  8. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/config_utils.py +13 -2
  9. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/chat.py +15 -2
  10. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/litellm_compat.py +15 -5
  11. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/manager.py +13 -2
  12. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/payload.py +17 -2
  13. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/subagents.py +52 -0
  14. cecli_dev-1.7.0/cecli/helpers/system_one/__init__.py +86 -0
  15. cecli_dev-1.7.0/cecli/helpers/system_one/api.py +186 -0
  16. cecli_dev-1.7.0/cecli/helpers/system_one/client.py +162 -0
  17. cecli_dev-1.7.0/cecli/helpers/system_one/config.py +217 -0
  18. cecli_dev-1.7.0/cecli/helpers/system_one/integrations.py +155 -0
  19. cecli_dev-1.7.0/cecli/helpers/system_one/types.py +256 -0
  20. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/helpers.py +56 -1
  21. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/main.py +20 -1
  22. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/models.py +60 -20
  23. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/grep.py +4 -3
  24. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/ls.py +3 -3
  25. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/resource_manager.py +4 -10
  26. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/app.py +13 -3
  27. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/completion_bar.py +8 -2
  28. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/utils.py +20 -7
  29. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/conf.md +1 -0
  30. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/hooks.md +138 -3
  31. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/retries.md +4 -2
  32. cecli_dev-1.7.0/cecli/website/docs/config/system-one.md +180 -0
  33. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/PKG-INFO +1 -1
  34. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/SOURCES.txt +9 -1
  35. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/scm_file_list.json +9 -1
  36. cecli_dev-1.7.0/cecli_dev.egg-info/scm_version.json +8 -0
  37. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_agent_config_merge.py +1 -0
  38. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_models.py +18 -0
  39. cecli_dev-1.7.0/tests/basic/test_retry_config.py +65 -0
  40. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_sessions_manager.py +126 -0
  41. cecli_dev-1.7.0/tests/basic/test_system_one.py +809 -0
  42. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tui/test_completion_bar.py +72 -0
  43. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_deep_merge.py +12 -0
  44. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_retry_backoff.py +154 -0
  45. cecli_dev-1.6.2rc6/cecli/commands/paste.py +0 -95
  46. cecli_dev-1.6.2rc6/cecli/website/docs/usage/tips.md +0 -80
  47. cecli_dev-1.6.2rc6/cecli_dev.egg-info/scm_version.json +0 -8
  48. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.dockerignore +0 -0
  49. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.flake8 +0 -0
  50. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.gitattributes +0 -0
  51. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  52. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/check_pypi_version.yml +0 -0
  53. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/docker-build-test.yml +0 -0
  54. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/docker-release.yml +0 -0
  55. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/issues.yml +0 -0
  56. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/pages.yml +0 -0
  57. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/pre-commit.yml +0 -0
  58. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/release.yml +0 -0
  59. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/ubuntu-tests.yml +0 -0
  60. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/windows-tests.yml +0 -0
  61. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
  62. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.gitignore +0 -0
  63. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/.pre-commit-config.yaml +0 -0
  64. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/CHANGELOG.md +0 -0
  65. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/CNAME +0 -0
  66. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/CONTRIBUTING.md +0 -0
  67. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/HISTORY.md +0 -0
  68. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/LICENSE.txt +0 -0
  69. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/MANIFEST.in +0 -0
  70. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/README.md +0 -0
  71. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/Dockerfile +0 -0
  72. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/README.md +0 -0
  73. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/__init__.py +0 -0
  74. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/benchmark.py +0 -0
  75. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/benchmark_classic.py +0 -0
  76. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/clone-exercism.sh +0 -0
  77. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/cpp-test.sh +0 -0
  78. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/docker.sh +0 -0
  79. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/docker_build.sh +0 -0
  80. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/install-docker-ubuntu.sh +0 -0
  81. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/npm-test.sh +0 -0
  82. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/over_time.py +0 -0
  83. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/plot.sh +0 -0
  84. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/plots.py +0 -0
  85. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/problem_stats.py +0 -0
  86. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/prompts.py +0 -0
  87. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/refactor_tools.py +0 -0
  88. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/rsync.sh +0 -0
  89. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/rungrid.py +0 -0
  90. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/swe-bench-lite.txt +0 -0
  91. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/swe-bench.txt +0 -0
  92. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/swe_bench.py +0 -0
  93. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/test_benchmark.py +0 -0
  94. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/variations.1.sh +0 -0
  95. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/variations.2.sh +0 -0
  96. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/variations.3.sh +0 -0
  97. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/benchmark/variations.4.sh +0 -0
  98. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/__init__.py +0 -0
  99. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/__main__.py +0 -0
  100. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/change_tracker.py +0 -0
  101. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/__init__.py +0 -0
  102. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/agent_coder.py +0 -0
  103. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/architect_coder.py +0 -0
  104. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/ask_coder.py +0 -0
  105. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/chat_chunks.py +0 -0
  106. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/context_coder.py +0 -0
  107. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/copypaste_coder.py +0 -0
  108. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editblock_coder.py +0 -0
  109. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editblock_fenced_coder.py +0 -0
  110. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editblock_func_coder.py +0 -0
  111. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
  112. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editor_editblock_coder.py +0 -0
  113. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/editor_whole_coder.py +0 -0
  114. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/hashline_coder.py +0 -0
  115. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/help_coder.py +0 -0
  116. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/patch_coder.py +0 -0
  117. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/search_replace.py +0 -0
  118. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/shell.py +0 -0
  119. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
  120. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/sub_agent_coder.py +0 -0
  121. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/udiff_coder.py +0 -0
  122. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/udiff_simple.py +0 -0
  123. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/wholefile_coder.py +0 -0
  124. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/coders/wholefile_func_coder.py +0 -0
  125. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/__init__.py +0 -0
  126. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/agent.py +0 -0
  127. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/agent_model.py +0 -0
  128. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/agent_tree.py +0 -0
  129. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/architect.py +0 -0
  130. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/ask.py +0 -0
  131. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/auto_memory.py +0 -0
  132. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/chat_mode.py +0 -0
  133. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/clear.py +0 -0
  134. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/code.py +0 -0
  135. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/command_prefix.py +0 -0
  136. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/commit.py +0 -0
  137. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/compact.py +0 -0
  138. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/context.py +0 -0
  139. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/context_blocks.py +0 -0
  140. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/context_management.py +0 -0
  141. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/copy.py +0 -0
  142. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/copy_context.py +0 -0
  143. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/core.py +0 -0
  144. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/diff.py +0 -0
  145. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/drop.py +0 -0
  146. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/editor.py +0 -0
  147. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/editor_model.py +0 -0
  148. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/exclude_skill.py +0 -0
  149. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/exit.py +0 -0
  150. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/git.py +0 -0
  151. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/hashline.py +0 -0
  152. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/help.py +0 -0
  153. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/history_search.py +0 -0
  154. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/hooks.py +0 -0
  155. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/hot_reload.py +0 -0
  156. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/import_skill.py +0 -0
  157. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/include_skill.py +0 -0
  158. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/insert_queue.py +0 -0
  159. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/lint.py +0 -0
  160. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/list_mcp.py +0 -0
  161. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/list_queue.py +0 -0
  162. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/list_sessions.py +0 -0
  163. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/list_skills.py +0 -0
  164. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/load.py +0 -0
  165. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/load_hook.py +0 -0
  166. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/load_mcp.py +0 -0
  167. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/load_session.py +0 -0
  168. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/load_skill.py +0 -0
  169. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/ls.py +0 -0
  170. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/map.py +0 -0
  171. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/map_refresh.py +0 -0
  172. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/merge.py +0 -0
  173. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/model.py +0 -0
  174. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/models.py +0 -0
  175. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/multiline_mode.py +0 -0
  176. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/queue.py +0 -0
  177. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/quit.py +0 -0
  178. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/read_only.py +0 -0
  179. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/read_only_stub.py +0 -0
  180. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/reap_agent.py +0 -0
  181. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/reasoning_effort.py +0 -0
  182. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/remove_hook.py +0 -0
  183. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/remove_mcp.py +0 -0
  184. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/remove_memory.py +0 -0
  185. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/remove_queue.py +0 -0
  186. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/remove_skill.py +0 -0
  187. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/report.py +0 -0
  188. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/reset.py +0 -0
  189. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/rules.py +0 -0
  190. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/run.py +0 -0
  191. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/save.py +0 -0
  192. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/save_session.py +0 -0
  193. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/search_memory.py +0 -0
  194. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/settings.py +0 -0
  195. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/spawn_agent.py +0 -0
  196. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/switch_agent.py +0 -0
  197. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/terminal_data/linux.keytab +0 -0
  198. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/terminal_setup.py +0 -0
  199. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/test.py +0 -0
  200. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/think_tokens.py +0 -0
  201. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/tokens.py +0 -0
  202. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/undo.py +0 -0
  203. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/utils/__init__.py +0 -0
  204. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/utils/base_command.py +0 -0
  205. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/utils/helpers.py +0 -0
  206. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/utils/registry.py +0 -0
  207. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/utils/save_load_manager.py +0 -0
  208. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/voice.py +0 -0
  209. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/weak_model.py +0 -0
  210. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/web.py +0 -0
  211. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/commands/workspace.py +0 -0
  212. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/decoding.py +0 -0
  213. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/deprecated_args.py +0 -0
  214. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/diffs.py +0 -0
  215. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/dump.py +0 -0
  216. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/editor.py +0 -0
  217. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/exceptions.py +0 -0
  218. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/format_settings.py +0 -0
  219. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/help.py +0 -0
  220. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/help_pats.py +0 -0
  221. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/__init__.py +0 -0
  222. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/__init__.py +0 -0
  223. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/config.py +0 -0
  224. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/defaults/__init__.py +0 -0
  225. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/defaults/memorizer.md +0 -0
  226. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/defaults/worker.md +0 -0
  227. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/agents/service.py +0 -0
  228. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/background_commands.py +0 -0
  229. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/command_parser.py +0 -0
  230. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/command_queue.py +0 -0
  231. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/__init__.py +0 -0
  232. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/base_message.py +0 -0
  233. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/files.py +0 -0
  234. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/integration.py +0 -0
  235. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/manager.py +0 -0
  236. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/service.py +0 -0
  237. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/tags.py +0 -0
  238. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/conversation/utils.py +0 -0
  239. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/copypaste.py +0 -0
  240. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/coroutines.py +0 -0
  241. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/crypto.py +0 -0
  242. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/extensions/__init__.py +0 -0
  243. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/extensions/skills_importer.py +0 -0
  244. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_searcher.py +0 -0
  245. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/__init__.py +0 -0
  246. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/builders.py +0 -0
  247. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/ignore.py +0 -0
  248. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/ngram_index.py +0 -0
  249. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/service.py +0 -0
  250. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/file_system/trie_index.py +0 -0
  251. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/__init__.py +0 -0
  252. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/dump.py +0 -0
  253. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
  254. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/main.py +0 -0
  255. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/parsers.py +0 -0
  256. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/grep_ast/tsl.py +0 -0
  257. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/hashline.py +0 -0
  258. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/hashpos/__init__.py +0 -0
  259. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/hashpos/hashpos.py +0 -0
  260. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
  261. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/hashpos/transformations.py +0 -0
  262. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/io_proxy.py +0 -0
  263. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/leak_detect.py +0 -0
  264. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/__init__.py +0 -0
  265. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/aws_sigv4.py +0 -0
  266. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/config.py +0 -0
  267. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/constants.py +0 -0
  268. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/__init__.py +0 -0
  269. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/bedrock.py +0 -0
  270. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/gemini.py +0 -0
  271. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/messages.py +0 -0
  272. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/domains/responses.py +0 -0
  273. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/formatters/__init__.py +0 -0
  274. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/formatters/reasoning.py +0 -0
  275. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/formatters/thinking.py +0 -0
  276. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/identifiers.py +0 -0
  277. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/pipeline.py +0 -0
  278. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/__init__.py +0 -0
  279. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/anthropic.py +0 -0
  280. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/azure.py +0 -0
  281. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/base.py +0 -0
  282. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/bedrock.py +0 -0
  283. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
  284. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/deepseek.py +0 -0
  285. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/gemini.py +0 -0
  286. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/github_copilot.py +0 -0
  287. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/meta.py +0 -0
  288. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/mistral.py +0 -0
  289. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/ollama.py +0 -0
  290. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/openai.py +0 -0
  291. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/providers/openrouter.py +0 -0
  292. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/runtime.py +0 -0
  293. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/types.py +0 -0
  294. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/llms/utils.py +0 -0
  295. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/lock_detect.py +0 -0
  296. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/loop_detect.py +0 -0
  297. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/memory/__init__.py +0 -0
  298. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/memory/db.py +0 -0
  299. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/memory/utils.py +0 -0
  300. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/memory_control.py +0 -0
  301. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/__init__.py +0 -0
  302. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/agent.py +0 -0
  303. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/api.py +0 -0
  304. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/formatters/__init__.py +0 -0
  305. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
  306. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/formatters/thinking.py +0 -0
  307. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/identifiers.py +0 -0
  308. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/llm.py +0 -0
  309. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/pipeline.py +0 -0
  310. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/registry.py +0 -0
  311. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_config/utils.py +0 -0
  312. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/model_providers.py +0 -0
  313. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/nested.py +0 -0
  314. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/observations/__init__.py +0 -0
  315. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/observations/service.py +0 -0
  316. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/onboarding/__init__.py +0 -0
  317. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/onboarding/app.py +0 -0
  318. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/onboarding/providers.py +0 -0
  319. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/__init__.py +0 -0
  320. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/agent_proxy.py +0 -0
  321. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/environment.py +0 -0
  322. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/region_resolver.py +0 -0
  323. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/safe_methods.py +0 -0
  324. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/security.py +0 -0
  325. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/service.py +0 -0
  326. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/orchestration/tool_proxy.py +0 -0
  327. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/plugin_manager.py +0 -0
  328. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/profiler.py +0 -0
  329. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/queues.py +0 -0
  330. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/requests.py +0 -0
  331. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/responses.py +0 -0
  332. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/__init__.py +0 -0
  333. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/acp/__init__.py +0 -0
  334. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/acp/bridge.py +0 -0
  335. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/acp/models.py +0 -0
  336. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/acp/protocol.py +0 -0
  337. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/signals.py +0 -0
  338. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/server/ws_server.py +0 -0
  339. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/__init__.py +0 -0
  340. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/layout.py +0 -0
  341. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/sessions/storage.py +0 -0
  342. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/similarity.py +0 -0
  343. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/skills.py +0 -0
  344. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/threading.py +0 -0
  345. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/workspaces/__init__.py +0 -0
  346. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/workspaces/config.py +0 -0
  347. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/workspaces/paths.py +0 -0
  348. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/workspaces/subagents.py +0 -0
  349. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/helpers/workspaces/workspace.py +0 -0
  350. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/history.py +0 -0
  351. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/__init__.py +0 -0
  352. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/base.py +0 -0
  353. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/integration.py +0 -0
  354. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/manager.py +0 -0
  355. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/registry.py +0 -0
  356. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/service.py +0 -0
  357. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/hooks/types.py +0 -0
  358. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/http.py +0 -0
  359. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/interruptible_input.py +0 -0
  360. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/io.py +0 -0
  361. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/linter.py +0 -0
  362. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/llm.py +0 -0
  363. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mcp/__init__.py +0 -0
  364. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mcp/manager.py +0 -0
  365. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mcp/oauth.py +0 -0
  366. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mcp/server.py +0 -0
  367. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mcp/utils.py +0 -0
  368. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/mdstream.py +0 -0
  369. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/onboarding.py +0 -0
  370. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/__init__.py +0 -0
  371. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/agent.yml +0 -0
  372. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/architect.yml +0 -0
  373. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/ask.yml +0 -0
  374. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/base.yml +0 -0
  375. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/context.yml +0 -0
  376. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/copypaste.yml +0 -0
  377. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editblock.yml +0 -0
  378. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editblock_fenced.yml +0 -0
  379. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editblock_func.yml +0 -0
  380. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
  381. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editor_editblock.yml +0 -0
  382. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/editor_whole.yml +0 -0
  383. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/hashline.yml +0 -0
  384. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/help.yml +0 -0
  385. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/patch.yml +0 -0
  386. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/single_wholefile_func.yml +0 -0
  387. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/subagent.yml +0 -0
  388. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/udiff.yml +0 -0
  389. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/udiff_simple.yml +0 -0
  390. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/utils/__init__.py +0 -0
  391. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/utils/registry.py +0 -0
  392. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/utils/system.py +0 -0
  393. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/wholefile.yml +0 -0
  394. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/prompts/wholefile_func.yml +0 -0
  395. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
  396. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  397. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
  398. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  399. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  400. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  401. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  402. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  403. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  404. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  405. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  406. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  407. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  408. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  409. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  410. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  411. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  412. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  413. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  414. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  415. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  416. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  417. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  418. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  419. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  420. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  421. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  422. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  423. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  424. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  425. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  426. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  427. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
  428. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
  429. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
  430. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  431. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  432. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
  433. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  434. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  435. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
  436. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
  437. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
  438. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
  439. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  440. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
  441. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  442. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
  443. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  444. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  445. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  446. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  447. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
  448. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
  449. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
  450. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  451. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
  452. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
  453. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  454. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
  455. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/reasoning_tags.py +0 -0
  456. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/repo.py +0 -0
  457. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/repomap.py +0 -0
  458. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/report.py +0 -0
  459. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/__init__.py +0 -0
  460. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/model-metadata.ext.json +0 -0
  461. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/model-metadata.json +0 -0
  462. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/model-settings-condensed.yml +0 -0
  463. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/model-settings.yml +0 -0
  464. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/resources/providers.json +0 -0
  465. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/run_cmd.py +0 -0
  466. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/scrape.py +0 -0
  467. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/sendchat.py +0 -0
  468. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/signals.py +0 -0
  469. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/special.py +0 -0
  470. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tests/test_queue_commands.py +0 -0
  471. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/__init__.py +0 -0
  472. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/_yield.py +0 -0
  473. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/broadcast.py +0 -0
  474. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/command.py +0 -0
  475. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/delegate.py +0 -0
  476. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/edit_file.py +0 -0
  477. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/explore_code.py +0 -0
  478. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_branch.py +0 -0
  479. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_diff.py +0 -0
  480. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_log.py +0 -0
  481. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_remote.py +0 -0
  482. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_show.py +0 -0
  483. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/git_status.py +0 -0
  484. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/orchestrate.py +0 -0
  485. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/read_file.py +0 -0
  486. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/replace_facts.py +0 -0
  487. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/search_facts.py +0 -0
  488. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/thinking.py +0 -0
  489. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/undo_change.py +0 -0
  490. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/update_todo_list.py +0 -0
  491. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/__init__.py +0 -0
  492. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/base_tool.py +0 -0
  493. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/helpers.py +0 -0
  494. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/output.py +0 -0
  495. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/registry.py +0 -0
  496. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/utils/responses.py +0 -0
  497. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/validations/__init__.py +0 -0
  498. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tools/validations/validations.py +0 -0
  499. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/__init__.py +0 -0
  500. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/io.py +0 -0
  501. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/styles.tcss +0 -0
  502. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/__init__.py +0 -0
  503. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/file_list.py +0 -0
  504. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/footer.py +0 -0
  505. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/input_area.py +0 -0
  506. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/input_container.py +0 -0
  507. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/key_hints.py +0 -0
  508. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/output.py +0 -0
  509. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/output_alt.bak +0 -0
  510. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/selectable_log.py +0 -0
  511. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/status_bar.py +0 -0
  512. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/subagent_pills.py +0 -0
  513. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/widgets/thin_scrollbar.py +0 -0
  514. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/tui/worker.py +0 -0
  515. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/urls.py +0 -0
  516. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/versioncheck.py +0 -0
  517. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/voice.py +0 -0
  518. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/waiting.py +0 -0
  519. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/watch.py +0 -0
  520. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/watch_prompts.py +0 -0
  521. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/blame.md +0 -0
  522. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/get-started.md +0 -0
  523. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/help-tip.md +0 -0
  524. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/help.md +0 -0
  525. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/install.md +0 -0
  526. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/keys.md +0 -0
  527. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/model-warnings.md +0 -0
  528. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/multi-line.md +0 -0
  529. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/python-m-aider.md +0 -0
  530. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/recording.css +0 -0
  531. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/recording.md +0 -0
  532. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_includes/works-best.md +0 -0
  533. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_features.scss +0 -0
  534. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_footer.scss +0 -0
  535. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_hero.scss +0 -0
  536. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_info.scss +0 -0
  537. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_layout.scss +0 -0
  538. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_reset.scss +0 -0
  539. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_testimonials.scss +0 -0
  540. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_typography.scss +0 -0
  541. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/_variables.scss +0 -0
  542. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/custom/custom.scss +0 -0
  543. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/_sass/global-overrides.scss +0 -0
  544. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docmd.config.json +0 -0
  545. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
  546. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
  547. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/agent-mode.md +0 -0
  548. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/api-keys.md +0 -0
  549. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/api.md +0 -0
  550. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/custom-commands.md +0 -0
  551. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
  552. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/dotenv.md +0 -0
  553. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/editor.md +0 -0
  554. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/mcp.md +0 -0
  555. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/model-aliases.md +0 -0
  556. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/model-configuration.md +0 -0
  557. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/model-providers.md +0 -0
  558. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/options.md +0 -0
  559. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/persistent-memory.md +0 -0
  560. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/reasoning.md +0 -0
  561. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/security.md +0 -0
  562. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/skills.md +0 -0
  563. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/subagents.md +0 -0
  564. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/tui.md +0 -0
  565. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config/workspaces.md +0 -0
  566. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/config.md +0 -0
  567. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/git.md +0 -0
  568. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/index.md +0 -0
  569. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/install/docker.md +0 -0
  570. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/install.md +0 -0
  571. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/languages.md +0 -0
  572. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
  573. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/legal/privacy.md +0 -0
  574. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/anthropic.md +0 -0
  575. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/azure.md +0 -0
  576. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/bedrock.md +0 -0
  577. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/cohere.md +0 -0
  578. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/deepseek.md +0 -0
  579. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/gemini.md +0 -0
  580. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/github.md +0 -0
  581. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/groq.md +0 -0
  582. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/lm-studio.md +0 -0
  583. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/ollama.md +0 -0
  584. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/openai-compat.md +0 -0
  585. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/openai.md +0 -0
  586. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/opencode-go.md +0 -0
  587. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/openrouter.md +0 -0
  588. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/other.md +0 -0
  589. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/vertex.md +0 -0
  590. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/warnings.md +0 -0
  591. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms/xai.md +0 -0
  592. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/llms.md +0 -0
  593. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/more/analytics.md +0 -0
  594. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/more/edit-formats.md +0 -0
  595. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/more/infinite-output.md +0 -0
  596. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/more-info.md +0 -0
  597. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/repomap.md +0 -0
  598. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/scripting.md +0 -0
  599. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
  600. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
  601. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
  602. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
  603. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/support.md +0 -0
  604. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
  605. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
  606. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/troubleshooting.md +0 -0
  607. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/commands.md +0 -0
  608. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/conventions.md +0 -0
  609. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/copypaste.md +0 -0
  610. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/images-urls.md +0 -0
  611. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/lint-test.md +0 -0
  612. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/modes.md +0 -0
  613. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/not-code.md +0 -0
  614. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/notifications.md +0 -0
  615. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/optional.md +0 -0
  616. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/sessions.md +0 -0
  617. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/voice.md +0 -0
  618. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage/watch.md +0 -0
  619. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/docs/usage.md +0 -0
  620. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/package-lock.json +0 -0
  621. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/package.json +0 -0
  622. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli/website/share/index.md +0 -0
  623. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
  624. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/entry_points.txt +0 -0
  625. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/requires.txt +0 -0
  626. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/cecli_dev.egg-info/top_level.txt +0 -0
  627. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/docker/Dockerfile +0 -0
  628. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
  629. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/pyproject.toml +0 -0
  630. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/pytest.ini +0 -0
  631. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/common-constraints.txt +0 -0
  632. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-dev.in +0 -0
  633. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-dev.txt +0 -0
  634. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-help.in +0 -0
  635. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-help.txt +0 -0
  636. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-playwright.in +0 -0
  637. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements-playwright.txt +0 -0
  638. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/requirements.in +0 -0
  639. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements/tree-sitter.in +0 -0
  640. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/requirements.txt +0 -0
  641. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/30k-image.py +0 -0
  642. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/__init__.py +0 -0
  643. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/blame.py +0 -0
  644. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/clean_metadata.py +0 -0
  645. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/compare-message-history.py +0 -0
  646. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/condense_model_settings.py +0 -0
  647. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/cost_analyzer.py +0 -0
  648. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/cost_calculator.py +0 -0
  649. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/dl_icons.py +0 -0
  650. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/docmd_build.sh +0 -0
  651. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/filter-chat-mode.js +0 -0
  652. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/generate_providers.py +0 -0
  653. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/get_contributor_list.js +0 -0
  654. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/get_hashline.py +0 -0
  655. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/history_prompts.py +0 -0
  656. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/homepage.py +0 -0
  657. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/issues.py +0 -0
  658. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/logo_svg.py +0 -0
  659. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/optimize_tokens.sh +0 -0
  660. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/pip-compile.sh +0 -0
  661. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/recording_audio.py +0 -0
  662. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/redact-cast.py +0 -0
  663. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/rename_to_cecli.py +0 -0
  664. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/tmux_record.sh +0 -0
  665. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/tsl_pack_langs.py +0 -0
  666. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/update-blame.sh +0 -0
  667. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/update-docs.sh +0 -0
  668. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/update-history.py +0 -0
  669. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/versionbump.py +0 -0
  670. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/scripts/yank-old-versions.py +0 -0
  671. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/setup.cfg +0 -0
  672. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/shim.pyproject.toml +0 -0
  673. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/__init__.py +0 -0
  674. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/__init__.py +0 -0
  675. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/conftest.py +0 -0
  676. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_aws_credentials.py +0 -0
  677. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_background_commands.py +0 -0
  678. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_coder.py +0 -0
  679. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_commands.py +0 -0
  680. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_custom_commands.py +0 -0
  681. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_deprecated.py +0 -0
  682. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_editblock.py +0 -0
  683. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_editor.py +0 -0
  684. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_exceptions.py +0 -0
  685. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_file_system_service.py +0 -0
  686. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_find_or_blocks.py +0 -0
  687. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_hashline.py +0 -0
  688. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_hashline_closure.py +0 -0
  689. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_history.py +0 -0
  690. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_io.py +0 -0
  691. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_linter.py +0 -0
  692. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_main.py +0 -0
  693. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_model_info_manager.py +0 -0
  694. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_model_provider_manager.py +0 -0
  695. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_onboarding.py +0 -0
  696. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_plugin_manager.py +0 -0
  697. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_prompts.py +0 -0
  698. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_reasoning.py +0 -0
  699. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_repo.py +0 -0
  700. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_repomap.py +0 -0
  701. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_run_cmd.py +0 -0
  702. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_sanity_check_repo.py +0 -0
  703. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_scripting.py +0 -0
  704. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_select_selector.py +0 -0
  705. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_sendchat.py +0 -0
  706. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_session_args.py +0 -0
  707. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_session_crypto.py +0 -0
  708. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_sessions.py +0 -0
  709. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_skills.py +0 -0
  710. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_special.py +0 -0
  711. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_spinner.py +0 -0
  712. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_ssl_verification.py +0 -0
  713. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_udiff.py +0 -0
  714. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_urls.py +0 -0
  715. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_voice.py +0 -0
  716. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_watch.py +0 -0
  717. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/basic/test_wholefile.py +0 -0
  718. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/coders/test_coder_switching.py +0 -0
  719. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/coders/test_copypaste_coder.py +0 -0
  720. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/coders/test_rate_limit.py +0 -0
  721. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/coders/test_tool_call_consolidation.py +0 -0
  722. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_auto_memory.py +0 -0
  723. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_compaction.py +0 -0
  724. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_remove_memory.py +0 -0
  725. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_search_memory.py +0 -0
  726. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_switch_agent.py +0 -0
  727. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_voice.py +0 -0
  728. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/commands/test_workspace.py +0 -0
  729. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/conftest.py +0 -0
  730. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/conversations/test_background_command_injection.py +0 -0
  731. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/conversations/test_conversation_integration.py +0 -0
  732. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/conversations/test_conversation_system.py +0 -0
  733. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  734. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/chat-history.md +0 -0
  735. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/arduino/test.ino +0 -0
  736. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/bash/test.sh +0 -0
  737. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/c/test.c +0 -0
  738. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
  739. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/clojure/test.clj +0 -0
  740. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  741. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
  742. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/csharp/test.cs +0 -0
  743. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/d/test.d +0 -0
  744. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/dart/test.dart +0 -0
  745. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/elisp/test.el +0 -0
  746. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/elixir/test.ex +0 -0
  747. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/elm/test.elm +0 -0
  748. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
  749. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/go/test.go +0 -0
  750. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/haskell/test.hs +0 -0
  751. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/hcl/test.tf +0 -0
  752. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/java/test.java +0 -0
  753. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/javascript/test.js +0 -0
  754. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
  755. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/lua/test.lua +0 -0
  756. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/matlab/test.m +0 -0
  757. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
  758. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  759. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/php/test.php +0 -0
  760. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/pony/test.pony +0 -0
  761. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/properties/test.properties +0 -0
  762. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/python/test.py +0 -0
  763. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/ql/test.ql +0 -0
  764. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/r/test.r +0 -0
  765. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/racket/test.rkt +0 -0
  766. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/ruby/test.rb +0 -0
  767. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/rust/test.rs +0 -0
  768. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/scala/test.scala +0 -0
  769. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/solidity/test.sol +0 -0
  770. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/swift/test.swift +0 -0
  771. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
  772. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/typescript/test.ts +0 -0
  773. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/udev/test.rules +0 -0
  774. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/languages/zig/test.zig +0 -0
  775. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/sample-code-base/sample.js +0 -0
  776. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/sample-code-base/sample.py +0 -0
  777. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  778. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/watch.js +0 -0
  779. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/watch.lisp +0 -0
  780. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/watch.py +0 -0
  781. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/fixtures/watch_question.js +0 -0
  782. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/help/test_help.py +0 -0
  783. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/observations/test_observation_service.py +0 -0
  784. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/server/acp/__init__.py +0 -0
  785. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/server/acp/test_bridge.py +0 -0
  786. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/server/acp/test_dispatch.py +0 -0
  787. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/server/acp/test_models.py +0 -0
  788. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/server/acp/test_protocol.py +0 -0
  789. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_api_base.py +0 -0
  790. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_aws_sigv4.py +0 -0
  791. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_cache_control.py +0 -0
  792. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_gemini_auth.py +0 -0
  793. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
  794. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_hyperscalers.py +0 -0
  795. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_messages_stream.py +0 -0
  796. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_messages_wire.py +0 -0
  797. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_mistral_adapter.py +0 -0
  798. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_mistral_provider.py +0 -0
  799. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_ollama_native.py +0 -0
  800. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_providers_json.py +0 -0
  801. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_reasoning_config.py +0 -0
  802. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_reasoning_extract.py +0 -0
  803. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
  804. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_llms_vision.py +0 -0
  805. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_loop_detect.py +0 -0
  806. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_memory_control.py +0 -0
  807. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_model_config.py +0 -0
  808. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_onboarding.py +0 -0
  809. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_orchestration.py +0 -0
  810. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/test_skills_importer.py +0 -0
  811. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/workspaces/conftest.py +0 -0
  812. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/workspaces/test_config.py +0 -0
  813. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/workspaces/test_paths.py +0 -0
  814. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/workspaces/test_subagents.py +0 -0
  815. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
  816. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/hooks/__init__.py +0 -0
  817. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/hooks/test_base.py +0 -0
  818. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/hooks/test_manager.py +0 -0
  819. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/hooks/test_registry.py +0 -0
  820. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/integration/test_agent_mcp_management.py +0 -0
  821. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/integration/test_config_loading.py +0 -0
  822. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/integration/test_mcp_management.py +0 -0
  823. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/__init__.py +0 -0
  824. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/conftest.py +0 -0
  825. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/mock_server.py +0 -0
  826. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_concurrency.py +0 -0
  827. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_config.py +0 -0
  828. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_integration.py +0 -0
  829. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_logging.py +0 -0
  830. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_resilience.py +0 -0
  831. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_keepalive_unit.py +0 -0
  832. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_manager.py +0 -0
  833. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_manager_retry.py +0 -0
  834. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_server_name_normalization.py +0 -0
  835. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_server_sdk_compat.py +0 -0
  836. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/mcp/test_tool_name_sanitization.py +0 -0
  837. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/scrape/test_playwright_disable.py +0 -0
  838. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/scrape/test_scrape.py +0 -0
  839. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/__init__.py +0 -0
  840. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/conftest.py +0 -0
  841. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_commands.py +0 -0
  842. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_config.py +0 -0
  843. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_delegate.py +0 -0
  844. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_finished.py +0 -0
  845. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_io_proxy.py +0 -0
  846. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_service.py +0 -0
  847. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/subagents/test_sub_agent_coder.py +0 -0
  848. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/test_requests.py +0 -0
  849. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_command_format_output.py +0 -0
  850. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_command_timeout_paging.py +0 -0
  851. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_edit_file_format_output.py +0 -0
  852. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_extractions.py +0 -0
  853. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_get_lines.py +0 -0
  854. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_git_branch.py +0 -0
  855. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_git_diff.py +0 -0
  856. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_grep.py +0 -0
  857. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_insert_block.py +0 -0
  858. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_read_range_execute.py +0 -0
  859. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_registry.py +0 -0
  860. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_remove_mcp_tool.py +0 -0
  861. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_resource_manager_paging.py +0 -0
  862. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_tool_arguments.py +0 -0
  863. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/test_tools_load_mcp_tool.py +0 -0
  864. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tools/validations.py +0 -0
  865. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tui/test_app.py +0 -0
  866. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/tui/test_output.py +0 -0
  867. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/conftest.py +0 -0
  868. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_edge_cases.py +0 -0
  869. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_load_mcp.py +0 -0
  870. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_performance.py +0 -0
  871. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_queues.py +0 -0
  872. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_remove_mcp.py +0 -0
  873. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_shallow_merge.py +0 -0
  874. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_signals.py +0 -0
  875. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_unit_load_mcp_tool.py +0 -0
  876. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
  877. {cecli_dev-1.6.2rc6 → cecli_dev-1.7.0}/tests/unit/test_ws_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecli-dev
3
- Version: 1.6.2rc6
3
+ Version: 1.7.0
4
4
  Summary: we also can't pronounce cecli
5
5
  Project-URL: Homepage, https://github.com/dwash96/cecli
6
6
  Project-URL: Documentation, https://github.com/dwash96/cecli
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.6.2rc6'
22
- __version_tuple__ = version_tuple = (1, 6, 2, 'rc6')
21
+ __version__ = version = '1.7.0'
22
+ __version_tuple__ = version_tuple = (1, 7, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g98f3e7e7c'
24
+ __commit_id__ = commit_id = 'g7157616ab'
@@ -61,6 +61,7 @@ DEEP_MERGE_JSON_FIELDS: frozenset[str] = frozenset(
61
61
  "security_config",
62
62
  "retries",
63
63
  "custom",
64
+ "system_one",
64
65
  "tui_config",
65
66
  }
66
67
  )
@@ -360,7 +361,7 @@ def get_parser(default_config_files, git_root):
360
361
  metavar="RETRIES_JSON",
361
362
  help=(
362
363
  'Specify LLM retry configuration as a JSON/YAML string (e.g., \'{"retry_on_empty": '
363
- "true}')"
364
+ 'true, "retry-on-unauthorized": false}\')'
364
365
  ),
365
366
  default=None,
366
367
  )
@@ -427,6 +428,16 @@ def get_parser(default_config_files, git_root):
427
428
  help="Specify hooks configuration as a JSON string",
428
429
  default=None,
429
430
  )
431
+ group.add_argument(
432
+ "--system-one",
433
+ metavar="SYSTEM_ONE_JSON",
434
+ help=(
435
+ "Specify the System One decision endpoint as a JSON/YAML string (e.g.,"
436
+ ' \'{"api_base": "http://127.0.0.1:8000", "api_key_env": ["SYSTEM_ONE_API_KEY"],'
437
+ ' "model_name": "von-latest"}\')'
438
+ ),
439
+ default=None,
440
+ )
430
441
  group.add_argument(
431
442
  "--agent-model",
432
443
  metavar="AGENT_MODEL",
@@ -138,6 +138,7 @@ class YamlHelpFormatter(argparse.HelpFormatter):
138
138
  parts.append("# retry-timeout: 60")
139
139
  parts.append("# retry-backoff-factor: 2.0")
140
140
  parts.append("# retry-on-unavailable: true")
141
+ parts.append("# retry-on-unauthorized: false")
141
142
  parts.append("# retry-on-empty: false")
142
143
  parts.append("")
143
144
  return "\n".join(parts)
@@ -66,7 +66,7 @@ from cecli.report import update_error_prefix
66
66
  from cecli.run_cmd import run_cmd_async
67
67
  from cecli.tools.utils.output import print_tool_response
68
68
  from cecli.tools.utils.registry import ToolRegistry
69
- from cecli.utils import copy_tool_call, format_tokens, is_image_file
69
+ from cecli.utils import copy_tool_call, format_tokens, is_image_file, safe_relpath
70
70
 
71
71
  from ..dump import dump # noqa: F401
72
72
  from ..prompts.utils.registry import PromptObject, PromptRegistry
@@ -2857,9 +2857,7 @@ class Coder(metaclass=UsageMeta):
2857
2857
 
2858
2858
  retry_config = models.parse_retry_config(self.get_active_model().retries)
2859
2859
 
2860
- should_retry = ex_info.retry
2861
- if ex_info.name == "ServiceUnavailableError":
2862
- should_retry = should_retry or retry_config["retry_on_unavailable"]
2860
+ should_retry, _ = models.parse_model_error(retry_config, err)
2863
2861
 
2864
2862
  if should_retry:
2865
2863
  retry_delay *= retry_config["retry_backoff_factor"]
@@ -4877,7 +4875,7 @@ class Coder(metaclass=UsageMeta):
4877
4875
  return
4878
4876
 
4879
4877
  if not Path(full_path).exists():
4880
- rel_path = os.path.relpath(full_path)
4878
+ rel_path = safe_relpath(full_path)
4881
4879
  if not await self.io.confirm_ask(f"Create new file? ({rel_path})", subject=path):
4882
4880
  self.io.tool_output(f"Skipping edits to {path}")
4883
4881
  return
@@ -10,7 +10,7 @@ from cecli.commands.utils.helpers import (
10
10
  parse_quoted_filenames,
11
11
  quote_filename,
12
12
  )
13
- from cecli.utils import is_image_file, run_fzf
13
+ from cecli.utils import is_image_file, run_fzf, safe_relpath
14
14
 
15
15
 
16
16
  class AddCommand(BaseCommand):
@@ -67,7 +67,7 @@ class AddCommand(BaseCommand):
67
67
  io.tool_output(f"You can add to git with: /git add {fname}")
68
68
  continue
69
69
 
70
- confirm_fname = os.path.relpath(fname)
70
+ confirm_fname = safe_relpath(fname)
71
71
  if len(confirm_fname) > 64:
72
72
  confirm_fname = f".../{os.path.basename(confirm_fname)}"
73
73
 
@@ -0,0 +1,206 @@
1
+ import base64
2
+ import os
3
+ import shutil
4
+ import subprocess
5
+ import tempfile
6
+ from io import BytesIO
7
+ from pathlib import Path
8
+ from typing import List
9
+
10
+ import pyperclip
11
+ from PIL import Image, ImageGrab
12
+
13
+ from cecli.commands.utils.base_command import BaseCommand
14
+ from cecli.commands.utils.helpers import format_command_result
15
+
16
+
17
+ class PasteCommand(BaseCommand):
18
+ NORM_NAME = "paste"
19
+ DESCRIPTION = (
20
+ "Paste image/text from the clipboard into the chat. Optionally provide a name for the"
21
+ " image."
22
+ )
23
+
24
+ @classmethod
25
+ async def execute(cls, io, coder, args, **kwargs):
26
+ try:
27
+ image = cls._grab_clipboard_image(io)
28
+
29
+ if not isinstance(image, Image.Image):
30
+ # Fall back to text when there is no image
31
+ text = cls._read_clipboard_text(io)
32
+ if text:
33
+ if coder.tui and coder.tui():
34
+ coder.tui().set_input_value(text)
35
+ else:
36
+ coder.io.set_placeholder(text)
37
+
38
+ return format_command_result(io, "paste", "Pasted text from clipboard")
39
+
40
+ # On WSL the clipboard is owned by Windows and images are not always
41
+ # bridged to X11/Wayland, so probe the Windows clipboard directly.
42
+ if cls._is_wsl():
43
+ image = cls._grab_clipboard_image_windows(io)
44
+
45
+ if isinstance(image, Image.Image):
46
+ if args.strip():
47
+ filename = args.strip()
48
+ ext = os.path.splitext(filename)[1].lower()
49
+ if ext in (".jpg", ".jpeg", ".png"):
50
+ basename = filename
51
+ else:
52
+ basename = f"{filename}.png"
53
+ else:
54
+ basename = "clipboard_image.png"
55
+
56
+ temp_dir = tempfile.mkdtemp()
57
+ temp_file_path = os.path.join(temp_dir, basename)
58
+ image_format = "PNG" if basename.lower().endswith(".png") else "JPEG"
59
+ if image_format == "JPEG" and image.mode not in ("RGB", "L", "CMYK"):
60
+ image = image.convert("RGB")
61
+
62
+ image.save(temp_file_path, image_format)
63
+
64
+ abs_file_path = Path(temp_file_path).resolve()
65
+
66
+ # Check if a file with the same name already exists in the chat
67
+ existing_file = next(
68
+ (f for f in coder.abs_fnames if Path(f).name == abs_file_path.name), None
69
+ )
70
+ if existing_file:
71
+ coder.abs_fnames.remove(existing_file)
72
+ io.tool_output(f"Replaced existing image in the chat: {existing_file}")
73
+
74
+ coder.abs_fnames.add(str(abs_file_path))
75
+ io.tool_output(f"Added clipboard image to the chat: {abs_file_path}")
76
+ coder.check_added_files()
77
+
78
+ return format_command_result(io, "paste", f"Added clipboard image: {abs_file_path}")
79
+
80
+ io.tool_error("No image or text content found in clipboard.")
81
+ return format_command_result(
82
+ io, "paste", "No content found in clipboard", Exception("No content")
83
+ )
84
+
85
+ except Exception as e:
86
+ io.tool_error(f"Error processing clipboard content: {e}")
87
+ return format_command_result(io, "paste", f"Error: {str(e)}", e)
88
+
89
+ @classmethod
90
+ def get_completions(cls, io, coder, args) -> List[str]:
91
+ """Get completion options for paste command."""
92
+ return []
93
+
94
+ @classmethod
95
+ def get_help(cls) -> str:
96
+ """Get help text for the paste command."""
97
+ help_text = super().get_help()
98
+ help_text += "\nUsage:\n"
99
+ help_text += " /paste # Paste image or text from clipboard\n"
100
+ help_text += " /paste image.png # Paste image with specific filename\n"
101
+ help_text += (
102
+ "\nNote: This command pastes content from your system clipboard into the chat.\n"
103
+ )
104
+ help_text += (
105
+ "If an image is in the clipboard, it will be saved as a file and added to the chat.\n"
106
+ )
107
+ help_text += "If text is in the clipboard, it will be displayed in the chat.\n"
108
+ return help_text
109
+
110
+ @classmethod
111
+ def _grab_clipboard_image(cls, io):
112
+ """Return an image from the clipboard, or None if it cannot be read."""
113
+ try:
114
+ return ImageGrab.grabclipboard()
115
+ except Exception as e:
116
+ # WAYLAND_DISPLAY can be set with no live compositor (e.g. WSLg or a
117
+ # stale SSH env), which makes the Wayland probe fail even though the
118
+ # bridged X11 clipboard works. Retry once over X11.
119
+ if os.environ.get("WAYLAND_DISPLAY"):
120
+ cls._log_clipboard_error(io, f"Wayland image probe failed: {e}")
121
+ return cls._grab_clipboard_image_x11(io)
122
+
123
+ # The image probe can fail even when the text clipboard works, so keep
124
+ # it quiet unless the user asked for detail.
125
+ cls._log_clipboard_error(io, f"Clipboard image read failed: {e}")
126
+ return None
127
+
128
+ @classmethod
129
+ def _grab_clipboard_image_x11(cls, io):
130
+ """Retry the image probe with the Wayland display disabled."""
131
+ wayland_display = os.environ.pop("WAYLAND_DISPLAY", None)
132
+ try:
133
+ return ImageGrab.grabclipboard()
134
+ except Exception as e:
135
+ cls._log_clipboard_error(io, f"Clipboard image read failed over X11: {e}")
136
+ return None
137
+ finally:
138
+ if wayland_display is not None:
139
+ os.environ["WAYLAND_DISPLAY"] = wayland_display
140
+
141
+ @classmethod
142
+ def _grab_clipboard_image_windows(cls, io):
143
+ """Read an image from the Windows clipboard via PowerShell (WSL only)."""
144
+ powershell = shutil.which("powershell.exe")
145
+ if not powershell:
146
+ return None
147
+
148
+ script = (
149
+ "Add-Type -AssemblyName System.Windows.Forms,System.Drawing\n"
150
+ "$img = [System.Windows.Forms.Clipboard]::GetImage()\n"
151
+ "if ($img -eq $null) { exit 1 }\n"
152
+ "$ms = New-Object System.IO.MemoryStream\n"
153
+ "$img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)\n"
154
+ "[Convert]::ToBase64String($ms.ToArray())\n"
155
+ )
156
+ try:
157
+ result = subprocess.run(
158
+ [powershell, "-NoProfile", "-STA", "-Command", script],
159
+ capture_output=True,
160
+ timeout=30,
161
+ )
162
+ except Exception as e:
163
+ cls._log_clipboard_error(io, f"Windows clipboard image read failed: {e}")
164
+ return None
165
+
166
+ if result.returncode != 0 or not result.stdout.strip():
167
+ detail = result.stderr.decode("utf-8", "replace").strip()
168
+ cls._log_clipboard_error(io, f"Windows clipboard image read failed: {detail}")
169
+ return None
170
+
171
+ try:
172
+ image = Image.open(BytesIO(base64.b64decode(result.stdout)))
173
+ image.load()
174
+ return image
175
+ except Exception as e:
176
+ cls._log_clipboard_error(io, f"Windows clipboard image decode failed: {e}")
177
+ return None
178
+
179
+ @classmethod
180
+ def _is_wsl(cls):
181
+ """Detect whether the process is running inside WSL."""
182
+ if os.environ.get("WSL_DISTRO_NAME") or os.environ.get("WSL_INTEROP"):
183
+ return True
184
+
185
+ try:
186
+ with open("/proc/version", "r", encoding="utf-8", errors="ignore") as f:
187
+ return "microsoft" in f.read().lower()
188
+ except OSError:
189
+ return False
190
+
191
+ @classmethod
192
+ def _read_clipboard_text(cls, io):
193
+ """Return clipboard text, or an empty string if it is empty/unavailable."""
194
+ try:
195
+ return pyperclip.paste() or ""
196
+ except Exception as e:
197
+ # pyperclip's WSL backend raises on an empty Windows clipboard
198
+ # (GetBytes(null)), which is not an error worth surfacing.
199
+ cls._log_clipboard_error(io, f"Clipboard text read failed: {e}")
200
+ return ""
201
+
202
+ @classmethod
203
+ def _log_clipboard_error(cls, io, message):
204
+ """Surface clipboard probe errors only in verbose mode."""
205
+ if getattr(io, "verbose", False):
206
+ io.tool_error(message)
@@ -226,11 +226,22 @@ def read_and_merge_all_configs(
226
226
  return merged
227
227
 
228
228
 
229
+ def _safe_deepcopy(val, memo=None):
230
+ try:
231
+ return copy.deepcopy(val, memo)
232
+ except (TypeError, copy.Error):
233
+ if isinstance(val, dict):
234
+ return {k: _safe_deepcopy(v, memo) for k, v in val.items()}
235
+ elif isinstance(val, list):
236
+ return [_safe_deepcopy(item, memo) for item in val]
237
+ return val
238
+
239
+
229
240
  def deep_merge(dict1: dict, dict2: dict, deep_merge_arrays: bool = True) -> dict:
230
241
  """
231
242
  Recursively merges dict2 into dict1.
232
243
  """
233
- merged = copy.deepcopy(dict1)
244
+ merged = _safe_deepcopy(dict1)
234
245
 
235
246
  for key, value in dict2.items():
236
247
  if deep_merge_arrays and value is None:
@@ -248,7 +259,7 @@ def deep_merge(dict1: dict, dict2: dict, deep_merge_arrays: bool = True) -> dict
248
259
  merged[key] = _deduplicate_list(merged[key], value)
249
260
 
250
261
  else:
251
- merged[key] = copy.deepcopy(value)
262
+ merged[key] = _safe_deepcopy(value)
252
263
 
253
264
  return merged
254
265
 
@@ -139,7 +139,7 @@ async def chat_complete(
139
139
  else:
140
140
  post_kwargs["json"] = payload
141
141
 
142
- async with make_client(timeout=DEFAULT_TIMEOUT, verify=VERIFY_SSL) as client:
142
+ async with make_client(timeout=_request_timeout(kwargs), verify=VERIFY_SSL) as client:
143
143
  resp = await client.post(url, headers=hdrs, params=params, **post_kwargs)
144
144
  resp.raise_for_status()
145
145
  data = resp.json()
@@ -191,7 +191,7 @@ async def chat_stream(
191
191
  else:
192
192
  stream_kwargs["json"] = payload
193
193
 
194
- async with make_client(timeout=DEFAULT_TIMEOUT, verify=VERIFY_SSL) as client:
194
+ async with make_client(timeout=_request_timeout(kwargs), verify=VERIFY_SSL) as client:
195
195
  async with client.stream("POST", url, headers=hdrs, params=params, **stream_kwargs) as resp:
196
196
  resp.raise_for_status()
197
197
  last_finish_reason = None
@@ -443,6 +443,19 @@ def _openai_env_override() -> Optional[Tuple[str, Optional[str]]]:
443
443
  return (raw.strip().rstrip("/"), os.environ.get("OPENAI_API_KEY") or None)
444
444
 
445
445
 
446
+ def _request_timeout(kwargs: Dict[str, Any]) -> float:
447
+ """Client timeout in seconds: the configured/request timeout, else the default.
448
+
449
+ The higher-level request kwargs carry ``timeout`` (issue #703); honoring it
450
+ here keeps long non-streaming responses from being cut off at
451
+ :data:`DEFAULT_TIMEOUT`.
452
+ """
453
+ try:
454
+ return float(kwargs.get("timeout") or DEFAULT_TIMEOUT)
455
+ except (TypeError, ValueError):
456
+ return DEFAULT_TIMEOUT
457
+
458
+
446
459
  __all__ = [
447
460
  "chat_payload",
448
461
  "chat_complete",
@@ -402,6 +402,16 @@ class _FacadeException(Exception):
402
402
  for k, v in kwargs.items():
403
403
  setattr(self, k, v)
404
404
 
405
+ def __str__(self) -> str:
406
+ s = super().__str__()
407
+ if s:
408
+ return s
409
+ cause = getattr(self, "__cause__", None)
410
+ if cause is not None:
411
+ cause_str = str(cause) or repr(cause)
412
+ return f"{self.__class__.__name__}: {cause_str}"
413
+ return self.__class__.__name__
414
+
405
415
 
406
416
  class APIConnectionError(_FacadeException):
407
417
  pass
@@ -509,7 +519,7 @@ def _translate_http_error(err: httpx.HTTPStatusError) -> _FacadeException:
509
519
  except Exception:
510
520
  text = ""
511
521
  body = text.lower()
512
- message = text or str(err)
522
+ message = text or str(err) or repr(err)
513
523
 
514
524
  if status == 400 and any(
515
525
  token in body for token in ("context", "context_length", "maximum context")
@@ -874,11 +884,11 @@ class _LiteLLMFacade:
874
884
  **passthrough,
875
885
  )
876
886
  except httpx.TimeoutException as err:
877
- raise Timeout(str(err)) from err
887
+ raise Timeout(str(err) or repr(err)) from err
878
888
  except httpx.HTTPStatusError as err:
879
889
  raise _translate_http_error(err) from err
880
890
  except httpx.HTTPError as err:
881
- raise APIConnectionError(str(err)) from err
891
+ raise APIConnectionError(str(err) or repr(err)) from err
882
892
 
883
893
  return _response_shim(resp, model)
884
894
 
@@ -892,11 +902,11 @@ class _LiteLLMFacade:
892
902
  async for chunk in gen:
893
903
  yield _chunk_shim(chunk, model)
894
904
  except httpx.TimeoutException as err:
895
- raise Timeout(str(err)) from err
905
+ raise Timeout(str(err) or repr(err)) from err
896
906
  except httpx.HTTPStatusError as err:
897
907
  raise _translate_http_error(err) from err
898
908
  except httpx.HTTPError as err:
899
- raise APIConnectionError(str(err)) from err
909
+ raise APIConnectionError(str(err) or repr(err)) from err
900
910
 
901
911
  def stream_chunk_builder(
902
912
  self, chunks: List[Any], messages: Optional[Any] = None, **kwargs: Any
@@ -248,19 +248,30 @@ class SessionManager:
248
248
  self.io.tool_warning(f"Could not restore sub-agent from {sub_file}: {e}")
249
249
 
250
250
  async def _reload_sub_agent(self, service, sub_file: Path) -> None:
251
- """Spawn and restore a single sub-agent from its saved payload."""
251
+ """Spawn and restore a single sub-agent from its saved payload.
252
+
253
+ Only sub-agents that were still relevant when the session was saved are
254
+ rebuilt: independent agents are always restored, while a dependent agent
255
+ is restored only if it had not finished or errored. The transient
256
+ ``memorizer`` helper is never restored.
257
+ """
252
258
  sub_data = self._read_session_payload(sub_file, quiet=True)
253
259
  if not isinstance(sub_data, dict):
254
260
  return
255
261
 
262
+ if not subagents.should_restore_sub_agent(sub_data):
263
+ return
264
+
256
265
  name = subagents.resolve_reload_agent_name(
257
266
  sub_data.get("agent_name") or "worker", sub_data.get("agent_root")
258
267
  )
259
268
  if not name:
260
269
  return
261
270
 
271
+ independent = bool(sub_data.get("independent", True))
272
+
262
273
  new_coder, _info = await service.spawn(
263
- name, parent=self.coder, auto_reap=False, independent=True
274
+ name, parent=self.coder, auto_reap=False, independent=independent
264
275
  )
265
276
 
266
277
  sub_manager = SessionManager(new_coder, self.io)
@@ -14,8 +14,19 @@ def build_payload(coder, io, session_name: str, agent_name: Optional[str] = None
14
14
 
15
15
  ``agent_name`` is the sub-agent type when saving a sub-agent and ``None``
16
16
  for the primary agent. Workspace agents (``ws:*``) also record their root so
17
- a later load can rebuild them at the right path.
17
+ a later load can rebuild them at the right path. Sub-agent payloads also
18
+ record their independence and lifecycle status so a reload can decide
19
+ whether they should be rebuilt.
18
20
  """
21
+ # Sub-agent lifecycle flags come from the AgentService; the primary agent
22
+ # has none and stores ``None`` for both.
23
+ if agent_name:
24
+ from .subagents import sub_agent_state
25
+
26
+ independent, status = sub_agent_state(coder)
27
+ else:
28
+ independent, status = None, None
29
+
19
30
  editable_files = [coder.get_rel_fname(abs_fname) for abs_fname in coder.abs_fnames]
20
31
  read_only_files = [coder.get_rel_fname(abs_fname) for abs_fname in coder.abs_read_only_fnames]
21
32
  read_only_stubs_files = [
@@ -25,11 +36,13 @@ def build_payload(coder, io, session_name: str, agent_name: Optional[str] = None
25
36
  # Flush any queued messages so the saved chat history is complete
26
37
  ConversationService.get_manager(coder).flush_queue()
27
38
 
28
- return {
39
+ payload = {
29
40
  "version": 1,
30
41
  "session_name": session_name,
31
42
  "agent_name": agent_name,
32
43
  "agent_root": str(coder.root) if agent_name and agent_name.startswith("ws:") else None,
44
+ "independent": independent,
45
+ "status": status,
33
46
  "model": coder.main_model.name,
34
47
  "weak_model": coder.main_model.weak_model.name,
35
48
  "editor_model": coder.main_model.editor_model.name,
@@ -66,6 +79,8 @@ def build_payload(coder, io, session_name: str, agent_name: Optional[str] = None
66
79
  },
67
80
  }
68
81
 
82
+ return payload
83
+
69
84
 
70
85
  async def apply_payload(
71
86
  coder, io, session_data: Dict, session_file, sub_agent: bool = False
@@ -12,6 +12,10 @@ from .storage import write_payload
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
+ # The memorizer is a transient helper that is re-spawned on demand; a saved
16
+ # session must never try to resurrect it.
17
+ MEMORIZER_AGENT_NAME = "memorizer"
18
+
15
19
 
16
20
  def detect_agent_name(coder) -> Optional[str]:
17
21
  """Return a coder's sub-agent type, or ``None`` for the primary agent."""
@@ -64,6 +68,33 @@ def live_sub_agents(coder) -> List[Tuple[str, object]]:
64
68
  return agents
65
69
 
66
70
 
71
+ def sub_agent_state(coder) -> Tuple[bool, Optional[str]]:
72
+ """Return ``(independent, status)`` for a tracked sub-agent coder.
73
+
74
+ Falls back to ``(False, None)`` when the coder is not (or no longer) tracked
75
+ by the :class:`AgentService`, so payload building stays safe for callers with
76
+ no live service.
77
+ """
78
+ from cecli.helpers.agents.service import AgentService
79
+
80
+ coder_uuid = getattr(coder, "uuid", None)
81
+ if not isinstance(coder_uuid, str) or not coder_uuid:
82
+ return False, None
83
+
84
+ try:
85
+ service = AgentService.get_instance(coder)
86
+ except Exception:
87
+ return False, None
88
+
89
+ info = service.sub_agents.get(coder_uuid)
90
+ if info is None:
91
+ return False, None
92
+
93
+ status = getattr(getattr(info, "status", None), "value", None)
94
+
95
+ return bool(getattr(info, "independent", False)), status
96
+
97
+
67
98
  def save_sub_agents(coder, io, session_name: str, subs_dir: Path) -> int:
68
99
  """Write each descendant sub-agent payload into ``subs_dir/{child}/agent.json``.
69
100
 
@@ -83,6 +114,27 @@ def save_sub_agents(coder, io, session_name: str, subs_dir: Path) -> int:
83
114
  return written
84
115
 
85
116
 
117
+ def should_restore_sub_agent(sub_data: Dict) -> bool:
118
+ """Return whether a saved sub-agent payload should be rebuilt on load.
119
+
120
+ Independent agents are always restored regardless of how they finished. A
121
+ dependent agent is restored only while it is still unfinished and unerrored.
122
+ The transient ``memorizer`` helper is never restored.
123
+ """
124
+ from cecli.helpers.agents.service import SubAgentStatus
125
+
126
+ agent_name = sub_data.get("agent_name")
127
+ if not agent_name or agent_name == MEMORIZER_AGENT_NAME:
128
+ return False
129
+
130
+ if sub_data.get("independent", True):
131
+ return True
132
+
133
+ status = sub_data.get("status")
134
+
135
+ return status not in (SubAgentStatus.FINISHED.value, SubAgentStatus.ERROR.value)
136
+
137
+
86
138
  def resolve_reload_agent_name(name: str, root: Optional[str]) -> Optional[str]:
87
139
  """Resolve a stored agent type to a registered name, falling back to ``worker``."""
88
140
  from cecli.helpers.agents.service import AgentService
@@ -0,0 +1,86 @@
1
+ """System One decision endpoints, speaking the ``/v1/systemone`` wire format.
2
+
3
+ Three layers live here, from the wire up:
4
+
5
+ - :mod:`cecli.helpers.system_one.types` - the question/answer vocabulary
6
+ (``noul`` / ``choice`` / ``score``) and the parsing of response bodies.
7
+ - :mod:`cecli.helpers.system_one.api` - one call per decision (:func:`decide`,
8
+ :func:`judge`, :func:`rate`) plus :func:`system_one` / :func:`ask` for
9
+ several questions over one state.
10
+ - :mod:`cecli.helpers.system_one.integrations` - the shorthand forms other cecli
11
+ subsystems (hooks today) use, so their call sites stay one-liners.
12
+
13
+ Endpoint settings come from ``--system-one`` (or the ``system-one`` config-file
14
+ key), installed with :func:`configure`, or from ``SYSTEM_ONE_*`` defaults.
15
+ """
16
+
17
+ from cecli.helpers.system_one.api import (
18
+ DECIDE_QUESTION_ID,
19
+ JUDGE_QUESTION_ID,
20
+ RATE_QUESTION_ID,
21
+ ask,
22
+ decide,
23
+ judge,
24
+ rate,
25
+ system_one,
26
+ )
27
+ from cecli.helpers.system_one.client import SystemOneClient, SystemOneError
28
+ from cecli.helpers.system_one.config import (
29
+ DEFAULT_API_BASE,
30
+ ENDPOINT_PATH,
31
+ SystemOneConfig,
32
+ configure,
33
+ get_config,
34
+ is_configured,
35
+ reset,
36
+ )
37
+ from cecli.helpers.system_one.types import (
38
+ CHOICE,
39
+ NOUL,
40
+ QUESTION_TYPES,
41
+ SCORE,
42
+ ChoiceAnswer,
43
+ NoulAnswer,
44
+ ScoreAnswer,
45
+ SystemOneResponse,
46
+ build_payload,
47
+ choice,
48
+ noul,
49
+ parse_answer,
50
+ parse_response,
51
+ score,
52
+ )
53
+
54
+ __all__ = [
55
+ "CHOICE",
56
+ "DEFAULT_API_BASE",
57
+ "DECIDE_QUESTION_ID",
58
+ "JUDGE_QUESTION_ID",
59
+ "RATE_QUESTION_ID",
60
+ "ENDPOINT_PATH",
61
+ "NOUL",
62
+ "QUESTION_TYPES",
63
+ "SCORE",
64
+ "ChoiceAnswer",
65
+ "NoulAnswer",
66
+ "ScoreAnswer",
67
+ "SystemOneClient",
68
+ "SystemOneConfig",
69
+ "SystemOneError",
70
+ "SystemOneResponse",
71
+ "ask",
72
+ "build_payload",
73
+ "choice",
74
+ "configure",
75
+ "decide",
76
+ "get_config",
77
+ "is_configured",
78
+ "judge",
79
+ "noul",
80
+ "parse_answer",
81
+ "parse_response",
82
+ "rate",
83
+ "reset",
84
+ "score",
85
+ "system_one",
86
+ ]