cecli-dev 0.100.8rc2__tar.gz → 0.100.9__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.8rc2 → cecli_dev-0.100.9}/PKG-INFO +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/_version.py +3 -3
- cecli_dev-0.100.9/cecli/coders/__init__.py +57 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/agent_coder.py +87 -10
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/architect_coder.py +0 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/base_coder.py +53 -15
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/copypaste_coder.py +7 -8
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/__init__.py +3 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/agent_model.py +0 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/editor_model.py +0 -1
- cecli_dev-0.100.9/cecli/commands/list_mcp.py +71 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/model.py +0 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/remove_mcp.py +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/weak_model.py +0 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/integration.py +9 -5
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/service.py +7 -4
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/hashline.py +70 -75
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/hashpos/hashpos.py +66 -79
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/responses.py +16 -2
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/linter.py +7 -2
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/llm.py +1 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/main.py +57 -25
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mcp/manager.py +3 -4
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/models.py +51 -8
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/agent.yml +10 -9
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/subagent.yml +9 -8
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/repomap.py +18 -15
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/resources/model-metadata.json +2088 -104
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/scrape.py +4 -6
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/__init__.py +2 -6
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/command.py +40 -7
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/command_interactive.py +60 -26
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/edit_text.py +18 -16
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/read_range.py +15 -8
- cecli_dev-0.100.9/cecli/tools/resource_manager.py +625 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/utils/helpers.py +2 -2
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/utils/registry.py +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/app.py +0 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/watch.py +1 -1
- cecli_dev-0.100.9/cecli/website/_includes/works-best.md +1 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/global-overrides.scss +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/agent-mode.md +3 -5
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/custom-system-prompts.md +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/skills.md +1 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config.md +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/install.md +33 -26
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms.md +8 -19
- {cecli_dev-0.100.8rc2/cecli/website/docs/install → cecli_dev-0.100.9/cecli/website/docs/usage}/optional.md +2 -2
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/tips.md +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage.md +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/SOURCES.txt +13 -6
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/pytest.ini +1 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_coder.py +3 -5
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_hashline.py +38 -37
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_main.py +19 -10
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_model_info_manager.py +1 -1
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/observations/test_observation_service.py +4 -4
- cecli_dev-0.100.9/tests/integration/test_agent_mcp_management.py +132 -0
- cecli_dev-0.100.9/tests/integration/test_mcp_management.py +94 -0
- cecli_dev-0.100.9/tests/subagents/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_registry.py +38 -35
- cecli_dev-0.100.9/tests/tools/test_remove_mcp_tool.py +157 -0
- cecli_dev-0.100.9/tests/tools/test_tools_load_mcp_tool.py +218 -0
- cecli_dev-0.100.9/tests/unit/test_load_mcp.py +281 -0
- cecli_dev-0.100.9/tests/unit/test_remove_mcp.py +273 -0
- cecli_dev-0.100.9/tests/unit/test_unit_load_mcp_tool.py +138 -0
- cecli_dev-0.100.9/tests/unit/test_unit_remove_mcp_tool.py +293 -0
- cecli_dev-0.100.8rc2/cecli/coders/__init__.py +0 -42
- cecli_dev-0.100.8rc2/cecli/tools/context_manager.py +0 -308
- cecli_dev-0.100.8rc2/cecli/tools/load_skill.py +0 -48
- cecli_dev-0.100.8rc2/cecli/tools/remove_skill.py +0 -48
- cecli_dev-0.100.8rc2/cecli/website/_includes/works-best.md +0 -1
- cecli_dev-0.100.8rc2/cecli/website/docs/faq.md +0 -379
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.dockerignore +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.flake8 +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.gitattributes +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.gitignore +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/CHANGELOG.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/CNAME +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/HISTORY.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/LICENSE.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/MANIFEST.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/README.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/README.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/docker.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/over_time.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/plot.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/plots.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/prompts.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/__main__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/args.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/add.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/code.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/context.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/core.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/git.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/help.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/load.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/map.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/merge.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/models.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/report.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/run.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/save.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/test.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/web.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/diffs.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/dump.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/editor.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/exceptions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/format_settings.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/help.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/help_pats.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/local_workspace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/helpers/threading.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/history.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/service.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/io.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/mdstream.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/onboarding.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/repo.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/report.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/sendchat.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/sessions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/special.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/_yield.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/delegate.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.100.8rc2/scripts → cecli_dev-0.100.9/cecli/tools/utils}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/io.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/urls.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/utils.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/voice.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/waiting.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/docker/Dockerfile +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/pyproject.toml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/requirements.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/requirements.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/30k-image.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.100.8rc2/tests → cecli_dev-0.100.9/scripts}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/blame.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/homepage.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/issues.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/update-history.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/versionbump.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/setup.cfg +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/shim.pyproject.toml +0 -0
- {cecli_dev-0.100.8rc2/tests/basic → cecli_dev-0.100.9/tests}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2/tests/hooks → cecli_dev-0.100.9/tests/basic}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/conftest.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/conftest.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/help/test_help.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_local_workspace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.100.8rc2/tests/mcp → cecli_dev-0.100.9/tests/hooks}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.100.8rc2/tests/subagents → cecli_dev-0.100.9/tests/mcp}/__init__.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/conftest.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_config.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_service.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tools/validations.py +0 -0
- {cecli_dev-0.100.8rc2 → cecli_dev-0.100.9}/tests/tui/test_app.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.9'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 9)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g4a4f1b61b'
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""Coder module with lazy imports to reduce startup memory."""
|
|
2
|
+
|
|
3
|
+
__all__ = [
|
|
4
|
+
"HelpCoder",
|
|
5
|
+
"AskCoder",
|
|
6
|
+
"Coder",
|
|
7
|
+
"EditBlockCoder",
|
|
8
|
+
"EditBlockFencedCoder",
|
|
9
|
+
"WholeFileCoder",
|
|
10
|
+
"PatchCoder",
|
|
11
|
+
"UnifiedDiffCoder",
|
|
12
|
+
"UnifiedDiffSimpleCoder",
|
|
13
|
+
"ArchitectCoder",
|
|
14
|
+
"EditorEditBlockCoder",
|
|
15
|
+
"EditorWholeFileCoder",
|
|
16
|
+
"EditorDiffFencedCoder",
|
|
17
|
+
"ContextCoder",
|
|
18
|
+
"AgentCoder",
|
|
19
|
+
"CopyPasteCoder",
|
|
20
|
+
"HashLineCoder",
|
|
21
|
+
"SubAgentCoder",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
# Module name mapping (snake_case to class name)
|
|
25
|
+
_MODULE_MAP = {
|
|
26
|
+
"HelpCoder": ".help_coder",
|
|
27
|
+
"AskCoder": ".ask_coder",
|
|
28
|
+
"Coder": ".base_coder",
|
|
29
|
+
"EditBlockCoder": ".editblock_coder",
|
|
30
|
+
"EditBlockFencedCoder": ".editblock_fenced_coder",
|
|
31
|
+
"WholeFileCoder": ".wholefile_coder",
|
|
32
|
+
"PatchCoder": ".patch_coder",
|
|
33
|
+
"UnifiedDiffCoder": ".udiff_coder",
|
|
34
|
+
"UnifiedDiffSimpleCoder": ".udiff_simple",
|
|
35
|
+
"ArchitectCoder": ".architect_coder",
|
|
36
|
+
"EditorEditBlockCoder": ".editor_editblock_coder",
|
|
37
|
+
"EditorWholeFileCoder": ".editor_whole_coder",
|
|
38
|
+
"EditorDiffFencedCoder": ".editor_diff_fenced_coder",
|
|
39
|
+
"ContextCoder": ".context_coder",
|
|
40
|
+
"AgentCoder": ".agent_coder",
|
|
41
|
+
"CopyPasteCoder": ".copypaste_coder",
|
|
42
|
+
"HashLineCoder": ".hashline_coder",
|
|
43
|
+
"SubAgentCoder": ".sub_agent_coder",
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def __getattr__(name):
|
|
48
|
+
if name in _MODULE_MAP:
|
|
49
|
+
import importlib
|
|
50
|
+
|
|
51
|
+
mod = importlib.import_module(_MODULE_MAP[name], __package__)
|
|
52
|
+
return getattr(mod, name)
|
|
53
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def __dir__():
|
|
57
|
+
return __all__
|
|
@@ -194,6 +194,7 @@ class AgentCoder(Coder):
|
|
|
194
194
|
"todo_list",
|
|
195
195
|
"sub_agents",
|
|
196
196
|
"skills",
|
|
197
|
+
"servers",
|
|
197
198
|
},
|
|
198
199
|
)
|
|
199
200
|
)
|
|
@@ -357,6 +358,7 @@ class AgentCoder(Coder):
|
|
|
357
358
|
"git_status",
|
|
358
359
|
"symbol_outline",
|
|
359
360
|
"skills",
|
|
361
|
+
"servers",
|
|
360
362
|
"sub_agents",
|
|
361
363
|
"loaded_skills",
|
|
362
364
|
]
|
|
@@ -391,6 +393,8 @@ class AgentCoder(Coder):
|
|
|
391
393
|
content = self.get_todo_list()
|
|
392
394
|
elif block_name == "skills":
|
|
393
395
|
content = self.get_skills_context()
|
|
396
|
+
elif block_name == "servers":
|
|
397
|
+
content = self.get_servers_context()
|
|
394
398
|
elif block_name == "loaded_skills":
|
|
395
399
|
content = self.get_skills_content()
|
|
396
400
|
elif block_name == "sub_agents" and (
|
|
@@ -624,8 +628,8 @@ class AgentCoder(Coder):
|
|
|
624
628
|
result += f" ({percentage:.1f}% of limit)"
|
|
625
629
|
if percentage > 80:
|
|
626
630
|
result += "\n\n⚠ **Context is getting full!**\n"
|
|
627
|
-
result += "- Remove non-essential files via the `
|
|
628
|
-
result += "- Keep only essential files in context for best performance"
|
|
631
|
+
result += "- Remove non-essential files, skills and tool servers via the `ResourceManager` tool.\n"
|
|
632
|
+
result += "- Keep only essential files, skills, and MCP servers in context for best performance"
|
|
629
633
|
result += "\n</context>"
|
|
630
634
|
if not hasattr(self, "context_blocks_cache"):
|
|
631
635
|
self.context_blocks_cache = {}
|
|
@@ -659,7 +663,9 @@ class AgentCoder(Coder):
|
|
|
659
663
|
result += f"- Git repository: {rel_repo_dir} with {num_files:,} files\n"
|
|
660
664
|
except Exception:
|
|
661
665
|
result += "- Git repository: active but details unavailable\n"
|
|
662
|
-
|
|
666
|
+
if self.mcp_manager and self.mcp_manager.connected_servers:
|
|
667
|
+
num_mcp_servers = len(self.mcp_manager.connected_servers)
|
|
668
|
+
result += f"- Connected MCP servers: {num_mcp_servers}\n"
|
|
663
669
|
result += "- Git repository: none\n"
|
|
664
670
|
result += "</context>"
|
|
665
671
|
return result
|
|
@@ -806,9 +812,7 @@ class AgentCoder(Coder):
|
|
|
806
812
|
if self.auto_lint and used_write_tool:
|
|
807
813
|
edited = list(self.files_edited_by_tools)
|
|
808
814
|
lint_coro = self.lint_edited(edited, show_output=False)
|
|
809
|
-
lint_errors, interrupted = await self.
|
|
810
|
-
lint_coro, self.interrupt_event
|
|
811
|
-
)
|
|
815
|
+
lint_errors, interrupted = await interruptible(lint_coro, self.interrupt_event)
|
|
812
816
|
if interrupted:
|
|
813
817
|
raise KeyboardInterrupt("Interrupted during linting")
|
|
814
818
|
|
|
@@ -928,9 +932,7 @@ class AgentCoder(Coder):
|
|
|
928
932
|
)
|
|
929
933
|
self.io.tool_output(waiting_msg)
|
|
930
934
|
sleep_coro = asyncio.sleep(command_timeout / 2)
|
|
931
|
-
_res, interrupted = await self.
|
|
932
|
-
sleep_coro, self.interrupt_event
|
|
933
|
-
)
|
|
935
|
+
_res, interrupted = await interruptible(sleep_coro, self.interrupt_event)
|
|
934
936
|
if interrupted:
|
|
935
937
|
raise KeyboardInterrupt("Interrupted while waiting for background commands")
|
|
936
938
|
return True
|
|
@@ -1329,7 +1331,7 @@ class AgentCoder(Coder):
|
|
|
1329
1331
|
|
|
1330
1332
|
Override parent's method to disable implicit file mention handling in agent mode.
|
|
1331
1333
|
Files should only be added via explicit tool commands
|
|
1332
|
-
(`
|
|
1334
|
+
(`ResourceManager`).
|
|
1333
1335
|
"""
|
|
1334
1336
|
pass
|
|
1335
1337
|
|
|
@@ -1483,6 +1485,81 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1483
1485
|
self.io.tool_error(f"Error generating skills content context: {str(e)}")
|
|
1484
1486
|
return None
|
|
1485
1487
|
|
|
1488
|
+
def get_servers_context(self):
|
|
1489
|
+
"""
|
|
1490
|
+
Generate a context block for available MCP servers.
|
|
1491
|
+
|
|
1492
|
+
Categorizes servers as:
|
|
1493
|
+
- Active: Connected and passing includelist/excludelist filters
|
|
1494
|
+
- Inactive: Connected but filtered out by includelist/excludelist
|
|
1495
|
+
- Available (Disconnected): Managed but not currently connected
|
|
1496
|
+
|
|
1497
|
+
Returns:
|
|
1498
|
+
Formatted context block string or None if no servers available
|
|
1499
|
+
"""
|
|
1500
|
+
if not self.use_enhanced_context:
|
|
1501
|
+
return None
|
|
1502
|
+
try:
|
|
1503
|
+
if not self.mcp_manager:
|
|
1504
|
+
return None
|
|
1505
|
+
|
|
1506
|
+
all_servers = self.mcp_manager.servers
|
|
1507
|
+
connected_servers = self.mcp_manager.connected_servers
|
|
1508
|
+
connected_server_names = {s.name for s in connected_servers}
|
|
1509
|
+
|
|
1510
|
+
if not all_servers:
|
|
1511
|
+
return None
|
|
1512
|
+
|
|
1513
|
+
# Apply registered_servers filtering to determine active vs inactive
|
|
1514
|
+
incl = self.registered_servers.get("included", set())
|
|
1515
|
+
excl = self.registered_servers.get("excluded", set())
|
|
1516
|
+
|
|
1517
|
+
active_servers = []
|
|
1518
|
+
inactive_servers = []
|
|
1519
|
+
for server in connected_servers:
|
|
1520
|
+
name = server.name
|
|
1521
|
+
if incl and name not in incl:
|
|
1522
|
+
inactive_servers.append(name)
|
|
1523
|
+
elif name in excl:
|
|
1524
|
+
inactive_servers.append(name)
|
|
1525
|
+
else:
|
|
1526
|
+
active_servers.append(name)
|
|
1527
|
+
|
|
1528
|
+
# Servers managed but not currently connected
|
|
1529
|
+
disconnected_servers = [
|
|
1530
|
+
server.name for server in all_servers if server.name not in connected_server_names
|
|
1531
|
+
]
|
|
1532
|
+
|
|
1533
|
+
result = '<context name="servers" from="agent">\n'
|
|
1534
|
+
result += "## Connected MCP Servers\n\n"
|
|
1535
|
+
|
|
1536
|
+
if active_servers:
|
|
1537
|
+
result += f"Active ({len(active_servers)}):\n"
|
|
1538
|
+
for name in sorted(active_servers):
|
|
1539
|
+
result += f"- {name}\n"
|
|
1540
|
+
result += "\n"
|
|
1541
|
+
|
|
1542
|
+
if inactive_servers:
|
|
1543
|
+
result += f"Inactive (Filtered) ({len(inactive_servers)}):\n"
|
|
1544
|
+
for name in sorted(inactive_servers):
|
|
1545
|
+
result += f"- {name}\n"
|
|
1546
|
+
result += "\n"
|
|
1547
|
+
|
|
1548
|
+
if disconnected_servers:
|
|
1549
|
+
result += f"Available (Disconnected) ({len(disconnected_servers)}):\n"
|
|
1550
|
+
for name in sorted(disconnected_servers):
|
|
1551
|
+
result += f"- {name}\n"
|
|
1552
|
+
result += "\n"
|
|
1553
|
+
|
|
1554
|
+
if not active_servers and not inactive_servers and not disconnected_servers:
|
|
1555
|
+
result += "No MCP servers currently available.\n\n"
|
|
1556
|
+
|
|
1557
|
+
result += "</context>"
|
|
1558
|
+
return result
|
|
1559
|
+
except Exception as e:
|
|
1560
|
+
self.io.tool_error(f"Error generating servers context: {str(e)}")
|
|
1561
|
+
return None
|
|
1562
|
+
|
|
1486
1563
|
def get_sub_agents_context(self):
|
|
1487
1564
|
"""
|
|
1488
1565
|
Generate a context block for registered sub-agents.
|
|
@@ -45,7 +45,6 @@ class ArchitectCoder(AskCoder):
|
|
|
45
45
|
kwargs["args"] = self.args
|
|
46
46
|
kwargs["suggest_shell_commands"] = False
|
|
47
47
|
kwargs["map_tokens"] = 0
|
|
48
|
-
kwargs["total_cost"] = self.total_cost
|
|
49
48
|
kwargs["cache_prompts"] = False
|
|
50
49
|
kwargs["num_cache_warming_pings"] = 0
|
|
51
50
|
kwargs["summarize_from_coder"] = False
|
|
@@ -31,12 +31,6 @@ from typing import List
|
|
|
31
31
|
from urllib.parse import urlparse
|
|
32
32
|
from uuid import uuid4 as generate_unique_id
|
|
33
33
|
|
|
34
|
-
import httpx
|
|
35
|
-
from litellm import experimental_mcp_client
|
|
36
|
-
from litellm.types.utils import ModelResponse
|
|
37
|
-
from prompt_toolkit.patch_stdout import patch_stdout
|
|
38
|
-
from rich.console import Console
|
|
39
|
-
|
|
40
34
|
import cecli.prompts.utils.system as prompts
|
|
41
35
|
from cecli import __version__, models, urls, utils
|
|
42
36
|
from cecli.commands import Commands, SwitchCoderSignal
|
|
@@ -111,6 +105,28 @@ all_fences = [
|
|
|
111
105
|
wrap_fence("sourcecode"),
|
|
112
106
|
]
|
|
113
107
|
|
|
108
|
+
# Map of edit_format values to coder class names.
|
|
109
|
+
# Used by Coder.create() to find the right coder class by edit_format
|
|
110
|
+
# without importing all coder modules.
|
|
111
|
+
EDIT_FORMAT_MAP = {
|
|
112
|
+
"help": "HelpCoder",
|
|
113
|
+
"ask": "AskCoder",
|
|
114
|
+
"diff": "EditBlockCoder",
|
|
115
|
+
"diff-fenced": "EditBlockFencedCoder",
|
|
116
|
+
"whole": "WholeFileCoder",
|
|
117
|
+
"patch": "PatchCoder",
|
|
118
|
+
"udiff": "UnifiedDiffCoder",
|
|
119
|
+
"udiff-simple": "UnifiedDiffSimpleCoder",
|
|
120
|
+
"architect": "ArchitectCoder",
|
|
121
|
+
"editor-diff": "EditorEditBlockCoder",
|
|
122
|
+
"editor-whole": "EditorWholeFileCoder",
|
|
123
|
+
"editor-diff-fenced": "EditorDiffFencedCoder",
|
|
124
|
+
"context": "ContextCoder",
|
|
125
|
+
"agent": "AgentCoder",
|
|
126
|
+
"hashline": "HashLineCoder",
|
|
127
|
+
"subagent": "SubAgentCoder",
|
|
128
|
+
}
|
|
129
|
+
|
|
114
130
|
|
|
115
131
|
class UsageMeta(type):
|
|
116
132
|
"""Metaclass that provides shared accumulator properties across all Coder subclasses.
|
|
@@ -335,9 +351,10 @@ class Coder(metaclass=UsageMeta):
|
|
|
335
351
|
res = coders.CopyPasteCoder(main_model, io, args=args, **kwargs)
|
|
336
352
|
|
|
337
353
|
if not res:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
354
|
+
coder_name = EDIT_FORMAT_MAP.get(edit_format)
|
|
355
|
+
if coder_name:
|
|
356
|
+
coder_cls = getattr(coders, coder_name)
|
|
357
|
+
res = coder_cls(main_model, io, args=args, **kwargs)
|
|
341
358
|
|
|
342
359
|
if res is not None:
|
|
343
360
|
if from_coder:
|
|
@@ -359,11 +376,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
359
376
|
res.original_kwargs = dict(kwargs)
|
|
360
377
|
return res
|
|
361
378
|
|
|
362
|
-
valid_formats =
|
|
363
|
-
str(c.edit_format)
|
|
364
|
-
for c in coders.__all__
|
|
365
|
-
if hasattr(c, "edit_format") and c.edit_format is not None
|
|
366
|
-
]
|
|
379
|
+
valid_formats = list(EDIT_FORMAT_MAP.keys())
|
|
367
380
|
raise UnknownEditFormat(edit_format, valid_formats)
|
|
368
381
|
|
|
369
382
|
async def clone(self, **kwargs):
|
|
@@ -1470,6 +1483,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
1470
1483
|
return await self._run_linear(with_message, preproc)
|
|
1471
1484
|
|
|
1472
1485
|
if self.io.prompt_session:
|
|
1486
|
+
from prompt_toolkit.patch_stdout import patch_stdout
|
|
1487
|
+
|
|
1473
1488
|
with patch_stdout(raw=True):
|
|
1474
1489
|
return await self._run_parallel(with_message, preproc)
|
|
1475
1490
|
else:
|
|
@@ -1954,7 +1969,10 @@ class Coder(metaclass=UsageMeta):
|
|
|
1954
1969
|
|
|
1955
1970
|
def keyboard_interrupt(self):
|
|
1956
1971
|
# Ensure cursor is visible on exit
|
|
1957
|
-
|
|
1972
|
+
if not self.tui:
|
|
1973
|
+
from rich.console import Console
|
|
1974
|
+
|
|
1975
|
+
Console().show_cursor(True)
|
|
1958
1976
|
|
|
1959
1977
|
self.io.tool_warning("^C KeyboardInterrupt")
|
|
1960
1978
|
self.interrupt_event.set()
|
|
@@ -1973,13 +1991,25 @@ class Coder(metaclass=UsageMeta):
|
|
|
1973
1991
|
done_messages = manager.get_messages_dict(MessageTag.DONE)
|
|
1974
1992
|
cur_messages = manager.get_messages_dict(MessageTag.CUR)
|
|
1975
1993
|
diff_messages = manager.get_messages_dict(MessageTag.DIFFS)
|
|
1994
|
+
all_messages = manager.get_messages_dict()
|
|
1976
1995
|
|
|
1977
1996
|
# Exclude first cur_message since that's the user's initial input
|
|
1978
1997
|
done_tokens = self.summarizer.count_tokens(done_messages)
|
|
1979
1998
|
cur_tokens = self.summarizer.count_tokens(cur_messages[1:] if len(cur_messages) > 1 else [])
|
|
1980
1999
|
diff_tokens = self.summarizer.count_tokens(diff_messages)
|
|
2000
|
+
all_tokens = self.summarizer.count_tokens(all_messages)
|
|
2001
|
+
|
|
1981
2002
|
combined_tokens = done_tokens + cur_tokens + diff_tokens
|
|
1982
2003
|
|
|
2004
|
+
if force or (
|
|
2005
|
+
all_tokens >= self.context_compaction_max_tokens * 0.9
|
|
2006
|
+
and ConversationService.get_chunks(self).last_clear_count > 10
|
|
2007
|
+
):
|
|
2008
|
+
manager.clear_tag(MessageTag.DIFFS)
|
|
2009
|
+
manager.clear_tag(MessageTag.FILE_CONTEXTS)
|
|
2010
|
+
ConversationService.get_files(self).clear_file_cache()
|
|
2011
|
+
ConversationService.get_chunks(self).flush_removals()
|
|
2012
|
+
|
|
1983
2013
|
if not force and combined_tokens < self.context_compaction_max_tokens:
|
|
1984
2014
|
return
|
|
1985
2015
|
|
|
@@ -2881,6 +2911,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
2881
2911
|
|
|
2882
2912
|
async def _execute_mcp_tools(self, server, tool_calls):
|
|
2883
2913
|
"""Execute MCP tools via LiteLLM."""
|
|
2914
|
+
import httpx
|
|
2915
|
+
|
|
2884
2916
|
tool_responses = []
|
|
2885
2917
|
try:
|
|
2886
2918
|
# Connect to the server once
|
|
@@ -2928,6 +2960,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
2928
2960
|
continue
|
|
2929
2961
|
|
|
2930
2962
|
async def do_tool_call():
|
|
2963
|
+
from litellm import experimental_mcp_client
|
|
2964
|
+
|
|
2931
2965
|
return await experimental_mcp_client.call_openai_tool(
|
|
2932
2966
|
session=session,
|
|
2933
2967
|
openai_tool=new_tool_call,
|
|
@@ -3366,6 +3400,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
3366
3400
|
return prompts.added_files.format(fnames=", ".join(added_fnames))
|
|
3367
3401
|
|
|
3368
3402
|
async def send(self, messages, model=None, functions=None, tools=None):
|
|
3403
|
+
from litellm.types.utils import ModelResponse
|
|
3404
|
+
|
|
3369
3405
|
self.interrupt_event.clear()
|
|
3370
3406
|
self.got_reasoning_content = False
|
|
3371
3407
|
self.ended_reasoning_content = False
|
|
@@ -3452,6 +3488,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
3452
3488
|
self.io.ai_output(json.dumps(args, indent=4))
|
|
3453
3489
|
|
|
3454
3490
|
async def show_send_output(self, completion):
|
|
3491
|
+
from litellm.types.utils import ModelResponse
|
|
3492
|
+
|
|
3455
3493
|
if self.verbose:
|
|
3456
3494
|
print(completion)
|
|
3457
3495
|
|
|
@@ -78,14 +78,13 @@ class CopyPasteCoder(Coder):
|
|
|
78
78
|
coders = None
|
|
79
79
|
|
|
80
80
|
target_coder_class = None
|
|
81
|
-
if coders is not None:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
break
|
|
81
|
+
if coders is not None and selected_edit_format:
|
|
82
|
+
# Use EDIT_FORMAT_MAP from base_coder to find the right coder class by edit_format
|
|
83
|
+
from cecli.coders.base_coder import EDIT_FORMAT_MAP
|
|
84
|
+
|
|
85
|
+
coder_name = EDIT_FORMAT_MAP.get(selected_edit_format)
|
|
86
|
+
if coder_name:
|
|
87
|
+
target_coder_class = getattr(coders, coder_name, None)
|
|
89
88
|
|
|
90
89
|
# Mirror prompt pack + edit_format where available.
|
|
91
90
|
if target_coder_class is not None:
|
|
@@ -35,6 +35,7 @@ from .hooks import HooksCommand
|
|
|
35
35
|
from .hot_reload import HotReloadCommand
|
|
36
36
|
from .include_skill import IncludeSkillCommand
|
|
37
37
|
from .lint import LintCommand
|
|
38
|
+
from .list_mcp import ListMcpCommand
|
|
38
39
|
from .list_sessions import ListSessionsCommand
|
|
39
40
|
from .list_skills import ListSkillsCommand
|
|
40
41
|
from .load import LoadCommand
|
|
@@ -123,6 +124,7 @@ CommandRegistry.register(SpawnAgentCommand)
|
|
|
123
124
|
CommandRegistry.register(SwitchAgentCommand)
|
|
124
125
|
CommandRegistry.register(IncludeSkillCommand)
|
|
125
126
|
CommandRegistry.register(LintCommand)
|
|
127
|
+
CommandRegistry.register(ListMcpCommand)
|
|
126
128
|
CommandRegistry.register(ListSessionsCommand)
|
|
127
129
|
CommandRegistry.register(ListSkillsCommand)
|
|
128
130
|
CommandRegistry.register(LoadCommand)
|
|
@@ -210,6 +212,7 @@ __all__ = [
|
|
|
210
212
|
"LoadCommand",
|
|
211
213
|
"LoadHookCommand",
|
|
212
214
|
"LoadMcpCommand",
|
|
215
|
+
"ListMcpCommand",
|
|
213
216
|
"LoadSessionCommand",
|
|
214
217
|
"LoadSkillCommand",
|
|
215
218
|
"LsCommand",
|
|
@@ -47,7 +47,6 @@ class AgentModelCommand(BaseCommand):
|
|
|
47
47
|
kwargs["main_model"] = model
|
|
48
48
|
kwargs["edit_format"] = coder.edit_format # Keep the same edit format
|
|
49
49
|
kwargs["suggest_shell_commands"] = False
|
|
50
|
-
kwargs["total_cost"] = coder.total_cost
|
|
51
50
|
kwargs["num_cache_warming_pings"] = 0
|
|
52
51
|
kwargs["summarize_from_coder"] = False
|
|
53
52
|
kwargs["done_messages"] = []
|
|
@@ -46,7 +46,6 @@ class EditorModelCommand(BaseCommand):
|
|
|
46
46
|
kwargs["main_model"] = model
|
|
47
47
|
kwargs["edit_format"] = coder.edit_format # Keep the same edit format
|
|
48
48
|
kwargs["suggest_shell_commands"] = False
|
|
49
|
-
kwargs["total_cost"] = coder.total_cost
|
|
50
49
|
kwargs["num_cache_warming_pings"] = 0
|
|
51
50
|
kwargs["summarize_from_coder"] = False
|
|
52
51
|
kwargs["done_messages"] = []
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from cecli.commands.utils.base_command import BaseCommand
|
|
2
|
+
from cecli.commands.utils.helpers import format_command_result
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ListMcpCommand(BaseCommand):
|
|
6
|
+
NORM_NAME = "list-mcp"
|
|
7
|
+
DESCRIPTION = "List all loaded and configured MCP servers."
|
|
8
|
+
|
|
9
|
+
@classmethod
|
|
10
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
11
|
+
"""Execute the list-mcp command."""
|
|
12
|
+
if not coder.mcp_manager:
|
|
13
|
+
return format_command_result(io, cls.NORM_NAME, "MCP manager is not configured.")
|
|
14
|
+
|
|
15
|
+
all_servers = coder.mcp_manager.servers
|
|
16
|
+
connected_servers = coder.mcp_manager.connected_servers
|
|
17
|
+
|
|
18
|
+
connected_server_names = {s.name for s in connected_servers}
|
|
19
|
+
|
|
20
|
+
# Apply per-coder registered_servers filtering to determine active status
|
|
21
|
+
incl = coder.registered_servers["included"]
|
|
22
|
+
excl = coder.registered_servers["excluded"]
|
|
23
|
+
|
|
24
|
+
active_servers = []
|
|
25
|
+
inactive_servers = []
|
|
26
|
+
|
|
27
|
+
for server in connected_servers:
|
|
28
|
+
name = server.name
|
|
29
|
+
# Same filtering logic used in base_coder.get_tool_list()
|
|
30
|
+
if incl and name not in incl:
|
|
31
|
+
inactive_servers.append(name)
|
|
32
|
+
elif name in excl:
|
|
33
|
+
inactive_servers.append(name)
|
|
34
|
+
else:
|
|
35
|
+
active_servers.append(name)
|
|
36
|
+
|
|
37
|
+
configured_servers = [
|
|
38
|
+
server for server in all_servers if server.name not in connected_server_names
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
result = []
|
|
42
|
+
if active_servers:
|
|
43
|
+
result.append("Active MCP Servers:")
|
|
44
|
+
for name in sorted(active_servers):
|
|
45
|
+
result.append(f"- {name}")
|
|
46
|
+
else:
|
|
47
|
+
result.append("No MCP servers are active for this coder.")
|
|
48
|
+
|
|
49
|
+
if inactive_servers:
|
|
50
|
+
result.append("")
|
|
51
|
+
result.append("Inactive (Filtered) MCP Servers:")
|
|
52
|
+
for name in sorted(inactive_servers):
|
|
53
|
+
result.append(f"- {name}")
|
|
54
|
+
|
|
55
|
+
result.append("")
|
|
56
|
+
if configured_servers:
|
|
57
|
+
result.append("Configured MCP Servers:")
|
|
58
|
+
for server in sorted(configured_servers, key=lambda s: s.name):
|
|
59
|
+
result.append(f"- {server.name}")
|
|
60
|
+
else:
|
|
61
|
+
result.append("No other MCP servers are configured.")
|
|
62
|
+
|
|
63
|
+
return format_command_result(io, cls.NORM_NAME, "\n".join(result))
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def get_help(cls) -> str:
|
|
67
|
+
"""Get help text for the list-mcp command."""
|
|
68
|
+
help_text = super().get_help()
|
|
69
|
+
help_text += "\nUsage:\n"
|
|
70
|
+
help_text += " /list-mcp # Lists MCP servers with coder-sensitive active/inactive/configured status\n"
|
|
71
|
+
return help_text
|
|
@@ -50,7 +50,6 @@ class ModelCommand(BaseCommand):
|
|
|
50
50
|
kwargs["main_model"] = model
|
|
51
51
|
kwargs["edit_format"] = new_edit_format
|
|
52
52
|
kwargs["suggest_shell_commands"] = False
|
|
53
|
-
kwargs["total_cost"] = coder.total_cost
|
|
54
53
|
kwargs["num_cache_warming_pings"] = 0
|
|
55
54
|
kwargs["summarize_from_coder"] = False
|
|
56
55
|
kwargs["done_messages"] = []
|
|
@@ -10,7 +10,7 @@ from cecli.commands.utils.helpers import (
|
|
|
10
10
|
|
|
11
11
|
class RemoveMcpCommand(BaseCommand):
|
|
12
12
|
NORM_NAME = "remove-mcp"
|
|
13
|
-
DESCRIPTION = "Remove a MCP server by name, or use '*' to remove all"
|
|
13
|
+
DESCRIPTION = "Remove (unload) a MCP server by name, or use '*' to remove all"
|
|
14
14
|
|
|
15
15
|
@classmethod
|
|
16
16
|
async def execute(cls, io, coder, args, **kwargs):
|
|
@@ -46,7 +46,6 @@ class WeakModelCommand(BaseCommand):
|
|
|
46
46
|
kwargs["main_model"] = model
|
|
47
47
|
kwargs["edit_format"] = coder.edit_format # Keep the same edit format
|
|
48
48
|
kwargs["suggest_shell_commands"] = False
|
|
49
|
-
kwargs["total_cost"] = coder.total_cost
|
|
50
49
|
kwargs["num_cache_warming_pings"] = 0
|
|
51
50
|
kwargs["summarize_from_coder"] = False
|
|
52
51
|
kwargs["done_messages"] = []
|
|
@@ -18,7 +18,7 @@ class ConversationChunks:
|
|
|
18
18
|
def __init__(self, coder):
|
|
19
19
|
self.coder = weakref.ref(coder)
|
|
20
20
|
self.uuid = coder.uuid
|
|
21
|
-
self.
|
|
21
|
+
self.last_clear_count = 0
|
|
22
22
|
self._deferred_removals = set()
|
|
23
23
|
|
|
24
24
|
@classmethod
|
|
@@ -282,14 +282,14 @@ class ConversationChunks:
|
|
|
282
282
|
if diff_count > 0 and other_count > 0 and diff_count / other_count > 20:
|
|
283
283
|
should_clear = True
|
|
284
284
|
|
|
285
|
-
self.
|
|
285
|
+
self.last_clear_count += 1
|
|
286
286
|
|
|
287
287
|
if (
|
|
288
288
|
should_clear
|
|
289
|
-
and self.
|
|
289
|
+
and self.last_clear_count >= 20
|
|
290
290
|
and diff_tokens + other_tokens > coder.context_compaction_max_tokens * 0.5
|
|
291
291
|
):
|
|
292
|
-
self.
|
|
292
|
+
self.last_clear_count = 0
|
|
293
293
|
|
|
294
294
|
# Clear all diff messages
|
|
295
295
|
ConversationService.get_manager(coder).clear_tag(MessageTag.DIFFS)
|
|
@@ -890,7 +890,7 @@ class ConversationChunks:
|
|
|
890
890
|
"""
|
|
891
891
|
Add static context blocks to conversation (priority 50).
|
|
892
892
|
|
|
893
|
-
Static blocks include: environment_info, directory_structure, skills
|
|
893
|
+
Static blocks include: environment_info, directory_structure, skills, servers, sub_agents
|
|
894
894
|
"""
|
|
895
895
|
coder = self.get_coder()
|
|
896
896
|
if not coder:
|
|
@@ -922,6 +922,10 @@ class ConversationChunks:
|
|
|
922
922
|
block = coder._generate_context_block("skills")
|
|
923
923
|
if block:
|
|
924
924
|
message_blocks["skills"] = block
|
|
925
|
+
if "servers" in coder.allowed_context_blocks:
|
|
926
|
+
block = coder._generate_context_block("servers")
|
|
927
|
+
if block:
|
|
928
|
+
message_blocks["servers"] = block
|
|
925
929
|
|
|
926
930
|
# Add static blocks to conversation manager with stable hash keys
|
|
927
931
|
for block_type, block_content in message_blocks.items():
|
|
@@ -71,16 +71,19 @@ class FileSystemService:
|
|
|
71
71
|
cls._instance = None
|
|
72
72
|
|
|
73
73
|
@classmethod
|
|
74
|
-
def get_instance(cls, root: str =
|
|
74
|
+
def get_instance(cls, root: str | None = None, repo=None) -> "FileSystemService":
|
|
75
75
|
"""
|
|
76
76
|
Return the global singleton.
|
|
77
77
|
|
|
78
78
|
On first call, creates and builds the instance using root/repo.
|
|
79
|
-
Subsequent calls return the existing instance
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
Subsequent calls return the existing instance. If a non-None root
|
|
80
|
+
is explicitly provided and differs from the current root, the
|
|
81
|
+
singleton is rebuilt (e.g. when a new coder is created in a
|
|
82
|
+
different working directory).
|
|
82
83
|
"""
|
|
83
84
|
if cls._instance is None:
|
|
85
|
+
cls._instance = cls._create(root=root or ".", repo=repo)
|
|
86
|
+
elif root is not None and root != cls._instance.root:
|
|
84
87
|
cls._instance = cls._create(root=root, repo=repo)
|
|
85
88
|
return cls._instance
|
|
86
89
|
|