cecli-dev 0.100.10rc4__tar.gz → 0.100.11rc2__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.100.10rc4 → cecli_dev-0.100.11rc2}/PKG-INFO +1 -1
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/__init__.py +1 -1
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/_version.py +3 -3
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/args.py +10 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/agent_coder.py +30 -9
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/base_coder.py +17 -4
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/files.py +94 -14
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/integration.py +35 -9
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/manager.py +35 -7
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/tags.py +3 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/utils.py +3 -2
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/hashline.py +34 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/requests.py +1 -1
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/io.py +13 -2
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/linter.py +1 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/main.py +5 -4
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/models.py +27 -2
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/resources/model-settings.yml +7 -7
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/edit_text.py +3 -2
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/ls.py +2 -2
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/read_range.py +167 -47
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/resource_manager.py +1 -1
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/agent-mode.md +4 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/mcp.md +3 -3
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/scm_file_list.json +1 -0
- cecli_dev-0.100.11rc2/cecli_dev.egg-info/scm_version.json +8 -0
- cecli_dev-0.100.11rc2/scripts/compare-message-history.py +257 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_read_range_execute.py +13 -7
- cecli_dev-0.100.10rc4/cecli_dev.egg-info/scm_version.json +0 -8
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.dockerignore +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.flake8 +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.gitattributes +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.gitignore +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/CHANGELOG.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/CNAME +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/HISTORY.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/LICENSE.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/MANIFEST.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/README.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/README.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/docker.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/over_time.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/plot.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/plots.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/prompts.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/__main__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/add.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/code.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/context.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/core.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/git.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/help.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/load.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/map.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/merge.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/model.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/models.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/report.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/run.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/save.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/test.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/web.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/diffs.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/dump.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/editor.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/exceptions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/format_settings.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/help.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/help_pats.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/local_workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/helpers/threading.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/history.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/llm.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/mdstream.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/onboarding.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/repo.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/repomap.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/report.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/scrape.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/sendchat.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/sessions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/special.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/_yield.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/command.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/delegate.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/app.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/io.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/urls.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/utils.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/voice.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/waiting.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/watch.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/docker/Dockerfile +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/pyproject.toml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/pytest.ini +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/requirements.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/requirements.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/30k-image.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/blame.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/homepage.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/issues.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/update-history.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/versionbump.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/setup.cfg +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/shim.pyproject.toml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/conftest.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/conftest.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/help/test_help.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/__init__.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/conftest.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_config.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_service.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tools/validations.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/tui/test_app.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-0.100.10rc4 → cecli_dev-0.100.11rc2}/tests/unit/test_unit_remove_mcp_tool.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.100.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 100,
|
|
21
|
+
__version__ = version = '0.100.11rc2'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 11, 'rc2')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ge6afc3ffc'
|
|
@@ -1115,6 +1115,16 @@ def get_parser(default_config_files, git_root):
|
|
|
1115
1115
|
" specified, a default command for your OS may be used."
|
|
1116
1116
|
),
|
|
1117
1117
|
)
|
|
1118
|
+
group.add_argument(
|
|
1119
|
+
"--notification-bell",
|
|
1120
|
+
action=argparse.BooleanOptionalAction,
|
|
1121
|
+
default=True,
|
|
1122
|
+
help=(
|
|
1123
|
+
"Allow notification commands to produce an audible bell. When enabled, command"
|
|
1124
|
+
" output is not suppressed so terminal bell escape sequences can ring through"
|
|
1125
|
+
" (default: True)"
|
|
1126
|
+
),
|
|
1127
|
+
)
|
|
1118
1128
|
group.add_argument(
|
|
1119
1129
|
"--command-prefix",
|
|
1120
1130
|
default=None,
|
|
@@ -157,9 +157,11 @@ class AgentCoder(Coder):
|
|
|
157
157
|
config["large_file_token_threshold"] = nested.getter(
|
|
158
158
|
config, "large_file_token_threshold", 8192
|
|
159
159
|
)
|
|
160
|
+
config["show_lint_errors"] = nested.getter(config, "show_lint_errors", False)
|
|
160
161
|
config["skip_cli_confirmations"] = nested.getter(
|
|
161
162
|
config, "skip_cli_confirmations", nested.getter(config, "yolo", [])
|
|
162
163
|
)
|
|
164
|
+
|
|
163
165
|
config["command_timeout"] = nested.getter(config, "command_timeout", 30)
|
|
164
166
|
config["allowed_commands"] = nested.getter(config, "allowed_commands", [])
|
|
165
167
|
config["hot_reload"] = nested.getter(config, "hot_reload", False)
|
|
@@ -816,6 +818,11 @@ class AgentCoder(Coder):
|
|
|
816
818
|
if interrupted:
|
|
817
819
|
raise KeyboardInterrupt("Interrupted during linting")
|
|
818
820
|
|
|
821
|
+
has_errors = False
|
|
822
|
+
|
|
823
|
+
if self.lint_outcome is False:
|
|
824
|
+
has_errors = True
|
|
825
|
+
|
|
819
826
|
self.lint_outcome = not lint_errors
|
|
820
827
|
|
|
821
828
|
if lint_errors:
|
|
@@ -824,21 +831,35 @@ class AgentCoder(Coder):
|
|
|
824
831
|
"# Fix any linting errors below, if possible and then continue with your task.",
|
|
825
832
|
1,
|
|
826
833
|
)
|
|
827
|
-
ConversationService.get_manager(self).remove_message_by_hash_key(
|
|
828
|
-
("lint_errors", "agent")
|
|
829
|
-
)
|
|
830
834
|
ConversationService.get_manager(self).add_message(
|
|
831
835
|
message_dict=dict(role="user", content=lint_errors),
|
|
832
|
-
tag=MessageTag.
|
|
833
|
-
hash_key=("lint_errors", "agent"),
|
|
836
|
+
tag=MessageTag.LINT,
|
|
837
|
+
hash_key=("lint_errors", "agent", lint_errors),
|
|
838
|
+
)
|
|
839
|
+
ConversationService.get_manager(self).add_message(
|
|
840
|
+
message_dict=dict(
|
|
841
|
+
role="user", content="Please address the latest linting errors."
|
|
842
|
+
),
|
|
843
|
+
tag=MessageTag.LINT,
|
|
844
|
+
hash_key=("lint_errors", "agent", lint_errors, "cta"),
|
|
834
845
|
promotion=ConversationService.get_manager(self).DEFAULT_TAG_PROMOTION_VALUE,
|
|
835
846
|
mark_for_demotion=1,
|
|
836
|
-
|
|
847
|
+
mark_for_delete=0,
|
|
837
848
|
)
|
|
838
849
|
else:
|
|
839
|
-
|
|
840
|
-
(
|
|
841
|
-
|
|
850
|
+
if has_errors:
|
|
851
|
+
ConversationService.get_manager(self).add_message(
|
|
852
|
+
message_dict=dict(
|
|
853
|
+
role="user",
|
|
854
|
+
content=(
|
|
855
|
+
'<context name="linting_confirmation" from="agent">'
|
|
856
|
+
"All linting errors resolved."
|
|
857
|
+
"</context>"
|
|
858
|
+
),
|
|
859
|
+
),
|
|
860
|
+
tag=MessageTag.LINT,
|
|
861
|
+
hash_key=("lint_errors", "agent", str(time.monotonic_ns())),
|
|
862
|
+
)
|
|
842
863
|
|
|
843
864
|
return tool_responses
|
|
844
865
|
|
|
@@ -491,6 +491,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
491
491
|
self.mcp_manager = mcp_manager
|
|
492
492
|
self.enable_context_compaction = enable_context_compaction
|
|
493
493
|
|
|
494
|
+
self.context_compaction_current_ratio = 0
|
|
494
495
|
self.context_compaction_max_tokens = context_compaction_max_tokens
|
|
495
496
|
self.context_compaction_summary_tokens = context_compaction_summary_tokens
|
|
496
497
|
self.max_reflections = nested.getter(self.args, "max_reflections", 3)
|
|
@@ -1439,7 +1440,10 @@ class Coder(metaclass=UsageMeta):
|
|
|
1439
1440
|
if mime_type.startswith("image/") and supports_images:
|
|
1440
1441
|
content = [
|
|
1441
1442
|
{"type": "text", "text": f"Image file: {rel_fname}"},
|
|
1442
|
-
{
|
|
1443
|
+
{
|
|
1444
|
+
"type": "image_url",
|
|
1445
|
+
"image_url": {"url": image_url, "detail": "high", "format": mime_type},
|
|
1446
|
+
},
|
|
1443
1447
|
]
|
|
1444
1448
|
elif mime_type == "application/pdf" and supports_pdfs:
|
|
1445
1449
|
content = [
|
|
@@ -2000,12 +2004,15 @@ class Coder(metaclass=UsageMeta):
|
|
|
2000
2004
|
|
|
2001
2005
|
combined_tokens = done_tokens + cur_tokens + diff_tokens
|
|
2002
2006
|
|
|
2007
|
+
self.context_compaction_current_ratio = all_tokens / self.context_compaction_max_tokens
|
|
2008
|
+
|
|
2003
2009
|
if force or (
|
|
2004
2010
|
all_tokens >= self.context_compaction_max_tokens * 0.9
|
|
2005
|
-
and ConversationService.get_chunks(self).last_clear_count >
|
|
2011
|
+
and ConversationService.get_chunks(self).last_clear_count > 20
|
|
2006
2012
|
):
|
|
2007
|
-
manager.clear_tag(MessageTag.
|
|
2008
|
-
manager.clear_tag(MessageTag.
|
|
2013
|
+
manager.clear_tag(MessageTag.LINT, ratio=0.33)
|
|
2014
|
+
manager.clear_tag(MessageTag.DIFFS, ratio=0.33)
|
|
2015
|
+
manager.clear_tag(MessageTag.FILE_CONTEXTS, ratio=0.33)
|
|
2009
2016
|
ConversationService.get_files(self).clear_file_cache()
|
|
2010
2017
|
ConversationService.get_chunks(self).flush_removals()
|
|
2011
2018
|
|
|
@@ -3248,6 +3255,12 @@ class Coder(metaclass=UsageMeta):
|
|
|
3248
3255
|
res += errors
|
|
3249
3256
|
res += "\n"
|
|
3250
3257
|
|
|
3258
|
+
if self.edit_format in ("agent", "subagent"):
|
|
3259
|
+
if self.agent_config.get("show_lint_errors"):
|
|
3260
|
+
show_output = True
|
|
3261
|
+
else:
|
|
3262
|
+
show_output = False
|
|
3263
|
+
|
|
3251
3264
|
if res and show_output:
|
|
3252
3265
|
self.io.tool_warning(res)
|
|
3253
3266
|
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import os
|
|
2
3
|
import weakref
|
|
3
4
|
from typing import Any, Dict, List, Optional, Tuple
|
|
4
5
|
|
|
5
6
|
import xxhash
|
|
6
7
|
|
|
7
|
-
from cecli.helpers.hashline import
|
|
8
|
+
from cecli.helpers.hashline import (
|
|
9
|
+
get_hashline_content_diff,
|
|
10
|
+
hashline_formatted,
|
|
11
|
+
)
|
|
8
12
|
from cecli.repomap import RepoMap
|
|
9
13
|
|
|
10
14
|
from .service import ConversationService
|
|
@@ -25,8 +29,11 @@ class ConversationFiles:
|
|
|
25
29
|
self.uuid = coder.uuid
|
|
26
30
|
self._file_contents_original: Dict[str, str] = {}
|
|
27
31
|
self._file_contents_snapshot: Dict[str, str] = {}
|
|
32
|
+
self._file_json_contents: Dict[str, str] = {}
|
|
28
33
|
self._file_timestamps: Dict[str, float] = {}
|
|
29
34
|
self._file_diffs: Dict[str, str] = {}
|
|
35
|
+
self._file_diff_versions: Dict[str, int] = {}
|
|
36
|
+
self._file_context_versions: Dict[str, int] = {}
|
|
30
37
|
self._file_stub_contents: Dict[str, str] = {}
|
|
31
38
|
self._file_to_message_id: Dict[str, str] = {}
|
|
32
39
|
self._image_files: Dict[str, bool] = {}
|
|
@@ -109,7 +116,10 @@ class ConversationFiles:
|
|
|
109
116
|
try:
|
|
110
117
|
content = coder.io.read_text(abs_fname, silent=True)
|
|
111
118
|
if coder.hashlines:
|
|
112
|
-
content =
|
|
119
|
+
content, json_str = hashline_formatted(
|
|
120
|
+
content, file_name=abs_fname, partial=False
|
|
121
|
+
)
|
|
122
|
+
self._file_json_contents[abs_fname] = json_str
|
|
113
123
|
except Exception:
|
|
114
124
|
content = "" # Empty content for unreadable files
|
|
115
125
|
|
|
@@ -226,7 +236,9 @@ class ConversationFiles:
|
|
|
226
236
|
try:
|
|
227
237
|
current_content = coder.io.read_text(abs_fname, silent=True)
|
|
228
238
|
if coder.hashlines:
|
|
229
|
-
current_content =
|
|
239
|
+
current_content, _ = hashline_formatted(
|
|
240
|
+
current_content, file_name=abs_fname, partial=False
|
|
241
|
+
)
|
|
230
242
|
except Exception:
|
|
231
243
|
return None
|
|
232
244
|
|
|
@@ -239,6 +251,9 @@ class ConversationFiles:
|
|
|
239
251
|
abs_fname, self._file_contents_original[abs_fname]
|
|
240
252
|
)
|
|
241
253
|
|
|
254
|
+
if not snapshot_content:
|
|
255
|
+
return None
|
|
256
|
+
|
|
242
257
|
# Generate diff between snapshot and current content using hashline helper
|
|
243
258
|
diff_text = get_hashline_content_diff(
|
|
244
259
|
old_content=snapshot_content,
|
|
@@ -265,10 +280,14 @@ class ConversationFiles:
|
|
|
265
280
|
"""
|
|
266
281
|
coder = self.get_coder()
|
|
267
282
|
diff = self.generate_diff(fname)
|
|
283
|
+
diff_output = diff
|
|
268
284
|
|
|
269
285
|
if diff:
|
|
270
|
-
#
|
|
286
|
+
# Increment diff version counter
|
|
271
287
|
abs_fname = os.path.abspath(fname)
|
|
288
|
+
self._file_diff_versions[abs_fname] = self._file_diff_versions.get(abs_fname, 0) + 1
|
|
289
|
+
|
|
290
|
+
# Store diff
|
|
272
291
|
self._file_diffs[abs_fname] = diff
|
|
273
292
|
|
|
274
293
|
rel_fname = fname
|
|
@@ -278,6 +297,16 @@ class ConversationFiles:
|
|
|
278
297
|
rel_fname = coder.get_rel_fname(fname)
|
|
279
298
|
prefix_str = "content ID prefixed " if getattr(coder, "hashlines") else ""
|
|
280
299
|
|
|
300
|
+
if coder.hashlines:
|
|
301
|
+
# Wrap diff in JSON structure
|
|
302
|
+
diff_output = json.dumps(
|
|
303
|
+
{
|
|
304
|
+
"file_name": rel_fname,
|
|
305
|
+
"prefixed_diff": diff,
|
|
306
|
+
},
|
|
307
|
+
ensure_ascii=False,
|
|
308
|
+
)
|
|
309
|
+
|
|
281
310
|
# Add diff message to conversation
|
|
282
311
|
content_hash = xxhash.xxh3_128_hexdigest(diff.encode("utf-8"))
|
|
283
312
|
|
|
@@ -285,7 +314,7 @@ class ConversationFiles:
|
|
|
285
314
|
"role": "user",
|
|
286
315
|
"content": (
|
|
287
316
|
f"{rel_fname} has been updated. Review this {prefix_str}diff of the changes to"
|
|
288
|
-
f" ensure all modifications are appropriate:\n\n{
|
|
317
|
+
f" ensure all modifications are appropriate:\n\n{diff_output}"
|
|
289
318
|
),
|
|
290
319
|
}
|
|
291
320
|
|
|
@@ -328,6 +357,22 @@ class ConversationFiles:
|
|
|
328
357
|
|
|
329
358
|
return content or ""
|
|
330
359
|
|
|
360
|
+
def get_file_json(self, fname: str) -> Optional[str]:
|
|
361
|
+
"""
|
|
362
|
+
Get the cached JSON metadata for a file, if available.
|
|
363
|
+
|
|
364
|
+
The JSON is generated and cached during add_file() and contains
|
|
365
|
+
file_name, start_line, end_line, partial, and prefixed_contents.
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
fname: Absolute file path
|
|
369
|
+
|
|
370
|
+
Returns:
|
|
371
|
+
JSON-formatted string, or None if not cached
|
|
372
|
+
"""
|
|
373
|
+
abs_fname = os.path.abspath(fname)
|
|
374
|
+
return self._file_json_contents.get(abs_fname)
|
|
375
|
+
|
|
331
376
|
def clear_file_cache(self, fname: Optional[str] = None, clear_contexts=True) -> None:
|
|
332
377
|
"""
|
|
333
378
|
Clear cache for specific file or all files.
|
|
@@ -340,7 +385,10 @@ class ConversationFiles:
|
|
|
340
385
|
self._file_contents_snapshot.clear()
|
|
341
386
|
self._file_timestamps.clear()
|
|
342
387
|
self._file_diffs.clear()
|
|
388
|
+
self._file_diff_versions.clear()
|
|
389
|
+
self._file_context_versions.clear()
|
|
343
390
|
self._file_stub_contents.clear()
|
|
391
|
+
self._file_json_contents.clear()
|
|
344
392
|
self._file_to_message_id.clear()
|
|
345
393
|
if clear_contexts:
|
|
346
394
|
self._numbered_contexts.clear()
|
|
@@ -350,7 +398,10 @@ class ConversationFiles:
|
|
|
350
398
|
self._file_contents_snapshot.pop(abs_fname, None)
|
|
351
399
|
self._file_timestamps.pop(abs_fname, None)
|
|
352
400
|
self._file_diffs.pop(abs_fname, None)
|
|
401
|
+
self._file_diff_versions.pop(abs_fname, None)
|
|
402
|
+
self._file_context_versions.pop(abs_fname, None)
|
|
353
403
|
self._file_stub_contents.pop(abs_fname, None)
|
|
404
|
+
self._file_json_contents.pop(abs_fname, None)
|
|
354
405
|
self._file_to_message_id.pop(abs_fname, None)
|
|
355
406
|
self._image_files.pop(abs_fname, None)
|
|
356
407
|
if clear_contexts:
|
|
@@ -402,6 +453,8 @@ class ConversationFiles:
|
|
|
402
453
|
The merged range (start_line, end_line) that contains the input range.
|
|
403
454
|
"""
|
|
404
455
|
abs_fname = os.path.abspath(file_path)
|
|
456
|
+
diff_version = self._file_diff_versions.get(abs_fname, 0)
|
|
457
|
+
context_version = self._file_context_versions.get(abs_fname, 0)
|
|
405
458
|
|
|
406
459
|
# Validate range
|
|
407
460
|
if start_line > end_line:
|
|
@@ -410,6 +463,11 @@ class ConversationFiles:
|
|
|
410
463
|
# Get existing ranges
|
|
411
464
|
existing_ranges = self._numbered_contexts.get(abs_fname, [])
|
|
412
465
|
|
|
466
|
+
if diff_version != context_version:
|
|
467
|
+
self._file_context_versions[abs_fname] = diff_version
|
|
468
|
+
# auto clear on edit
|
|
469
|
+
# existing_ranges = []
|
|
470
|
+
|
|
413
471
|
# Add new range
|
|
414
472
|
new_range = (start_line, end_line)
|
|
415
473
|
all_ranges = existing_ranges + [new_range]
|
|
@@ -481,7 +539,7 @@ class ConversationFiles:
|
|
|
481
539
|
abs_fname = os.path.abspath(file_path)
|
|
482
540
|
self._last_merged_ranges.pop(abs_fname, None)
|
|
483
541
|
|
|
484
|
-
def get_file_context(self, file_path: str, all_ranges=False) -> str:
|
|
542
|
+
def get_file_context(self, file_path: str, all_ranges=False, check_versions=True) -> str:
|
|
485
543
|
"""
|
|
486
544
|
Generate hashline representation of cached context ranges.
|
|
487
545
|
|
|
@@ -489,7 +547,8 @@ class ConversationFiles:
|
|
|
489
547
|
file_path: Absolute file path
|
|
490
548
|
|
|
491
549
|
Returns:
|
|
492
|
-
|
|
550
|
+
JSON-formatted string with file_path, version, and results array,
|
|
551
|
+
or empty string if no ranges
|
|
493
552
|
"""
|
|
494
553
|
abs_fname = os.path.abspath(file_path)
|
|
495
554
|
|
|
@@ -518,8 +577,10 @@ class ConversationFiles:
|
|
|
518
577
|
return ""
|
|
519
578
|
|
|
520
579
|
# Generate hashline representations for each range
|
|
521
|
-
|
|
580
|
+
results = []
|
|
522
581
|
content_lines = content.splitlines()
|
|
582
|
+
diff_version = self._file_diff_versions.get(abs_fname, 0)
|
|
583
|
+
context_version = self._file_context_versions.get(abs_fname, 0)
|
|
523
584
|
|
|
524
585
|
for i, (start_line, end_line) in enumerate(ranges):
|
|
525
586
|
# Note: hashline uses 1-based line numbers, so no conversion needed
|
|
@@ -532,15 +593,34 @@ class ConversationFiles:
|
|
|
532
593
|
# Extract lines for this range (0-based indexing for list)
|
|
533
594
|
lines = content_lines[start_line_adj - 1 : end_line_adj]
|
|
534
595
|
|
|
535
|
-
# Generate
|
|
536
|
-
# Join lines back with newlines for hashline()
|
|
596
|
+
# Generate JSON for this range using hashline_formatted()
|
|
537
597
|
range_content = "\n".join(lines)
|
|
538
|
-
hashline_content = hashline(range_content, start_line=start_line_adj)
|
|
539
598
|
|
|
540
|
-
|
|
599
|
+
# Don't duplicate whole contents that are already in context
|
|
600
|
+
if (
|
|
601
|
+
check_versions
|
|
602
|
+
and range_content == content
|
|
603
|
+
and (abs_fname in coder.abs_fnames or abs_fname in coder.abs_read_only_fnames)
|
|
604
|
+
and diff_version == context_version
|
|
605
|
+
):
|
|
606
|
+
continue
|
|
607
|
+
|
|
608
|
+
_, json_str = hashline_formatted(
|
|
609
|
+
range_content, file_name=abs_fname, partial=True, start_line=start_line_adj
|
|
610
|
+
)
|
|
611
|
+
results.append(json.loads(json_str))
|
|
612
|
+
|
|
613
|
+
# Build and return the top-level JSON structure
|
|
614
|
+
# version = self._file_diff_versions.get(abs_fname, 0)
|
|
615
|
+
if results:
|
|
616
|
+
result = {
|
|
617
|
+
"file_path": file_path,
|
|
618
|
+
"results": results,
|
|
619
|
+
# "version": version,
|
|
620
|
+
}
|
|
621
|
+
return json.dumps(result, ensure_ascii=False)
|
|
541
622
|
|
|
542
|
-
|
|
543
|
-
return "\n...\n\n".join(context_parts)
|
|
623
|
+
return None
|
|
544
624
|
|
|
545
625
|
def remove_file_context(self, file_path: str) -> None:
|
|
546
626
|
"""
|
|
@@ -168,8 +168,8 @@ class ConversationChunks:
|
|
|
168
168
|
if not coder:
|
|
169
169
|
return
|
|
170
170
|
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
if self._cancel_post_message_injections():
|
|
172
|
+
return
|
|
173
173
|
|
|
174
174
|
message = random.choice(
|
|
175
175
|
[
|
|
@@ -192,7 +192,7 @@ class ConversationChunks:
|
|
|
192
192
|
" the current data."
|
|
193
193
|
),
|
|
194
194
|
(
|
|
195
|
-
"
|
|
195
|
+
"Based on what you know, please invoke the right tools to keep making"
|
|
196
196
|
" progress towards our goal."
|
|
197
197
|
),
|
|
198
198
|
(
|
|
@@ -286,13 +286,14 @@ class ConversationChunks:
|
|
|
286
286
|
|
|
287
287
|
if (
|
|
288
288
|
should_clear
|
|
289
|
+
and coder.context_compaction_current_ratio > 0.8
|
|
289
290
|
and self.last_clear_count >= 20
|
|
290
291
|
and diff_tokens + other_tokens > coder.context_compaction_max_tokens * 0.5
|
|
291
292
|
):
|
|
292
293
|
self.last_clear_count = 0
|
|
293
294
|
|
|
294
295
|
# Clear all diff messages
|
|
295
|
-
ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS)
|
|
296
|
+
ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS, 0.33)
|
|
296
297
|
# Clear ConversationFiles caches to force regeneration
|
|
297
298
|
ConversationService.get_files(coder).clear_file_cache(clear_contexts=False)
|
|
298
299
|
|
|
@@ -623,7 +624,16 @@ class ConversationChunks:
|
|
|
623
624
|
ConversationService.get_files(coder).add_file(fname, force_refresh=refresh)
|
|
624
625
|
|
|
625
626
|
# Get file content (with proper caching and stub generation)
|
|
626
|
-
content =
|
|
627
|
+
content = None
|
|
628
|
+
if coder.edit_format in ("agent", "subagent"):
|
|
629
|
+
content = ConversationService.get_files(coder).get_file_json(fname)
|
|
630
|
+
else:
|
|
631
|
+
content = ConversationService.get_files(coder).get_file_stub(fname)
|
|
632
|
+
|
|
633
|
+
if not content:
|
|
634
|
+
ConversationService.get_files(coder).clear_file_cache(fname)
|
|
635
|
+
continue
|
|
636
|
+
|
|
627
637
|
if content:
|
|
628
638
|
# Add user message with file path as hash_key
|
|
629
639
|
rel_fname = coder.get_rel_fname(fname)
|
|
@@ -704,7 +714,12 @@ class ConversationChunks:
|
|
|
704
714
|
ConversationService.get_files(coder).add_file(fname, force_refresh=refresh)
|
|
705
715
|
|
|
706
716
|
# Get file content (with proper caching and stub generation)
|
|
707
|
-
content =
|
|
717
|
+
content = None
|
|
718
|
+
if coder.edit_format in ("agent", "subagent"):
|
|
719
|
+
content = ConversationService.get_files(coder).get_file_json(fname)
|
|
720
|
+
else:
|
|
721
|
+
content = ConversationService.get_files(coder).get_file_stub(fname)
|
|
722
|
+
|
|
708
723
|
if not content:
|
|
709
724
|
ConversationService.get_files(coder).clear_file_cache(fname)
|
|
710
725
|
continue
|
|
@@ -998,14 +1013,25 @@ class ConversationChunks:
|
|
|
998
1013
|
def flush_removals(self):
|
|
999
1014
|
self._deferred_removals.clear()
|
|
1000
1015
|
|
|
1001
|
-
def _cancel_post_message_injections(self):
|
|
1016
|
+
def _cancel_post_message_injections(self, modulus=10):
|
|
1002
1017
|
coder = self.get_coder()
|
|
1003
1018
|
if not coder:
|
|
1004
1019
|
return False
|
|
1005
1020
|
|
|
1006
1021
|
# Add system reminder as a pre-prompt context block
|
|
1007
|
-
if coder.edit_format in ("agent", "subagent")
|
|
1008
|
-
|
|
1022
|
+
if coder.edit_format in ("agent", "subagent"):
|
|
1023
|
+
if coder.turn_count < modulus:
|
|
1024
|
+
return True
|
|
1025
|
+
|
|
1026
|
+
if coder.edit_allowed and not coder._get_repetitive_tools():
|
|
1027
|
+
return True
|
|
1028
|
+
|
|
1029
|
+
if coder.turn_count % modulus != 0:
|
|
1030
|
+
# and coder.turn_count % modulus != 0
|
|
1031
|
+
if not coder.edit_allowed:
|
|
1032
|
+
return False
|
|
1033
|
+
else:
|
|
1034
|
+
return True
|
|
1009
1035
|
|
|
1010
1036
|
return False
|
|
1011
1037
|
|
|
@@ -370,8 +370,14 @@ class ConversationManager:
|
|
|
370
370
|
messages_dict = self._add_cache_control(messages_dict)
|
|
371
371
|
return messages_dict
|
|
372
372
|
|
|
373
|
-
def clear_tag(self, tag: str) -> None:
|
|
374
|
-
"""Remove all messages with given tag.
|
|
373
|
+
def clear_tag(self, tag: str, ratio: float = 0) -> None:
|
|
374
|
+
"""Remove all messages with given tag.
|
|
375
|
+
|
|
376
|
+
Args:
|
|
377
|
+
tag: The tag to remove messages for
|
|
378
|
+
ratio: If > 0, only consider the newest ratio portion of messages
|
|
379
|
+
(e.g., 0.25 = newest 25%)
|
|
380
|
+
"""
|
|
375
381
|
if not isinstance(tag, MessageTag):
|
|
376
382
|
try:
|
|
377
383
|
tag = MessageTag(tag)
|
|
@@ -381,7 +387,13 @@ class ConversationManager:
|
|
|
381
387
|
tag_str = tag.value
|
|
382
388
|
messages_to_remove = []
|
|
383
389
|
|
|
384
|
-
|
|
390
|
+
# If ratio is set, only look at the newest portion of messages
|
|
391
|
+
messages = self._messages
|
|
392
|
+
if ratio > 0:
|
|
393
|
+
count = max(1, int(len(messages) * ratio))
|
|
394
|
+
messages = messages[-count:]
|
|
395
|
+
|
|
396
|
+
for message in messages:
|
|
385
397
|
if message.tag == tag_str:
|
|
386
398
|
messages_to_remove.append(message)
|
|
387
399
|
|
|
@@ -394,17 +406,25 @@ class ConversationManager:
|
|
|
394
406
|
self._tag_cache.pop(tag_str, None)
|
|
395
407
|
self._tag_cache.pop(self._ALL_MESSAGES_CACHE_KEY, None)
|
|
396
408
|
|
|
397
|
-
def remove_messages_by_hash_key_pattern(self, pattern_checker) -> None:
|
|
409
|
+
def remove_messages_by_hash_key_pattern(self, pattern_checker, ratio: float = 0) -> None:
|
|
398
410
|
"""
|
|
399
411
|
Remove messages whose hash_key matches a pattern.
|
|
400
412
|
|
|
401
413
|
Args:
|
|
402
414
|
pattern_checker: A function that takes a hash_key (tuple) and returns True
|
|
403
415
|
if the message should be removed
|
|
416
|
+
ratio: If > 0, only consider the newest ratio portion of messages
|
|
417
|
+
(e.g., 0.25 = newest 25%)
|
|
404
418
|
"""
|
|
405
419
|
messages_to_remove = []
|
|
406
420
|
|
|
407
|
-
|
|
421
|
+
# If ratio is set, only look at the newest portion of messages
|
|
422
|
+
messages = self._messages
|
|
423
|
+
if ratio > 0:
|
|
424
|
+
count = max(1, int(len(messages) * ratio))
|
|
425
|
+
messages = messages[-count:]
|
|
426
|
+
|
|
427
|
+
for message in messages:
|
|
408
428
|
if message.hash_key and pattern_checker(message.hash_key):
|
|
409
429
|
messages_to_remove.append(message)
|
|
410
430
|
|
|
@@ -421,17 +441,25 @@ class ConversationManager:
|
|
|
421
441
|
self._tag_cache.pop(tag, None)
|
|
422
442
|
self._tag_cache.pop(self._ALL_MESSAGES_CACHE_KEY, None)
|
|
423
443
|
|
|
424
|
-
def remove_message_by_hash_key(self, hash_key: Tuple[str, ...]) -> bool:
|
|
444
|
+
def remove_message_by_hash_key(self, hash_key: Tuple[str, ...], ratio: float = 0) -> bool:
|
|
425
445
|
"""
|
|
426
446
|
Remove a message by its exact hash key.
|
|
427
447
|
|
|
428
448
|
Args:
|
|
429
449
|
hash_key: The exact hash key to match
|
|
450
|
+
ratio: If > 0, only consider the newest ratio portion of messages
|
|
451
|
+
(e.g., 0.25 = newest 25%)
|
|
430
452
|
|
|
431
453
|
Returns:
|
|
432
454
|
True if a message was removed, False otherwise
|
|
433
455
|
"""
|
|
434
|
-
|
|
456
|
+
# If ratio is set, only look at the newest portion of messages
|
|
457
|
+
messages = self._messages
|
|
458
|
+
if ratio > 0:
|
|
459
|
+
count = max(1, int(len(messages) * ratio))
|
|
460
|
+
messages = messages[-count:]
|
|
461
|
+
|
|
462
|
+
messages_to_remove = [m for m in messages if m.hash_key == hash_key]
|
|
435
463
|
if not messages_to_remove:
|
|
436
464
|
return False
|
|
437
465
|
|
|
@@ -19,6 +19,7 @@ class MessageTag(str, Enum):
|
|
|
19
19
|
CHAT_FILES = "chat_files"
|
|
20
20
|
EDIT_FILES = "edit_files"
|
|
21
21
|
DIFFS = "diffs"
|
|
22
|
+
LINT = "lint"
|
|
22
23
|
FILE_CONTEXTS = "file_contexts"
|
|
23
24
|
CUR = "cur"
|
|
24
25
|
DONE = "done"
|
|
@@ -37,6 +38,7 @@ DEFAULT_TAG_PRIORITY: Dict[MessageTag, int] = {
|
|
|
37
38
|
MessageTag.CHAT_FILES: 200,
|
|
38
39
|
MessageTag.EDIT_FILES: 200,
|
|
39
40
|
MessageTag.DIFFS: 200,
|
|
41
|
+
MessageTag.LINT: 200,
|
|
40
42
|
MessageTag.FILE_CONTEXTS: 200,
|
|
41
43
|
MessageTag.DONE: 200,
|
|
42
44
|
MessageTag.CUR: 200,
|
|
@@ -56,6 +58,7 @@ DEFAULT_TAG_TIMESTAMP_OFFSET: Dict[MessageTag, int] = {
|
|
|
56
58
|
MessageTag.CHAT_FILES: 0,
|
|
57
59
|
MessageTag.EDIT_FILES: 0,
|
|
58
60
|
MessageTag.DIFFS: 0,
|
|
61
|
+
MessageTag.LINT: 0,
|
|
59
62
|
MessageTag.FILE_CONTEXTS: 0,
|
|
60
63
|
MessageTag.DONE: 0,
|
|
61
64
|
MessageTag.CUR: 0,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import hashlib
|
|
2
1
|
import json
|
|
3
2
|
from typing import Any, Dict, Optional, Tuple
|
|
4
3
|
|
|
4
|
+
import xxhash
|
|
5
|
+
|
|
5
6
|
|
|
6
7
|
def generate_message_hash(
|
|
7
8
|
role: str,
|
|
@@ -35,7 +36,7 @@ def generate_message_hash(
|
|
|
35
36
|
else:
|
|
36
37
|
key_data = f"{role}:{content or ''}"
|
|
37
38
|
|
|
38
|
-
return
|
|
39
|
+
return xxhash.xxh3_128_hexdigest(key_data.encode("utf-8"))
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
def validate_message_dict(message_dict: Dict[str, Any]) -> bool:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import difflib
|
|
2
|
+
import json
|
|
2
3
|
import re
|
|
3
4
|
|
|
4
5
|
from cecli.helpers.hashpos.hashpos import HashPos
|
|
@@ -27,6 +28,39 @@ def hashline(text: str, start_line: int = 1) -> str:
|
|
|
27
28
|
return hp.format_content(start_line=start_line)
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
def hashline_formatted(
|
|
32
|
+
text: str, file_name: str, partial: bool, start_line: int = 1
|
|
33
|
+
) -> tuple[str, str]:
|
|
34
|
+
"""
|
|
35
|
+
Generate hashline-formatted content and return it as both raw hashline text and a JSON structure.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
text: Input text
|
|
39
|
+
file_name: The file name or path
|
|
40
|
+
partial: Whether the content represents a partial file
|
|
41
|
+
start_line: Starting line number (default 1)
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
A tuple of (raw_hashline_text, json_text):
|
|
45
|
+
- raw_hashline_text: The HashPos-prefixed content (same as hashline())
|
|
46
|
+
- json_text: JSON-formatted string with file_name, start_line, end_line, partial, and
|
|
47
|
+
prefixed_contents
|
|
48
|
+
"""
|
|
49
|
+
hp = HashPos(text)
|
|
50
|
+
prefixed = hp.format_content(start_line=start_line)
|
|
51
|
+
end_line = start_line + hp.total - 1
|
|
52
|
+
|
|
53
|
+
result = {
|
|
54
|
+
"file_name": file_name,
|
|
55
|
+
"start_line": start_line,
|
|
56
|
+
"end_line": end_line,
|
|
57
|
+
"partial": partial,
|
|
58
|
+
"prefixed_contents": prefixed,
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return prefixed, json.dumps(result, ensure_ascii=False)
|
|
62
|
+
|
|
63
|
+
|
|
30
64
|
# int_to_2digit_52 removed as it is no longer used by the HashPos engine.
|
|
31
65
|
|
|
32
66
|
|