cecli-dev 0.97.2__tar.gz → 0.97.4__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.97.2 → cecli_dev-0.97.4}/PKG-INFO +4 -4
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/README.md +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/benchmark.py +1 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/__init__.py +1 -1
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/_version.py +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/args.py +12 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/agent_coder.py +43 -23
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/architect_coder.py +4 -6
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/base_coder.py +41 -104
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/agent_model.py +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/editor_model.py +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/model.py +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/save_session.py +10 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/tokens.py +1 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/utils/base_command.py +3 -5
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/weak_model.py +3 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/integration.py +2 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/manager.py +28 -23
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/hashline.py +434 -199
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/nested.py +15 -0
- cecli_dev-0.97.4/cecli/helpers/responses.py +132 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/skills.py +5 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/main.py +29 -2
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/models.py +4 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/agent.yml +3 -2
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/hashline.yml +16 -19
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/resources/model-metadata.json +22789 -15822
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/scrape.py +1 -1
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/command.py +6 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/context_manager.py +9 -1
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/grep.py +22 -5
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/update_todo_list.py +0 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/app.py +44 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/input_area.py +15 -11
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/output.py +4 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/agent-mode.md +1 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/tui.md +1 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/imports.md +1 -5
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/PKG-INFO +4 -4
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/SOURCES.txt +0 -3
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/filter-chat-mode.js +35 -5
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_hashline.py +4 -79
- cecli_dev-0.97.2/cecli/helpers/responses.py +0 -21
- cecli_dev-0.97.2/cecli/website/docs/install/codespaces.md +0 -39
- cecli_dev-0.97.2/cecli/website/docs/install/replit.md +0 -8
- cecli_dev-0.97.2/cecli/website/docs/usage/tutorials.md +0 -30
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.dockerignore +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.flake8 +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.gitattributes +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.gitignore +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/CHANGELOG.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/CNAME +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/HISTORY.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/LICENSE.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/MANIFEST.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/README.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/docker.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/over_time.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/plot.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/plots.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/primary_variations.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/prompts.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/__main__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/add.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/code.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/context.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/core.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/git.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/help.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/load.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/map.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/models.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/report.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/run.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/save.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/test.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/commands/web.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/diffs.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/dump.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/editor.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/exceptions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/format_settings.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/help.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/help_pats.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/history.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/io.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/linter.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/llm.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/mdstream.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/onboarding.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/repo.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/repomap.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/report.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/sendchat.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/sessions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/special.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/delete_text.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/indent_text.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/insert_text.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/list_changes.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/replace_text.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/show_numbered_context.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/view_files_matching.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tools/view_files_with_symbol.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/io.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/urls.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/utils.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/voice.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/waiting.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/watch.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/recordings/auto-accept-architect.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/recordings/dont-drop-original-read-files.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/recordings/index.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/recordings/model-accepts-settings.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/recordings/tree-sitter-language-pack.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/sessions.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/browser.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/caching.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/docker/Dockerfile +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/pyproject.toml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/pytest.ini +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/requirements.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/requirements.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/30k-image.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/blame.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/homepage.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/issues.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/update-history.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/versionbump.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/setup.cfg +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/shim.pyproject.toml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/conftest.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/help/test_help.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/test_conversation_integration.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/test_conversation_system.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.97.2 → cecli_dev-0.97.4}/tests/tools/test_show_numbered_context.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 0.97.
|
|
3
|
+
Version: 0.97.4
|
|
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
|
|
@@ -84,12 +84,12 @@ Dynamic: license-file
|
|
|
84
84
|
|
|
85
85
|
## Why `cecli`?
|
|
86
86
|
|
|
87
|
-
`cecli` (probably pronounced like "Cecily"
|
|
88
|
-
Aider is a fantastic piece of software with a wonderful community but it has been painfully slow in receiving updates in the quickly evolving AI tooling space.
|
|
87
|
+
`cecli` (probably pronounced like "Cecily") is yet another cli agent crafted for extensibility and customization. Originally a fork of the [Aider](https://cecli.dev/) AI pair programming tool, we aim to make agentic coding as maximally effective as it can be based on the growing capabilities of large language models.
|
|
89
88
|
|
|
90
|
-
We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in
|
|
89
|
+
We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in the principles of FOSS and actively welcome contributors of all skill levels.
|
|
91
90
|
|
|
92
91
|
If you are looking for bleeding-edge features or want to get your hands dirty with the internals of an AI coding agent, here's your sign.
|
|
92
|
+
|
|
93
93
|
LLMs are a part of our lives from here on out so join us in learning about and crafting the future.
|
|
94
94
|
|
|
95
95
|
### Links
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
## Why `cecli`?
|
|
2
2
|
|
|
3
|
-
`cecli` (probably pronounced like "Cecily"
|
|
4
|
-
Aider is a fantastic piece of software with a wonderful community but it has been painfully slow in receiving updates in the quickly evolving AI tooling space.
|
|
3
|
+
`cecli` (probably pronounced like "Cecily") is yet another cli agent crafted for extensibility and customization. Originally a fork of the [Aider](https://cecli.dev/) AI pair programming tool, we aim to make agentic coding as maximally effective as it can be based on the growing capabilities of large language models.
|
|
5
4
|
|
|
6
|
-
We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in
|
|
5
|
+
We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in the principles of FOSS and actively welcome contributors of all skill levels.
|
|
7
6
|
|
|
8
7
|
If you are looking for bleeding-edge features or want to get your hands dirty with the internals of an AI coding agent, here's your sign.
|
|
8
|
+
|
|
9
9
|
LLMs are a part of our lives from here on out so join us in learning about and crafting the future.
|
|
10
10
|
|
|
11
11
|
### Links
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.97.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 97,
|
|
31
|
+
__version__ = version = '0.97.4'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 97, 4)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g3f41a1bc9'
|
|
@@ -254,6 +254,18 @@ def get_parser(default_config_files, git_root):
|
|
|
254
254
|
" If unspecified, defaults to the model's max_chat_history_tokens."
|
|
255
255
|
),
|
|
256
256
|
)
|
|
257
|
+
group.add_argument(
|
|
258
|
+
"--max-reflections",
|
|
259
|
+
type=int,
|
|
260
|
+
default=3,
|
|
261
|
+
help="Maximum number of retries a model gets on malformed outputs (default: 3)",
|
|
262
|
+
)
|
|
263
|
+
group.add_argument(
|
|
264
|
+
"--cost-limit",
|
|
265
|
+
type=float,
|
|
266
|
+
default=None,
|
|
267
|
+
help="Cost limit per session, exceeding this forces prompt confirmation (default: None)",
|
|
268
|
+
)
|
|
257
269
|
group.add_argument(
|
|
258
270
|
"--file-diffs",
|
|
259
271
|
action=argparse.BooleanOptionalAction,
|
|
@@ -7,7 +7,7 @@ import platform
|
|
|
7
7
|
import random
|
|
8
8
|
import time
|
|
9
9
|
import traceback
|
|
10
|
-
from collections import
|
|
10
|
+
from collections import defaultdict
|
|
11
11
|
from datetime import datetime
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
|
|
@@ -85,13 +85,18 @@ class AgentCoder(Coder):
|
|
|
85
85
|
self.allowed_context_blocks = set()
|
|
86
86
|
self.context_block_tokens = {}
|
|
87
87
|
self.context_blocks_cache = {}
|
|
88
|
+
self.hot_reload_enabled = False
|
|
88
89
|
self.tokens_calculated = False
|
|
89
90
|
self.skip_cli_confirmations = False
|
|
90
91
|
self.agent_finished = False
|
|
91
92
|
self.agent_config = self._get_agent_config()
|
|
93
|
+
self._setup_agent()
|
|
92
94
|
ToolRegistry.build_registry(agent_config=self.agent_config)
|
|
93
95
|
super().__init__(*args, **kwargs)
|
|
94
96
|
|
|
97
|
+
def _setup_agent(self):
|
|
98
|
+
os.makedirs(".cecli/workspace", exist_ok=True)
|
|
99
|
+
|
|
95
100
|
def _get_agent_config(self):
|
|
96
101
|
"""
|
|
97
102
|
Parse and return agent configuration from args.agent_config.
|
|
@@ -119,6 +124,7 @@ class AgentCoder(Coder):
|
|
|
119
124
|
config, "skip_cli_confirmations", nested.getter(config, "yolo", [])
|
|
120
125
|
)
|
|
121
126
|
config["command_timeout"] = nested.getter(config, "command_timeout", 30)
|
|
127
|
+
config["hot_reload"] = nested.getter(config, "hot_reload", False)
|
|
122
128
|
|
|
123
129
|
config["tools_paths"] = nested.getter(config, "tools_paths", [])
|
|
124
130
|
config["tools_includelist"] = nested.getter(
|
|
@@ -147,7 +153,7 @@ class AgentCoder(Coder):
|
|
|
147
153
|
|
|
148
154
|
self.large_file_token_threshold = config["large_file_token_threshold"]
|
|
149
155
|
self.skip_cli_confirmations = config["skip_cli_confirmations"]
|
|
150
|
-
|
|
156
|
+
self.hot_reload_enabled = config["hot_reload"]
|
|
151
157
|
self.allowed_context_blocks = config["include_context_blocks"]
|
|
152
158
|
|
|
153
159
|
for context_block in config["exclude_context_blocks"]:
|
|
@@ -259,6 +265,7 @@ class AgentCoder(Coder):
|
|
|
259
265
|
try:
|
|
260
266
|
parsed_args_list.append(json.loads(chunk))
|
|
261
267
|
except json.JSONDecodeError as e:
|
|
268
|
+
self.model_kwargs = {}
|
|
262
269
|
self.io.tool_warning(
|
|
263
270
|
f"Could not parse JSON chunk for tool {tool_name}: {chunk}"
|
|
264
271
|
)
|
|
@@ -320,6 +327,7 @@ class AgentCoder(Coder):
|
|
|
320
327
|
|
|
321
328
|
result_message = "\n\n".join(all_results_content)
|
|
322
329
|
except Exception as e:
|
|
330
|
+
self.model_kwargs = {}
|
|
323
331
|
result_message = f"Error executing {tool_name}: {e}"
|
|
324
332
|
self.io.tool_error(f"""Error during {tool_name} execution: {e}
|
|
325
333
|
{traceback.format_exc()}""")
|
|
@@ -843,6 +851,10 @@ I will proceed based on the tool results and updated context.""")
|
|
|
843
851
|
self.files_edited_by_tools = set()
|
|
844
852
|
return False
|
|
845
853
|
|
|
854
|
+
async def hot_reload(self):
|
|
855
|
+
if self.hot_reload_enabled:
|
|
856
|
+
self.skills_manager.hot_reload()
|
|
857
|
+
|
|
846
858
|
async def _execute_tool_with_registry(self, norm_tool_name, params):
|
|
847
859
|
"""
|
|
848
860
|
Execute a tool using the tool registry.
|
|
@@ -879,12 +891,9 @@ I will proceed based on the tool results and updated context.""")
|
|
|
879
891
|
"""
|
|
880
892
|
Identifies repetitive tool usage patterns from rounds of tool calls.
|
|
881
893
|
|
|
882
|
-
This method
|
|
894
|
+
This method uses similarity-based detection:
|
|
883
895
|
1. If the last round contained a write tool, it assumes progress and returns no repetitive tools.
|
|
884
|
-
2. It checks for
|
|
885
|
-
3. If no tools are repeated, but all tools in the history are read tools,
|
|
886
|
-
it flags all of them as potentially repetitive.
|
|
887
|
-
4. It checks for similarity-based repetition using cosine similarity on tool call strings.
|
|
896
|
+
2. It checks for similarity-based repetition using cosine similarity on tool call strings.
|
|
888
897
|
|
|
889
898
|
It avoids flagging repetition if a "write" tool was used recently,
|
|
890
899
|
as that suggests progress is being made.
|
|
@@ -893,9 +902,6 @@ I will proceed based on the tool results and updated context.""")
|
|
|
893
902
|
if history_len < 5:
|
|
894
903
|
return set()
|
|
895
904
|
similarity_repetitive_tools = self._get_repetitive_tools_by_similarity()
|
|
896
|
-
all_tools = []
|
|
897
|
-
for round_tools in self.tool_usage_history:
|
|
898
|
-
all_tools.extend(round_tools)
|
|
899
905
|
if self.last_round_tools:
|
|
900
906
|
last_round_has_write = any(
|
|
901
907
|
tool.lower() in self.write_tools for tool in self.last_round_tools
|
|
@@ -909,24 +915,14 @@ I will proceed based on the tool results and updated context.""")
|
|
|
909
915
|
if tool.lower() in self.read_tools or tool.lower() in self.write_tools
|
|
910
916
|
}
|
|
911
917
|
return filtered_similarity_tools if len(filtered_similarity_tools) else set()
|
|
912
|
-
if all(tool.lower() in self.read_tools for tool in all_tools):
|
|
913
|
-
# Only return tools that are in read_tools
|
|
914
|
-
return {tool for tool in all_tools if tool.lower() in self.read_tools}
|
|
915
|
-
tool_counts = Counter(all_tools)
|
|
916
|
-
count_repetitive_tools = {
|
|
917
|
-
tool
|
|
918
|
-
for tool, count in tool_counts.items()
|
|
919
|
-
if count >= 5 and tool.lower() in self.read_tools
|
|
920
|
-
}
|
|
921
918
|
# Filter similarity_repetitive_tools to only include tools in read_tools or write_tools
|
|
922
919
|
filtered_similarity_tools = {
|
|
923
920
|
tool
|
|
924
921
|
for tool in similarity_repetitive_tools
|
|
925
922
|
if tool.lower() in self.read_tools or tool.lower() in self.write_tools
|
|
926
923
|
}
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
return repetitive_tools
|
|
924
|
+
if filtered_similarity_tools:
|
|
925
|
+
return filtered_similarity_tools
|
|
930
926
|
return set()
|
|
931
927
|
|
|
932
928
|
def _get_repetitive_tools_by_similarity(self):
|
|
@@ -983,6 +979,27 @@ I will proceed based on the tool results and updated context.""")
|
|
|
983
979
|
|
|
984
980
|
context_parts.append("\n\n")
|
|
985
981
|
if repetitive_tools:
|
|
982
|
+
if not self.model_kwargs:
|
|
983
|
+
self.model_kwargs = {
|
|
984
|
+
"temperature": (self.main_model.use_temperature or 1) + 0.1,
|
|
985
|
+
"frequency_penalty": 0.2,
|
|
986
|
+
"presence_penalty": 0.1,
|
|
987
|
+
}
|
|
988
|
+
else:
|
|
989
|
+
temperature = nested.getter(self.model_kwargs, "temperature")
|
|
990
|
+
freq_penalty = nested.getter(self.model_kwargs, "frequency_penalty")
|
|
991
|
+
if temperature and freq_penalty:
|
|
992
|
+
self.model_kwargs["temperature"] = min(temperature + 0.1, 2)
|
|
993
|
+
self.model_kwargs["frequency_penalty"] = min(freq_penalty + 0.1, 1)
|
|
994
|
+
|
|
995
|
+
if random.random() < 0.25:
|
|
996
|
+
self.model_kwargs["temperature"] = max(temperature - 0.2, 1)
|
|
997
|
+
self.model_kwargs["frequency_penalty"] = max(freq_penalty - 0.2, 0)
|
|
998
|
+
|
|
999
|
+
# One tenth of the time, just straight reset the randomness
|
|
1000
|
+
if random.random() < 0.1:
|
|
1001
|
+
self.model_kwargs = {}
|
|
1002
|
+
|
|
986
1003
|
if self.turn_count - self._last_repetitive_warning_turn > 2:
|
|
987
1004
|
self._last_repetitive_warning_turn = self.turn_count
|
|
988
1005
|
self._last_repetitive_warning_severity += 1
|
|
@@ -1040,7 +1057,7 @@ I have detected repetitive usage of the following tools: {', '.join([f'`{t}`' fo
|
|
|
1040
1057
|
|
|
1041
1058
|
repetition_warning += f"""
|
|
1042
1059
|
### CRITICAL: Execution Loop Detected
|
|
1043
|
-
You are currently "spinning.
|
|
1060
|
+
You are currently "spinning gears". To break the exploration loop, you must:
|
|
1044
1061
|
1. **Analyze**: Use the `Thinking` tool to summarize exactly what you have found so far and why you were stuck.
|
|
1045
1062
|
2. **Pivot**: Abandon or modify your current exploration strategy. Try focusing on different files or running tests.
|
|
1046
1063
|
3. **Reframe**: To ensure your logic reset, include a 2-sentence story about {animal} {verb} {fruit} in your thoughts.
|
|
@@ -1049,6 +1066,9 @@ Prioritize editing or verification over further exploration.
|
|
|
1049
1066
|
"""
|
|
1050
1067
|
|
|
1051
1068
|
context_parts.append(repetition_warning)
|
|
1069
|
+
else:
|
|
1070
|
+
self.model_kwargs = {}
|
|
1071
|
+
|
|
1052
1072
|
context_parts.append("</context>")
|
|
1053
1073
|
return "\n".join(context_parts)
|
|
1054
1074
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
|
|
3
3
|
from ..commands import SwitchCoderSignal
|
|
4
|
-
from ..helpers.conversation import ConversationManager
|
|
4
|
+
from ..helpers.conversation import ConversationManager
|
|
5
5
|
from .ask_coder import AskCoder
|
|
6
6
|
from .base_coder import Coder
|
|
7
7
|
|
|
@@ -61,9 +61,7 @@ class ArchitectCoder(AskCoder):
|
|
|
61
61
|
editor_coder = await Coder.create(**new_kwargs)
|
|
62
62
|
|
|
63
63
|
# Re-initialize ConversationManager with editor coder
|
|
64
|
-
ConversationManager.initialize(
|
|
65
|
-
editor_coder, reset=True, reformat=True, preserve_tags=[MessageTag.DONE, MessageTag.CUR]
|
|
66
|
-
)
|
|
64
|
+
ConversationManager.initialize(editor_coder, reset=True, reformat=True, preserve_tags=True)
|
|
67
65
|
|
|
68
66
|
if self.verbose:
|
|
69
67
|
editor_coder.show_announcements()
|
|
@@ -84,7 +82,7 @@ class ArchitectCoder(AskCoder):
|
|
|
84
82
|
original_coder or self,
|
|
85
83
|
reset=True,
|
|
86
84
|
reformat=True,
|
|
87
|
-
preserve_tags=
|
|
85
|
+
preserve_tags=True,
|
|
88
86
|
)
|
|
89
87
|
|
|
90
88
|
self.total_cost = editor_coder.total_cost
|
|
@@ -96,7 +94,7 @@ class ArchitectCoder(AskCoder):
|
|
|
96
94
|
original_coder or self,
|
|
97
95
|
reset=True,
|
|
98
96
|
reformat=True,
|
|
99
|
-
preserve_tags=
|
|
97
|
+
preserve_tags=True,
|
|
100
98
|
)
|
|
101
99
|
|
|
102
100
|
raise SwitchCoderSignal(main_model=self.main_model, edit_format="architect")
|
|
@@ -32,7 +32,7 @@ from uuid import uuid4 as generate_unique_id
|
|
|
32
32
|
|
|
33
33
|
import httpx
|
|
34
34
|
from litellm import experimental_mcp_client
|
|
35
|
-
from litellm.types.utils import
|
|
35
|
+
from litellm.types.utils import ModelResponse
|
|
36
36
|
from prompt_toolkit.patch_stdout import patch_stdout
|
|
37
37
|
from rich.console import Console
|
|
38
38
|
|
|
@@ -40,7 +40,7 @@ import cecli.prompts.utils.system as prompts
|
|
|
40
40
|
from cecli import __version__, models, urls, utils
|
|
41
41
|
from cecli.commands import Commands, SwitchCoderSignal
|
|
42
42
|
from cecli.exceptions import LiteLLMExceptions
|
|
43
|
-
from cecli.helpers import command_parser, coroutines, nested
|
|
43
|
+
from cecli.helpers import command_parser, coroutines, nested, responses
|
|
44
44
|
from cecli.helpers.conversation import (
|
|
45
45
|
ConversationChunks,
|
|
46
46
|
ConversationManager,
|
|
@@ -156,6 +156,8 @@ class Coder:
|
|
|
156
156
|
tool_reflection = False
|
|
157
157
|
last_user_message = ""
|
|
158
158
|
uuid = ""
|
|
159
|
+
model_kwargs = {}
|
|
160
|
+
cost_multiplier = 1
|
|
159
161
|
|
|
160
162
|
# Task coordination state variables
|
|
161
163
|
input_running = False
|
|
@@ -210,34 +212,14 @@ class Coder:
|
|
|
210
212
|
|
|
211
213
|
use_kwargs = dict(from_coder.original_kwargs) # copy orig kwargs
|
|
212
214
|
|
|
213
|
-
# If the edit format changes, we can't leave old ASSISTANT
|
|
214
|
-
# messages in the chat history. The old edit format will
|
|
215
|
-
# confused the new LLM. It may try and imitate it, disobeying
|
|
216
|
-
# the system prompt.
|
|
217
|
-
# Get DONE messages from ConversationManager
|
|
218
|
-
done_messages = ConversationManager.get_messages_dict(MessageTag.DONE)
|
|
219
|
-
if edit_format != from_coder.edit_format and done_messages and summarize_from_coder:
|
|
220
|
-
try:
|
|
221
|
-
io.tool_warning("Summarizing messages, please wait...")
|
|
222
|
-
done_messages = await from_coder.summarizer.summarize_all(done_messages)
|
|
223
|
-
except (KeyboardInterrupt, ValueError):
|
|
224
|
-
# If summarization fails, keep the original messages and warn the user
|
|
225
|
-
io.tool_warning(
|
|
226
|
-
"Chat history summarization failed, continuing with full history"
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
# Bring along context from the old Coder
|
|
230
|
-
# Get CUR messages from ConversationManager
|
|
231
|
-
cur_messages = ConversationManager.get_messages_dict(MessageTag.CUR)
|
|
232
|
-
|
|
233
215
|
update = dict(
|
|
234
216
|
fnames=list(from_coder.abs_fnames),
|
|
235
217
|
read_only_fnames=list(from_coder.abs_read_only_fnames), # Copy read-only files
|
|
236
218
|
read_only_stubs_fnames=list(
|
|
237
219
|
from_coder.abs_read_only_stubs_fnames
|
|
238
220
|
), # Copy read-only stubs
|
|
239
|
-
done_messages=
|
|
240
|
-
cur_messages=
|
|
221
|
+
done_messages=[],
|
|
222
|
+
cur_messages=[],
|
|
241
223
|
coder_commit_hashes=from_coder.coder_commit_hashes,
|
|
242
224
|
commands=from_coder.commands.clone(),
|
|
243
225
|
total_cost=from_coder.total_cost,
|
|
@@ -380,6 +362,9 @@ class Coder:
|
|
|
380
362
|
|
|
381
363
|
self.context_compaction_max_tokens = context_compaction_max_tokens
|
|
382
364
|
self.context_compaction_summary_tokens = context_compaction_summary_tokens
|
|
365
|
+
self.max_reflections = (
|
|
366
|
+
3 if self.edit_format == "agent" else nested.getter(self.args, "max_reflections", 3)
|
|
367
|
+
)
|
|
383
368
|
|
|
384
369
|
if not fnames:
|
|
385
370
|
fnames = []
|
|
@@ -411,22 +396,6 @@ class Coder:
|
|
|
411
396
|
self.add_gitignore_files = add_gitignore_files
|
|
412
397
|
self.abs_read_only_stubs_fnames = set()
|
|
413
398
|
|
|
414
|
-
# Always use ConversationManager as the source of truth
|
|
415
|
-
# Add any provided messages to ConversationManager
|
|
416
|
-
if done_messages:
|
|
417
|
-
for msg in done_messages:
|
|
418
|
-
ConversationManager.add_message(
|
|
419
|
-
message_dict=msg,
|
|
420
|
-
tag=MessageTag.DONE,
|
|
421
|
-
)
|
|
422
|
-
|
|
423
|
-
if cur_messages:
|
|
424
|
-
for msg in cur_messages:
|
|
425
|
-
ConversationManager.add_message(
|
|
426
|
-
message_dict=msg,
|
|
427
|
-
tag=MessageTag.CUR,
|
|
428
|
-
)
|
|
429
|
-
|
|
430
399
|
self.io = io
|
|
431
400
|
self.io.coder = weakref.ref(self)
|
|
432
401
|
|
|
@@ -1612,9 +1581,23 @@ class Coder:
|
|
|
1612
1581
|
self.reflected_message = None
|
|
1613
1582
|
self.tool_reflection = False
|
|
1614
1583
|
|
|
1584
|
+
if float(self.total_cost) > self.cost_multiplier * (
|
|
1585
|
+
nested.getter(self.args, "cost_limit", float("inf")) or float("inf")
|
|
1586
|
+
):
|
|
1587
|
+
if await self.io.confirm_ask(
|
|
1588
|
+
"You have reached your configured cost limit. Continue?",
|
|
1589
|
+
group_response="Cost Limit",
|
|
1590
|
+
explicit_yes_required=True,
|
|
1591
|
+
):
|
|
1592
|
+
Coder.cost_multiplier += 1
|
|
1593
|
+
else:
|
|
1594
|
+
return
|
|
1595
|
+
|
|
1615
1596
|
async for _ in self.send_message(message):
|
|
1616
1597
|
pass
|
|
1617
1598
|
|
|
1599
|
+
await self.hot_reload()
|
|
1600
|
+
|
|
1618
1601
|
if not self.reflected_message:
|
|
1619
1602
|
await self.auto_save_session(force=True)
|
|
1620
1603
|
break
|
|
@@ -2399,7 +2382,7 @@ class Coder:
|
|
|
2399
2382
|
force=True, # Force update existing message
|
|
2400
2383
|
)
|
|
2401
2384
|
|
|
2402
|
-
if edited and self.auto_test:
|
|
2385
|
+
if edited and self.auto_test and self.test_cmd:
|
|
2403
2386
|
test_errors = await self.commands.execute("test", self.test_cmd)
|
|
2404
2387
|
self.test_outcome = not test_errors
|
|
2405
2388
|
if test_errors:
|
|
@@ -2750,6 +2733,9 @@ class Coder:
|
|
|
2750
2733
|
async def reply_completed(self):
|
|
2751
2734
|
pass
|
|
2752
2735
|
|
|
2736
|
+
async def hot_reload(self):
|
|
2737
|
+
pass
|
|
2738
|
+
|
|
2753
2739
|
async def show_exhausted_error(self):
|
|
2754
2740
|
output_tokens = 0
|
|
2755
2741
|
if self.partial_response_content:
|
|
@@ -2995,6 +2981,7 @@ class Coder:
|
|
|
2995
2981
|
self.temperature,
|
|
2996
2982
|
# This could include any tools, but for now it is just MCP tools
|
|
2997
2983
|
tools=tools,
|
|
2984
|
+
override_kwargs=self.model_kwargs,
|
|
2998
2985
|
)
|
|
2999
2986
|
self.chat_completion_call_hashes.append(hash_object.hexdigest())
|
|
3000
2987
|
|
|
@@ -3166,7 +3153,7 @@ class Coder:
|
|
|
3166
3153
|
reasoning_content = None
|
|
3167
3154
|
|
|
3168
3155
|
if reasoning_content:
|
|
3169
|
-
if nested.getter(self, "
|
|
3156
|
+
if nested.getter(self.args, "show_thinking"):
|
|
3170
3157
|
if not self.got_reasoning_content:
|
|
3171
3158
|
text += f"<{REASONING_TAG}>\n\n"
|
|
3172
3159
|
text += reasoning_content
|
|
@@ -3202,7 +3189,7 @@ class Coder:
|
|
|
3202
3189
|
self.stream_wrapper(content_to_show, final=False)
|
|
3203
3190
|
elif text:
|
|
3204
3191
|
# Apply reasoning tag formatting for non-pretty output
|
|
3205
|
-
if nested.getter(self, "
|
|
3192
|
+
if nested.getter(self.args, "show_thinking"):
|
|
3206
3193
|
text = replace_reasoning_tags(text, self.reasoning_tag_name)
|
|
3207
3194
|
try:
|
|
3208
3195
|
self.stream_wrapper(text, final=False)
|
|
@@ -3324,66 +3311,16 @@ class Coder:
|
|
|
3324
3311
|
# If no native tool calls, check if the content contains JSON tool calls
|
|
3325
3312
|
# This handles models that write JSON in text instead of using native calling
|
|
3326
3313
|
if not self.partial_response_tool_calls and self.partial_response_content:
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
try:
|
|
3338
|
-
json_obj = json.loads(chunk)
|
|
3339
|
-
if (
|
|
3340
|
-
isinstance(json_obj, dict)
|
|
3341
|
-
and "name" in json_obj
|
|
3342
|
-
and "arguments" in json_obj
|
|
3343
|
-
):
|
|
3344
|
-
# Create a Pydantic model for the tool call
|
|
3345
|
-
function_obj = Function(
|
|
3346
|
-
name=json_obj["name"],
|
|
3347
|
-
arguments=(
|
|
3348
|
-
json.dumps(json_obj["arguments"])
|
|
3349
|
-
if isinstance(json_obj["arguments"], (dict, list))
|
|
3350
|
-
else str(json_obj["arguments"])
|
|
3351
|
-
),
|
|
3352
|
-
)
|
|
3353
|
-
tool_call_obj = ChatCompletionMessageToolCall(
|
|
3354
|
-
type="function",
|
|
3355
|
-
function=function_obj,
|
|
3356
|
-
id=f"call_{len(extracted_calls)}_{int(time.time())}_{chunk_index}",
|
|
3357
|
-
)
|
|
3358
|
-
extracted_calls.append(tool_call_obj)
|
|
3359
|
-
elif isinstance(json_obj, list):
|
|
3360
|
-
for item in json_obj:
|
|
3361
|
-
if (
|
|
3362
|
-
isinstance(item, dict)
|
|
3363
|
-
and "name" in item
|
|
3364
|
-
and "arguments" in item
|
|
3365
|
-
):
|
|
3366
|
-
function_obj = Function(
|
|
3367
|
-
name=item["name"],
|
|
3368
|
-
arguments=(
|
|
3369
|
-
json.dumps(item["arguments"])
|
|
3370
|
-
if isinstance(item["arguments"], (dict, list))
|
|
3371
|
-
else str(item["arguments"])
|
|
3372
|
-
),
|
|
3373
|
-
)
|
|
3374
|
-
tool_call_obj = ChatCompletionMessageToolCall(
|
|
3375
|
-
type="function",
|
|
3376
|
-
function=function_obj,
|
|
3377
|
-
id=f"call_{len(extracted_calls)}_{int(time.time())}_{chunk_index}",
|
|
3378
|
-
)
|
|
3379
|
-
extracted_calls.append(tool_call_obj)
|
|
3380
|
-
except json.JSONDecodeError:
|
|
3381
|
-
continue
|
|
3382
|
-
|
|
3383
|
-
if extracted_calls:
|
|
3384
|
-
self.partial_response_tool_calls = extracted_calls
|
|
3385
|
-
except Exception:
|
|
3386
|
-
pass
|
|
3314
|
+
extracted_calls = responses.extract_tools_from_content_json(
|
|
3315
|
+
self.partial_response_content
|
|
3316
|
+
)
|
|
3317
|
+
if not extracted_calls:
|
|
3318
|
+
extracted_calls = responses.extract_tools_from_content_xml(
|
|
3319
|
+
self.partial_response_content
|
|
3320
|
+
)
|
|
3321
|
+
|
|
3322
|
+
if extracted_calls:
|
|
3323
|
+
self.partial_response_tool_calls = extracted_calls
|
|
3387
3324
|
|
|
3388
3325
|
return response, func_err, content_err
|
|
3389
3326
|
|
|
@@ -3405,7 +3342,7 @@ class Coder:
|
|
|
3405
3342
|
def live_incremental_response(self, final):
|
|
3406
3343
|
show_resp = self.render_incremental_response(final)
|
|
3407
3344
|
# Apply any reasoning tag formatting
|
|
3408
|
-
if nested.getter(self, "
|
|
3345
|
+
if nested.getter(self.args, "show_thinking"):
|
|
3409
3346
|
show_resp = replace_reasoning_tags(show_resp, self.reasoning_tag_name)
|
|
3410
3347
|
|
|
3411
3348
|
# Track streaming state to avoid repetitive output
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
import cecli.models as models
|
|
4
4
|
from cecli.commands.utils.base_command import BaseCommand
|
|
5
5
|
from cecli.commands.utils.helpers import format_command_result
|
|
6
|
-
from cecli.helpers.conversation import ConversationManager
|
|
6
|
+
from cecli.helpers.conversation import ConversationManager
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class AgentModelCommand(BaseCommand):
|
|
@@ -69,7 +69,7 @@ class AgentModelCommand(BaseCommand):
|
|
|
69
69
|
temp_coder,
|
|
70
70
|
reset=True,
|
|
71
71
|
reformat=True,
|
|
72
|
-
preserve_tags=
|
|
72
|
+
preserve_tags=True,
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
verbose = kwargs.get("verbose", False)
|
|
@@ -86,7 +86,7 @@ class AgentModelCommand(BaseCommand):
|
|
|
86
86
|
original_coder,
|
|
87
87
|
reset=True,
|
|
88
88
|
reformat=True,
|
|
89
|
-
preserve_tags=
|
|
89
|
+
preserve_tags=True,
|
|
90
90
|
)
|
|
91
91
|
|
|
92
92
|
# Restore the original model configuration
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
import cecli.models as models
|
|
4
4
|
from cecli.commands.utils.base_command import BaseCommand
|
|
5
5
|
from cecli.commands.utils.helpers import format_command_result
|
|
6
|
-
from cecli.helpers.conversation import ConversationManager
|
|
6
|
+
from cecli.helpers.conversation import ConversationManager
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class EditorModelCommand(BaseCommand):
|
|
@@ -69,7 +69,7 @@ class EditorModelCommand(BaseCommand):
|
|
|
69
69
|
temp_coder,
|
|
70
70
|
reset=True,
|
|
71
71
|
reformat=True,
|
|
72
|
-
preserve_tags=
|
|
72
|
+
preserve_tags=True,
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
verbose = kwargs.get("verbose", False)
|
|
@@ -86,7 +86,7 @@ class EditorModelCommand(BaseCommand):
|
|
|
86
86
|
original_coder,
|
|
87
87
|
reset=True,
|
|
88
88
|
reformat=True,
|
|
89
|
-
preserve_tags=
|
|
89
|
+
preserve_tags=True,
|
|
90
90
|
)
|
|
91
91
|
|
|
92
92
|
# Restore the original model configuration
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
import cecli.models as models
|
|
4
4
|
from cecli.commands.utils.base_command import BaseCommand
|
|
5
5
|
from cecli.commands.utils.helpers import format_command_result
|
|
6
|
-
from cecli.helpers.conversation import ConversationManager
|
|
6
|
+
from cecli.helpers.conversation import ConversationManager
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ModelCommand(BaseCommand):
|
|
@@ -73,7 +73,7 @@ class ModelCommand(BaseCommand):
|
|
|
73
73
|
temp_coder,
|
|
74
74
|
reset=True,
|
|
75
75
|
reformat=True,
|
|
76
|
-
preserve_tags=
|
|
76
|
+
preserve_tags=True,
|
|
77
77
|
)
|
|
78
78
|
|
|
79
79
|
verbose = kwargs.get("verbose", False)
|
|
@@ -90,7 +90,7 @@ class ModelCommand(BaseCommand):
|
|
|
90
90
|
original_coder,
|
|
91
91
|
reset=True,
|
|
92
92
|
reformat=True,
|
|
93
|
-
preserve_tags=
|
|
93
|
+
preserve_tags=True,
|
|
94
94
|
)
|
|
95
95
|
|
|
96
96
|
# Restore the original model configuration
|
|
@@ -25,9 +25,12 @@ class SaveSessionCommand(BaseCommand):
|
|
|
25
25
|
@classmethod
|
|
26
26
|
def get_completions(cls, io, coder, args) -> List[str]:
|
|
27
27
|
"""Get completion options for save-session command."""
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
# Return existing session names for completion to prevent accidental overwrites
|
|
29
|
+
from cecli import sessions
|
|
30
|
+
|
|
31
|
+
session_manager = sessions.SessionManager(coder, io)
|
|
32
|
+
sessions_list = session_manager.list_sessions()
|
|
33
|
+
return [session_info["name"] for session_info in sessions_list]
|
|
31
34
|
|
|
32
35
|
@classmethod
|
|
33
36
|
def get_help(cls) -> str:
|
|
@@ -40,4 +43,8 @@ class SaveSessionCommand(BaseCommand):
|
|
|
40
43
|
help_text += " /save-session bug-fix # Save session as 'bug-fix'\n"
|
|
41
44
|
help_text += "\nSessions are saved in the .cecli/sessions/ directory as JSON files.\n"
|
|
42
45
|
help_text += "Use /list-sessions to see saved sessions and /load-session to load them.\n"
|
|
46
|
+
help_text += (
|
|
47
|
+
"\nNote: Existing session names will be shown for tab completion to help prevent"
|
|
48
|
+
" accidental overwrites.\n"
|
|
49
|
+
)
|
|
43
50
|
return help_text
|