cecli-dev 0.100.1rc1__tar.gz → 0.100.3__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.1rc1 → cecli_dev-0.100.3}/PKG-INFO +2 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/__init__.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/_version.py +3 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/args.py +28 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/agent_coder.py +79 -26
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/base_coder.py +30 -8
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/__init__.py +0 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/add.py +93 -6
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/exclude_skill.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/include_skill.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_skill.py +2 -1
- cecli_dev-0.100.3/cecli/commands/reap_agent.py +160 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_skill.py +1 -1
- cecli_dev-0.100.3/cecli/commands/spawn_agent.py +61 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/config.py +7 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/service.py +360 -44
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/integration.py +41 -1
- cecli_dev-0.100.3/cecli/helpers/crypto.py +125 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/observations/service.py +19 -10
- cecli_dev-0.100.3/cecli/helpers/responses.py +596 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/skills.py +16 -4
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/history.py +4 -2
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/io.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/main.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/models.py +26 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/agent.yml +3 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/base.yml +8 -5
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/subagent.yml +6 -5
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/repomap.py +12 -4
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/model-metadata.json +1519 -282
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/sessions.py +102 -19
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/__init__.py +2 -2
- cecli_dev-0.100.3/cecli/tools/_yield.py +164 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/delegate.py +21 -23
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/edit_text.py +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/explore_code.py +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/grep.py +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/load_skill.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/read_range.py +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/remove_skill.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/update_todo_list.py +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/base_tool.py +8 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/helpers.py +45 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/registry.py +1 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/app.py +71 -15
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/io.py +18 -10
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/footer.py +8 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/status_bar.py +15 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/worker.py +5 -4
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/utils.py +2 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/agent-mode.md +3 -3
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/subagents.md +32 -11
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/sessions.md +11 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/PKG-INFO +2 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/SOURCES.txt +8 -2
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/requires.txt +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/pyproject.toml +3 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/common-constraints.txt +3 -1
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements.in +1 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements.txt +1 -0
- cecli_dev-0.100.3/tests/basic/conftest.py +24 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_commands.py +17 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_models.py +2 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_repomap.py +14 -0
- cecli_dev-0.100.3/tests/basic/test_session_args.py +31 -0
- cecli_dev-0.100.3/tests/basic/test_session_crypto.py +105 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sessions.py +27 -0
- cecli_dev-0.100.3/tests/basic/test_sessions_manager.py +219 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/observations/test_observation_service.py +2 -6
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_commands.py +2 -109
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_delegate.py +38 -20
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_finished.py +10 -11
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_service.py +39 -28
- cecli_dev-0.100.3/tests/tools/test_extractions.py +406 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_registry.py +8 -8
- cecli_dev-0.100.3/tests/tools/test_tool_arguments.py +298 -0
- cecli_dev-0.100.3/tests/tui/test_app.py +278 -0
- cecli_dev-0.100.1rc1/cecli/commands/invoke_agent.py +0 -54
- cecli_dev-0.100.1rc1/cecli/commands/reap_agent.py +0 -67
- cecli_dev-0.100.1rc1/cecli/commands/spawn_agent.py +0 -42
- cecli_dev-0.100.1rc1/cecli/helpers/responses.py +0 -245
- cecli_dev-0.100.1rc1/cecli/tools/finished.py +0 -86
- cecli_dev-0.100.1rc1/tests/tui/test_app.py +0 -37
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.dockerignore +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.flake8 +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.gitattributes +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.gitignore +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CHANGELOG.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CNAME +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/HISTORY.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/LICENSE.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/MANIFEST.in +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/README.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/README.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/docker.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/over_time.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/plot.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/plots.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/prompts.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/__main__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/code.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/core.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/git.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/help.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/map.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/merge.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/model.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/models.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/report.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/run.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/save.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/test.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/web.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/diffs.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/dump.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/editor.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/exceptions.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/format_settings.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/help.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/help_pats.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/service.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/linter.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/llm.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/mdstream.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/onboarding.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/repo.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/report.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/scrape.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/sendchat.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/special.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/command.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/context_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/urls.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/voice.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/waiting.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/watch.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/docker/Dockerfile +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/pytest.ini +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/30k-image.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/blame.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/homepage.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/issues.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/update-history.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/versionbump.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/setup.cfg +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/shim.pyproject.toml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conftest.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/help/test_help.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/__init__.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/conftest.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_config.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.100.1rc1 → cecli_dev-0.100.3}/tests/tools/test_insert_block.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.3
|
|
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
|
|
@@ -52,6 +52,7 @@ Requires-Dist: tomlkit>=0.14.0
|
|
|
52
52
|
Requires-Dist: truststore
|
|
53
53
|
Requires-Dist: xxhash>=3.6.0
|
|
54
54
|
Requires-Dist: py-cymbal>=0.1.24
|
|
55
|
+
Requires-Dist: cryptography>=42.0.0
|
|
55
56
|
Requires-Dist: rustworkx>=0.15.0
|
|
56
57
|
Requires-Dist: scipy>=1.15.3
|
|
57
58
|
Requires-Dist: importlib-metadata>=7.2.1
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.100.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 100,
|
|
21
|
+
__version__ = version = '0.100.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ge53c2cd27'
|
|
@@ -370,6 +370,24 @@ def get_parser(default_config_files, git_root):
|
|
|
370
370
|
" (default: False)"
|
|
371
371
|
),
|
|
372
372
|
)
|
|
373
|
+
group.add_argument(
|
|
374
|
+
"--session-encrypt",
|
|
375
|
+
action=argparse.BooleanOptionalAction,
|
|
376
|
+
default=False,
|
|
377
|
+
help=(
|
|
378
|
+
"Encrypt saved sessions on disk (AES-256-GCM). Requires CECLI_SESSION_KEY or"
|
|
379
|
+
" --session-key-file (default: False)"
|
|
380
|
+
),
|
|
381
|
+
)
|
|
382
|
+
group.add_argument(
|
|
383
|
+
"--session-key-file",
|
|
384
|
+
metavar="SESSION_KEY_FILE",
|
|
385
|
+
default=None,
|
|
386
|
+
help=(
|
|
387
|
+
"File containing a urlsafe-base64 32-byte session encryption key"
|
|
388
|
+
" (default: use CECLI_SESSION_KEY only)"
|
|
389
|
+
),
|
|
390
|
+
).complete = shtab.FILE
|
|
373
391
|
group.add_argument(
|
|
374
392
|
"--mcp-servers",
|
|
375
393
|
metavar="MCP_CONFIG_JSON",
|
|
@@ -536,6 +554,16 @@ def get_parser(default_config_files, git_root):
|
|
|
536
554
|
" False)"
|
|
537
555
|
),
|
|
538
556
|
)
|
|
557
|
+
group.add_argument(
|
|
558
|
+
"--exempt-paths",
|
|
559
|
+
action="append",
|
|
560
|
+
default=[],
|
|
561
|
+
help=(
|
|
562
|
+
"Specify a regex pattern for paths that should be exempted from file creation. "
|
|
563
|
+
"When /add matches a path matching any exempt pattern, it will not offer to "
|
|
564
|
+
"create the file. Can be used multiple times."
|
|
565
|
+
),
|
|
566
|
+
)
|
|
539
567
|
##########
|
|
540
568
|
group = parser.add_argument_group("Output settings")
|
|
541
569
|
group.add_argument(
|
|
@@ -12,7 +12,6 @@ from collections import defaultdict
|
|
|
12
12
|
from datetime import datetime
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
|
|
15
|
-
from cecli import utils
|
|
16
15
|
from cecli.change_tracker import ChangeTracker
|
|
17
16
|
from cecli.helpers import nested, responses
|
|
18
17
|
from cecli.helpers.agents.service import AgentService
|
|
@@ -265,7 +264,8 @@ class AgentCoder(Coder):
|
|
|
265
264
|
|
|
266
265
|
async def initialize_mcp_tools(self):
|
|
267
266
|
if not self.mcp_manager:
|
|
268
|
-
|
|
267
|
+
verbose = getattr(self.args, "verbose", False) if self.args else False
|
|
268
|
+
self.mcp_manager = McpServerManager([], self.io, verbose)
|
|
269
269
|
|
|
270
270
|
server_name = "Local"
|
|
271
271
|
server = self.mcp_manager.get_server(server_name)
|
|
@@ -540,6 +540,10 @@ class AgentCoder(Coder):
|
|
|
540
540
|
|
|
541
541
|
# Add post-message context blocks (priority 250 - between CUR and REMINDER)
|
|
542
542
|
ConversationService.get_chunks(self).add_post_message_context_blocks()
|
|
543
|
+
|
|
544
|
+
# Add sub-agent states context block (same priority as post-message blocks)
|
|
545
|
+
ConversationService.get_chunks(self).add_sub_agent_states()
|
|
546
|
+
|
|
543
547
|
ConversationService.get_chunks(self).add_randomized_cta()
|
|
544
548
|
|
|
545
549
|
return ConversationService.get_manager(self).get_messages_dict()
|
|
@@ -727,25 +731,23 @@ class AgentCoder(Coder):
|
|
|
727
731
|
continue
|
|
728
732
|
|
|
729
733
|
if args_string:
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
)
|
|
748
|
-
continue
|
|
734
|
+
parsed = responses.parse_tool_arguments(args_string)
|
|
735
|
+
if isinstance(parsed, dict) and "@error" in parsed:
|
|
736
|
+
self.io.tool_warning(
|
|
737
|
+
f"Malformed JSON arguments in tool {tool_name}: {parsed['@error']}"
|
|
738
|
+
)
|
|
739
|
+
tool_responses.append(
|
|
740
|
+
{
|
|
741
|
+
"role": "tool",
|
|
742
|
+
"tool_call_id": tool_call.id,
|
|
743
|
+
"content": (
|
|
744
|
+
f"Malformed JSON arguments in tool {tool_name}: {parsed['@error']}"
|
|
745
|
+
),
|
|
746
|
+
}
|
|
747
|
+
)
|
|
748
|
+
continue
|
|
749
|
+
parsed_args_list = [parsed]
|
|
750
|
+
|
|
749
751
|
if not parsed_args_list and not args_string:
|
|
750
752
|
parsed_args_list.append({})
|
|
751
753
|
all_results_content = []
|
|
@@ -837,20 +839,22 @@ class AgentCoder(Coder):
|
|
|
837
839
|
|
|
838
840
|
async def _execute_mcp_tools(self, server, tool_calls):
|
|
839
841
|
"""Execute MCP tools via LiteLLM."""
|
|
840
|
-
|
|
842
|
+
tool_responses = []
|
|
841
843
|
for tool_call in tool_calls:
|
|
842
844
|
# Use existing _execute_mcp_tool logic
|
|
843
845
|
result = await self._execute_mcp_tool(
|
|
844
|
-
server,
|
|
846
|
+
server,
|
|
847
|
+
tool_call.function.name,
|
|
848
|
+
responses.parse_tool_arguments(tool_call.function.arguments),
|
|
845
849
|
)
|
|
846
|
-
|
|
850
|
+
tool_responses.append(
|
|
847
851
|
{
|
|
848
852
|
"role": "tool",
|
|
849
853
|
"tool_call_id": tool_call.id,
|
|
850
854
|
"content": result,
|
|
851
855
|
}
|
|
852
856
|
)
|
|
853
|
-
return
|
|
857
|
+
return tool_responses
|
|
854
858
|
|
|
855
859
|
def get_active_model(self):
|
|
856
860
|
if self.main_model.agent_model:
|
|
@@ -871,6 +875,13 @@ class AgentCoder(Coder):
|
|
|
871
875
|
content = self.partial_response_content
|
|
872
876
|
tool_calls_found = bool(self.partial_response_tool_calls)
|
|
873
877
|
|
|
878
|
+
# Reap all finished sub-agents with auto_reap enabled
|
|
879
|
+
try:
|
|
880
|
+
service = AgentService.get_instance(self)
|
|
881
|
+
await service.reap_all_finished_agents(parent=service.get_parent(self))
|
|
882
|
+
except Exception:
|
|
883
|
+
logger.warning("Failed to reap finished sub-agents", exc_info=True)
|
|
884
|
+
|
|
874
885
|
# 1. Handle Tool Execution Follow-up (Reflection)
|
|
875
886
|
if self.agent_finished:
|
|
876
887
|
self.tool_usage_history = []
|
|
@@ -878,6 +889,7 @@ class AgentCoder(Coder):
|
|
|
878
889
|
self.reflected_message = None
|
|
879
890
|
if self.files_edited_by_tools:
|
|
880
891
|
_ = await self.auto_commit(self.files_edited_by_tools)
|
|
892
|
+
|
|
881
893
|
return False
|
|
882
894
|
|
|
883
895
|
# 2. Check for unfinished and recently finished background commands
|
|
@@ -938,7 +950,7 @@ class AgentCoder(Coder):
|
|
|
938
950
|
if self.tool_call_vectors:
|
|
939
951
|
if content and not tool_calls_found and self.num_reflections < self.max_reflections:
|
|
940
952
|
self.reflected_message = (
|
|
941
|
-
"Continue with your task. If you have completed it, call the `
|
|
953
|
+
"Continue with your task. If you have completed it, call the `Yield` tool."
|
|
942
954
|
)
|
|
943
955
|
return True
|
|
944
956
|
|
|
@@ -1490,12 +1502,53 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1490
1502
|
result += "\n"
|
|
1491
1503
|
|
|
1492
1504
|
result += "Use the `Delegate` tool with the sub-agent name to delegate tasks.\n"
|
|
1505
|
+
result += "Use the `Yield` tool to wait for responses for all active sub agents.\n"
|
|
1493
1506
|
result += "</context>"
|
|
1494
1507
|
return result
|
|
1495
1508
|
except Exception as e:
|
|
1496
1509
|
self.io.tool_error(f"Error generating sub-agents context: {str(e)}")
|
|
1497
1510
|
return None
|
|
1498
1511
|
|
|
1512
|
+
def get_child_agent_states(self):
|
|
1513
|
+
"""Get the state of all active child sub-agents.
|
|
1514
|
+
|
|
1515
|
+
Returns a formatted context block with each child sub-agent's name,
|
|
1516
|
+
UUID, and current status, or None if no children exist.
|
|
1517
|
+
This is used by ConversationChunks.add_sub_agent_states() to provide
|
|
1518
|
+
the model with visibility into active sub-agent states.
|
|
1519
|
+
"""
|
|
1520
|
+
if not self.use_enhanced_context:
|
|
1521
|
+
return None
|
|
1522
|
+
|
|
1523
|
+
# Sub-agents should only see child states when nested delegation is enabled
|
|
1524
|
+
if hasattr(self, "parent_uuid") and self.parent_uuid:
|
|
1525
|
+
if not self.agent_config.get("allow_nested_delegation", False):
|
|
1526
|
+
return None
|
|
1527
|
+
|
|
1528
|
+
try:
|
|
1529
|
+
service = AgentService.get_instance(self)
|
|
1530
|
+
children = service.get_children(self)
|
|
1531
|
+
|
|
1532
|
+
if not children:
|
|
1533
|
+
return None
|
|
1534
|
+
|
|
1535
|
+
result = '<context name="sub_agent_states" from="agent">\n'
|
|
1536
|
+
result += "## Active Sub-Agent States\n\n"
|
|
1537
|
+
result += f"Found {len(children)} active child sub-agent(s):\n\n"
|
|
1538
|
+
|
|
1539
|
+
for info in children:
|
|
1540
|
+
result += f"**{info.name}**:\n"
|
|
1541
|
+
result += f" - UUID: `{info.coder.uuid}`\n"
|
|
1542
|
+
result += f" - Status: {info.status.value}\n"
|
|
1543
|
+
if info.error:
|
|
1544
|
+
result += f" - Error: {info.error}\n"
|
|
1545
|
+
result += "\n"
|
|
1546
|
+
result += "</context>"
|
|
1547
|
+
return result
|
|
1548
|
+
except Exception as e:
|
|
1549
|
+
self.io.tool_error(f"Error generating child agent states: {str(e)}")
|
|
1550
|
+
return None
|
|
1551
|
+
|
|
1499
1552
|
def get_background_command_output(self):
|
|
1500
1553
|
"""
|
|
1501
1554
|
Get background command output to append after the main message.
|
|
@@ -1597,7 +1597,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
1597
1597
|
self.io.output_task = asyncio.create_task(self.generate(user_message, preproc))
|
|
1598
1598
|
|
|
1599
1599
|
# Start spinner for output task
|
|
1600
|
-
self.io.start_spinner("Processing...")
|
|
1600
|
+
self.io.start_spinner("Processing...", coder_uuid=getattr(self, "uuid", None))
|
|
1601
1601
|
await self.io.recreate_input()
|
|
1602
1602
|
|
|
1603
1603
|
# Monitor output task
|
|
@@ -1914,6 +1914,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
1914
1914
|
messages,
|
|
1915
1915
|
compaction_prompt,
|
|
1916
1916
|
self.context_compaction_summary_tokens,
|
|
1917
|
+
coder=self,
|
|
1917
1918
|
)
|
|
1918
1919
|
if not text:
|
|
1919
1920
|
raise ValueError(f"Summarization of {tag} messages returned empty.")
|
|
@@ -2306,6 +2307,16 @@ class Coder(metaclass=UsageMeta):
|
|
|
2306
2307
|
def get_active_model(self):
|
|
2307
2308
|
return self.main_model
|
|
2308
2309
|
|
|
2310
|
+
def empty_llm_tool_warning(self) -> str:
|
|
2311
|
+
"""Ollama-friendly copy for local models; cloud hint otherwise."""
|
|
2312
|
+
name = str(getattr(getattr(self, "main_model", None), "name", "") or "")
|
|
2313
|
+
if "ollama" in name.lower():
|
|
2314
|
+
return (
|
|
2315
|
+
"Empty response from the local model (Ollama). "
|
|
2316
|
+
"The model may have timed out, unloaded, or hit context limits."
|
|
2317
|
+
)
|
|
2318
|
+
return "Empty response received from LLM. Check API keys, quota, or provider status."
|
|
2319
|
+
|
|
2309
2320
|
async def send_message(self, inp):
|
|
2310
2321
|
# Notify IO that LLM processing is starting
|
|
2311
2322
|
self.io.llm_started()
|
|
@@ -2365,7 +2376,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
2365
2376
|
if not self.tui:
|
|
2366
2377
|
spinner_text += f" • ${self.format_cost(self.total_cost)} session"
|
|
2367
2378
|
|
|
2368
|
-
self.io.start_spinner(spinner_text)
|
|
2379
|
+
self.io.start_spinner(spinner_text, coder_uuid=getattr(self, "uuid", None))
|
|
2369
2380
|
if self.stream:
|
|
2370
2381
|
self.mdstream = True
|
|
2371
2382
|
else:
|
|
@@ -2452,9 +2463,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
2452
2463
|
self.mdstream = None
|
|
2453
2464
|
|
|
2454
2465
|
# Ensure any waiting spinner is stopped
|
|
2455
|
-
self.io.start_spinner("Processing Answer...")
|
|
2456
|
-
|
|
2457
|
-
self.partial_response_content = self.get_multi_response_content_in_progress(True)
|
|
2466
|
+
self.io.start_spinner("Processing Answer...", coder_uuid=getattr(self, "uuid", None))
|
|
2458
2467
|
self.remove_reasoning_content()
|
|
2459
2468
|
self.multi_response_content = ""
|
|
2460
2469
|
|
|
@@ -2645,6 +2654,13 @@ class Coder(metaclass=UsageMeta):
|
|
|
2645
2654
|
expanded_tool_calls.append(tool_call)
|
|
2646
2655
|
continue
|
|
2647
2656
|
|
|
2657
|
+
merged = responses.merge_glued_json_objects(json_chunks)
|
|
2658
|
+
if merged is not None:
|
|
2659
|
+
new_tool_call = copy_tool_call(tool_call)
|
|
2660
|
+
new_tool_call.function.arguments = json.dumps(merged)
|
|
2661
|
+
expanded_tool_calls.append(new_tool_call)
|
|
2662
|
+
continue
|
|
2663
|
+
|
|
2648
2664
|
# We have concatenated JSON, so expand it into multiple tool calls.
|
|
2649
2665
|
for i, chunk in enumerate(json_chunks):
|
|
2650
2666
|
if not chunk.strip():
|
|
@@ -3255,7 +3271,6 @@ class Coder(metaclass=UsageMeta):
|
|
|
3255
3271
|
functions,
|
|
3256
3272
|
self.stream,
|
|
3257
3273
|
self.temperature,
|
|
3258
|
-
# This could include any tools, but for now it is just MCP tools
|
|
3259
3274
|
tools=tools,
|
|
3260
3275
|
override_kwargs=self.model_kwargs.copy(),
|
|
3261
3276
|
interrupt_event=self.interrupt_event,
|
|
@@ -3363,7 +3378,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3363
3378
|
and not len(self.partial_response_tool_calls)
|
|
3364
3379
|
and not len(self.partial_response_reasoning_content)
|
|
3365
3380
|
):
|
|
3366
|
-
self.io.tool_warning(
|
|
3381
|
+
self.io.tool_warning(self.empty_llm_tool_warning())
|
|
3367
3382
|
|
|
3368
3383
|
self.io.assistant_output(show_resp, pretty=self.show_pretty())
|
|
3369
3384
|
|
|
@@ -3520,7 +3535,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3520
3535
|
return
|
|
3521
3536
|
|
|
3522
3537
|
if not received_content and len(self.partial_response_tool_calls) == 0:
|
|
3523
|
-
self.io.tool_warning(
|
|
3538
|
+
self.io.tool_warning(self.empty_llm_tool_warning())
|
|
3524
3539
|
|
|
3525
3540
|
def consolidate_chunks(self):
|
|
3526
3541
|
if self.partial_response_consolidated:
|
|
@@ -3628,12 +3643,19 @@ class Coder(metaclass=UsageMeta):
|
|
|
3628
3643
|
extracted_calls = responses.extract_tools_from_content_json(
|
|
3629
3644
|
self.partial_response_content
|
|
3630
3645
|
)
|
|
3646
|
+
|
|
3631
3647
|
if not extracted_calls:
|
|
3632
3648
|
extracted_calls = responses.extract_tools_from_content_xml(
|
|
3633
3649
|
self.partial_response_content
|
|
3634
3650
|
)
|
|
3635
3651
|
|
|
3652
|
+
if not extracted_calls:
|
|
3653
|
+
extracted_calls = responses.extract_tools_from_pseudo_json(
|
|
3654
|
+
self.partial_response_content
|
|
3655
|
+
)
|
|
3656
|
+
|
|
3636
3657
|
if extracted_calls:
|
|
3658
|
+
self.tool_reflection = True
|
|
3637
3659
|
self.partial_response_tool_calls = extracted_calls
|
|
3638
3660
|
|
|
3639
3661
|
self.partial_response_consolidated = (response, func_err, content_err)
|
|
@@ -33,7 +33,6 @@ 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
|
|
37
36
|
from .lint import LintCommand
|
|
38
37
|
from .list_sessions import ListSessionsCommand
|
|
39
38
|
from .list_skills import ListSkillsCommand
|
|
@@ -117,7 +116,6 @@ CommandRegistry.register(HashlineCommand)
|
|
|
117
116
|
CommandRegistry.register(HelpCommand)
|
|
118
117
|
CommandRegistry.register(HistorySearchCommand)
|
|
119
118
|
CommandRegistry.register(HooksCommand)
|
|
120
|
-
CommandRegistry.register(InvokeAgentCommand)
|
|
121
119
|
CommandRegistry.register(ReapAgentCommand)
|
|
122
120
|
CommandRegistry.register(SpawnAgentCommand)
|
|
123
121
|
CommandRegistry.register(SwitchAgentCommand)
|
|
@@ -200,7 +198,6 @@ __all__ = [
|
|
|
200
198
|
"HistorySearchCommand",
|
|
201
199
|
"HooksCommand",
|
|
202
200
|
"IncludeSkillCommand",
|
|
203
|
-
"InvokeAgentCommand",
|
|
204
201
|
"ReapAgentCommand",
|
|
205
202
|
"SpawnAgentCommand",
|
|
206
203
|
"SwitchAgentCommand",
|
|
@@ -71,6 +71,20 @@ class AddCommand(BaseCommand):
|
|
|
71
71
|
if len(confirm_fname) > 64:
|
|
72
72
|
confirm_fname = f".../{os.path.basename(confirm_fname)}"
|
|
73
73
|
|
|
74
|
+
# Check if the path matches any exempt-path regex patterns
|
|
75
|
+
exempt_paths = getattr(coder.args, "exempt_paths", None) or []
|
|
76
|
+
if exempt_paths:
|
|
77
|
+
try:
|
|
78
|
+
rel_norm = os.path.relpath(fname, coder.root).replace("\\", "/")
|
|
79
|
+
except ValueError:
|
|
80
|
+
rel_norm = str(fname).replace("\\", "/")
|
|
81
|
+
if any(re.search(p, rel_norm) for p in exempt_paths):
|
|
82
|
+
io.tool_error(
|
|
83
|
+
f"Path '{confirm_fname}' matches an exempt-path pattern. "
|
|
84
|
+
"Skipping file creation."
|
|
85
|
+
)
|
|
86
|
+
continue
|
|
87
|
+
|
|
74
88
|
if await io.confirm_ask(
|
|
75
89
|
f"No files matched '{confirm_fname}'. Do you want to create this file?"
|
|
76
90
|
):
|
|
@@ -84,12 +98,9 @@ class AddCommand(BaseCommand):
|
|
|
84
98
|
for matched_file in sorted(all_matched_files):
|
|
85
99
|
abs_file_path = coder.abs_root_path(matched_file)
|
|
86
100
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
and not coder.add_gitignore_files
|
|
91
|
-
):
|
|
92
|
-
io.tool_error(f"Can't add {matched_file} which is in gitignore")
|
|
101
|
+
blocked = cls._add_blocked_message(coder, matched_file)
|
|
102
|
+
if blocked:
|
|
103
|
+
io.tool_error(blocked)
|
|
93
104
|
continue
|
|
94
105
|
|
|
95
106
|
if abs_file_path in coder.abs_fnames:
|
|
@@ -240,3 +251,79 @@ class AddCommand(BaseCommand):
|
|
|
240
251
|
help_text += "Files can be moved from read-only to editable status.\n"
|
|
241
252
|
help_text += "Image files can be added if the model supports vision.\n"
|
|
242
253
|
return help_text
|
|
254
|
+
|
|
255
|
+
@staticmethod
|
|
256
|
+
def _display_add_path(matched_file: str) -> str:
|
|
257
|
+
try:
|
|
258
|
+
label = os.path.relpath(matched_file)
|
|
259
|
+
except ValueError:
|
|
260
|
+
label = matched_file
|
|
261
|
+
if len(label) > 64:
|
|
262
|
+
label = f".../{os.path.basename(label)}"
|
|
263
|
+
return label
|
|
264
|
+
|
|
265
|
+
@staticmethod
|
|
266
|
+
def _git_repo_for_add_check(coder, matched_file: str):
|
|
267
|
+
"""Resolve the GitRepo used for ignore checks (RepoSet-aware)."""
|
|
268
|
+
repo = coder.repo
|
|
269
|
+
if not repo:
|
|
270
|
+
return None, matched_file
|
|
271
|
+
if hasattr(repo, "repo_for_rel_path"):
|
|
272
|
+
git_repo = repo.repo_for_rel_path(matched_file)
|
|
273
|
+
try:
|
|
274
|
+
rel = repo.path_relative_to_repo(matched_file, git_repo)
|
|
275
|
+
except (ValueError, OSError):
|
|
276
|
+
rel = matched_file
|
|
277
|
+
return git_repo, rel
|
|
278
|
+
return repo, matched_file
|
|
279
|
+
|
|
280
|
+
@classmethod
|
|
281
|
+
def _add_blocked_message(cls, coder, matched_file: str) -> str | None:
|
|
282
|
+
"""
|
|
283
|
+
Explain why /add refused a path. Distinguishes .gitignore vs .cecli.ignore when possible.
|
|
284
|
+
"""
|
|
285
|
+
if not coder.repo or coder.add_gitignore_files:
|
|
286
|
+
return None
|
|
287
|
+
if not coder.repo.git_ignored_file(matched_file):
|
|
288
|
+
return None
|
|
289
|
+
|
|
290
|
+
display = cls._display_add_path(matched_file)
|
|
291
|
+
git_repo, rel = cls._git_repo_for_add_check(coder, matched_file)
|
|
292
|
+
if not git_repo:
|
|
293
|
+
return (
|
|
294
|
+
f"Can't add {display}: excluded by ignore rules for this session. "
|
|
295
|
+
"Confirm Settings \u2192 project folder is the git root for this file."
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
gitignore_hit = False
|
|
299
|
+
cecli_hit = False
|
|
300
|
+
if hasattr(git_repo, "_is_gitignored_by_pathspec"):
|
|
301
|
+
try:
|
|
302
|
+
gitignore_hit = bool(git_repo._is_gitignored_by_pathspec(rel))
|
|
303
|
+
except (ValueError, OSError):
|
|
304
|
+
gitignore_hit = False
|
|
305
|
+
|
|
306
|
+
ignore_file = getattr(git_repo, "cecli_ignore_file", None) or getattr(
|
|
307
|
+
git_repo, "aider_ignore_file", None
|
|
308
|
+
)
|
|
309
|
+
if ignore_file and Path(ignore_file).is_file() and hasattr(git_repo, "ignored_file_raw"):
|
|
310
|
+
try:
|
|
311
|
+
cecli_hit = bool(git_repo.ignored_file_raw(rel))
|
|
312
|
+
except (ValueError, OSError):
|
|
313
|
+
cecli_hit = False
|
|
314
|
+
|
|
315
|
+
if cecli_hit and not gitignore_hit:
|
|
316
|
+
return (
|
|
317
|
+
f"Can't add {display}: blocked by {Path(ignore_file).name} "
|
|
318
|
+
"(cecli ignore rules), not .gitignore."
|
|
319
|
+
)
|
|
320
|
+
if gitignore_hit:
|
|
321
|
+
return (
|
|
322
|
+
f"Can't add {display}: matched .gitignore under the session workspace. "
|
|
323
|
+
"If this is normal tracked source, check the project folder in Settings."
|
|
324
|
+
)
|
|
325
|
+
return (
|
|
326
|
+
f"Can't add {display}: excluded by ignore rules for this session "
|
|
327
|
+
"(.gitignore and/or cecli ignore). "
|
|
328
|
+
"Confirm the project folder is the git root that contains this file."
|
|
329
|
+
)
|
|
@@ -19,7 +19,7 @@ class ExcludeSkillCommand(BaseCommand):
|
|
|
19
19
|
skill_names = args.strip().split()
|
|
20
20
|
|
|
21
21
|
# Check if we're in agent mode
|
|
22
|
-
if not hasattr(coder, "edit_format") or coder.edit_format
|
|
22
|
+
if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
|
|
23
23
|
io.tool_output("Skill exclusion is only available in agent mode.")
|
|
24
24
|
return format_command_result(
|
|
25
25
|
io, "exclude-skill", "Skill exclusion is only available in agent mode"
|
|
@@ -19,7 +19,7 @@ class IncludeSkillCommand(BaseCommand):
|
|
|
19
19
|
skill_names = args.strip().split()
|
|
20
20
|
|
|
21
21
|
# Check if we're in agent mode
|
|
22
|
-
if not hasattr(coder, "edit_format") or coder.edit_format
|
|
22
|
+
if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
|
|
23
23
|
io.tool_output("Skill inclusion is only available in agent mode.")
|
|
24
24
|
return format_command_result(
|
|
25
25
|
io, "include-skill", "Skill inclusion is only available in agent mode"
|
|
@@ -19,7 +19,8 @@ class LoadSkillCommand(BaseCommand):
|
|
|
19
19
|
skill_names = args.strip().split()
|
|
20
20
|
|
|
21
21
|
# Check if we're in agent mode
|
|
22
|
-
|
|
22
|
+
io.tool_output(coder.edit_format)
|
|
23
|
+
if not hasattr(coder, "edit_format") or coder.edit_format not in ("agent", "subagent"):
|
|
23
24
|
io.tool_output("Skill loading is only available in agent mode.")
|
|
24
25
|
return format_command_result(
|
|
25
26
|
io, "load-skill", "Skill loading is only available in agent mode"
|