cecli-dev 0.99.12__tar.gz → 0.100.0rc1__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.12 → cecli_dev-0.100.0rc1}/PKG-INFO +8 -6
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/README.md +6 -5
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/_version.py +3 -3
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/args.py +1 -1
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/__init__.py +2 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/agent_coder.py +99 -6
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/base_coder.py +99 -20
- cecli_dev-0.100.0rc1/cecli/coders/sub_agent_coder.py +22 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/__init__.py +10 -1
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/clear.py +2 -2
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/core.py +16 -11
- cecli_dev-0.100.0rc1/cecli/commands/invoke_agent.py +51 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/ls.py +3 -3
- cecli_dev-0.100.0rc1/cecli/commands/reap_agent.py +66 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/reset.py +2 -2
- cecli_dev-0.100.0rc1/cecli/commands/spawn_agent.py +40 -0
- cecli_dev-0.100.0rc1/cecli/helpers/agents/__init__.py +7 -0
- cecli_dev-0.100.0rc1/cecli/helpers/agents/config.py +79 -0
- cecli_dev-0.100.0rc1/cecli/helpers/agents/service.py +506 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/files.py +29 -11
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/integration.py +69 -13
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/manager.py +29 -11
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/service.py +1 -2
- cecli_dev-0.100.0rc1/cecli/helpers/io_proxy.py +256 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/leak_detect.py +42 -0
- cecli_dev-0.99.12/cecli/helpers/observations/manager.py → cecli_dev-0.100.0rc1/cecli/helpers/observations/service.py +50 -16
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/io.py +18 -15
- cecli_dev-0.100.0rc1/cecli/prompts/subagent.yml +62 -0
- cecli_dev-0.100.0rc1/cecli/queries/tree-sitter-language-pack/bash-tags.scm +8 -0
- cecli_dev-0.100.0rc1/cecli/queries/tree-sitter-languages/bash-tags.scm +8 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/repomap.py +30 -7
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/__init__.py +2 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/context_manager.py +51 -5
- cecli_dev-0.100.0rc1/cecli/tools/delegate.py +125 -0
- cecli_dev-0.100.0rc1/cecli/tools/finished.py +86 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/read_range.py +89 -13
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/base_tool.py +2 -2
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/app.py +357 -49
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/io.py +179 -55
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/styles.tcss +2 -1
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/__init__.py +2 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/file_list.py +12 -2
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/footer.py +61 -4
- cecli_dev-0.100.0rc1/cecli/tui/widgets/input_container.py +127 -0
- cecli_dev-0.100.0rc1/cecli/tui/widgets/subagent_pills.py +164 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/worker.py +26 -6
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/agent-mode.md +18 -28
- cecli_dev-0.100.0rc1/cecli/website/docs/config/subagents.md +235 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/PKG-INFO +8 -6
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/SOURCES.txt +26 -2
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/requires.txt +1 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/pytest.ini +1 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/common-constraints.txt +3 -1
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-dev.in +1 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-dev.txt +4 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_coder.py +17 -9
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_reasoning.py +4 -4
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_repomap.py +3 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conversations/test_conversation_integration.py +1 -1
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conversations/test_conversation_system.py +1 -1
- cecli_dev-0.100.0rc1/tests/fixtures/languages/bash/test.sh +19 -0
- cecli_dev-0.99.12/tests/helpers/observations/test_observation_manager.py → cecli_dev-0.100.0rc1/tests/helpers/observations/test_observation_service.py +7 -7
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/scrape/test_playwright_disable.py +2 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/scrape/test_scrape.py +2 -0
- cecli_dev-0.100.0rc1/tests/subagents/__init__.py +0 -0
- cecli_dev-0.100.0rc1/tests/subagents/conftest.py +60 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_commands.py +234 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_config.py +109 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_delegate.py +116 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_finished.py +109 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_io_proxy.py +187 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_service.py +653 -0
- cecli_dev-0.100.0rc1/tests/subagents/test_sub_agent_coder.py +153 -0
- cecli_dev-0.99.12/cecli/tools/finished.py +0 -41
- cecli_dev-0.99.12/cecli/tui/widgets/input_container.py +0 -24
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.dockerignore +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.flake8 +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.gitattributes +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.gitignore +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CHANGELOG.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CNAME +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/HISTORY.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/LICENSE.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/MANIFEST.in +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/README.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/docker.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/over_time.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/plot.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/plots.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/prompts.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/__main__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/add.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/code.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/git.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/help.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/map.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/model.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/models.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/report.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/run.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/save.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/test.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/web.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/diffs.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/dump.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/editor.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/exceptions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/format_settings.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/help.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/help_pats.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/history.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/linter.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/llm.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/main.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/mdstream.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/models.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/onboarding.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/repo.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/report.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/scrape.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/sendchat.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/sessions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/special.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/command.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/edit_text.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/urls.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/utils.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/voice.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/waiting.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/watch.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/docker/Dockerfile +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/pyproject.toml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/requirements.in +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/requirements.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/30k-image.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/blame.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/homepage.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/issues.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/update-history.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/versionbump.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/setup.cfg +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/shim.pyproject.toml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/conftest.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/help/test_help.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.99.12 → cecli_dev-0.100.0rc1}/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.
|
|
3
|
+
Version: 0.100.0rc1
|
|
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
|
|
@@ -80,6 +80,7 @@ Requires-Dist: memray; extra == "dev"
|
|
|
80
80
|
Requires-Dist: objgraph; extra == "dev"
|
|
81
81
|
Requires-Dist: pympler; extra == "dev"
|
|
82
82
|
Requires-Dist: guppy3; extra == "dev"
|
|
83
|
+
Requires-Dist: psutil; extra == "dev"
|
|
83
84
|
Provides-Extra: help
|
|
84
85
|
Requires-Dist: llama-index-embeddings-huggingface; extra == "help"
|
|
85
86
|
Requires-Dist: numpy>=1.26.4; extra == "help"
|
|
@@ -110,6 +111,7 @@ LLMs are a part of our lives from here on out so join us in learning about and c
|
|
|
110
111
|
* [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
|
|
111
112
|
* [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
|
|
112
113
|
* [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
|
|
114
|
+
* [Subagents](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/subagents.md)
|
|
113
115
|
* [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
|
|
114
116
|
* [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
|
|
115
117
|
* [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
|
|
@@ -232,7 +234,7 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
232
234
|
* [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
|
|
233
235
|
|
|
234
236
|
4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
|
|
235
|
-
* [
|
|
237
|
+
* [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
|
|
236
238
|
* [x] Add support for partial files and code snippets in model completion messages
|
|
237
239
|
* [x] Update message request structure for optimal caching
|
|
238
240
|
|
|
@@ -251,12 +253,12 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
251
253
|
* [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
|
|
252
254
|
|
|
253
255
|
7. **Sub Agents**
|
|
254
|
-
* [
|
|
256
|
+
* [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
|
|
255
257
|
* [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
|
|
256
258
|
* [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
|
|
257
259
|
* [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
|
|
258
|
-
* [
|
|
259
|
-
* [
|
|
260
|
+
* [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
|
|
261
|
+
* [x] Add visibility into active sub agent calls in TUI
|
|
260
262
|
|
|
261
263
|
8. **Hooks**
|
|
262
264
|
* [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
|
|
@@ -270,7 +272,7 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
270
272
|
* [x] Update internal file diff representation to support hashline propagation
|
|
271
273
|
|
|
272
274
|
10. **Dynamic Context Management**
|
|
273
|
-
* [
|
|
275
|
+
* [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
|
|
274
276
|
* [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
|
|
275
277
|
* [ ] Integrate RLM to extract information from decision records on disk and other definable notes
|
|
276
278
|
* [ ] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
|
|
@@ -20,6 +20,7 @@ LLMs are a part of our lives from here on out so join us in learning about and c
|
|
|
20
20
|
* [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
|
|
21
21
|
* [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
|
|
22
22
|
* [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
|
|
23
|
+
* [Subagents](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/subagents.md)
|
|
23
24
|
* [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
|
|
24
25
|
* [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
|
|
25
26
|
* [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
|
|
@@ -142,7 +143,7 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
142
143
|
* [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
|
|
143
144
|
|
|
144
145
|
4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
|
|
145
|
-
* [
|
|
146
|
+
* [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
|
|
146
147
|
* [x] Add support for partial files and code snippets in model completion messages
|
|
147
148
|
* [x] Update message request structure for optimal caching
|
|
148
149
|
|
|
@@ -161,12 +162,12 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
161
162
|
* [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
|
|
162
163
|
|
|
163
164
|
7. **Sub Agents**
|
|
164
|
-
* [
|
|
165
|
+
* [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
|
|
165
166
|
* [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
|
|
166
167
|
* [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
|
|
167
168
|
* [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
|
|
168
|
-
* [
|
|
169
|
-
* [
|
|
169
|
+
* [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
|
|
170
|
+
* [x] Add visibility into active sub agent calls in TUI
|
|
170
171
|
|
|
171
172
|
8. **Hooks**
|
|
172
173
|
* [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
|
|
@@ -180,7 +181,7 @@ The current priorities are to improve core capabilities and user experience of t
|
|
|
180
181
|
* [x] Update internal file diff representation to support hashline propagation
|
|
181
182
|
|
|
182
183
|
10. **Dynamic Context Management**
|
|
183
|
-
* [
|
|
184
|
+
* [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
|
|
184
185
|
* [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
|
|
185
186
|
* [ ] Integrate RLM to extract information from decision records on disk and other definable notes
|
|
186
187
|
* [ ] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
|
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (0,
|
|
21
|
+
__version__ = version = '0.100.0rc1'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 0, 'rc1')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gd703941b6'
|
|
@@ -12,6 +12,7 @@ from .editor_whole_coder import EditorWholeFileCoder
|
|
|
12
12
|
from .hashline_coder import HashLineCoder
|
|
13
13
|
from .help_coder import HelpCoder
|
|
14
14
|
from .patch_coder import PatchCoder
|
|
15
|
+
from .sub_agent_coder import SubAgentCoder
|
|
15
16
|
from .udiff_coder import UnifiedDiffCoder
|
|
16
17
|
from .udiff_simple import UnifiedDiffSimpleCoder
|
|
17
18
|
from .wholefile_coder import WholeFileCoder
|
|
@@ -37,4 +38,5 @@ __all__ = [
|
|
|
37
38
|
AgentCoder,
|
|
38
39
|
CopyPasteCoder,
|
|
39
40
|
HashLineCoder,
|
|
41
|
+
SubAgentCoder,
|
|
40
42
|
]
|
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import base64
|
|
3
3
|
import json
|
|
4
4
|
import locale
|
|
5
|
+
import logging
|
|
5
6
|
import os
|
|
6
7
|
import platform
|
|
7
8
|
import random
|
|
@@ -14,6 +15,7 @@ from pathlib import Path
|
|
|
14
15
|
from cecli import utils
|
|
15
16
|
from cecli.change_tracker import ChangeTracker
|
|
16
17
|
from cecli.helpers import nested, responses
|
|
18
|
+
from cecli.helpers.agents.service import AgentService
|
|
17
19
|
from cecli.helpers.background_commands import BackgroundCommandManager
|
|
18
20
|
from cecli.helpers.conversation import ConversationService, MessageTag
|
|
19
21
|
from cecli.helpers.similarity import (
|
|
@@ -33,6 +35,8 @@ from .base_coder import Coder
|
|
|
33
35
|
|
|
34
36
|
from cecli.helpers.coroutines import interruptible # isort:skip
|
|
35
37
|
|
|
38
|
+
logger = logging.getLogger(__name__)
|
|
39
|
+
|
|
36
40
|
|
|
37
41
|
class AgentCoder(Coder):
|
|
38
42
|
"""Mode where the LLM autonomously manages which files are in context."""
|
|
@@ -40,6 +44,7 @@ class AgentCoder(Coder):
|
|
|
40
44
|
edit_format = "agent"
|
|
41
45
|
prompt_format = "agent"
|
|
42
46
|
context_management_enabled = True
|
|
47
|
+
|
|
43
48
|
hashlines = True
|
|
44
49
|
stop_on_empty = False
|
|
45
50
|
|
|
@@ -92,11 +97,32 @@ class AgentCoder(Coder):
|
|
|
92
97
|
self.skip_cli_confirmations = False
|
|
93
98
|
self.agent_finished = False
|
|
94
99
|
self.agent_config = self._get_agent_config()
|
|
100
|
+
self.max_sub_agents = self.agent_config.get("max_sub_agents", 3)
|
|
101
|
+
self.sub_agent_paths = self.agent_config.get("subagent_paths", [])
|
|
95
102
|
self._setup_agent()
|
|
103
|
+
|
|
104
|
+
AgentService.build_registry(self.sub_agent_paths)
|
|
96
105
|
ToolRegistry.build_registry(agent_config=self.agent_config)
|
|
106
|
+
|
|
97
107
|
self.loaded_custom_tools = ToolRegistry.loaded_custom_tools
|
|
98
108
|
super().__init__(*args, **kwargs)
|
|
99
109
|
|
|
110
|
+
def post_init(self):
|
|
111
|
+
super().post_init()
|
|
112
|
+
# Populate per-instance tool and server filters from config
|
|
113
|
+
self.registered_tools["included"] = set(
|
|
114
|
+
map(str.lower, self.agent_config.get("tools_includelist", []))
|
|
115
|
+
)
|
|
116
|
+
self.registered_tools["excluded"] = set(
|
|
117
|
+
map(str.lower, self.agent_config.get("tools_excludelist", []))
|
|
118
|
+
)
|
|
119
|
+
self.registered_servers["included"] = set(
|
|
120
|
+
map(str.lower, self.agent_config.get("servers_includelist", []))
|
|
121
|
+
)
|
|
122
|
+
self.registered_servers["excluded"] = set(
|
|
123
|
+
map(str.lower, self.agent_config.get("servers_excludelist", []))
|
|
124
|
+
)
|
|
125
|
+
|
|
100
126
|
def _setup_agent(self):
|
|
101
127
|
os.makedirs(".cecli/temp", exist_ok=True)
|
|
102
128
|
|
|
@@ -137,6 +163,12 @@ class AgentCoder(Coder):
|
|
|
137
163
|
config, ["tools_excludelist", "tools_blacklist"], []
|
|
138
164
|
)
|
|
139
165
|
|
|
166
|
+
config["servers_includelist"] = nested.getter(
|
|
167
|
+
config, ["servers_includelist", "servers_whitelist"], []
|
|
168
|
+
)
|
|
169
|
+
config["servers_excludelist"] = nested.getter(
|
|
170
|
+
config, ["servers_excludelist", "servers_blacklist"], []
|
|
171
|
+
)
|
|
140
172
|
config["include_context_blocks"] = set(
|
|
141
173
|
nested.getter(
|
|
142
174
|
config,
|
|
@@ -148,6 +180,7 @@ class AgentCoder(Coder):
|
|
|
148
180
|
# "git_status",
|
|
149
181
|
# "symbol_outline",
|
|
150
182
|
"todo_list",
|
|
183
|
+
"sub_agents",
|
|
151
184
|
"skills",
|
|
152
185
|
},
|
|
153
186
|
)
|
|
@@ -352,6 +385,8 @@ class AgentCoder(Coder):
|
|
|
352
385
|
content = self.get_skills_context()
|
|
353
386
|
elif block_name == "loaded_skills":
|
|
354
387
|
content = self.get_skills_content()
|
|
388
|
+
elif block_name == "sub_agents":
|
|
389
|
+
content = self.get_sub_agents_context()
|
|
355
390
|
if content is not None:
|
|
356
391
|
self.context_blocks_cache[block_name] = content
|
|
357
392
|
return content
|
|
@@ -460,7 +495,22 @@ class AgentCoder(Coder):
|
|
|
460
495
|
ConversationService.get_chunks(self).add_file_list_reminder()
|
|
461
496
|
|
|
462
497
|
# Add system messages (including examples and reminder)
|
|
463
|
-
|
|
498
|
+
# For sub-agents, use their specific system prompt via AgentService lookup
|
|
499
|
+
# For primary agents, use the default system messages flow
|
|
500
|
+
needs_system_prompts = True
|
|
501
|
+
if hasattr(self, "parent_uuid") and self.parent_uuid:
|
|
502
|
+
from cecli.helpers.agents.service import AgentService
|
|
503
|
+
|
|
504
|
+
service = AgentService.get_instance(self)
|
|
505
|
+
info = service.sub_agents.get(self.uuid)
|
|
506
|
+
if info:
|
|
507
|
+
config = AgentService.get_registry().get(info.name)
|
|
508
|
+
if config and config.prompt and config.prompt.strip():
|
|
509
|
+
ConversationService.get_chunks(self).add_system_message(config.prompt)
|
|
510
|
+
needs_system_prompts = False
|
|
511
|
+
|
|
512
|
+
if needs_system_prompts:
|
|
513
|
+
ConversationService.get_chunks(self).add_system_messages()
|
|
464
514
|
|
|
465
515
|
# Add static context blocks (priority 50 - between SYSTEM and EXAMPLES)
|
|
466
516
|
ConversationService.get_chunks(self).add_static_context_blocks()
|
|
@@ -808,6 +858,7 @@ class AgentCoder(Coder):
|
|
|
808
858
|
# 1. Handle Tool Execution Follow-up (Reflection)
|
|
809
859
|
if self.agent_finished:
|
|
810
860
|
self.tool_usage_history = []
|
|
861
|
+
self.tool_call_vectors = []
|
|
811
862
|
self.reflected_message = None
|
|
812
863
|
if self.files_edited_by_tools:
|
|
813
864
|
_ = await self.auto_commit(self.files_edited_by_tools)
|
|
@@ -860,11 +911,15 @@ class AgentCoder(Coder):
|
|
|
860
911
|
self.tool_usage_history = []
|
|
861
912
|
return True
|
|
862
913
|
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
914
|
+
# 4. If we have called no tools (e.g. the first message)
|
|
915
|
+
# Allow early exiting
|
|
916
|
+
# If a model forgets a tool call, replay the request instead of stopping early
|
|
917
|
+
if self.tool_call_vectors:
|
|
918
|
+
if content and not tool_calls_found and self.num_reflections < self.max_reflections:
|
|
919
|
+
self.reflected_message = (
|
|
920
|
+
"Continue with your task. If you have completed it, call the `Finished` tool."
|
|
921
|
+
)
|
|
922
|
+
return True
|
|
868
923
|
|
|
869
924
|
if tool_calls_found and self.num_reflections < self.max_reflections:
|
|
870
925
|
self.tool_call_count = 0
|
|
@@ -1384,6 +1439,44 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1384
1439
|
self.io.tool_error(f"Error generating skills content context: {str(e)}")
|
|
1385
1440
|
return None
|
|
1386
1441
|
|
|
1442
|
+
def get_sub_agents_context(self):
|
|
1443
|
+
"""
|
|
1444
|
+
Generate a context block for registered sub-agents.
|
|
1445
|
+
Only shown for primary coders (no parent_uuid).
|
|
1446
|
+
|
|
1447
|
+
Returns:
|
|
1448
|
+
Formatted context block string with sub-agent names and descriptions,
|
|
1449
|
+
or None if no sub-agents are registered or if called from a sub-agent.
|
|
1450
|
+
"""
|
|
1451
|
+
if not self.use_enhanced_context:
|
|
1452
|
+
return None
|
|
1453
|
+
if hasattr(self, "parent_uuid") and self.parent_uuid:
|
|
1454
|
+
return None
|
|
1455
|
+
try:
|
|
1456
|
+
from cecli.helpers.agents.service import AgentService
|
|
1457
|
+
|
|
1458
|
+
registry = AgentService.get_registry()
|
|
1459
|
+
if not registry:
|
|
1460
|
+
return None
|
|
1461
|
+
|
|
1462
|
+
result = '<context name="sub_agents" from="agent">\n'
|
|
1463
|
+
result += "## Available Sub-Agents\n\n"
|
|
1464
|
+
result += f"Found {len(registry)} registered sub-agent(s):\n\n"
|
|
1465
|
+
|
|
1466
|
+
for name, config in sorted(registry.items()):
|
|
1467
|
+
result += f"**{name}**:\n"
|
|
1468
|
+
desc = config.metadata.get("description", "")
|
|
1469
|
+
if desc:
|
|
1470
|
+
result += f"{desc}\n"
|
|
1471
|
+
result += "\n"
|
|
1472
|
+
|
|
1473
|
+
result += "Use the `Delegate` tool with the sub-agent name to delegate tasks.\n"
|
|
1474
|
+
result += "</context>"
|
|
1475
|
+
return result
|
|
1476
|
+
except Exception as e:
|
|
1477
|
+
self.io.tool_error(f"Error generating sub-agents context: {str(e)}")
|
|
1478
|
+
return None
|
|
1479
|
+
|
|
1387
1480
|
def get_background_command_output(self):
|
|
1388
1481
|
"""
|
|
1389
1482
|
Get background command output to append after the main message.
|
|
@@ -42,7 +42,8 @@ from cecli.commands import Commands, SwitchCoderSignal
|
|
|
42
42
|
from cecli.exceptions import LiteLLMExceptions
|
|
43
43
|
from cecli.helpers import command_parser, coroutines, nested, responses
|
|
44
44
|
from cecli.helpers.conversation import ConversationService, MessageTag
|
|
45
|
-
from cecli.helpers.
|
|
45
|
+
from cecli.helpers.io_proxy import IOProxy
|
|
46
|
+
from cecli.helpers.observations.service import ObservationService
|
|
46
47
|
from cecli.helpers.profiler import TokenProfiler
|
|
47
48
|
from cecli.history import ChatSummary
|
|
48
49
|
from cecli.hooks import HookIntegration
|
|
@@ -137,6 +138,7 @@ class Coder:
|
|
|
137
138
|
partial_response_reasoning_content = ""
|
|
138
139
|
partial_response_chunks = []
|
|
139
140
|
partial_response_tool_calls = []
|
|
141
|
+
partial_response_consolidated = None
|
|
140
142
|
commit_before_message = []
|
|
141
143
|
message_cost = 0.0
|
|
142
144
|
total_tokens_sent = 0
|
|
@@ -160,7 +162,8 @@ class Coder:
|
|
|
160
162
|
suppress_announcements_for_next_prompt = False
|
|
161
163
|
tool_reflection = False
|
|
162
164
|
last_user_message = ""
|
|
163
|
-
uuid = ""
|
|
165
|
+
uuid: str = ""
|
|
166
|
+
parent_uuid: str = ""
|
|
164
167
|
model_kwargs = {}
|
|
165
168
|
cost_multiplier = 1
|
|
166
169
|
stop_on_empty = True
|
|
@@ -237,6 +240,7 @@ class Coder:
|
|
|
237
240
|
file_watcher=from_coder.file_watcher,
|
|
238
241
|
mcp_manager=from_coder.mcp_manager,
|
|
239
242
|
uuid=from_coder.uuid,
|
|
243
|
+
parent_uuid=from_coder.parent_uuid,
|
|
240
244
|
repo=from_coder.repo,
|
|
241
245
|
)
|
|
242
246
|
use_kwargs.update(update) # override to complete the switch
|
|
@@ -335,14 +339,23 @@ class Coder:
|
|
|
335
339
|
repomap_in_memory=False,
|
|
336
340
|
linear_output=False,
|
|
337
341
|
security_config=None,
|
|
338
|
-
uuid="",
|
|
342
|
+
uuid: str = "",
|
|
343
|
+
parent_uuid: str = "",
|
|
339
344
|
):
|
|
340
345
|
# initialize from args.map_cache_dir
|
|
341
|
-
self.interrupt_event = asyncio.Event()
|
|
342
346
|
self.coroutines = coroutines
|
|
343
|
-
|
|
347
|
+
# Per-instance tool and server filtering dictionaries
|
|
348
|
+
# Each contains "included" and "excluded" sets that filter from the global singletons
|
|
349
|
+
self.registered_tools = {"included": set(), "excluded": set()}
|
|
350
|
+
self.registered_servers = {"included": set(), "excluded": set()}
|
|
351
|
+
self.interrupt_event = asyncio.Event()
|
|
352
|
+
self.uuid = str(generate_unique_id())
|
|
353
|
+
|
|
344
354
|
if uuid:
|
|
345
|
-
self.uuid = uuid
|
|
355
|
+
self.uuid = str(uuid)
|
|
356
|
+
|
|
357
|
+
if parent_uuid:
|
|
358
|
+
self.parent_uuid = str(parent_uuid)
|
|
346
359
|
|
|
347
360
|
self.map_cache_dir = map_cache_dir
|
|
348
361
|
|
|
@@ -413,7 +426,15 @@ class Coder:
|
|
|
413
426
|
self.abs_rules_fnames = set()
|
|
414
427
|
|
|
415
428
|
self.io = io
|
|
416
|
-
|
|
429
|
+
|
|
430
|
+
# Wrap io with IOProxy for coder_uuid injection in output messages
|
|
431
|
+
# Always create a new IOProxy so sub-agents get their own _coder_uuid.
|
|
432
|
+
# Unwrap any existing IOProxy to avoid fragile nested proxy chains.
|
|
433
|
+
raw_io = IOProxy.unwrap(io)
|
|
434
|
+
self.io = IOProxy(raw_io, self)
|
|
435
|
+
|
|
436
|
+
if not self.parent_uuid:
|
|
437
|
+
self.io.coder = weakref.ref(self)
|
|
417
438
|
|
|
418
439
|
self.manual_copy_paste = (
|
|
419
440
|
nested.getter(main_model, "copy_paste_transport", "api") == "clipboard"
|
|
@@ -632,6 +653,11 @@ class Coder:
|
|
|
632
653
|
self.io.tool_output("JSON Schema:")
|
|
633
654
|
self.io.tool_output(json.dumps(self.functions, indent=4))
|
|
634
655
|
|
|
656
|
+
self.post_init()
|
|
657
|
+
|
|
658
|
+
def post_init(self):
|
|
659
|
+
pass
|
|
660
|
+
|
|
635
661
|
@property
|
|
636
662
|
def gpt_prompts(self):
|
|
637
663
|
"""Get prompts from the registry based on the coder type."""
|
|
@@ -758,8 +784,18 @@ class Coder:
|
|
|
758
784
|
if self.mcp_tools:
|
|
759
785
|
mcp_servers = []
|
|
760
786
|
for server_name, server_tools in self.mcp_tools:
|
|
787
|
+
# Filter servers per instance configuration
|
|
788
|
+
if (
|
|
789
|
+
self.registered_servers["included"]
|
|
790
|
+
and server_name not in self.registered_servers["included"]
|
|
791
|
+
):
|
|
792
|
+
continue
|
|
793
|
+
if server_name in self.registered_servers["excluded"]:
|
|
794
|
+
continue
|
|
761
795
|
mcp_servers.append(server_name)
|
|
762
|
-
|
|
796
|
+
|
|
797
|
+
if mcp_servers:
|
|
798
|
+
lines.append(f"MCP servers configured: {', '.join(mcp_servers)}")
|
|
763
799
|
|
|
764
800
|
for fname in self.abs_read_only_stubs_fnames:
|
|
765
801
|
rel_fname = self.get_rel_fname(fname)
|
|
@@ -1309,7 +1345,8 @@ class Coder:
|
|
|
1309
1345
|
await self.io.recreate_input()
|
|
1310
1346
|
await self.io.input_task
|
|
1311
1347
|
user_message = self.io.input_task.result()
|
|
1312
|
-
|
|
1348
|
+
if isinstance(user_message, tuple) and len(user_message) == 2:
|
|
1349
|
+
user_message, _ = user_message
|
|
1313
1350
|
if (
|
|
1314
1351
|
self.args
|
|
1315
1352
|
and not self.args.tui
|
|
@@ -1419,7 +1456,12 @@ class Coder:
|
|
|
1419
1456
|
# Wait for input task completion
|
|
1420
1457
|
if self.io.input_task and self.io.input_task.done():
|
|
1421
1458
|
try:
|
|
1422
|
-
|
|
1459
|
+
_result = self.io.input_task.result()
|
|
1460
|
+
user_message = (
|
|
1461
|
+
_result[0]
|
|
1462
|
+
if isinstance(_result, tuple) and len(_result) == 2
|
|
1463
|
+
else _result
|
|
1464
|
+
)
|
|
1423
1465
|
|
|
1424
1466
|
# Defer to confirmation handler to fix Windows event loop race.
|
|
1425
1467
|
if not self.io.confirmation_in_progress_event.is_set():
|
|
@@ -1583,7 +1625,7 @@ class Coder:
|
|
|
1583
1625
|
if self.commands.is_run_command(inp):
|
|
1584
1626
|
self.commands.cmd_running_event.clear() # Command is running
|
|
1585
1627
|
|
|
1586
|
-
return await self.commands.run(inp)
|
|
1628
|
+
return await self.commands.run(inp, coder=self)
|
|
1587
1629
|
|
|
1588
1630
|
await self.check_for_file_mentions(inp)
|
|
1589
1631
|
inp = await self.check_for_urls(inp)
|
|
@@ -1751,7 +1793,7 @@ class Coder:
|
|
|
1751
1793
|
return
|
|
1752
1794
|
|
|
1753
1795
|
# Trigger background observation/reflection check
|
|
1754
|
-
await
|
|
1796
|
+
await ObservationService.get_instance(self).check_and_trigger()
|
|
1755
1797
|
|
|
1756
1798
|
manager = ConversationService.get_manager(self)
|
|
1757
1799
|
done_messages = manager.get_messages_dict(MessageTag.DONE)
|
|
@@ -1788,8 +1830,8 @@ class Coder:
|
|
|
1788
1830
|
if not text:
|
|
1789
1831
|
raise ValueError(f"Summarization of {tag} messages returned empty.")
|
|
1790
1832
|
|
|
1791
|
-
if
|
|
1792
|
-
obs_text = "\n".join(
|
|
1833
|
+
if ObservationService.get_instance(self).observations:
|
|
1834
|
+
obs_text = "\n".join(ObservationService.get_instance(self).observations)
|
|
1793
1835
|
text = f"HISTORICAL OBSERVATIONS:\n{obs_text}\n\n{text}"
|
|
1794
1836
|
|
|
1795
1837
|
manager.clear_tag(tag)
|
|
@@ -2813,11 +2855,34 @@ class Coder:
|
|
|
2813
2855
|
raise AttributeError("mcp_tools is read only.")
|
|
2814
2856
|
|
|
2815
2857
|
def get_tool_list(self):
|
|
2816
|
-
"""Get a flattened list of all MCP tools with server prefixes."""
|
|
2858
|
+
"""Get a flattened list of all MCP tools with server prefixes, filtered by registered_servers."""
|
|
2817
2859
|
tool_list = []
|
|
2818
2860
|
if self.mcp_tools:
|
|
2819
2861
|
for server_name, server_tools in self.mcp_tools:
|
|
2862
|
+
# Apply per-instance server filtering
|
|
2863
|
+
if (
|
|
2864
|
+
self.registered_servers["included"]
|
|
2865
|
+
and server_name not in self.registered_servers["included"]
|
|
2866
|
+
):
|
|
2867
|
+
continue
|
|
2868
|
+
if server_name in self.registered_servers["excluded"]:
|
|
2869
|
+
continue
|
|
2870
|
+
|
|
2820
2871
|
for tool in server_tools:
|
|
2872
|
+
if server_name == "Local":
|
|
2873
|
+
# Apply per-instance tool name filtering
|
|
2874
|
+
tool_name = tool.get("function", {}).get("name", "")
|
|
2875
|
+
if (
|
|
2876
|
+
self.registered_tools["excluded"]
|
|
2877
|
+
and tool_name.lower() in self.registered_tools["excluded"]
|
|
2878
|
+
):
|
|
2879
|
+
continue
|
|
2880
|
+
if (
|
|
2881
|
+
self.registered_tools["included"]
|
|
2882
|
+
and tool_name.lower() not in self.registered_tools["included"]
|
|
2883
|
+
):
|
|
2884
|
+
continue
|
|
2885
|
+
|
|
2821
2886
|
# Prefix the tool name with server name
|
|
2822
2887
|
prefixed_tool = responses.prefix_tool_call(tool, server_name)
|
|
2823
2888
|
tool_list.append(prefixed_tool)
|
|
@@ -2931,7 +2996,7 @@ class Coder:
|
|
|
2931
2996
|
# but response.dict() is the Pydantic V1 method name.
|
|
2932
2997
|
response_dict = dict(response)
|
|
2933
2998
|
except TypeError:
|
|
2934
|
-
|
|
2999
|
+
self.io.tool_warning("Response parsing error.")
|
|
2935
3000
|
return
|
|
2936
3001
|
|
|
2937
3002
|
msg = response_dict["choices"][0]["message"]
|
|
@@ -3065,6 +3130,7 @@ class Coder:
|
|
|
3065
3130
|
self.partial_response_chunks = []
|
|
3066
3131
|
self.partial_response_tool_calls = []
|
|
3067
3132
|
self.partial_response_function_call = dict()
|
|
3133
|
+
self.partial_response_consolidated = None
|
|
3068
3134
|
|
|
3069
3135
|
completion = None
|
|
3070
3136
|
self.token_profiler.start()
|
|
@@ -3081,11 +3147,20 @@ class Coder:
|
|
|
3081
3147
|
interrupt_event=self.interrupt_event,
|
|
3082
3148
|
)
|
|
3083
3149
|
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3150
|
+
try:
|
|
3151
|
+
(hash_object, completion), interrupted = await coroutines.interruptible(
|
|
3152
|
+
completion_coro, self.interrupt_event
|
|
3153
|
+
)
|
|
3154
|
+
except TypeError:
|
|
3155
|
+
self.io.tool_warning(
|
|
3156
|
+
"TypeError in interruptible() — this may indicate a bug "
|
|
3157
|
+
"in the LLM response handling. Converting to KeyboardInterrupt."
|
|
3158
|
+
)
|
|
3159
|
+
raise KeyboardInterrupt
|
|
3160
|
+
|
|
3087
3161
|
if interrupted:
|
|
3088
3162
|
raise KeyboardInterrupt
|
|
3163
|
+
|
|
3089
3164
|
self.chat_completion_call_hashes.append(hash_object.hexdigest())
|
|
3090
3165
|
|
|
3091
3166
|
if not isinstance(completion, ModelResponse):
|
|
@@ -3329,6 +3404,9 @@ class Coder:
|
|
|
3329
3404
|
self.io.tool_warning("Empty response received from LLM. Check your provider account?")
|
|
3330
3405
|
|
|
3331
3406
|
def consolidate_chunks(self):
|
|
3407
|
+
if self.partial_response_consolidated:
|
|
3408
|
+
return self.partial_response_consolidated
|
|
3409
|
+
|
|
3332
3410
|
response = (
|
|
3333
3411
|
self.partial_response_chunks[0]
|
|
3334
3412
|
if not self.stream
|
|
@@ -3439,6 +3517,7 @@ class Coder:
|
|
|
3439
3517
|
if extracted_calls:
|
|
3440
3518
|
self.partial_response_tool_calls = extracted_calls
|
|
3441
3519
|
|
|
3520
|
+
self.partial_response_consolidated = (response, func_err, content_err)
|
|
3442
3521
|
return response, func_err, content_err
|
|
3443
3522
|
|
|
3444
3523
|
def stream_wrapper(self, content, final):
|
|
@@ -3810,7 +3889,7 @@ class Coder:
|
|
|
3810
3889
|
return
|
|
3811
3890
|
|
|
3812
3891
|
warn_number_of_files = 4
|
|
3813
|
-
warn_number_of_tokens =
|
|
3892
|
+
warn_number_of_tokens = 32 * 1024
|
|
3814
3893
|
|
|
3815
3894
|
num_files = len(self.abs_fnames)
|
|
3816
3895
|
if num_files < warn_number_of_files:
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""SubAgentCoder - a Coder variant for sub-agents.
|
|
2
|
+
|
|
3
|
+
Extends AgentCoder but excludes the Delegate tool from its tool schemas
|
|
4
|
+
so sub-agents cannot spawn further sub-agents.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
|
|
9
|
+
from cecli.coders.agent_coder import AgentCoder
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SubAgentCoder(AgentCoder):
|
|
15
|
+
"""Coder for sub-agents that disallows spawning further sub-agents."""
|
|
16
|
+
|
|
17
|
+
edit_format = "subagent"
|
|
18
|
+
prompt_format = "subagent"
|
|
19
|
+
|
|
20
|
+
def post_init(self):
|
|
21
|
+
super().post_init()
|
|
22
|
+
self.registered_tools["excluded"].add("delegate")
|
|
@@ -33,6 +33,7 @@ from .help import HelpCommand
|
|
|
33
33
|
from .history_search import HistorySearchCommand
|
|
34
34
|
from .hooks import HooksCommand
|
|
35
35
|
from .include_skill import IncludeSkillCommand
|
|
36
|
+
from .invoke_agent import InvokeAgentCommand
|
|
36
37
|
from .lint import LintCommand
|
|
37
38
|
from .list_sessions import ListSessionsCommand
|
|
38
39
|
from .list_skills import ListSkillsCommand
|
|
@@ -51,6 +52,7 @@ from .paste import PasteCommand
|
|
|
51
52
|
from .quit import QuitCommand
|
|
52
53
|
from .read_only import ReadOnlyCommand
|
|
53
54
|
from .read_only_stub import ReadOnlyStubCommand
|
|
55
|
+
from .reap_agent import ReapAgentCommand
|
|
54
56
|
from .reasoning_effort import ReasoningEffortCommand
|
|
55
57
|
from .remove_hook import RemoveHookCommand
|
|
56
58
|
from .remove_mcp import RemoveMcpCommand
|
|
@@ -62,6 +64,7 @@ from .run import RunCommand
|
|
|
62
64
|
from .save import SaveCommand
|
|
63
65
|
from .save_session import SaveSessionCommand
|
|
64
66
|
from .settings import SettingsCommand
|
|
67
|
+
from .spawn_agent import SpawnAgentCommand
|
|
65
68
|
from .terminal_setup import TerminalSetupCommand
|
|
66
69
|
from .test import TestCommand
|
|
67
70
|
from .think_tokens import ThinkTokensCommand
|
|
@@ -112,6 +115,9 @@ CommandRegistry.register(HashlineCommand)
|
|
|
112
115
|
CommandRegistry.register(HelpCommand)
|
|
113
116
|
CommandRegistry.register(HistorySearchCommand)
|
|
114
117
|
CommandRegistry.register(HooksCommand)
|
|
118
|
+
CommandRegistry.register(InvokeAgentCommand)
|
|
119
|
+
CommandRegistry.register(ReapAgentCommand)
|
|
120
|
+
CommandRegistry.register(SpawnAgentCommand)
|
|
115
121
|
CommandRegistry.register(IncludeSkillCommand)
|
|
116
122
|
CommandRegistry.register(LintCommand)
|
|
117
123
|
CommandRegistry.register(ListSessionsCommand)
|
|
@@ -188,8 +194,11 @@ __all__ = [
|
|
|
188
194
|
"HashlineCommand",
|
|
189
195
|
"HelpCommand",
|
|
190
196
|
"HistorySearchCommand",
|
|
191
|
-
"
|
|
197
|
+
"HooksCommand",
|
|
192
198
|
"IncludeSkillCommand",
|
|
199
|
+
"InvokeAgentCommand",
|
|
200
|
+
"ReapAgentCommand",
|
|
201
|
+
"SpawnAgentCommand",
|
|
193
202
|
"LintCommand",
|
|
194
203
|
"ListSessionsCommand",
|
|
195
204
|
"ListSkillsCommand",
|