cecli-dev 0.99.7__tar.gz → 0.99.8__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.
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/PKG-INFO +1 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/_version.py +3 -3
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/change_tracker.py +1 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/agent_coder.py +5 -5
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/main.py +22 -126
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/models.py +187 -9
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/agent.yml +3 -9
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/repo.py +8 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/__init__.py +4 -8
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/command.py +8 -4
- cecli_dev-0.99.7/cecli/tools/replace_text.py → cecli_dev-0.99.8/cecli/tools/edit_text.py +174 -74
- cecli_dev-0.99.7/cecli/tools/show_context.py → cecli_dev-0.99.8/cecli/tools/get_lines.py +5 -5
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/registry.py +1 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/watch.py +5 -2
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/agent-mode.md +9 -18
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/model-aliases.md +40 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/SOURCES.txt +4 -6
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_main.py +25 -17
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_models.py +7 -7
- cecli_dev-0.99.7/tests/tools/test_show_context.py → cecli_dev-0.99.8/tests/tools/test_get_lines.py +5 -5
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_insert_block.py +59 -29
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_registry.py +14 -14
- cecli_dev-0.99.7/cecli/tools/delete_text.py +0 -139
- cecli_dev-0.99.7/cecli/tools/insert_text.py +0 -150
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.dockerignore +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.flake8 +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.gitattributes +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.gitignore +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CHANGELOG.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CNAME +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/HISTORY.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/LICENSE.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/MANIFEST.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/README.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/README.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/docker.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/over_time.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/plot.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/plots.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/prompts.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/__main__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/args.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/base_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/add.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/code.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/core.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/git.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/help.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/map.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/model.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/models.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/report.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/run.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/save.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/test.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/web.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/diffs.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/dump.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/editor.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/exceptions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/format_settings.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/help.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/help_pats.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/observations/manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/history.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/io.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/linter.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/llm.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/mdstream.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/onboarding.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/repomap.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/report.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/scrape.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/sendchat.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/sessions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/special.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/context_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/app.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/io.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/urls.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/utils.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/voice.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/waiting.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/docker/Dockerfile +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/pyproject.toml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/pytest.ini +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/requirements.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/requirements.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/30k-image.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/blame.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/homepage.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/issues.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/update-history.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/versionbump.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/setup.cfg +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/shim.pyproject.toml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conftest.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/help/test_help.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/helpers/observations/test_observation_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.99.7 → cecli_dev-0.99.8}/tests/tools/test_grep.py +0 -0
|
@@ -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 = '0.99.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 99,
|
|
21
|
+
__version__ = version = '0.99.8'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 99, 8)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g2e022d0e6'
|
|
@@ -21,7 +21,7 @@ class ChangeTracker:
|
|
|
21
21
|
|
|
22
22
|
Parameters:
|
|
23
23
|
- file_path: Path to the file that was changed
|
|
24
|
-
- change_type: Type of change (e.g., '
|
|
24
|
+
- change_type: Type of change (e.g., 'edittext', 'insertlines')
|
|
25
25
|
- original_content: Original content before the change
|
|
26
26
|
- new_content: New content after the change
|
|
27
27
|
- metadata: Additional information about the change (line numbers, positions, etc.)
|
|
@@ -55,15 +55,15 @@ class AgentCoder(Coder):
|
|
|
55
55
|
"commandinteractive",
|
|
56
56
|
"explorecode",
|
|
57
57
|
"ls",
|
|
58
|
+
"getlines",
|
|
58
59
|
"grep",
|
|
59
|
-
"showcontext",
|
|
60
60
|
"thinking",
|
|
61
61
|
"updatetodolist",
|
|
62
62
|
}
|
|
63
63
|
self.write_tools = {
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
64
|
+
"command",
|
|
65
|
+
"commandinteractive",
|
|
66
|
+
"edittext",
|
|
67
67
|
"undochange",
|
|
68
68
|
}
|
|
69
69
|
self.edit_allowed = False
|
|
@@ -999,7 +999,7 @@ I will proceed based on the tool results and updated context.""")
|
|
|
999
999
|
context_parts.append("\n\n")
|
|
1000
1000
|
context_parts.append("## File Editing Tools Disabled")
|
|
1001
1001
|
context_parts.append(
|
|
1002
|
-
"File editing tools are currently disabled.Use `
|
|
1002
|
+
"File editing tools are currently disabled.Use `GetLines` to determine the"
|
|
1003
1003
|
" current hashline prefixes needed to perform an edit and activate them when you"
|
|
1004
1004
|
" are ready to edit a file."
|
|
1005
1005
|
)
|
|
@@ -361,64 +361,12 @@ def register_litellm_models(git_root, model_metadata_fname, io, verbose=False):
|
|
|
361
361
|
|
|
362
362
|
def load_model_overrides(git_root, model_overrides_fname, io, verbose=False):
|
|
363
363
|
"""Load model tag overrides from a YAML file."""
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
import yaml
|
|
367
|
-
|
|
368
|
-
model_overrides_files = generate_search_path_list(
|
|
369
|
-
".cecli.model.overrides.yml", git_root, model_overrides_fname
|
|
370
|
-
)
|
|
371
|
-
overrides = {}
|
|
372
|
-
files_loaded = []
|
|
373
|
-
for fname in model_overrides_files:
|
|
374
|
-
try:
|
|
375
|
-
if Path(fname).exists():
|
|
376
|
-
with open(fname, "r") as f:
|
|
377
|
-
content = yaml.safe_load(f)
|
|
378
|
-
if content:
|
|
379
|
-
for model_name, tags in content.items():
|
|
380
|
-
if model_name not in overrides:
|
|
381
|
-
overrides[model_name] = {}
|
|
382
|
-
overrides[model_name].update(tags)
|
|
383
|
-
files_loaded.append(fname)
|
|
384
|
-
except Exception as e:
|
|
385
|
-
io.tool_error(f"Error loading model overrides from {fname}: {e}")
|
|
386
|
-
if len(files_loaded) > 0 and verbose:
|
|
387
|
-
io.tool_output("Loaded model overrides from:")
|
|
388
|
-
for file_loaded in files_loaded:
|
|
389
|
-
io.tool_output(f" - {file_loaded}")
|
|
390
|
-
if (
|
|
391
|
-
model_overrides_fname
|
|
392
|
-
and model_overrides_fname not in files_loaded
|
|
393
|
-
and model_overrides_fname != ".cecli.model.overrides.yml"
|
|
394
|
-
):
|
|
395
|
-
io.tool_warning(f"Model Overrides File Not Found: {model_overrides_fname}")
|
|
396
|
-
return overrides
|
|
364
|
+
models.ModelOverrides.load_from_file(git_root, model_overrides_fname, io, verbose=verbose)
|
|
397
365
|
|
|
398
366
|
|
|
399
367
|
def load_model_overrides_from_string(model_overrides_str, io):
|
|
400
368
|
"""Load model tag overrides from a JSON/YAML string."""
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
import yaml
|
|
404
|
-
|
|
405
|
-
overrides = {}
|
|
406
|
-
if not model_overrides_str:
|
|
407
|
-
return overrides
|
|
408
|
-
try:
|
|
409
|
-
try:
|
|
410
|
-
content = json.loads(model_overrides_str)
|
|
411
|
-
except json.JSONDecodeError:
|
|
412
|
-
content = yaml.safe_load(model_overrides_str)
|
|
413
|
-
if content and isinstance(content, dict):
|
|
414
|
-
for model_name, tags in content.items():
|
|
415
|
-
if model_name not in overrides:
|
|
416
|
-
overrides[model_name] = {}
|
|
417
|
-
overrides[model_name].update(tags)
|
|
418
|
-
return overrides
|
|
419
|
-
except Exception as e:
|
|
420
|
-
io.tool_error(f"Error parsing model overrides string: {e}")
|
|
421
|
-
return {}
|
|
369
|
+
models.ModelOverrides.load_from_string(model_overrides_str, io)
|
|
422
370
|
|
|
423
371
|
|
|
424
372
|
async def sanity_check_repo(repo, io):
|
|
@@ -847,105 +795,52 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
|
|
|
847
795
|
if not selected_model_name:
|
|
848
796
|
return await graceful_exit(None, 1)
|
|
849
797
|
args.model = selected_model_name
|
|
850
|
-
|
|
798
|
+
|
|
799
|
+
# Load model tag overrides (stored in ModelOverrides class-level state)
|
|
851
800
|
if args.model_overrides_file:
|
|
852
|
-
|
|
801
|
+
models.ModelOverrides.load_from_file(
|
|
853
802
|
git_root, args.model_overrides_file, io, verbose=args.verbose
|
|
854
803
|
)
|
|
804
|
+
|
|
855
805
|
if args.model_overrides:
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
if model_name not in model_overrides:
|
|
859
|
-
model_overrides[model_name] = {}
|
|
860
|
-
model_overrides[model_name].update(tags)
|
|
861
|
-
override_index = {}
|
|
862
|
-
for base_model, suffixes in model_overrides.items():
|
|
863
|
-
if not isinstance(suffixes, dict):
|
|
864
|
-
continue
|
|
865
|
-
for suffix, cfg in suffixes.items():
|
|
866
|
-
if not isinstance(cfg, dict):
|
|
867
|
-
continue
|
|
868
|
-
full_name = f"{base_model}:{suffix}"
|
|
869
|
-
override_index[full_name] = base_model, cfg
|
|
870
|
-
|
|
871
|
-
def apply_model_overrides(model_name):
|
|
872
|
-
"""Return (effective_model_name, override_kwargs) for a given model_name.
|
|
873
|
-
|
|
874
|
-
If model_name ends with ":suffix" where suffix is configured for the
|
|
875
|
-
prefix (everything before the last colon), we switch to the prefix model
|
|
876
|
-
and apply that override dict. Otherwise we leave the name unchanged
|
|
877
|
-
and return empty overrides.
|
|
878
|
-
"""
|
|
879
|
-
if not model_name:
|
|
880
|
-
return model_name, {}
|
|
881
|
-
prefix = ""
|
|
882
|
-
if model_name.startswith(models.COPY_PASTE_PREFIX):
|
|
883
|
-
prefix = models.COPY_PASTE_PREFIX
|
|
884
|
-
model_name = model_name[len(prefix) :]
|
|
885
|
-
|
|
886
|
-
# Try to find a matching override by checking all possible suffix matches.
|
|
887
|
-
# We iterate from right to left splitting on colons to handle cases where
|
|
888
|
-
# the base model name itself contains colons (e.g. "provider/model:tag:alias")
|
|
889
|
-
parts = model_name.split(":")
|
|
890
|
-
# We need at least one split to have a base and a suffix
|
|
891
|
-
for i in range(len(parts) - 1, 0, -1):
|
|
892
|
-
potential_base = ":".join(parts[:i])
|
|
893
|
-
potential_suffix = ":".join(parts[i:])
|
|
894
|
-
|
|
895
|
-
# Check if this base has the suffix configured
|
|
896
|
-
if potential_base in model_overrides:
|
|
897
|
-
suffixes = model_overrides[potential_base]
|
|
898
|
-
if isinstance(suffixes, dict) and potential_suffix in suffixes:
|
|
899
|
-
cfg = suffixes[potential_suffix]
|
|
900
|
-
if isinstance(cfg, dict):
|
|
901
|
-
model_name = prefix + potential_base
|
|
902
|
-
return model_name, cfg.copy()
|
|
903
|
-
|
|
904
|
-
# No match found
|
|
905
|
-
model_name = prefix + model_name
|
|
906
|
-
return model_name, {}
|
|
907
|
-
|
|
908
|
-
main_model_name, main_model_overrides = apply_model_overrides(args.model)
|
|
909
|
-
weak_model_name, weak_model_overrides = apply_model_overrides(args.weak_model)
|
|
910
|
-
editor_model_name, editor_model_overrides = apply_model_overrides(args.editor_model)
|
|
911
|
-
agent_model_name, agent_model_overrides = apply_model_overrides(args.agent_model)
|
|
806
|
+
models.ModelOverrides.load_from_string(args.model_overrides, io)
|
|
807
|
+
|
|
912
808
|
weak_model_obj = None
|
|
913
|
-
if
|
|
809
|
+
if args.weak_model:
|
|
914
810
|
weak_model_obj = models.Model(
|
|
915
|
-
|
|
811
|
+
args.weak_model,
|
|
916
812
|
weak_model=False,
|
|
917
813
|
verbose=args.verbose,
|
|
918
814
|
io=io,
|
|
919
|
-
override_kwargs=weak_model_overrides,
|
|
920
815
|
retries=args.retries,
|
|
921
816
|
debug=args.debug,
|
|
922
817
|
)
|
|
818
|
+
|
|
923
819
|
editor_model_obj = None
|
|
924
|
-
if
|
|
820
|
+
if args.editor_model:
|
|
925
821
|
editor_model_obj = models.Model(
|
|
926
|
-
|
|
822
|
+
args.editor_model,
|
|
927
823
|
editor_model=False,
|
|
928
824
|
verbose=args.verbose,
|
|
929
825
|
io=io,
|
|
930
|
-
override_kwargs=editor_model_overrides,
|
|
931
826
|
retries=args.retries,
|
|
932
827
|
debug=args.debug,
|
|
933
828
|
)
|
|
829
|
+
|
|
934
830
|
agent_model_obj = None
|
|
935
|
-
if
|
|
831
|
+
if args.agent_model:
|
|
936
832
|
agent_model_obj = models.Model(
|
|
937
|
-
|
|
833
|
+
args.agent_model,
|
|
938
834
|
agent_model=False,
|
|
939
835
|
verbose=args.verbose,
|
|
940
836
|
io=io,
|
|
941
|
-
override_kwargs=agent_model_overrides,
|
|
942
837
|
retries=args.retries,
|
|
943
838
|
debug=args.debug,
|
|
944
839
|
)
|
|
945
840
|
|
|
946
|
-
if
|
|
841
|
+
if args.model.startswith("openrouter/") and not os.environ.get("OPENROUTER_API_KEY"):
|
|
947
842
|
io.tool_warning(
|
|
948
|
-
f"The specified model '{
|
|
843
|
+
f"The specified model '{args.model}' requires an OpenRouter API key, which was not"
|
|
949
844
|
" found."
|
|
950
845
|
)
|
|
951
846
|
if await offer_openrouter_oauth(io):
|
|
@@ -958,24 +853,25 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
|
|
|
958
853
|
return await graceful_exit(None, 1)
|
|
959
854
|
else:
|
|
960
855
|
io.tool_error(
|
|
961
|
-
f"Unable to proceed without an OpenRouter API key for model '{
|
|
856
|
+
f"Unable to proceed without an OpenRouter API key for model '{args.model}'."
|
|
962
857
|
)
|
|
963
858
|
await io.offer_url(
|
|
964
859
|
urls.models_and_keys, "Open documentation URL for more info?", acknowledge=True
|
|
965
860
|
)
|
|
966
861
|
return await graceful_exit(None, 1)
|
|
862
|
+
|
|
967
863
|
main_model = models.Model(
|
|
968
|
-
|
|
864
|
+
args.model,
|
|
969
865
|
weak_model=weak_model_obj,
|
|
970
866
|
editor_model=editor_model_obj,
|
|
971
867
|
agent_model=agent_model_obj,
|
|
972
868
|
editor_edit_format=args.editor_edit_format,
|
|
973
869
|
verbose=args.verbose,
|
|
974
870
|
io=io,
|
|
975
|
-
override_kwargs=main_model_overrides,
|
|
976
871
|
retries=args.retries,
|
|
977
872
|
debug=args.debug,
|
|
978
873
|
)
|
|
874
|
+
|
|
979
875
|
if args.copy_paste and main_model.copy_paste_transport == "api":
|
|
980
876
|
main_model.enable_copy_paste_mode()
|
|
981
877
|
if main_model.remove_reasoning is not None:
|
|
@@ -20,7 +20,7 @@ from cecli import __version__
|
|
|
20
20
|
from cecli.dump import dump
|
|
21
21
|
from cecli.exceptions import LiteLLMExceptions
|
|
22
22
|
from cecli.helpers import nested
|
|
23
|
-
from cecli.helpers.file_searcher import handle_core_files
|
|
23
|
+
from cecli.helpers.file_searcher import generate_search_path_list, handle_core_files
|
|
24
24
|
from cecli.helpers.model_providers import ModelProviderManager
|
|
25
25
|
from cecli.helpers.nested import deep_merge
|
|
26
26
|
from cecli.helpers.requests import model_request_parser
|
|
@@ -310,6 +310,152 @@ class ModelInfoManager:
|
|
|
310
310
|
model_info_manager = ModelInfoManager()
|
|
311
311
|
|
|
312
312
|
|
|
313
|
+
class ModelOverrides:
|
|
314
|
+
"""Class-level manager for model tag overrides (suffix-based model name resolution).
|
|
315
|
+
|
|
316
|
+
Allows users to define model tag overrides like "model:suffix" that map to
|
|
317
|
+
a base model name with specific configuration overrides.
|
|
318
|
+
|
|
319
|
+
State is stored at the class level so it can be loaded once (e.g. from a YAML file
|
|
320
|
+
in the entry point) and automatically applied when Model is instantiated.
|
|
321
|
+
"""
|
|
322
|
+
|
|
323
|
+
_overrides: dict = {}
|
|
324
|
+
_defaults_overrides: dict = {}
|
|
325
|
+
|
|
326
|
+
@classmethod
|
|
327
|
+
def load_from_file(cls, git_root, model_overrides_fname, io, verbose=False):
|
|
328
|
+
"""Load model tag overrides from a YAML file."""
|
|
329
|
+
from pathlib import Path
|
|
330
|
+
|
|
331
|
+
import yaml
|
|
332
|
+
|
|
333
|
+
model_overrides_files = generate_search_path_list(
|
|
334
|
+
".cecli.model.overrides.yml", git_root, model_overrides_fname
|
|
335
|
+
)
|
|
336
|
+
overrides = {}
|
|
337
|
+
files_loaded = []
|
|
338
|
+
for fname in model_overrides_files:
|
|
339
|
+
try:
|
|
340
|
+
if Path(fname).exists():
|
|
341
|
+
with open(fname, "r") as f:
|
|
342
|
+
content = yaml.safe_load(f)
|
|
343
|
+
if content:
|
|
344
|
+
for model_name, tags in content.items():
|
|
345
|
+
if model_name not in overrides:
|
|
346
|
+
overrides[model_name] = {}
|
|
347
|
+
overrides[model_name].update(tags)
|
|
348
|
+
files_loaded.append(fname)
|
|
349
|
+
except Exception as e:
|
|
350
|
+
io.tool_error(f"Error loading model overrides from {fname}: {e}")
|
|
351
|
+
if len(files_loaded) > 0 and verbose:
|
|
352
|
+
io.tool_output("Loaded model overrides from:")
|
|
353
|
+
for file_loaded in files_loaded:
|
|
354
|
+
io.tool_output(f" - {file_loaded}")
|
|
355
|
+
if (
|
|
356
|
+
model_overrides_fname
|
|
357
|
+
and model_overrides_fname not in files_loaded
|
|
358
|
+
and model_overrides_fname != ".cecli.model.overrides.yml"
|
|
359
|
+
):
|
|
360
|
+
io.tool_warning(f"Model Overrides File Not Found: {model_overrides_fname}")
|
|
361
|
+
cls._from_file_or_string(overrides)
|
|
362
|
+
|
|
363
|
+
@classmethod
|
|
364
|
+
def load_from_string(cls, model_overrides_str, io):
|
|
365
|
+
"""Load model tag overrides from a JSON/YAML string."""
|
|
366
|
+
import json
|
|
367
|
+
|
|
368
|
+
import yaml
|
|
369
|
+
|
|
370
|
+
overrides = {}
|
|
371
|
+
if not model_overrides_str:
|
|
372
|
+
return
|
|
373
|
+
try:
|
|
374
|
+
try:
|
|
375
|
+
content = json.loads(model_overrides_str)
|
|
376
|
+
except json.JSONDecodeError:
|
|
377
|
+
content = yaml.safe_load(model_overrides_str)
|
|
378
|
+
if content and isinstance(content, dict):
|
|
379
|
+
for model_name, tags in content.items():
|
|
380
|
+
if model_name not in overrides:
|
|
381
|
+
overrides[model_name] = {}
|
|
382
|
+
overrides[model_name].update(tags)
|
|
383
|
+
except Exception as e:
|
|
384
|
+
io.tool_error(f"Error parsing model overrides string: {e}")
|
|
385
|
+
return
|
|
386
|
+
cls._from_file_or_string(overrides)
|
|
387
|
+
|
|
388
|
+
@classmethod
|
|
389
|
+
def _from_file_or_string(cls, overrides):
|
|
390
|
+
"""Internal: process raw overrides dict into class-level state."""
|
|
391
|
+
# Extract 'defaults' key for direct model name matching
|
|
392
|
+
defaults_overrides = {}
|
|
393
|
+
if "defaults" in overrides:
|
|
394
|
+
defaults_overrides = overrides.pop("defaults")
|
|
395
|
+
if not isinstance(defaults_overrides, dict):
|
|
396
|
+
defaults_overrides = {}
|
|
397
|
+
|
|
398
|
+
# Merge into class-level state
|
|
399
|
+
for model_name, tags in overrides.items():
|
|
400
|
+
if model_name not in cls._overrides:
|
|
401
|
+
cls._overrides[model_name] = {}
|
|
402
|
+
if isinstance(tags, dict):
|
|
403
|
+
cls._overrides[model_name].update(tags)
|
|
404
|
+
|
|
405
|
+
# Merge defaults
|
|
406
|
+
for model_name, tags in defaults_overrides.items():
|
|
407
|
+
if model_name not in cls._defaults_overrides:
|
|
408
|
+
cls._defaults_overrides[model_name] = {}
|
|
409
|
+
if isinstance(tags, dict):
|
|
410
|
+
cls._defaults_overrides[model_name].update(tags)
|
|
411
|
+
|
|
412
|
+
@classmethod
|
|
413
|
+
def apply(cls, model_name):
|
|
414
|
+
"""Return (effective_model_name, override_kwargs) for a given model_name.
|
|
415
|
+
|
|
416
|
+
If model_name ends with ":suffix" where suffix is configured for the
|
|
417
|
+
prefix (everything before the last colon), we return the prefix model
|
|
418
|
+
and the associated override dict. Otherwise we leave the name unchanged
|
|
419
|
+
and return empty overrides.
|
|
420
|
+
|
|
421
|
+
NOTE: COPY_PASTE_PREFIX handling is done by Model.__init__ before this
|
|
422
|
+
method is called, so we only work with the clean model name here.
|
|
423
|
+
"""
|
|
424
|
+
if not model_name:
|
|
425
|
+
return model_name, {}
|
|
426
|
+
|
|
427
|
+
# Try to find a matching override by checking all possible suffix matches.
|
|
428
|
+
# We iterate from right to left splitting on colons to handle cases where
|
|
429
|
+
# the base model name itself contains colons (e.g. "provider/model:tag:alias")
|
|
430
|
+
parts = model_name.split(":")
|
|
431
|
+
for i in range(len(parts) - 1, 0, -1):
|
|
432
|
+
potential_base = ":".join(parts[:i])
|
|
433
|
+
potential_suffix = ":".join(parts[i:])
|
|
434
|
+
|
|
435
|
+
# Check if this base has the suffix configured
|
|
436
|
+
if potential_base in cls._overrides:
|
|
437
|
+
suffixes = cls._overrides[potential_base]
|
|
438
|
+
if isinstance(suffixes, dict) and potential_suffix in suffixes:
|
|
439
|
+
cfg = suffixes[potential_suffix]
|
|
440
|
+
if isinstance(cfg, dict):
|
|
441
|
+
return potential_base, cfg.copy()
|
|
442
|
+
|
|
443
|
+
# Check for direct match in defaults overrides
|
|
444
|
+
if model_name in cls._defaults_overrides:
|
|
445
|
+
cfg = cls._defaults_overrides[model_name]
|
|
446
|
+
if isinstance(cfg, dict):
|
|
447
|
+
return model_name, cfg.copy()
|
|
448
|
+
|
|
449
|
+
# No match found
|
|
450
|
+
return model_name, {}
|
|
451
|
+
|
|
452
|
+
@classmethod
|
|
453
|
+
def clear(cls):
|
|
454
|
+
"""Reset all model overrides."""
|
|
455
|
+
cls._overrides = {}
|
|
456
|
+
cls._defaults_overrides = {}
|
|
457
|
+
|
|
458
|
+
|
|
313
459
|
class Model(ModelSettings):
|
|
314
460
|
def __init__(
|
|
315
461
|
self,
|
|
@@ -325,9 +471,7 @@ class Model(ModelSettings):
|
|
|
325
471
|
|
|
326
472
|
io = kwargs.get("io", nested.getter(from_model, "io", None))
|
|
327
473
|
verbose = kwargs.get("verbose", nested.getter(from_model, "verbose", False))
|
|
328
|
-
override_kwargs = kwargs.get(
|
|
329
|
-
"override_kwargs", nested.getter(from_model, "override_kwargs", None)
|
|
330
|
-
)
|
|
474
|
+
override_kwargs = kwargs.get("override_kwargs", None)
|
|
331
475
|
retries = kwargs.get("retries", nested.getter(from_model, "retries", None))
|
|
332
476
|
debug = kwargs.get("debug", nested.getter(from_model, "debug", False))
|
|
333
477
|
|
|
@@ -357,6 +501,20 @@ class Model(ModelSettings):
|
|
|
357
501
|
else:
|
|
358
502
|
model = provided_model
|
|
359
503
|
model = MODEL_ALIASES.get(model, model)
|
|
504
|
+
|
|
505
|
+
# Resolve model tag overrides (suffix-based model name resolution)
|
|
506
|
+
resolved_model, resolved_overrides = ModelOverrides.apply(model)
|
|
507
|
+
|
|
508
|
+
if resolved_overrides:
|
|
509
|
+
model = resolved_model
|
|
510
|
+
merged = resolved_overrides.copy()
|
|
511
|
+
|
|
512
|
+
if override_kwargs:
|
|
513
|
+
merged.update(override_kwargs)
|
|
514
|
+
|
|
515
|
+
override_kwargs = merged
|
|
516
|
+
self.override_kwargs = override_kwargs
|
|
517
|
+
|
|
360
518
|
self.name = model
|
|
361
519
|
self.max_chat_history_tokens = 1024
|
|
362
520
|
self.weak_model = None
|
|
@@ -435,7 +593,7 @@ class Model(ModelSettings):
|
|
|
435
593
|
valid_model_settings_fields = {f.name for f in fields(ModelSettings)}
|
|
436
594
|
|
|
437
595
|
for key, value in self.override_kwargs.items():
|
|
438
|
-
if key == "model_settings":
|
|
596
|
+
if key == "model_settings" or key == "model-settings":
|
|
439
597
|
if not isinstance(value, dict):
|
|
440
598
|
raise ValueError(
|
|
441
599
|
f"override_kwargs 'model_settings' must be a dict, got {type(value)}"
|
|
@@ -1005,13 +1163,16 @@ class Model(ModelSettings):
|
|
|
1005
1163
|
override_kwargs.pop("temperature", None)
|
|
1006
1164
|
|
|
1007
1165
|
effective_tools = tools
|
|
1166
|
+
|
|
1008
1167
|
if effective_tools is None and functions:
|
|
1009
1168
|
effective_tools = [dict(type="function", function=f) for f in functions]
|
|
1169
|
+
|
|
1010
1170
|
if effective_tools:
|
|
1011
1171
|
sorted_tools = sorted(
|
|
1012
1172
|
effective_tools, key=lambda x: x.get("function", {}).get("name", "Invalid Name")
|
|
1013
1173
|
)
|
|
1014
1174
|
kwargs["tools"] = sorted_tools
|
|
1175
|
+
|
|
1015
1176
|
if functions and len(functions) == 1:
|
|
1016
1177
|
function = functions[0]
|
|
1017
1178
|
if "name" in function:
|
|
@@ -1055,9 +1216,17 @@ class Model(ModelSettings):
|
|
|
1055
1216
|
}
|
|
1056
1217
|
|
|
1057
1218
|
if kwargs.get("headers", None):
|
|
1058
|
-
kwargs["headers"].update(
|
|
1219
|
+
kwargs["headers"].update(
|
|
1220
|
+
{
|
|
1221
|
+
"User-Agent": f"cecli/{__version__}",
|
|
1222
|
+
"Connection": "close",
|
|
1223
|
+
}
|
|
1224
|
+
)
|
|
1059
1225
|
else:
|
|
1060
|
-
kwargs["headers"] = {
|
|
1226
|
+
kwargs["headers"] = {
|
|
1227
|
+
"User-Agent": f"cecli/{__version__}",
|
|
1228
|
+
"Connection": "close",
|
|
1229
|
+
}
|
|
1061
1230
|
|
|
1062
1231
|
litellm_ex = LiteLLMExceptions()
|
|
1063
1232
|
retry_delay = 0.125
|
|
@@ -1124,7 +1293,12 @@ class Model(ModelSettings):
|
|
|
1124
1293
|
await asyncio.sleep(retry_delay)
|
|
1125
1294
|
continue
|
|
1126
1295
|
|
|
1127
|
-
async def simple_send_with_retries(
|
|
1296
|
+
async def simple_send_with_retries(
|
|
1297
|
+
self,
|
|
1298
|
+
messages,
|
|
1299
|
+
max_tokens=None,
|
|
1300
|
+
override_kwargs={},
|
|
1301
|
+
):
|
|
1128
1302
|
from cecli.exceptions import LiteLLMExceptions
|
|
1129
1303
|
|
|
1130
1304
|
litellm_ex = LiteLLMExceptions()
|
|
@@ -1134,7 +1308,11 @@ class Model(ModelSettings):
|
|
|
1134
1308
|
while True:
|
|
1135
1309
|
try:
|
|
1136
1310
|
_hash, response = await self.send_completion(
|
|
1137
|
-
messages=messages,
|
|
1311
|
+
messages=messages,
|
|
1312
|
+
functions=None,
|
|
1313
|
+
stream=False,
|
|
1314
|
+
max_tokens=max_tokens,
|
|
1315
|
+
override_kwargs=override_kwargs,
|
|
1138
1316
|
)
|
|
1139
1317
|
if (
|
|
1140
1318
|
not response
|
|
@@ -19,7 +19,7 @@ main_system: |
|
|
|
19
19
|
## Core Directives
|
|
20
20
|
**Act Proactively**: Autonomously use discovery and management tools to fulfill the request. Chain tool calls across multiple turns for continuous exploration.
|
|
21
21
|
**Be Decisive**: Trust your findings. Do not repeat identical searches or ask redundant questions.
|
|
22
|
-
**Be Efficient**:
|
|
22
|
+
**Be Efficient**: Use multiple tools each turn when possible. Batch tool calls when tools allow you to. Respect usage limits while maximizing the utility of each turn.
|
|
23
23
|
**Be Persistent**: Do not take short cuts. Work through your task until completion. No task takes too long as long as you are making progress towards the goal.
|
|
24
24
|
</context>
|
|
25
25
|
|
|
@@ -46,14 +46,8 @@ main_system: |
|
|
|
46
46
|
|
|
47
47
|
## Todo List Management
|
|
48
48
|
- Use `UpdateTodoList` to keep the state synchronized as you complete subtasks.
|
|
49
|
-
- Break complex tasks and long edits into
|
|
49
|
+
- Break complex tasks and long edits into smaller steps so they remain tractable and context-efficient
|
|
50
50
|
|
|
51
|
-
### Editing Tool Protocol
|
|
52
|
-
|
|
53
|
-
**MANDATORY Two-Phase Safety Protocol**:
|
|
54
|
-
1. **Phase 1**: Use `ShowContext` to gather the hashline-prefixed content of the section to modify. Capture entire functions, logical blocks and closures.
|
|
55
|
-
2. **Phase 2**: Execute the edit (`ReplaceText`, `InsertText`, `DeleteText`) using the verified hashlines prefixes from the `ShowContext` tool.
|
|
56
|
-
|
|
57
51
|
**Atomic Scope:** Include the **entire function or logical block**. Never return partial syntax or broken closures. Do not attempt to replace just the beginning or end of a closure.
|
|
58
52
|
**Indentation**: Preserve all necessary whitespace (spaces, tabs, and newlines) and stylistic indentation.
|
|
59
53
|
</context>
|
|
@@ -66,7 +60,7 @@ system_reminder: |
|
|
|
66
60
|
## Operational Rules
|
|
67
61
|
- **Scope**: No unrequested refactors. Edit files incrementally; avoid full-file rewrites.
|
|
68
62
|
- **Hygiene**: Use `ContextManager`/`RemoveSkill` to evict unneeded files/skills immediately after use.
|
|
69
|
-
- **
|
|
63
|
+
- **Preparation**: Use `GetLines` to verify hashline ranges before every edit. Capture entire functions, logical blocks and closures.
|
|
70
64
|
- **Outputs**: Tool calls trigger turns. Never include tool syntax in final user summaries.
|
|
71
65
|
- **Sandbox**: Perform all verification and temp logic in `.cecli/temp`.
|
|
72
66
|
- **Vibe**: Zero conversational filler. Do not confirm instructions or state "I understand." Provide status updates only when you have new information.
|
|
@@ -428,7 +428,14 @@ class GitRepo:
|
|
|
428
428
|
if max_tokens and num_tokens > max_tokens:
|
|
429
429
|
continue
|
|
430
430
|
|
|
431
|
-
commit_message = await model.simple_send_with_retries(
|
|
431
|
+
commit_message = await model.simple_send_with_retries(
|
|
432
|
+
messages,
|
|
433
|
+
override_kwargs={
|
|
434
|
+
"reasoning_effort": None,
|
|
435
|
+
"thinking": None,
|
|
436
|
+
"drop_params": True,
|
|
437
|
+
},
|
|
438
|
+
)
|
|
432
439
|
if commit_message:
|
|
433
440
|
break # Found a model that could generate the message
|
|
434
441
|
|
|
@@ -6,9 +6,10 @@ from . import (
|
|
|
6
6
|
command,
|
|
7
7
|
command_interactive,
|
|
8
8
|
context_manager,
|
|
9
|
-
|
|
9
|
+
edit_text,
|
|
10
10
|
explore_code,
|
|
11
11
|
finished,
|
|
12
|
+
get_lines,
|
|
12
13
|
git_branch,
|
|
13
14
|
git_diff,
|
|
14
15
|
git_log,
|
|
@@ -16,12 +17,9 @@ from . import (
|
|
|
16
17
|
git_show,
|
|
17
18
|
git_status,
|
|
18
19
|
grep,
|
|
19
|
-
insert_text,
|
|
20
20
|
load_skill,
|
|
21
21
|
ls,
|
|
22
22
|
remove_skill,
|
|
23
|
-
replace_text,
|
|
24
|
-
show_context,
|
|
25
23
|
thinking,
|
|
26
24
|
undo_change,
|
|
27
25
|
update_todo_list,
|
|
@@ -32,9 +30,10 @@ TOOL_MODULES = [
|
|
|
32
30
|
command,
|
|
33
31
|
command_interactive,
|
|
34
32
|
context_manager,
|
|
35
|
-
|
|
33
|
+
edit_text,
|
|
36
34
|
explore_code,
|
|
37
35
|
finished,
|
|
36
|
+
get_lines,
|
|
38
37
|
git_branch,
|
|
39
38
|
git_diff,
|
|
40
39
|
git_log,
|
|
@@ -42,12 +41,9 @@ TOOL_MODULES = [
|
|
|
42
41
|
git_show,
|
|
43
42
|
git_status,
|
|
44
43
|
grep,
|
|
45
|
-
insert_text,
|
|
46
44
|
load_skill,
|
|
47
45
|
ls,
|
|
48
46
|
remove_skill,
|
|
49
|
-
replace_text,
|
|
50
|
-
show_context,
|
|
51
47
|
thinking,
|
|
52
48
|
undo_change,
|
|
53
49
|
update_todo_list,
|
|
@@ -255,8 +255,10 @@ class Tool(BaseTool):
|
|
|
255
255
|
f"[Large Response ({total_size} characters). "
|
|
256
256
|
"Output saved to paginated files.]\n"
|
|
257
257
|
f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
|
|
258
|
-
"Use the `ContextManager` tool to view these files
|
|
259
|
-
"
|
|
258
|
+
"Use the `ContextManager` tool to view these files."
|
|
259
|
+
"Do not use standard cli tools to view these files."
|
|
260
|
+
"Remove them from context after taking note of the relevant information "
|
|
261
|
+
"in the output to prevent overfilling stale context."
|
|
260
262
|
)
|
|
261
263
|
|
|
262
264
|
# Remove from background tracking since it's done
|
|
@@ -339,8 +341,10 @@ class Tool(BaseTool):
|
|
|
339
341
|
f"[Large Response ({total_size} characters). "
|
|
340
342
|
"Output saved to paginated files.]\n"
|
|
341
343
|
f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
|
|
342
|
-
"Use the `ContextManager` tool to view these files
|
|
343
|
-
"
|
|
344
|
+
"Use the `ContextManager` tool to view these files."
|
|
345
|
+
"Do not use standard cli tools to view these files."
|
|
346
|
+
"Remove them from context after taking note of the relevant information "
|
|
347
|
+
"in the output to prevent overfilling stale context."
|
|
344
348
|
)
|
|
345
349
|
|
|
346
350
|
if tui:
|