cecli-dev 0.99.9__tar.gz → 0.99.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/PKG-INFO +1 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/__init__.py +1 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/_version.py +3 -3
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/agent_coder.py +29 -5
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/base_coder.py +84 -49
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/__init__.py +9 -0
- cecli_dev-0.99.10/cecli/commands/exclude_skill.py +72 -0
- cecli_dev-0.99.10/cecli/commands/include_skill.py +72 -0
- cecli_dev-0.99.10/cecli/commands/list_skills.py +51 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/load_mcp.py +41 -21
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/load_skill.py +0 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/remove_mcp.py +40 -19
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/remove_skill.py +0 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/utils/helpers.py +2 -2
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/files.py +20 -14
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/integration.py +49 -8
- cecli_dev-0.99.10/cecli/helpers/coroutines.py +45 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/hashpos/hashpos.py +50 -8
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/skills.py +281 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/io.py +2 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/main.py +3 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/models.py +10 -2
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/sessions.py +12 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/__init__.py +2 -2
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/command.py +9 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/context_manager.py +15 -15
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/edit_text.py +1 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/grep.py +2 -1
- cecli_dev-0.99.9/cecli/tools/get_lines.py → cecli_dev-0.99.10/cecli/tools/read_range.py +24 -8
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/utils/base_tool.py +2 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/app.py +4 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/SOURCES.txt +4 -1
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_get_lines.py +7 -5
- cecli_dev-0.99.9/cecli/helpers/coroutines.py +0 -8
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.dockerignore +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.flake8 +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.gitattributes +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.gitignore +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/CHANGELOG.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/CNAME +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/HISTORY.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/LICENSE.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/MANIFEST.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/README.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/README.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/docker.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/over_time.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/plot.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/plots.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/prompts.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/__main__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/args.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/add.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/code.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/context.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/core.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/git.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/help.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/load.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/map.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/model.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/models.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/report.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/run.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/save.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/test.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/web.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/diffs.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/dump.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/editor.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/exceptions.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/format_settings.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/help.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/help_pats.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/observations/manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/history.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/linter.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/llm.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/mdstream.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/onboarding.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/repo.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/repomap.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/report.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/scrape.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/sendchat.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/special.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/io.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/urls.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/utils.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/voice.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/waiting.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/watch.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/docker/Dockerfile +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/pyproject.toml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/pytest.ini +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/requirements.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/requirements.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/30k-image.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/blame.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/homepage.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/issues.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/update-history.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/versionbump.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/setup.cfg +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/shim.pyproject.toml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/conftest.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/help/test_help.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/helpers/observations/test_observation_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.99.9 → cecli_dev-0.99.10}/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.99.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 99,
|
|
21
|
+
__version__ = version = '0.99.10'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 99, 10)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gdd5ec67da'
|
|
@@ -31,6 +31,8 @@ from cecli.utils import copy_tool_call, tool_call_to_dict
|
|
|
31
31
|
|
|
32
32
|
from .base_coder import Coder
|
|
33
33
|
|
|
34
|
+
from cecli.helpers.coroutines import interruptible # isort:skip
|
|
35
|
+
|
|
34
36
|
|
|
35
37
|
class AgentCoder(Coder):
|
|
36
38
|
"""Mode where the LLM autonomously manages which files are in context."""
|
|
@@ -42,6 +44,9 @@ class AgentCoder(Coder):
|
|
|
42
44
|
stop_on_empty = False
|
|
43
45
|
|
|
44
46
|
def __init__(self, *args, **kwargs):
|
|
47
|
+
if kwargs.get("uuid", None):
|
|
48
|
+
self.uuid = kwargs.get("uuid")
|
|
49
|
+
|
|
45
50
|
self.recently_removed = {}
|
|
46
51
|
self.tool_usage_history = []
|
|
47
52
|
self.loaded_custom_tools = []
|
|
@@ -55,7 +60,7 @@ class AgentCoder(Coder):
|
|
|
55
60
|
"commandinteractive",
|
|
56
61
|
"explorecode",
|
|
57
62
|
"ls",
|
|
58
|
-
"
|
|
63
|
+
"readrange",
|
|
59
64
|
"grep",
|
|
60
65
|
"thinking",
|
|
61
66
|
"updatetodolist",
|
|
@@ -301,8 +306,23 @@ class AgentCoder(Coder):
|
|
|
301
306
|
else:
|
|
302
307
|
all_results_content.append(f"Error: Unknown tool name '{tool_name}'")
|
|
303
308
|
if tasks:
|
|
304
|
-
|
|
305
|
-
|
|
309
|
+
|
|
310
|
+
async def gather_and_await():
|
|
311
|
+
return await asyncio.gather(*tasks, return_exceptions=True)
|
|
312
|
+
|
|
313
|
+
task_results, interrupted = await interruptible(
|
|
314
|
+
gather_and_await(), self.interrupt_event
|
|
315
|
+
)
|
|
316
|
+
|
|
317
|
+
if interrupted:
|
|
318
|
+
self.io.tool_warning("Tool execution interrupted.")
|
|
319
|
+
all_results_content.append("Tool execution interrupted by user.")
|
|
320
|
+
elif task_results:
|
|
321
|
+
for res in task_results:
|
|
322
|
+
if isinstance(res, Exception):
|
|
323
|
+
all_results_content.append(f"Error in tool execution: {res}")
|
|
324
|
+
else:
|
|
325
|
+
all_results_content.append(str(res))
|
|
306
326
|
|
|
307
327
|
if not await HookIntegration.call_post_tool_hooks(
|
|
308
328
|
self, tool_name, args_string, "\n\n".join(all_results_content)
|
|
@@ -393,7 +413,11 @@ class AgentCoder(Coder):
|
|
|
393
413
|
""")
|
|
394
414
|
return f"Error executing tool call {tool_name}: {e}"
|
|
395
415
|
|
|
396
|
-
|
|
416
|
+
result, interrupted = await interruptible(_exec_async(), self.interrupt_event)
|
|
417
|
+
|
|
418
|
+
if interrupted:
|
|
419
|
+
return "Tool execution interrupted by user."
|
|
420
|
+
return result
|
|
397
421
|
|
|
398
422
|
def _calculate_context_block_tokens(self, force=False):
|
|
399
423
|
"""
|
|
@@ -995,7 +1019,7 @@ I will proceed based on the tool results and updated context.""")
|
|
|
995
1019
|
context_parts.append("\n\n")
|
|
996
1020
|
context_parts.append("## File Editing Tools Disabled")
|
|
997
1021
|
context_parts.append(
|
|
998
|
-
"File editing tools are currently disabled.Use `
|
|
1022
|
+
"File editing tools are currently disabled.Use `ReadRange` to determine the"
|
|
999
1023
|
" current hashline prefixes needed to perform an edit and activate them when you"
|
|
1000
1024
|
" are ready to edit a file."
|
|
1001
1025
|
)
|
|
@@ -139,6 +139,12 @@ class Coder:
|
|
|
139
139
|
partial_response_tool_calls = []
|
|
140
140
|
commit_before_message = []
|
|
141
141
|
message_cost = 0.0
|
|
142
|
+
total_tokens_sent = 0
|
|
143
|
+
total_tokens_received = 0
|
|
144
|
+
total_cached_tokens = 0
|
|
145
|
+
message_tokens_sent = 0
|
|
146
|
+
message_tokens_received = 0
|
|
147
|
+
message_cached_tokens = 0
|
|
142
148
|
add_cache_headers = False
|
|
143
149
|
cache_warming_thread = None
|
|
144
150
|
num_cache_warming_pings = 0
|
|
@@ -227,6 +233,7 @@ class Coder:
|
|
|
227
233
|
ignore_mentions=from_coder.ignore_mentions,
|
|
228
234
|
total_tokens_sent=from_coder.total_tokens_sent,
|
|
229
235
|
total_tokens_received=from_coder.total_tokens_received,
|
|
236
|
+
total_cached_tokens=from_coder.total_cached_tokens,
|
|
230
237
|
file_watcher=from_coder.file_watcher,
|
|
231
238
|
mcp_manager=from_coder.mcp_manager,
|
|
232
239
|
uuid=from_coder.uuid,
|
|
@@ -316,6 +323,7 @@ class Coder:
|
|
|
316
323
|
ignore_mentions=None,
|
|
317
324
|
total_tokens_sent=0,
|
|
318
325
|
total_tokens_received=0,
|
|
326
|
+
total_cached_tokens=0,
|
|
319
327
|
file_watcher=None,
|
|
320
328
|
auto_copy_context=False,
|
|
321
329
|
auto_accept_architect=True,
|
|
@@ -331,6 +339,7 @@ class Coder:
|
|
|
331
339
|
):
|
|
332
340
|
# initialize from args.map_cache_dir
|
|
333
341
|
self.interrupt_event = asyncio.Event()
|
|
342
|
+
self.coroutines = coroutines
|
|
334
343
|
self.uuid = generate_unique_id()
|
|
335
344
|
if uuid:
|
|
336
345
|
self.uuid = uuid
|
|
@@ -388,8 +397,10 @@ class Coder:
|
|
|
388
397
|
self.total_cost = total_cost
|
|
389
398
|
self.total_tokens_sent = total_tokens_sent
|
|
390
399
|
self.total_tokens_received = total_tokens_received
|
|
400
|
+
self.total_cached_tokens = total_cached_tokens
|
|
391
401
|
self.message_tokens_sent = 0
|
|
392
402
|
self.message_tokens_received = 0
|
|
403
|
+
self.message_cached_tokens = 0
|
|
393
404
|
|
|
394
405
|
self.token_profiler = TokenProfiler(
|
|
395
406
|
enable_printing=nested.getter(self.args, "show_speed", False)
|
|
@@ -1370,11 +1381,6 @@ class Coder:
|
|
|
1370
1381
|
except (SwitchCoderSignal, SystemExit):
|
|
1371
1382
|
# Re-raise SwitchCoder to be handled by outer try block
|
|
1372
1383
|
raise
|
|
1373
|
-
except KeyboardInterrupt:
|
|
1374
|
-
# Handle keyboard interrupt gracefully
|
|
1375
|
-
self.io.set_placeholder("")
|
|
1376
|
-
self.io.stop_spinner()
|
|
1377
|
-
self.keyboard_interrupt()
|
|
1378
1384
|
finally:
|
|
1379
1385
|
# Signal tasks to stop
|
|
1380
1386
|
self.input_running = False
|
|
@@ -1454,10 +1460,6 @@ class Coder:
|
|
|
1454
1460
|
|
|
1455
1461
|
await asyncio.sleep(0.1) # Small yield to prevent tight loop
|
|
1456
1462
|
|
|
1457
|
-
except KeyboardInterrupt:
|
|
1458
|
-
self.io.set_placeholder("")
|
|
1459
|
-
self.keyboard_interrupt()
|
|
1460
|
-
await self.io.stop_task_streams()
|
|
1461
1463
|
except (SwitchCoderSignal, SystemExit):
|
|
1462
1464
|
raise
|
|
1463
1465
|
except Exception as e:
|
|
@@ -1738,8 +1740,7 @@ class Coder:
|
|
|
1738
1740
|
# Ensure cursor is visible on exit
|
|
1739
1741
|
Console().show_cursor(True)
|
|
1740
1742
|
|
|
1741
|
-
self.io.tool_warning("
|
|
1742
|
-
|
|
1743
|
+
self.io.tool_warning("^C KeyboardInterrupt")
|
|
1743
1744
|
self.interrupt_event.set()
|
|
1744
1745
|
self.last_keyboard_interrupt = time.time()
|
|
1745
1746
|
|
|
@@ -2262,9 +2263,16 @@ class Coder:
|
|
|
2262
2263
|
self.io.tool_error(err_msg)
|
|
2263
2264
|
|
|
2264
2265
|
self.io.tool_output(f"Retrying in {retry_delay:.1f} seconds...")
|
|
2265
|
-
|
|
2266
|
+
|
|
2267
|
+
_res, interrupted_sleep = await coroutines.interruptible(
|
|
2268
|
+
asyncio.sleep(retry_delay), self.interrupt_event
|
|
2269
|
+
)
|
|
2270
|
+
if interrupted_sleep:
|
|
2271
|
+
interrupted = True
|
|
2272
|
+
break
|
|
2273
|
+
|
|
2266
2274
|
continue
|
|
2267
|
-
except KeyboardInterrupt:
|
|
2275
|
+
except (KeyboardInterrupt, asyncio.CancelledError):
|
|
2268
2276
|
interrupted = True
|
|
2269
2277
|
break
|
|
2270
2278
|
except FinishReasonLength:
|
|
@@ -2629,11 +2637,19 @@ class Coder:
|
|
|
2629
2637
|
all_results_content.append("Tool Request Aborted.")
|
|
2630
2638
|
continue
|
|
2631
2639
|
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2640
|
+
async def do_tool_call():
|
|
2641
|
+
return await experimental_mcp_client.call_openai_tool(
|
|
2642
|
+
session=session,
|
|
2643
|
+
openai_tool=new_tool_call,
|
|
2644
|
+
)
|
|
2645
|
+
|
|
2646
|
+
call_result, interrupted = await coroutines.interruptible(
|
|
2647
|
+
do_tool_call(), self.interrupt_event
|
|
2635
2648
|
)
|
|
2636
2649
|
|
|
2650
|
+
if interrupted:
|
|
2651
|
+
raise KeyboardInterrupt("Tool call interrupted")
|
|
2652
|
+
|
|
2637
2653
|
content_parts = []
|
|
2638
2654
|
if call_result.content:
|
|
2639
2655
|
for item in call_result.content:
|
|
@@ -2678,6 +2694,9 @@ class Coder:
|
|
|
2678
2694
|
}
|
|
2679
2695
|
)
|
|
2680
2696
|
|
|
2697
|
+
except KeyboardInterrupt:
|
|
2698
|
+
self.io.tool_warning(f"Tool call {tool_call.function.name} interrupted.")
|
|
2699
|
+
raise
|
|
2681
2700
|
except Exception as e:
|
|
2682
2701
|
tool_error = f"Error executing tool call {tool_call.function.name}: \n{e}"
|
|
2683
2702
|
self.io.tool_warning(
|
|
@@ -2694,6 +2713,9 @@ class Coder:
|
|
|
2694
2713
|
tool_responses.append(
|
|
2695
2714
|
{"role": "tool", "tool_call_id": tool_call.id, "content": connection_error}
|
|
2696
2715
|
)
|
|
2716
|
+
except asyncio.CancelledError:
|
|
2717
|
+
# Re-raise CancelledError to ensure the task cancellation propagates
|
|
2718
|
+
raise
|
|
2697
2719
|
except Exception as e:
|
|
2698
2720
|
connection_error = f"Could not connect to server {server.name}\n{e}"
|
|
2699
2721
|
self.io.tool_warning(connection_error)
|
|
@@ -2728,7 +2750,15 @@ class Coder:
|
|
|
2728
2750
|
return False
|
|
2729
2751
|
|
|
2730
2752
|
# 5. Execute tools
|
|
2731
|
-
|
|
2753
|
+
self.interrupt_event.clear()
|
|
2754
|
+
|
|
2755
|
+
tool_responses_by_server, interrupted = await coroutines.interruptible(
|
|
2756
|
+
self._execute_tool_groups(tool_groups), self.interrupt_event
|
|
2757
|
+
)
|
|
2758
|
+
|
|
2759
|
+
if interrupted:
|
|
2760
|
+
self.io.tool_warning("Tool execution interrupted.")
|
|
2761
|
+
return False
|
|
2732
2762
|
|
|
2733
2763
|
# 6. Add responses to conversation (re-prefixing if necessary)
|
|
2734
2764
|
tool_responses = []
|
|
@@ -3040,33 +3070,22 @@ class Coder:
|
|
|
3040
3070
|
self.token_profiler.start()
|
|
3041
3071
|
|
|
3042
3072
|
try:
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
)
|
|
3073
|
+
completion_coro = model.send_completion(
|
|
3074
|
+
messages,
|
|
3075
|
+
functions,
|
|
3076
|
+
self.stream,
|
|
3077
|
+
self.temperature,
|
|
3078
|
+
# This could include any tools, but for now it is just MCP tools
|
|
3079
|
+
tools=tools,
|
|
3080
|
+
override_kwargs=self.model_kwargs.copy(),
|
|
3081
|
+
interrupt_event=self.interrupt_event,
|
|
3053
3082
|
)
|
|
3054
|
-
interrupt_task = asyncio.create_task(self.interrupt_event.wait())
|
|
3055
3083
|
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
return_when=asyncio.FIRST_COMPLETED,
|
|
3084
|
+
(hash_object, completion), interrupted = await coroutines.interruptible(
|
|
3085
|
+
completion_coro, self.interrupt_event
|
|
3059
3086
|
)
|
|
3060
|
-
|
|
3061
|
-
if interrupt_task in done:
|
|
3062
|
-
completion_task.cancel()
|
|
3063
|
-
try:
|
|
3064
|
-
await completion_task
|
|
3065
|
-
except asyncio.CancelledError:
|
|
3066
|
-
pass
|
|
3087
|
+
if interrupted:
|
|
3067
3088
|
raise KeyboardInterrupt
|
|
3068
|
-
|
|
3069
|
-
hash_object, completion = completion_task.result()
|
|
3070
3089
|
self.chat_completion_call_hashes.append(hash_object.hexdigest())
|
|
3071
3090
|
|
|
3072
3091
|
if not isinstance(completion, ModelResponse):
|
|
@@ -3089,7 +3108,7 @@ class Coder:
|
|
|
3089
3108
|
self.token_profiler.on_error()
|
|
3090
3109
|
self.calculate_and_show_tokens_and_cost(messages, completion)
|
|
3091
3110
|
raise
|
|
3092
|
-
except KeyboardInterrupt as kbi:
|
|
3111
|
+
except (KeyboardInterrupt, asyncio.CancelledError) as kbi:
|
|
3093
3112
|
self.keyboard_interrupt()
|
|
3094
3113
|
raise kbi
|
|
3095
3114
|
finally:
|
|
@@ -3498,10 +3517,13 @@ class Coder:
|
|
|
3498
3517
|
if completion and hasattr(completion, "usage") and completion.usage is not None:
|
|
3499
3518
|
prompt_tokens = completion.usage.prompt_tokens
|
|
3500
3519
|
completion_tokens = completion.usage.completion_tokens
|
|
3501
|
-
cache_hit_tokens =
|
|
3502
|
-
completion.usage, "
|
|
3520
|
+
cache_hit_tokens = (
|
|
3521
|
+
getattr(completion.usage, "prompt_cache_hit_tokens", 0)
|
|
3522
|
+
or getattr(completion.usage, "cache_read_input_tokens", 0)
|
|
3523
|
+
or 0
|
|
3503
3524
|
)
|
|
3504
|
-
cache_write_tokens = getattr(completion.usage, "cache_creation_input_tokens", 0)
|
|
3525
|
+
cache_write_tokens = getattr(completion.usage, "cache_creation_input_tokens", 0) or 0
|
|
3526
|
+
self.message_cached_tokens += cache_hit_tokens
|
|
3505
3527
|
|
|
3506
3528
|
if hasattr(completion.usage, "cache_read_input_tokens") or hasattr(
|
|
3507
3529
|
completion.usage, "cache_creation_input_tokens"
|
|
@@ -3534,8 +3556,22 @@ class Coder:
|
|
|
3534
3556
|
tokens_report, self.message_tokens_sent, self.message_tokens_received
|
|
3535
3557
|
)
|
|
3536
3558
|
|
|
3559
|
+
total_combined_tokens = (
|
|
3560
|
+
self.total_tokens_sent
|
|
3561
|
+
+ self.total_tokens_received
|
|
3562
|
+
+ self.message_tokens_sent
|
|
3563
|
+
+ self.message_tokens_received
|
|
3564
|
+
)
|
|
3565
|
+
total_combined_cached = self.total_cached_tokens + self.message_cached_tokens
|
|
3566
|
+
|
|
3567
|
+
total_stats = f"{format_tokens(total_combined_tokens)}"
|
|
3568
|
+
if total_combined_cached:
|
|
3569
|
+
total_stats += f"/{format_tokens(total_combined_cached)}"
|
|
3570
|
+
|
|
3571
|
+
total_stats += " ↑↓"
|
|
3572
|
+
|
|
3537
3573
|
if not self.get_active_model().info.get("input_cost_per_token"):
|
|
3538
|
-
self.usage_report = tokens_report
|
|
3574
|
+
self.usage_report = tokens_report + "\n" + total_stats
|
|
3539
3575
|
return
|
|
3540
3576
|
|
|
3541
3577
|
try:
|
|
@@ -3552,11 +3588,8 @@ class Coder:
|
|
|
3552
3588
|
self.total_cost += cost
|
|
3553
3589
|
self.message_cost += cost
|
|
3554
3590
|
|
|
3555
|
-
total_combined_tokens = (
|
|
3556
|
-
self.total_tokens_sent + self.total_tokens_received + prompt_tokens + completion_tokens
|
|
3557
|
-
)
|
|
3558
3591
|
cost_report = (
|
|
3559
|
-
f"${self.format_cost(self.message_cost)} • {
|
|
3592
|
+
f"${self.format_cost(self.message_cost)} • {total_stats}"
|
|
3560
3593
|
f" ${self.format_cost(self.total_cost)}"
|
|
3561
3594
|
)
|
|
3562
3595
|
|
|
@@ -3614,6 +3647,7 @@ class Coder:
|
|
|
3614
3647
|
|
|
3615
3648
|
self.total_tokens_sent += self.message_tokens_sent
|
|
3616
3649
|
self.total_tokens_received += self.message_tokens_received
|
|
3650
|
+
self.total_cached_tokens += self.message_cached_tokens
|
|
3617
3651
|
|
|
3618
3652
|
if self.tui and self.tui():
|
|
3619
3653
|
self.tui().update_cost(self.usage_report.replace("\n", " "))
|
|
@@ -3624,6 +3658,7 @@ class Coder:
|
|
|
3624
3658
|
self.message_cost = 0.0
|
|
3625
3659
|
self.message_tokens_sent = 0
|
|
3626
3660
|
self.message_tokens_received = 0
|
|
3661
|
+
self.message_cached_tokens = 0
|
|
3627
3662
|
|
|
3628
3663
|
def get_multi_response_content_in_progress(self, final=False):
|
|
3629
3664
|
cur = self.multi_response_content or ""
|
|
@@ -25,14 +25,17 @@ from .diff import DiffCommand
|
|
|
25
25
|
from .drop import DropCommand
|
|
26
26
|
from .editor import EditCommand, EditorCommand
|
|
27
27
|
from .editor_model import EditorModelCommand
|
|
28
|
+
from .exclude_skill import ExcludeSkillCommand
|
|
28
29
|
from .exit import ExitCommand
|
|
29
30
|
from .git import GitCommand
|
|
30
31
|
from .hashline import HashlineCommand
|
|
31
32
|
from .help import HelpCommand
|
|
32
33
|
from .history_search import HistorySearchCommand
|
|
33
34
|
from .hooks import HooksCommand
|
|
35
|
+
from .include_skill import IncludeSkillCommand
|
|
34
36
|
from .lint import LintCommand
|
|
35
37
|
from .list_sessions import ListSessionsCommand
|
|
38
|
+
from .list_skills import ListSkillsCommand
|
|
36
39
|
from .load import LoadCommand
|
|
37
40
|
from .load_hook import LoadHookCommand
|
|
38
41
|
from .load_mcp import LoadMcpCommand
|
|
@@ -102,14 +105,17 @@ CommandRegistry.register(DropCommand)
|
|
|
102
105
|
CommandRegistry.register(EditCommand)
|
|
103
106
|
CommandRegistry.register(EditorCommand)
|
|
104
107
|
CommandRegistry.register(EditorModelCommand)
|
|
108
|
+
CommandRegistry.register(ExcludeSkillCommand)
|
|
105
109
|
CommandRegistry.register(ExitCommand)
|
|
106
110
|
CommandRegistry.register(GitCommand)
|
|
107
111
|
CommandRegistry.register(HashlineCommand)
|
|
108
112
|
CommandRegistry.register(HelpCommand)
|
|
109
113
|
CommandRegistry.register(HistorySearchCommand)
|
|
110
114
|
CommandRegistry.register(HooksCommand)
|
|
115
|
+
CommandRegistry.register(IncludeSkillCommand)
|
|
111
116
|
CommandRegistry.register(LintCommand)
|
|
112
117
|
CommandRegistry.register(ListSessionsCommand)
|
|
118
|
+
CommandRegistry.register(ListSkillsCommand)
|
|
113
119
|
CommandRegistry.register(LoadCommand)
|
|
114
120
|
CommandRegistry.register(LoadHookCommand)
|
|
115
121
|
CommandRegistry.register(LoadMcpCommand)
|
|
@@ -172,6 +178,7 @@ __all__ = [
|
|
|
172
178
|
"EditCommand",
|
|
173
179
|
"EditorCommand",
|
|
174
180
|
"EditorModelCommand",
|
|
181
|
+
"ExcludeSkillCommand",
|
|
175
182
|
"ExitCommand",
|
|
176
183
|
"expand_subdir",
|
|
177
184
|
"format_command_result",
|
|
@@ -182,8 +189,10 @@ __all__ = [
|
|
|
182
189
|
"HelpCommand",
|
|
183
190
|
"HistorySearchCommand",
|
|
184
191
|
"HookCommand",
|
|
192
|
+
"IncludeSkillCommand",
|
|
185
193
|
"LintCommand",
|
|
186
194
|
"ListSessionsCommand",
|
|
195
|
+
"ListSkillsCommand",
|
|
187
196
|
"LoadCommand",
|
|
188
197
|
"LoadHookCommand",
|
|
189
198
|
"LoadMcpCommand",
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
+
from cecli.commands.utils.helpers import format_command_result
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ExcludeSkillCommand(BaseCommand):
|
|
8
|
+
NORM_NAME = "exclude-skill"
|
|
9
|
+
DESCRIPTION = "Exclude a skill by name (agent mode only)"
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
13
|
+
"""Execute the exclude-skill command with given parameters."""
|
|
14
|
+
if not args.strip():
|
|
15
|
+
io.tool_output("Usage: /exclude-skill <skill-name>")
|
|
16
|
+
return format_command_result(io, "exclude-skill", "Usage: /exclude-skill <skill-name>")
|
|
17
|
+
|
|
18
|
+
skill_names = args.strip().split()
|
|
19
|
+
|
|
20
|
+
# Check if we're in agent mode
|
|
21
|
+
if not hasattr(coder, "edit_format") or coder.edit_format != "agent":
|
|
22
|
+
io.tool_output("Skill exclusion is only available in agent mode.")
|
|
23
|
+
return format_command_result(
|
|
24
|
+
io, "exclude-skill", "Skill exclusion is only available in agent mode"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# Check if skills_manager is available
|
|
28
|
+
if not hasattr(coder, "skills_manager") or coder.skills_manager is None:
|
|
29
|
+
io.tool_output("Skills manager is not initialized. Skills may not be configured.")
|
|
30
|
+
# Check if skills directories are configured
|
|
31
|
+
if hasattr(coder, "skills_directory_paths") and not coder.skills_directory_paths:
|
|
32
|
+
io.tool_output(
|
|
33
|
+
"No skills directories configured. Use --skills-paths to configure skill"
|
|
34
|
+
" directories."
|
|
35
|
+
)
|
|
36
|
+
return format_command_result(io, "exclude-skill", "Skills manager is not initialized")
|
|
37
|
+
|
|
38
|
+
results = []
|
|
39
|
+
for skill_name in skill_names:
|
|
40
|
+
# Use the instance method on skills_manager
|
|
41
|
+
result = coder.skills_manager.exclude_skill(skill_name)
|
|
42
|
+
results.append(result)
|
|
43
|
+
|
|
44
|
+
return format_command_result(io, "exclude-skill", "\n".join(results))
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def get_completions(cls, io, coder, args) -> List[str]:
|
|
48
|
+
"""Get completion options for exclude-skill command."""
|
|
49
|
+
if not hasattr(coder, "skills_manager") or coder.skills_manager is None:
|
|
50
|
+
return []
|
|
51
|
+
|
|
52
|
+
try:
|
|
53
|
+
skills = coder.skills_manager.find_skills()
|
|
54
|
+
return [skill.name for skill in skills]
|
|
55
|
+
except Exception:
|
|
56
|
+
return []
|
|
57
|
+
|
|
58
|
+
@classmethod
|
|
59
|
+
def get_help(cls) -> str:
|
|
60
|
+
"""Get help text for the exclude-skill command."""
|
|
61
|
+
help_text = super().get_help()
|
|
62
|
+
help_text += "\nUsage:\n"
|
|
63
|
+
help_text += " /exclude-skill <skill-name>... # Exclude one or more skills by name\n"
|
|
64
|
+
help_text += "\nExamples:\n"
|
|
65
|
+
help_text += " /exclude-skill pdf # Exclude (blacklist) the PDF skill\n"
|
|
66
|
+
help_text += " /exclude-skill web pdf # Exclude both web and PDF skills\n"
|
|
67
|
+
help_text += (
|
|
68
|
+
"\nThis command excludes one or more skills by name, adding them to the blacklist. "
|
|
69
|
+
"Skills are only available in agent mode.\n"
|
|
70
|
+
)
|
|
71
|
+
help_text += "Excluded skills will be hidden from discovery and unavailable for loading.\n"
|
|
72
|
+
return help_text
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
+
from cecli.commands.utils.helpers import format_command_result
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class IncludeSkillCommand(BaseCommand):
|
|
8
|
+
NORM_NAME = "include-skill"
|
|
9
|
+
DESCRIPTION = "Include a skill by name (agent mode only)"
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
13
|
+
"""Execute the include-skill command with given parameters."""
|
|
14
|
+
if not args.strip():
|
|
15
|
+
io.tool_output("Usage: /include-skill <skill-name>")
|
|
16
|
+
return format_command_result(io, "include-skill", "Usage: /include-skill <skill-name>")
|
|
17
|
+
|
|
18
|
+
skill_names = args.strip().split()
|
|
19
|
+
|
|
20
|
+
# Check if we're in agent mode
|
|
21
|
+
if not hasattr(coder, "edit_format") or coder.edit_format != "agent":
|
|
22
|
+
io.tool_output("Skill inclusion is only available in agent mode.")
|
|
23
|
+
return format_command_result(
|
|
24
|
+
io, "include-skill", "Skill inclusion is only available in agent mode"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# Check if skills_manager is available
|
|
28
|
+
if not hasattr(coder, "skills_manager") or coder.skills_manager is None:
|
|
29
|
+
io.tool_output("Skills manager is not initialized. Skills may not be configured.")
|
|
30
|
+
# Check if skills directories are configured
|
|
31
|
+
if hasattr(coder, "skills_directory_paths") and not coder.skills_directory_paths:
|
|
32
|
+
io.tool_output(
|
|
33
|
+
"No skills directories configured. Use --skills-paths to configure skill"
|
|
34
|
+
" directories."
|
|
35
|
+
)
|
|
36
|
+
return format_command_result(io, "include-skill", "Skills manager is not initialized")
|
|
37
|
+
|
|
38
|
+
results = []
|
|
39
|
+
for skill_name in skill_names:
|
|
40
|
+
# Use the instance method on skills_manager
|
|
41
|
+
result = coder.skills_manager.include_skill(skill_name)
|
|
42
|
+
results.append(result)
|
|
43
|
+
|
|
44
|
+
return format_command_result(io, "include-skill", "\n".join(results))
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def get_completions(cls, io, coder, args) -> List[str]:
|
|
48
|
+
"""Get completion options for include-skill command."""
|
|
49
|
+
if not hasattr(coder, "skills_manager") or coder.skills_manager is None:
|
|
50
|
+
return []
|
|
51
|
+
|
|
52
|
+
try:
|
|
53
|
+
skills = coder.skills_manager.find_skills()
|
|
54
|
+
return [skill.name for skill in skills]
|
|
55
|
+
except Exception:
|
|
56
|
+
return []
|
|
57
|
+
|
|
58
|
+
@classmethod
|
|
59
|
+
def get_help(cls) -> str:
|
|
60
|
+
"""Get help text for the include-skill command."""
|
|
61
|
+
help_text = super().get_help()
|
|
62
|
+
help_text += "\nUsage:\n"
|
|
63
|
+
help_text += " /include-skill <skill-name>... # Include one or more skills by name\n"
|
|
64
|
+
help_text += "\nExamples:\n"
|
|
65
|
+
help_text += " /include-skill pdf # Include (whitelist) the PDF skill\n"
|
|
66
|
+
help_text += " /include-skill web pdf # Include both web and PDF skills\n"
|
|
67
|
+
help_text += (
|
|
68
|
+
"\nThis command includes one or more skills by name, adding them to the whitelist. "
|
|
69
|
+
"Skills are only available in agent mode.\n"
|
|
70
|
+
)
|
|
71
|
+
help_text += "When a skill is included, only whitelisted skills will be discoverable.\n"
|
|
72
|
+
return help_text
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
+
from cecli.commands.utils.helpers import format_command_result
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ListSkillsCommand(BaseCommand):
|
|
8
|
+
NORM_NAME = "list-skills"
|
|
9
|
+
DESCRIPTION = "List all available skills with their states and file paths"
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
13
|
+
"""Execute the list-skills command with given parameters."""
|
|
14
|
+
# Check if skills_manager is available
|
|
15
|
+
if not hasattr(coder, "skills_manager") or coder.skills_manager is None:
|
|
16
|
+
io.tool_output("Skills manager is not initialized. Skills may not be configured.")
|
|
17
|
+
if hasattr(coder, "skills_directory_paths") and not coder.skills_directory_paths:
|
|
18
|
+
io.tool_output(
|
|
19
|
+
"No skills directories configured. Use --skills-paths to configure skill"
|
|
20
|
+
" directories."
|
|
21
|
+
)
|
|
22
|
+
return format_command_result(io, "list-skills", "Skills manager is not initialized")
|
|
23
|
+
|
|
24
|
+
try:
|
|
25
|
+
formatted = coder.skills_manager.get_skills_list_formatted()
|
|
26
|
+
return format_command_result(io, "list-skills", formatted)
|
|
27
|
+
except Exception as e:
|
|
28
|
+
error_msg = f"Error listing skills: {e}"
|
|
29
|
+
return format_command_result(io, "list-skills", error_msg)
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def get_completions(cls, io, coder, args) -> List[str]:
|
|
33
|
+
"""Get completion options for list-skills command."""
|
|
34
|
+
return []
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def get_help(cls) -> str:
|
|
38
|
+
"""Get help text for the list-skills command."""
|
|
39
|
+
help_text = super().get_help()
|
|
40
|
+
help_text += "\nUsage:\n"
|
|
41
|
+
help_text += " /list-skills # List all available skills with their states and paths\n"
|
|
42
|
+
help_text += "\nExamples:\n"
|
|
43
|
+
help_text += (
|
|
44
|
+
" /list-skills # Shows a table of all skills, their include/exclude/visible status,\n"
|
|
45
|
+
)
|
|
46
|
+
help_text += " # whether they are loaded, and their directory paths\n"
|
|
47
|
+
help_text += "\n"
|
|
48
|
+
help_text += "This command lists all skills found in the configured skill directories,\n"
|
|
49
|
+
help_text += "displaying their current status (included/excluded/visible),\n"
|
|
50
|
+
help_text += "whether they are loaded into context, and their file system paths.\n"
|
|
51
|
+
return help_text
|