cecli-dev 0.100.0rc6__tar.gz → 0.100.0rc9__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.0rc6 → cecli_dev-0.100.0rc9}/PKG-INFO +2 -2
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/_version.py +3 -3
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/agent_coder.py +7 -5
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/base_coder.py +8 -3
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/__init__.py +3 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/invoke_agent.py +2 -0
- cecli_dev-0.100.0rc9/cecli/commands/switch_agent.py +122 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/coroutines.py +24 -23
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/agent.yml +1 -1
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/subagent.yml +1 -1
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/run_cmd.py +49 -5
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/command.py +5 -3
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/read_range.py +2 -2
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/app.py +73 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/input_container.py +18 -6
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/commands.md +1 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/PKG-INFO +2 -2
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/SOURCES.txt +3 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/requires.txt +3 -1
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-dev.in +1 -1
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-dev.txt +21 -9
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-help.txt +20 -18
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-playwright.txt +1 -1
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/pip-compile.sh +1 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_linter.py +2 -2
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_run_cmd.py +2 -2
- cecli_dev-0.100.0rc9/tests/commands/test_compaction.py +105 -0
- cecli_dev-0.100.0rc9/tests/commands/test_switch_agent.py +104 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_repomap_workspace.py +4 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.dockerignore +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.flake8 +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.gitattributes +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.gitignore +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/CHANGELOG.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/CNAME +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/HISTORY.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/LICENSE.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/MANIFEST.in +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/README.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/README.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/docker.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/over_time.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/plot.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/plots.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/prompts.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/__main__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/args.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/add.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/code.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/context.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/core.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/git.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/help.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/load.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/map.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/model.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/models.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/report.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/run.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/save.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/test.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/web.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/diffs.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/dump.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/editor.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/exceptions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/format_settings.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/help.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/help_pats.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/history.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/io.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/linter.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/llm.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/main.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/mdstream.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/models.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/onboarding.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/repo.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/repomap.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/report.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/scrape.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/sendchat.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/sessions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/special.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/context_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/delegate.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/edit_text.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/io.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/urls.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/utils.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/voice.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/waiting.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/watch.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/docker/Dockerfile +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/pyproject.toml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/pytest.ini +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/requirements.in +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/requirements.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/30k-image.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/blame.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/homepage.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/issues.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/update-history.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/versionbump.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/setup.cfg +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/shim.pyproject.toml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/conftest.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/help/test_help.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/__init__.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/conftest.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_config.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_service.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.100.0rc6 → cecli_dev-0.100.0rc9}/tests/tui/test_app.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 0.100.
|
|
3
|
+
Version: 0.100.0rc9
|
|
4
4
|
Summary: we also can't pronounce cecli
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/cecli
|
|
6
6
|
Project-URL: Documentation, https://github.com/dwash96/cecli
|
|
@@ -76,7 +76,7 @@ Requires-Dist: cogapp; extra == "dev"
|
|
|
76
76
|
Requires-Dist: semver; extra == "dev"
|
|
77
77
|
Requires-Dist: codespell; extra == "dev"
|
|
78
78
|
Requires-Dist: uv; extra == "dev"
|
|
79
|
-
Requires-Dist: memray; extra == "dev"
|
|
79
|
+
Requires-Dist: memray; sys_platform != "win32" and extra == "dev"
|
|
80
80
|
Requires-Dist: objgraph; extra == "dev"
|
|
81
81
|
Requires-Dist: pympler; extra == "dev"
|
|
82
82
|
Requires-Dist: guppy3; extra == "dev"
|
|
@@ -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, 0, '
|
|
21
|
+
__version__ = version = '0.100.0rc9'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 0, 'rc9')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g2aca17696'
|
|
@@ -76,7 +76,7 @@ class AgentCoder(Coder):
|
|
|
76
76
|
"edittext",
|
|
77
77
|
"undochange",
|
|
78
78
|
}
|
|
79
|
-
self.edit_allowed =
|
|
79
|
+
self.edit_allowed = True
|
|
80
80
|
self.max_tool_calls = 10000
|
|
81
81
|
self.large_file_token_threshold = 8192
|
|
82
82
|
self.skills_manager = None
|
|
@@ -246,6 +246,12 @@ class AgentCoder(Coder):
|
|
|
246
246
|
joined_skills = ", ".join(skills_list)
|
|
247
247
|
self.io.tool_output(f"Available Skills: {joined_skills}")
|
|
248
248
|
|
|
249
|
+
registry = AgentService.get_registry()
|
|
250
|
+
if registry:
|
|
251
|
+
names = sorted(registry.keys())
|
|
252
|
+
joined_names = ", ".join(names)
|
|
253
|
+
self.io.tool_output(f"Available Subagents: {joined_names}")
|
|
254
|
+
|
|
249
255
|
def get_local_tool_schemas(self):
|
|
250
256
|
"""Returns the JSON schemas for all local tools using the tool registry."""
|
|
251
257
|
schemas = []
|
|
@@ -503,8 +509,6 @@ class AgentCoder(Coder):
|
|
|
503
509
|
# For primary agents, use the default system messages flow
|
|
504
510
|
needs_system_prompts = True
|
|
505
511
|
if hasattr(self, "parent_uuid") and self.parent_uuid:
|
|
506
|
-
from cecli.helpers.agents.service import AgentService
|
|
507
|
-
|
|
508
512
|
service = AgentService.get_instance(self)
|
|
509
513
|
info = service.sub_agents.get(self.uuid)
|
|
510
514
|
if info:
|
|
@@ -1468,8 +1472,6 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1468
1472
|
if hasattr(self, "parent_uuid") and self.parent_uuid:
|
|
1469
1473
|
return None
|
|
1470
1474
|
try:
|
|
1471
|
-
from cecli.helpers.agents.service import AgentService
|
|
1472
|
-
|
|
1473
1475
|
registry = AgentService.get_registry()
|
|
1474
1476
|
if not registry:
|
|
1475
1477
|
return None
|
|
@@ -1642,9 +1642,14 @@ class Coder(metaclass=UsageMeta):
|
|
|
1642
1642
|
|
|
1643
1643
|
try:
|
|
1644
1644
|
if self.enable_context_compaction:
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1645
|
+
# Skip compaction if the user wants to clear or exit
|
|
1646
|
+
# Compacting is wasteful since /clear will clear everything
|
|
1647
|
+
# and /exit will exit the application
|
|
1648
|
+
stripped = user_message.strip()
|
|
1649
|
+
if stripped not in ("/clear", "/reset", "/exit", "/quit"):
|
|
1650
|
+
self.compact_context_completed = False
|
|
1651
|
+
await self.compact_context_if_needed()
|
|
1652
|
+
self.compact_context_completed = True
|
|
1648
1653
|
|
|
1649
1654
|
self.run_one_completed = False
|
|
1650
1655
|
await self.run_one(user_message, preproc)
|
|
@@ -65,6 +65,7 @@ from .save import SaveCommand
|
|
|
65
65
|
from .save_session import SaveSessionCommand
|
|
66
66
|
from .settings import SettingsCommand
|
|
67
67
|
from .spawn_agent import SpawnAgentCommand
|
|
68
|
+
from .switch_agent import SwitchAgentCommand
|
|
68
69
|
from .terminal_setup import TerminalSetupCommand
|
|
69
70
|
from .test import TestCommand
|
|
70
71
|
from .think_tokens import ThinkTokensCommand
|
|
@@ -118,6 +119,7 @@ CommandRegistry.register(HooksCommand)
|
|
|
118
119
|
CommandRegistry.register(InvokeAgentCommand)
|
|
119
120
|
CommandRegistry.register(ReapAgentCommand)
|
|
120
121
|
CommandRegistry.register(SpawnAgentCommand)
|
|
122
|
+
CommandRegistry.register(SwitchAgentCommand)
|
|
121
123
|
CommandRegistry.register(IncludeSkillCommand)
|
|
122
124
|
CommandRegistry.register(LintCommand)
|
|
123
125
|
CommandRegistry.register(ListSessionsCommand)
|
|
@@ -199,6 +201,7 @@ __all__ = [
|
|
|
199
201
|
"InvokeAgentCommand",
|
|
200
202
|
"ReapAgentCommand",
|
|
201
203
|
"SpawnAgentCommand",
|
|
204
|
+
"SwitchAgentCommand",
|
|
202
205
|
"LintCommand",
|
|
203
206
|
"ListSessionsCommand",
|
|
204
207
|
"ListSkillsCommand",
|
|
@@ -25,9 +25,11 @@ class InvokeAgentCommand(BaseCommand):
|
|
|
25
25
|
summary = await agent_service.invoke(name, prompt, blocking=True)
|
|
26
26
|
if summary:
|
|
27
27
|
from cecli.helpers.conversation.service import ConversationService
|
|
28
|
+
from cecli.helpers.conversation.tags import MessageTag
|
|
28
29
|
|
|
29
30
|
ConversationService.get_manager(coder).add_message(
|
|
30
31
|
message_dict=dict(role="user", content=summary),
|
|
32
|
+
tag=MessageTag.CUR,
|
|
31
33
|
)
|
|
32
34
|
io.tool_output(f"Sub-agent '{name}' completed:\n{summary}")
|
|
33
35
|
else:
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
from cecli.helpers.agents.service import AgentService
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SwitchAgentCommand(BaseCommand):
|
|
9
|
+
NORM_NAME = "switch-agent"
|
|
10
|
+
DESCRIPTION = "Switch to a specific agent by name"
|
|
11
|
+
|
|
12
|
+
@classmethod
|
|
13
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
14
|
+
"""Execute the switch-agent command."""
|
|
15
|
+
agent_name = args.strip()
|
|
16
|
+
if not agent_name:
|
|
17
|
+
io.tool_error("Usage: /switch-agent <agent-name>")
|
|
18
|
+
return 1
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
agent_service = AgentService.get_instance(coder)
|
|
22
|
+
except Exception as e:
|
|
23
|
+
io.tool_error(f"Could not get agent service: {e}")
|
|
24
|
+
return 1
|
|
25
|
+
|
|
26
|
+
agent_uuid = None
|
|
27
|
+
|
|
28
|
+
if agent_name == "primary":
|
|
29
|
+
agent_uuid = str(coder.uuid)
|
|
30
|
+
else:
|
|
31
|
+
if agent_service and agent_service.sub_agents:
|
|
32
|
+
# Try parsing "name (uuid)" format
|
|
33
|
+
if agent_name.endswith(")") and " (" in agent_name:
|
|
34
|
+
try:
|
|
35
|
+
# Extract uuid prefix from "name (prefix)"
|
|
36
|
+
uuid_prefix = agent_name.rsplit(" (", 1)[1][:-1]
|
|
37
|
+
for uuid, info in agent_service.sub_agents.items():
|
|
38
|
+
if uuid.startswith(uuid_prefix):
|
|
39
|
+
agent_uuid = uuid
|
|
40
|
+
break
|
|
41
|
+
except IndexError:
|
|
42
|
+
pass # Not the format we expected
|
|
43
|
+
|
|
44
|
+
# If not found via "name (uuid)", try matching by name directly
|
|
45
|
+
if agent_uuid is None:
|
|
46
|
+
for uuid, sub_agent_info in agent_service.sub_agents.items():
|
|
47
|
+
if sub_agent_info.name == agent_name:
|
|
48
|
+
agent_uuid = uuid
|
|
49
|
+
break
|
|
50
|
+
|
|
51
|
+
# If still not found, try matching by uuid prefix directly
|
|
52
|
+
if agent_uuid is None:
|
|
53
|
+
for uuid, sub_agent_info in agent_service.sub_agents.items():
|
|
54
|
+
if uuid.startswith(agent_name):
|
|
55
|
+
agent_uuid = uuid
|
|
56
|
+
break
|
|
57
|
+
|
|
58
|
+
if agent_uuid is None:
|
|
59
|
+
io.tool_error(f"Error: Agent '{agent_name}' not found.")
|
|
60
|
+
return 1
|
|
61
|
+
|
|
62
|
+
if hasattr(io, "output_queue") and io.output_queue:
|
|
63
|
+
io.output_queue.put({"type": "switch_agent", "uuid": agent_uuid})
|
|
64
|
+
else:
|
|
65
|
+
# Non-TUI mode
|
|
66
|
+
if agent_uuid == str(coder.uuid):
|
|
67
|
+
agent_service.foreground_uuid = None
|
|
68
|
+
else:
|
|
69
|
+
agent_service.foreground_uuid = agent_uuid
|
|
70
|
+
io.tool_output(f"Switched to agent: {agent_name}")
|
|
71
|
+
|
|
72
|
+
return format_command_result(io, "switch-agent", f"Switched to agent '{agent_name}'")
|
|
73
|
+
|
|
74
|
+
@classmethod
|
|
75
|
+
def get_completions(cls, io, coder, args) -> List[str]:
|
|
76
|
+
"""Get completion options for switch-agent command."""
|
|
77
|
+
try:
|
|
78
|
+
agent_service = AgentService.get_instance(coder)
|
|
79
|
+
names = []
|
|
80
|
+
|
|
81
|
+
# Determine current foreground agent
|
|
82
|
+
foreground_uuid = agent_service.foreground_uuid
|
|
83
|
+
|
|
84
|
+
# Add "primary" only if not already on primary
|
|
85
|
+
if foreground_uuid is not None:
|
|
86
|
+
names.append("primary")
|
|
87
|
+
|
|
88
|
+
# Add sub-agent names, excluding the currently active one
|
|
89
|
+
if agent_service and agent_service.sub_agents:
|
|
90
|
+
# First pass: count name occurrences
|
|
91
|
+
name_counts = {}
|
|
92
|
+
for uuid, sub_agent_info in agent_service.sub_agents.items():
|
|
93
|
+
name_counts[sub_agent_info.name] = name_counts.get(sub_agent_info.name, 0) + 1
|
|
94
|
+
|
|
95
|
+
# Second pass: only show UUID prefix when name appears multiple times
|
|
96
|
+
for uuid, sub_agent_info in agent_service.sub_agents.items():
|
|
97
|
+
if uuid != foreground_uuid:
|
|
98
|
+
name = sub_agent_info.name
|
|
99
|
+
if name_counts[name] > 1:
|
|
100
|
+
names.append(f"{name} ({uuid[:3]})")
|
|
101
|
+
else:
|
|
102
|
+
names.append(name)
|
|
103
|
+
|
|
104
|
+
current_arg = args.strip().lower()
|
|
105
|
+
if current_arg:
|
|
106
|
+
return [name for name in names if name.lower().startswith(current_arg)]
|
|
107
|
+
else:
|
|
108
|
+
return names
|
|
109
|
+
except Exception:
|
|
110
|
+
return ["primary"]
|
|
111
|
+
|
|
112
|
+
@classmethod
|
|
113
|
+
def get_help(cls) -> str:
|
|
114
|
+
"""Get help text for the switch-agent command."""
|
|
115
|
+
help_text = super().get_help()
|
|
116
|
+
help_text += "\nUsage:\n"
|
|
117
|
+
help_text += " /switch-agent <agent-name> # Switch to a specific agent\n"
|
|
118
|
+
help_text += "\nExamples:\n"
|
|
119
|
+
help_text += " /switch-agent primary\n"
|
|
120
|
+
help_text += " /switch-agent reviewer\n"
|
|
121
|
+
help_text += "\nUse tab for auto-completion of agent names.\n"
|
|
122
|
+
return help_text
|
|
@@ -8,31 +8,32 @@ async def interruptible_async_generator(async_generator, interrupt_event):
|
|
|
8
8
|
gen = async_generator.__aiter__()
|
|
9
9
|
interrupt_task = asyncio.create_task(interrupt_event.wait())
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if next_task in done:
|
|
26
|
-
try:
|
|
27
|
-
yield next_task.result()
|
|
28
|
-
except StopAsyncIteration:
|
|
11
|
+
try:
|
|
12
|
+
while True:
|
|
13
|
+
next_task = asyncio.create_task(gen.__anext__())
|
|
14
|
+
done, pending = await asyncio.wait(
|
|
15
|
+
{next_task, interrupt_task}, return_when=asyncio.FIRST_COMPLETED
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
if interrupt_task in done:
|
|
19
|
+
next_task.cancel()
|
|
20
|
+
try:
|
|
21
|
+
await next_task
|
|
22
|
+
except asyncio.CancelledError:
|
|
23
|
+
pass
|
|
29
24
|
break
|
|
30
25
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
if next_task in done:
|
|
27
|
+
try:
|
|
28
|
+
yield next_task.result()
|
|
29
|
+
except StopAsyncIteration:
|
|
30
|
+
break
|
|
31
|
+
finally:
|
|
32
|
+
interrupt_task.cancel()
|
|
33
|
+
try:
|
|
34
|
+
await interrupt_task
|
|
35
|
+
except asyncio.CancelledError:
|
|
36
|
+
pass
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
def is_active(task):
|
|
@@ -23,7 +23,7 @@ main_system: |
|
|
|
23
23
|
## Core Directives
|
|
24
24
|
**Act Proactively**: Autonomously use tools to fulfill the request.
|
|
25
25
|
**Be Decisive**: Do not repeat searches or ask redundant questions. Trust your findings and be confident in your edits.
|
|
26
|
-
**Be Efficient**: Use multiple tools each response when exploring. Batch tool calls when the schema allows you
|
|
26
|
+
**Be Efficient**: Use multiple tools each response when exploring. Batch tool calls when the schema allows you to. Respect usage limits while maximizing the utility of each response.
|
|
27
27
|
**Be Persistent**: Do not take short cuts. Work through your task until completion. No task takes too long as long as you are making progress towards the goal.
|
|
28
28
|
</context>
|
|
29
29
|
|
|
@@ -8,7 +8,7 @@ main_system: |
|
|
|
8
8
|
## Core Directives
|
|
9
9
|
**Act Proactively**: Autonomously use tools to fulfill the request.
|
|
10
10
|
**Be Decisive**: Do not repeat searches or ask redundant questions. Trust your findings and be confident in your edits.
|
|
11
|
-
**Be Efficient**: Use multiple tools each response when exploring. Batch tool calls when the schema allows you
|
|
11
|
+
**Be Efficient**: Use multiple tools each response when exploring. Batch tool calls when the schema allows you to. Respect usage limits while maximizing the utility of each response.
|
|
12
12
|
**Be Persistent**: Do not take short cuts. Work through your task until completion. No task takes too long as long as you are making progress towards the goal.
|
|
13
13
|
</context>
|
|
14
14
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import base64
|
|
2
3
|
import os
|
|
3
4
|
import platform
|
|
4
5
|
import subprocess
|
|
@@ -54,8 +55,11 @@ def run_cmd_subprocess(
|
|
|
54
55
|
if platform.system() == "Windows":
|
|
55
56
|
parent_process = get_windows_parent_process_name()
|
|
56
57
|
if parent_process == "powershell.exe":
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
# Silence progress/error streams at the source to prevent CLIXML
|
|
59
|
+
silenced_command = f"$ProgressPreference='SilentlyContinue'; {command}"
|
|
60
|
+
cmd_bytes = silenced_command.encode("utf-16-le")
|
|
61
|
+
encoded = base64.b64encode(cmd_bytes).decode()
|
|
62
|
+
command = f"powershell -NoProfile -NonInteractive -OutputFormat Text -EncodedCommand {encoded}"
|
|
59
63
|
if verbose:
|
|
60
64
|
print("Running command:", command)
|
|
61
65
|
print("SHELL:", shell)
|
|
@@ -93,7 +97,7 @@ def run_cmd_subprocess(
|
|
|
93
97
|
print(line, end="", flush=True)
|
|
94
98
|
|
|
95
99
|
process.wait()
|
|
96
|
-
return process.returncode, "".join(output)
|
|
100
|
+
return process.returncode, _clean_output("".join(output))
|
|
97
101
|
except Exception as e:
|
|
98
102
|
return 1, str(e)
|
|
99
103
|
|
|
@@ -116,7 +120,11 @@ async def run_cmd_async(
|
|
|
116
120
|
if platform.system() == "Windows":
|
|
117
121
|
parent_process = get_windows_parent_process_name()
|
|
118
122
|
if parent_process == "powershell.exe":
|
|
119
|
-
|
|
123
|
+
# Silence progress/error streams at the source to prevent CLIXML
|
|
124
|
+
silenced_command = f"$ProgressPreference='SilentlyContinue'; {command}"
|
|
125
|
+
cmd_bytes = silenced_command.encode("utf-16-le")
|
|
126
|
+
encoded = base64.b64encode(cmd_bytes).decode()
|
|
127
|
+
command = f"powershell -NoProfile -NonInteractive -OutputFormat Text -EncodedCommand {encoded}"
|
|
120
128
|
|
|
121
129
|
if verbose:
|
|
122
130
|
print("Running command:", command)
|
|
@@ -131,6 +139,19 @@ async def run_cmd_async(
|
|
|
131
139
|
stderr=asyncio.subprocess.STDOUT,
|
|
132
140
|
cwd=cwd,
|
|
133
141
|
)
|
|
142
|
+
except NotImplementedError:
|
|
143
|
+
# On Windows with SelectorEventLoop, asyncio does not support subprocesses.
|
|
144
|
+
# Fall back to synchronous subprocess via loop.run_in_executor.
|
|
145
|
+
loop = asyncio.get_running_loop()
|
|
146
|
+
return await loop.run_in_executor(
|
|
147
|
+
None,
|
|
148
|
+
run_cmd_subprocess,
|
|
149
|
+
command,
|
|
150
|
+
verbose,
|
|
151
|
+
cwd,
|
|
152
|
+
encoding,
|
|
153
|
+
should_print,
|
|
154
|
+
)
|
|
134
155
|
except FileNotFoundError:
|
|
135
156
|
return 1, f"Command not found: {command}"
|
|
136
157
|
|
|
@@ -175,7 +196,7 @@ async def run_cmd_async(
|
|
|
175
196
|
if not reader_task.done():
|
|
176
197
|
await reader_task
|
|
177
198
|
|
|
178
|
-
return process.returncode, "".join(output)
|
|
199
|
+
return process.returncode, _clean_output("".join(output))
|
|
179
200
|
|
|
180
201
|
|
|
181
202
|
def run_cmd_pexpect(command, verbose=False, cwd=None, should_print=True):
|
|
@@ -222,3 +243,26 @@ def run_cmd_pexpect(command, verbose=False, cwd=None, should_print=True):
|
|
|
222
243
|
except (pexpect.ExceptionPexpect, TypeError, ValueError) as e:
|
|
223
244
|
error_msg = f"Error running command {command}: {e}"
|
|
224
245
|
return 1, error_msg
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def _clean_output(output):
|
|
249
|
+
"""Remove CLIXML progress output from PowerShell commands."""
|
|
250
|
+
if platform.system() != "Windows":
|
|
251
|
+
return output
|
|
252
|
+
|
|
253
|
+
if output.startswith("#< CLIXML"):
|
|
254
|
+
lines = output.splitlines()
|
|
255
|
+
filtered = []
|
|
256
|
+
for line in lines:
|
|
257
|
+
# Skip the CLIXML header line
|
|
258
|
+
if line.startswith("#< CLIXML"):
|
|
259
|
+
continue
|
|
260
|
+
# Skip CLIXML XML object tags (progress messages)
|
|
261
|
+
stripped = line.strip()
|
|
262
|
+
if stripped.startswith("<Objs ") or stripped == "</Objs>":
|
|
263
|
+
continue
|
|
264
|
+
if stripped.startswith("<Obj "):
|
|
265
|
+
continue
|
|
266
|
+
filtered.append(line)
|
|
267
|
+
return "\n".join(filtered)
|
|
268
|
+
return output
|
|
@@ -245,7 +245,9 @@ class Tool(BaseTool):
|
|
|
245
245
|
|
|
246
246
|
# Format output
|
|
247
247
|
output_content = output or ""
|
|
248
|
-
|
|
248
|
+
# Tokens are roughly 3-4 characters
|
|
249
|
+
output_limit = coder.large_file_token_threshold * 3.5
|
|
250
|
+
|
|
249
251
|
if coder.context_management_enabled and len(output_content) > output_limit * 1.25:
|
|
250
252
|
# Save full output to paginated files instead of truncating
|
|
251
253
|
folder_path, file_list, alias_paths = (
|
|
@@ -266,8 +268,8 @@ class Tool(BaseTool):
|
|
|
266
268
|
f"File Aliases (for use with ContextManager):\n{alias_list_str}\n"
|
|
267
269
|
"Use the `ContextManager` tool to view these files."
|
|
268
270
|
"Do not use standard cli tools to view these files."
|
|
269
|
-
"Remove them from context after taking
|
|
270
|
-
"
|
|
271
|
+
"Remove them from context after taking notes on the relevant information "
|
|
272
|
+
"to prevent overfilling stale context."
|
|
271
273
|
)
|
|
272
274
|
|
|
273
275
|
# Remove from background tracking since it's done
|
|
@@ -201,7 +201,7 @@ class Tool(BaseTool):
|
|
|
201
201
|
found_by = ""
|
|
202
202
|
|
|
203
203
|
if start_text is not None and end_text is not None:
|
|
204
|
-
if start_text == "@000":
|
|
204
|
+
if start_text == "@000" or start_text == "000@":
|
|
205
205
|
start_indices = [0]
|
|
206
206
|
else:
|
|
207
207
|
start_pattern_lines = start_text.split("\n")
|
|
@@ -213,7 +213,7 @@ class Tool(BaseTool):
|
|
|
213
213
|
):
|
|
214
214
|
start_indices.append(i)
|
|
215
215
|
|
|
216
|
-
if end_text == "000@":
|
|
216
|
+
if end_text == "000@" or end_text == "@000":
|
|
217
217
|
end_indices = [num_lines - 1]
|
|
218
218
|
else:
|
|
219
219
|
end_pattern_lines = end_text.split("\n")
|
|
@@ -554,6 +554,14 @@ class TUI(App):
|
|
|
554
554
|
|
|
555
555
|
footer = self.query_one(MainFooter)
|
|
556
556
|
footer.update_mode(msg.get("mode", "code"))
|
|
557
|
+
elif msg_type == "switch_agent":
|
|
558
|
+
target_uuid = msg["uuid"]
|
|
559
|
+
# Ensure the target container exists before switching
|
|
560
|
+
primary_uuid = str(self.worker.coder.uuid)
|
|
561
|
+
if target_uuid != primary_uuid and target_uuid not in self._sub_agent_containers:
|
|
562
|
+
self.show_error("Agent container not found. Cannot switch.")
|
|
563
|
+
else:
|
|
564
|
+
self._switch_to_container(target_uuid)
|
|
557
565
|
|
|
558
566
|
def add_output(self, text, task_id=None):
|
|
559
567
|
"""Add output to the output container."""
|
|
@@ -678,6 +686,8 @@ class TUI(App):
|
|
|
678
686
|
|
|
679
687
|
def on_input_area_submit(self, message: InputArea.Submit):
|
|
680
688
|
"""Handle input submission."""
|
|
689
|
+
from cecli.helpers.agents.service import AgentService
|
|
690
|
+
|
|
681
691
|
user_input = message.value
|
|
682
692
|
|
|
683
693
|
if not user_input.strip():
|
|
@@ -703,6 +713,63 @@ class TUI(App):
|
|
|
703
713
|
self._open_editor_suspended(initial_content)
|
|
704
714
|
return
|
|
705
715
|
|
|
716
|
+
# Intercept /switch-agent command to handle immediately without LLM processing
|
|
717
|
+
if stripped.startswith("/switch-agent"):
|
|
718
|
+
parts = stripped.split(maxsplit=1)
|
|
719
|
+
agent_name = parts[1].strip() if len(parts) > 1 else ""
|
|
720
|
+
|
|
721
|
+
input_area = self.query_one("#input", InputArea)
|
|
722
|
+
input_area.value = ""
|
|
723
|
+
|
|
724
|
+
if not agent_name:
|
|
725
|
+
self.show_error("Usage: /switch-agent <agent-name>")
|
|
726
|
+
return
|
|
727
|
+
|
|
728
|
+
# Resolve agent name to UUID
|
|
729
|
+
agent_service = AgentService.get_instance(self.worker.coder)
|
|
730
|
+
primary_uuid = str(self.worker.coder.uuid)
|
|
731
|
+
|
|
732
|
+
target_uuid = None
|
|
733
|
+
if agent_name == "primary":
|
|
734
|
+
target_uuid = primary_uuid
|
|
735
|
+
else:
|
|
736
|
+
# Try parsing "name (uuid)" format
|
|
737
|
+
if agent_name.endswith(")") and " (" in agent_name:
|
|
738
|
+
try:
|
|
739
|
+
# Extract uuid prefix from "name (prefix)"
|
|
740
|
+
uuid_prefix = agent_name.rsplit(" (", 1)[1][:-1]
|
|
741
|
+
for uuid, info in agent_service.sub_agents.items():
|
|
742
|
+
if uuid.startswith(uuid_prefix):
|
|
743
|
+
target_uuid = uuid
|
|
744
|
+
break
|
|
745
|
+
except IndexError:
|
|
746
|
+
pass # Not the format we expected
|
|
747
|
+
|
|
748
|
+
# If not found via "name (uuid)", try matching by name directly
|
|
749
|
+
if target_uuid is None:
|
|
750
|
+
for uuid, info in agent_service.sub_agents.items():
|
|
751
|
+
if info.name == agent_name:
|
|
752
|
+
target_uuid = uuid
|
|
753
|
+
break
|
|
754
|
+
|
|
755
|
+
# If still not found, try matching by uuid prefix directly
|
|
756
|
+
if target_uuid is None:
|
|
757
|
+
for uuid, info in agent_service.sub_agents.items():
|
|
758
|
+
if uuid.startswith(agent_name):
|
|
759
|
+
target_uuid = uuid
|
|
760
|
+
break
|
|
761
|
+
|
|
762
|
+
if target_uuid is None:
|
|
763
|
+
self.show_error(f"Agent '{agent_name}' not found.")
|
|
764
|
+
return
|
|
765
|
+
|
|
766
|
+
if target_uuid != primary_uuid and target_uuid not in self._sub_agent_containers:
|
|
767
|
+
self.show_error(f"Agent container for '{agent_name}' not found.")
|
|
768
|
+
return
|
|
769
|
+
|
|
770
|
+
self._switch_to_container(target_uuid)
|
|
771
|
+
return
|
|
772
|
+
|
|
706
773
|
# Save to history before clearing
|
|
707
774
|
input_area = self.query_one("#input", InputArea)
|
|
708
775
|
input_area.save_to_history(user_input)
|
|
@@ -976,6 +1043,12 @@ class TUI(App):
|
|
|
976
1043
|
agent_service = AgentService.get_instance(self.worker.coder)
|
|
977
1044
|
primary_uuid = str(self.worker.coder.uuid)
|
|
978
1045
|
|
|
1046
|
+
# Check if the target container exists
|
|
1047
|
+
if uuid != primary_uuid and uuid not in self._sub_agent_containers:
|
|
1048
|
+
# Sub-agent container not found, fall back to primary
|
|
1049
|
+
self.show_error(f"Agent container for UUID {uuid} not found. Switching to primary.")
|
|
1050
|
+
uuid = primary_uuid
|
|
1051
|
+
|
|
979
1052
|
if uuid == primary_uuid:
|
|
980
1053
|
# Switch to primary agent
|
|
981
1054
|
agent_service.foreground_uuid = None
|
|
@@ -40,7 +40,7 @@ class InputContainer(Vertical):
|
|
|
40
40
|
sub_agents = self._get_sub_agents()
|
|
41
41
|
if sub_agents:
|
|
42
42
|
pills_text = self._format_sub_agent_pills(sub_agents, self.show_squares)
|
|
43
|
-
self.border_title = f"
|
|
43
|
+
self.border_title = f"agent: {pills_text}"
|
|
44
44
|
else:
|
|
45
45
|
self.border_title = mode
|
|
46
46
|
self.refresh()
|
|
@@ -49,7 +49,7 @@ class InputContainer(Vertical):
|
|
|
49
49
|
"""Query AgentService via self.app to build sub-agent pill data.
|
|
50
50
|
|
|
51
51
|
Returns:
|
|
52
|
-
List of dicts with ``name``, ``active``, and ``generating`` keys,
|
|
52
|
+
List of dicts with ``name``, ``uuid``, ``active``, and ``generating`` keys,
|
|
53
53
|
or empty list.
|
|
54
54
|
"""
|
|
55
55
|
try:
|
|
@@ -61,13 +61,14 @@ class InputContainer(Vertical):
|
|
|
61
61
|
agent_service = AgentService.get_instance(coder)
|
|
62
62
|
|
|
63
63
|
sub_agents = []
|
|
64
|
-
primary_uuid = agent_service.coder.uuid
|
|
64
|
+
primary_uuid = str(agent_service.coder.uuid)
|
|
65
65
|
active_uuid = agent_service.foreground_uuid or primary_uuid
|
|
66
66
|
|
|
67
67
|
# Primary is never "generating" in the sub-agent sense
|
|
68
68
|
sub_agents.append(
|
|
69
69
|
{
|
|
70
70
|
"name": "primary",
|
|
71
|
+
"uuid": primary_uuid,
|
|
71
72
|
"active": active_uuid == primary_uuid,
|
|
72
73
|
"generating": is_active(getattr(coder.io, "output_task", None)),
|
|
73
74
|
}
|
|
@@ -78,6 +79,7 @@ class InputContainer(Vertical):
|
|
|
78
79
|
sub_agents.append(
|
|
79
80
|
{
|
|
80
81
|
"name": info.name,
|
|
82
|
+
"uuid": coder_uuid,
|
|
81
83
|
"active": coder_uuid == active_uuid,
|
|
82
84
|
"generating": is_active(info.generate_task),
|
|
83
85
|
}
|
|
@@ -101,13 +103,17 @@ class InputContainer(Vertical):
|
|
|
101
103
|
- ◆/■ (generating, active) — alternates for animation
|
|
102
104
|
|
|
103
105
|
Args:
|
|
104
|
-
sub_agents: List of dicts with ``name``, ``active``, and ``generating`` keys.
|
|
106
|
+
sub_agents: List of dicts with ``name``, ``uuid``, ``active``, and ``generating`` keys.
|
|
105
107
|
show_squares: If True, use square icons (□/■) instead of diamonds (◇/◆) for generating agents.
|
|
106
108
|
|
|
107
109
|
Returns:
|
|
108
|
-
A string like ``"◍ primary ◆ reviewer"``.
|
|
110
|
+
A string like ``"◍ primary ◆ reviewer (a6b)"``.
|
|
109
111
|
"""
|
|
110
112
|
parts = []
|
|
113
|
+
name_counts = {}
|
|
114
|
+
for sa in sub_agents:
|
|
115
|
+
name_counts[sa["name"]] = name_counts.get(sa["name"], 0) + 1
|
|
116
|
+
|
|
111
117
|
for sa in sub_agents:
|
|
112
118
|
active = sa.get("active", False)
|
|
113
119
|
gen = sa.get("generating", False)
|
|
@@ -118,7 +124,13 @@ class InputContainer(Vertical):
|
|
|
118
124
|
icon = "◆" if active else "◇"
|
|
119
125
|
else:
|
|
120
126
|
icon = "●" if active else "○"
|
|
121
|
-
|
|
127
|
+
|
|
128
|
+
name = sa["name"]
|
|
129
|
+
display_name = name
|
|
130
|
+
if name != "primary" and name_counts[name] > 1:
|
|
131
|
+
display_name = f"{name} ({sa['uuid'][:3]})"
|
|
132
|
+
|
|
133
|
+
parts.append(f"{icon} {display_name}")
|
|
122
134
|
return " ".join(parts)
|
|
123
135
|
|
|
124
136
|
def update_cost(self, cost_text: str):
|
|
@@ -59,6 +59,7 @@ cog.out(get_help_md())
|
|
|
59
59
|
| **/run** | Run a shell command and optionally add the output to the chat (alias: !) |
|
|
60
60
|
| **/save** | Save commands to a file that can reconstruct the current chat session's files |
|
|
61
61
|
| **/settings** | Print out the current settings |
|
|
62
|
+
| **/switch-agent** | Switch to a specific agent by name |
|
|
62
63
|
| **/test** | Run a shell command and add the output to the chat on non-zero exit code |
|
|
63
64
|
| **/think-tokens** | Set the thinking token budget, eg: 8096, 8k, 10.5k, 0.5M, or 0 to disable. |
|
|
64
65
|
| **/tokens** | Report on the number of tokens used by the current chat context |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 0.100.
|
|
3
|
+
Version: 0.100.0rc9
|
|
4
4
|
Summary: we also can't pronounce cecli
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/cecli
|
|
6
6
|
Project-URL: Documentation, https://github.com/dwash96/cecli
|
|
@@ -76,7 +76,7 @@ Requires-Dist: cogapp; extra == "dev"
|
|
|
76
76
|
Requires-Dist: semver; extra == "dev"
|
|
77
77
|
Requires-Dist: codespell; extra == "dev"
|
|
78
78
|
Requires-Dist: uv; extra == "dev"
|
|
79
|
-
Requires-Dist: memray; extra == "dev"
|
|
79
|
+
Requires-Dist: memray; sys_platform != "win32" and extra == "dev"
|
|
80
80
|
Requires-Dist: objgraph; extra == "dev"
|
|
81
81
|
Requires-Dist: pympler; extra == "dev"
|
|
82
82
|
Requires-Dist: guppy3; extra == "dev"
|