cecli-dev 0.100.7rc2__tar.gz → 0.100.8rc2__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.7rc2 → cecli_dev-0.100.8rc2}/PKG-INFO +1 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/__init__.py +1 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/_version.py +3 -3
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/agent_coder.py +30 -17
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/base_coder.py +23 -6
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/__init__.py +5 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/core.py +19 -0
- cecli_dev-0.100.8rc2/cecli/commands/hot_reload.py +39 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/load_mcp.py +27 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/remove_mcp.py +33 -14
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/run.py +1 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/spawn_agent.py +3 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/utils/helpers.py +87 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/agents/service.py +36 -6
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/files.py +3 -3
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/hashline.py +41 -4
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/main.py +74 -9
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/models.py +2 -7
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/_yield.py +45 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/edit_text.py +5 -6
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/read_range.py +11 -3
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/__init__.py +14 -2
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/app.py +8 -2
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/io.py +1 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/completion_bar.py +1 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/input_area.py +16 -2
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/worker.py +94 -37
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_hashline_closure.py +221 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_commands.py +3 -1
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_get_lines.py +10 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_read_range_execute.py +9 -2
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.dockerignore +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.flake8 +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.gitattributes +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.gitignore +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/CHANGELOG.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/CNAME +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/HISTORY.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/LICENSE.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/MANIFEST.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/README.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/README.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/docker.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/over_time.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/plot.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/plots.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/prompts.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/__main__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/args.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/add.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/clear.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/code.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/context.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/git.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/help.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/load.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/map.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/merge.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/model.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/models.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/report.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/reset.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/save.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/test.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/web.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/diffs.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/dump.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/editor.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/exceptions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/format_settings.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/help.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/help_pats.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/local_workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/helpers/threading.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/history.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/io.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/linter.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/llm.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/mdstream.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/onboarding.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/repo.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/repomap.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/report.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/scrape.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/sendchat.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/sessions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/special.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/command.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/context_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/delegate.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/urls.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/utils.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/voice.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/waiting.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/watch.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/docker/Dockerfile +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/pyproject.toml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/pytest.ini +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/requirements.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/requirements.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/30k-image.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/blame.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/homepage.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/issues.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/update-history.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/versionbump.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/setup.cfg +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/shim.pyproject.toml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/conftest.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/conftest.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/help/test_help.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/__init__.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/conftest.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_config.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_service.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tools/validations.py +0 -0
- {cecli_dev-0.100.7rc2 → cecli_dev-0.100.8rc2}/tests/tui/test_app.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.100.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 100,
|
|
21
|
+
__version__ = version = '0.100.8rc2'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 100, 8, 'rc2')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gac62b709a'
|
|
@@ -51,6 +51,7 @@ class AgentCoder(Coder):
|
|
|
51
51
|
if kwargs.get("uuid", None):
|
|
52
52
|
self.uuid = kwargs.get("uuid")
|
|
53
53
|
|
|
54
|
+
self.start_up_errors = []
|
|
54
55
|
self.recently_removed = {}
|
|
55
56
|
self.tool_usage_history = []
|
|
56
57
|
self.loaded_custom_tools = []
|
|
@@ -109,19 +110,26 @@ class AgentCoder(Coder):
|
|
|
109
110
|
|
|
110
111
|
def post_init(self):
|
|
111
112
|
super().post_init()
|
|
112
|
-
|
|
113
|
-
self.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
|
|
114
|
+
if not self._inherited_tools:
|
|
115
|
+
# Populate per-instance tool and server filters from config
|
|
116
|
+
self.registered_tools["included"] = set(
|
|
117
|
+
map(str.lower, self.agent_config.get("tools_includelist", []))
|
|
118
|
+
)
|
|
119
|
+
self.registered_tools["excluded"] = set(
|
|
120
|
+
map(str.lower, self.agent_config.get("tools_excludelist", []))
|
|
121
|
+
)
|
|
122
|
+
self.registered_servers["included"] = set(
|
|
123
|
+
map(str.lower, self.agent_config.get("servers_includelist", []))
|
|
124
|
+
)
|
|
125
|
+
self.registered_servers["excluded"] = set(
|
|
126
|
+
map(str.lower, self.agent_config.get("servers_excludelist", []))
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
for err in self.start_up_errors:
|
|
130
|
+
self.io.tool_warning(err)
|
|
131
|
+
|
|
132
|
+
self.start_up_errors = []
|
|
125
133
|
|
|
126
134
|
def _setup_agent(self):
|
|
127
135
|
os.makedirs(".cecli/temp", exist_ok=True)
|
|
@@ -143,7 +151,7 @@ class AgentCoder(Coder):
|
|
|
143
151
|
try:
|
|
144
152
|
config = json.loads(self.args.agent_config)
|
|
145
153
|
except (json.JSONDecodeError, TypeError) as e:
|
|
146
|
-
self.
|
|
154
|
+
self.start_up_errors.append(f"Failed to parse agent-config JSON: {e}")
|
|
147
155
|
return {}
|
|
148
156
|
|
|
149
157
|
config["large_file_token_threshold"] = nested.getter(
|
|
@@ -1531,15 +1539,20 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1531
1539
|
try:
|
|
1532
1540
|
service = AgentService.get_instance(self)
|
|
1533
1541
|
children = service.get_children(self)
|
|
1534
|
-
|
|
1535
1542
|
if not children:
|
|
1536
1543
|
return None
|
|
1537
1544
|
|
|
1545
|
+
# Filter to non-independent children only
|
|
1546
|
+
dependent_children = [info for info in children if not info.independent]
|
|
1547
|
+
|
|
1548
|
+
if not dependent_children:
|
|
1549
|
+
return None
|
|
1550
|
+
|
|
1538
1551
|
result = '<context name="sub_agent_states" from="agent">\n'
|
|
1539
1552
|
result += "## Active Sub-Agent States\n\n"
|
|
1540
|
-
result += f"Found {len(
|
|
1553
|
+
result += f"Found {len(dependent_children)} active child sub-agent(s):\n\n"
|
|
1541
1554
|
|
|
1542
|
-
for info in
|
|
1555
|
+
for info in dependent_children:
|
|
1543
1556
|
result += f"**{info.name}**:\n"
|
|
1544
1557
|
result += f" - UUID: `{info.coder.uuid}`\n"
|
|
1545
1558
|
result += f" - Status: {info.status.value}\n"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import base64
|
|
5
|
+
import copy
|
|
5
6
|
import hashlib
|
|
6
7
|
import json
|
|
7
8
|
import locale
|
|
@@ -314,6 +315,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
314
315
|
ignore_mentions=from_coder.ignore_mentions,
|
|
315
316
|
file_watcher=from_coder.file_watcher,
|
|
316
317
|
mcp_manager=from_coder.mcp_manager,
|
|
318
|
+
registered_tools=copy.deepcopy(from_coder.registered_tools),
|
|
319
|
+
registered_servers=copy.deepcopy(from_coder.registered_servers),
|
|
317
320
|
uuid=from_coder.uuid,
|
|
318
321
|
parent_uuid=from_coder.parent_uuid,
|
|
319
322
|
repo=from_coder.repo,
|
|
@@ -416,15 +419,26 @@ class Coder(metaclass=UsageMeta):
|
|
|
416
419
|
repomap_in_memory=False,
|
|
417
420
|
linear_output=False,
|
|
418
421
|
security_config=None,
|
|
422
|
+
registered_tools=None,
|
|
423
|
+
registered_servers=None,
|
|
419
424
|
uuid: str = "",
|
|
420
425
|
parent_uuid: str = "",
|
|
421
426
|
):
|
|
427
|
+
from cecli.helpers.agents.service import AgentService
|
|
428
|
+
|
|
422
429
|
# initialize from args.map_cache_dir
|
|
423
430
|
self.coroutines = coroutines
|
|
424
431
|
# Per-instance tool and server filtering dictionaries
|
|
425
432
|
# Each contains "included" and "excluded" sets that filter from the global singletons
|
|
426
433
|
self.registered_tools = {"included": set(), "excluded": set()}
|
|
427
434
|
self.registered_servers = {"included": set(), "excluded": set()}
|
|
435
|
+
self._inherited_tools = False
|
|
436
|
+
|
|
437
|
+
if registered_tools is not None or registered_servers is not None:
|
|
438
|
+
self.registered_tools = registered_tools
|
|
439
|
+
self.registered_servers = registered_servers
|
|
440
|
+
self._inherited_tools = True
|
|
441
|
+
|
|
428
442
|
self.interrupt_event = ThreadSafeEvent()
|
|
429
443
|
self.uuid = str(generate_unique_id())
|
|
430
444
|
self.reflected_message = None
|
|
@@ -544,8 +558,10 @@ class Coder(metaclass=UsageMeta):
|
|
|
544
558
|
|
|
545
559
|
self.show_diffs = show_diffs
|
|
546
560
|
|
|
547
|
-
# Initialize
|
|
561
|
+
# Initialize all registry sub systems
|
|
562
|
+
AgentService.get_instance(self)
|
|
548
563
|
ConversationService.get_chunks(self).initialize_conversation_system()
|
|
564
|
+
ObservationService.get_instance(self)
|
|
549
565
|
|
|
550
566
|
self.commands = commands or Commands(self.io, self, args=args)
|
|
551
567
|
self.commands.coder = self
|
|
@@ -3675,10 +3691,11 @@ class Coder(metaclass=UsageMeta):
|
|
|
3675
3691
|
func_err = None
|
|
3676
3692
|
content_err = None
|
|
3677
3693
|
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
if
|
|
3681
|
-
|
|
3694
|
+
if len(self.partial_response_chunks):
|
|
3695
|
+
last_chunk = self.partial_response_chunks[len(self.partial_response_chunks) - 1]
|
|
3696
|
+
if last_chunk:
|
|
3697
|
+
if getattr(last_chunk, "usage", None):
|
|
3698
|
+
response.usage = last_chunk.usage
|
|
3682
3699
|
|
|
3683
3700
|
# Collect provider-specific fields from chunks to preserve them
|
|
3684
3701
|
# We need to track both by ID (primary) and index (fallback) since
|
|
@@ -4487,7 +4504,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
4487
4504
|
if output:
|
|
4488
4505
|
accumulated_output += f"Output from {command}\n{output}\n"
|
|
4489
4506
|
|
|
4490
|
-
|
|
4507
|
+
self.io.tool_output(accumulated_output)
|
|
4491
4508
|
|
|
4492
4509
|
if accumulated_output.strip() and await self.io.confirm_ask(
|
|
4493
4510
|
"Add command output to the chat?", allow_never=True
|
|
@@ -20,7 +20,7 @@ from .context_blocks import ContextBlocksCommand
|
|
|
20
20
|
from .context_management import ContextManagementCommand
|
|
21
21
|
from .copy import CopyCommand
|
|
22
22
|
from .copy_context import CopyContextCommand
|
|
23
|
-
from .core import Commands, SwitchCoderSignal
|
|
23
|
+
from .core import Commands, ReloadProgramSignal, SwitchCoderSignal
|
|
24
24
|
from .diff import DiffCommand
|
|
25
25
|
from .drop import DropCommand
|
|
26
26
|
from .editor import EditCommand, EditorCommand
|
|
@@ -32,6 +32,7 @@ from .hashline import HashlineCommand
|
|
|
32
32
|
from .help import HelpCommand
|
|
33
33
|
from .history_search import HistorySearchCommand
|
|
34
34
|
from .hooks import HooksCommand
|
|
35
|
+
from .hot_reload import HotReloadCommand
|
|
35
36
|
from .include_skill import IncludeSkillCommand
|
|
36
37
|
from .lint import LintCommand
|
|
37
38
|
from .list_sessions import ListSessionsCommand
|
|
@@ -116,6 +117,7 @@ CommandRegistry.register(HashlineCommand)
|
|
|
116
117
|
CommandRegistry.register(HelpCommand)
|
|
117
118
|
CommandRegistry.register(HistorySearchCommand)
|
|
118
119
|
CommandRegistry.register(HooksCommand)
|
|
120
|
+
CommandRegistry.register(HotReloadCommand)
|
|
119
121
|
CommandRegistry.register(ReapAgentCommand)
|
|
120
122
|
CommandRegistry.register(SpawnAgentCommand)
|
|
121
123
|
CommandRegistry.register(SwitchAgentCommand)
|
|
@@ -197,6 +199,7 @@ __all__ = [
|
|
|
197
199
|
"HelpCommand",
|
|
198
200
|
"HistorySearchCommand",
|
|
199
201
|
"HooksCommand",
|
|
202
|
+
"HotReloadCommand",
|
|
200
203
|
"IncludeSkillCommand",
|
|
201
204
|
"ReapAgentCommand",
|
|
202
205
|
"SpawnAgentCommand",
|
|
@@ -223,6 +226,7 @@ __all__ = [
|
|
|
223
226
|
"ReadOnlyCommand",
|
|
224
227
|
"ReadOnlyStubCommand",
|
|
225
228
|
"ReasoningEffortCommand",
|
|
229
|
+
"ReloadProgramSignal",
|
|
226
230
|
"RemoveHookCommand",
|
|
227
231
|
"RemoveMcpCommand",
|
|
228
232
|
"RemoveSkillCommand",
|
|
@@ -33,6 +33,25 @@ class SwitchCoderSignal(BaseException):
|
|
|
33
33
|
super().__init__()
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
class ReloadProgramSignal(BaseException):
|
|
37
|
+
"""
|
|
38
|
+
Signal to reload the entire program configuration.
|
|
39
|
+
|
|
40
|
+
This is NOT an error - it's a control flow signal used to trigger
|
|
41
|
+
a full program reload, re-parsing config files and re-initializing
|
|
42
|
+
all components. Useful for hot-reloading when configuration files
|
|
43
|
+
change.
|
|
44
|
+
|
|
45
|
+
Note: Inherits from BaseException (like KeyboardInterrupt and SystemExit)
|
|
46
|
+
to avoid being caught by generic `except Exception` handlers.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def __init__(self, message="Reloading program configuration...", **kwargs):
|
|
50
|
+
self.kwargs = kwargs
|
|
51
|
+
self.message = message
|
|
52
|
+
super().__init__(self.message)
|
|
53
|
+
|
|
54
|
+
|
|
36
55
|
class Commands:
|
|
37
56
|
scraper = None
|
|
38
57
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from cecli.commands.core import ReloadProgramSignal
|
|
4
|
+
from cecli.commands.utils.base_command import BaseCommand
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class HotReloadCommand(BaseCommand):
|
|
8
|
+
NORM_NAME = "hot-reload"
|
|
9
|
+
DESCRIPTION = "Hot-reload all configuration and restart the program"
|
|
10
|
+
show_completion_notification = False
|
|
11
|
+
|
|
12
|
+
@classmethod
|
|
13
|
+
async def execute(cls, io, coder, args, **kwargs):
|
|
14
|
+
"""Raise ReloadProgramSignal to trigger a full program hot-reload.
|
|
15
|
+
|
|
16
|
+
Passes the current coder as from_coder so the new coder
|
|
17
|
+
preserves its UUID, edit_format, and other state across
|
|
18
|
+
the reload cycle.
|
|
19
|
+
"""
|
|
20
|
+
io.tool_output("Hot-reloading program configuration...")
|
|
21
|
+
raise ReloadProgramSignal(
|
|
22
|
+
"User requested configuration reload",
|
|
23
|
+
from_coder=coder,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
@classmethod
|
|
27
|
+
def get_completions(cls, io, coder, args) -> List[str]:
|
|
28
|
+
"""Get completion options for hot-reload command."""
|
|
29
|
+
return []
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def get_help(cls) -> str:
|
|
33
|
+
"""Get help text for the hot-reload command."""
|
|
34
|
+
help_text = super().get_help()
|
|
35
|
+
help_text += "\nUsage:\n"
|
|
36
|
+
help_text += " /hot-reload # Hot-reload all configuration files and restart\n"
|
|
37
|
+
help_text += "\nThis will re-read config files, reinitialize the connection,"
|
|
38
|
+
help_text += " and restart the chat session with the updated configuration."
|
|
39
|
+
return help_text
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
3
|
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
-
from cecli.commands.utils.helpers import
|
|
4
|
+
from cecli.commands.utils.helpers import (
|
|
5
|
+
format_command_result,
|
|
6
|
+
iter_all_coders,
|
|
7
|
+
update_server_registration,
|
|
8
|
+
)
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
class LoadMcpCommand(BaseCommand):
|
|
@@ -51,6 +55,20 @@ class LoadMcpCommand(BaseCommand):
|
|
|
51
55
|
if not servers_to_load and results:
|
|
52
56
|
return format_command_result(io, cls.NORM_NAME, "", "\n".join(results))
|
|
53
57
|
|
|
58
|
+
# Before connecting any new server, convert coders with empty included sets
|
|
59
|
+
# to explicit include lists of all currently connected MCP servers.
|
|
60
|
+
# This moves them from "implicitly include all" to explicit state-machine
|
|
61
|
+
# management, preventing the new server from being implicitly available
|
|
62
|
+
# to all coders.
|
|
63
|
+
connected_names = {s.name for s in coder.mcp_manager.connected_servers}
|
|
64
|
+
if connected_names:
|
|
65
|
+
for c in iter_all_coders(coder):
|
|
66
|
+
if not c.registered_servers["included"]:
|
|
67
|
+
included = set(connected_names) - c.registered_servers["excluded"]
|
|
68
|
+
if c.edit_format in ("agent", "subagent"):
|
|
69
|
+
included.add("Local") # "local" is always available
|
|
70
|
+
c.registered_servers["included"] = included
|
|
71
|
+
|
|
54
72
|
# Process connections with interrupt support
|
|
55
73
|
for server in servers_to_load:
|
|
56
74
|
server_name = server.name
|
|
@@ -67,6 +85,14 @@ class LoadMcpCommand(BaseCommand):
|
|
|
67
85
|
continue
|
|
68
86
|
|
|
69
87
|
if did_connect:
|
|
88
|
+
# Force-include on the primary (active) coder
|
|
89
|
+
update_server_registration(coder, server_name, "include", force=True)
|
|
90
|
+
|
|
91
|
+
# Safe-exclude on all other coders (respects existing inclusions)
|
|
92
|
+
for other_coder in iter_all_coders(coder):
|
|
93
|
+
if other_coder is coder:
|
|
94
|
+
continue
|
|
95
|
+
update_server_registration(other_coder, server_name, "exclude", force=False)
|
|
70
96
|
results.append(f"Loaded server: {server_name}")
|
|
71
97
|
else:
|
|
72
98
|
results.append(f"Unable to load server: {server_name}")
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
3
|
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
-
from cecli.commands.utils.helpers import
|
|
4
|
+
from cecli.commands.utils.helpers import (
|
|
5
|
+
format_command_result,
|
|
6
|
+
is_server_globally_excluded,
|
|
7
|
+
update_server_registration,
|
|
8
|
+
)
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
class RemoveMcpCommand(BaseCommand):
|
|
@@ -44,22 +48,37 @@ class RemoveMcpCommand(BaseCommand):
|
|
|
44
48
|
for item in servers_to_disconnect:
|
|
45
49
|
server_name = item.name if hasattr(item, "name") else item
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
coder.mcp_manager.disconnect_server(server_name),
|
|
51
|
-
coder.interrupt_event,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
if interrupted:
|
|
55
|
-
io.tool_warning(f"MCP disconnection interrupted: {server_name}")
|
|
56
|
-
results.append(f"Interrupted: {server_name}")
|
|
51
|
+
# Never remove the "local" server
|
|
52
|
+
if server_name == "Local":
|
|
53
|
+
results.append("Cannot remove 'Local' server")
|
|
57
54
|
continue
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
# Force-exclude on the primary (active) coder
|
|
57
|
+
update_server_registration(coder, server_name, "exclude", force=True)
|
|
58
|
+
# Check if all coders in the hierarchy have this server excluded
|
|
59
|
+
all_excluded = is_server_globally_excluded(coder, server_name)
|
|
60
|
+
|
|
61
|
+
if all_excluded:
|
|
62
|
+
was_disconnected, interrupted = await coder.coroutines.interruptible(
|
|
63
|
+
coder.mcp_manager.disconnect_server(server_name),
|
|
64
|
+
coder.interrupt_event,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
if interrupted:
|
|
68
|
+
io.tool_warning(f"MCP disconnection interrupted: {server_name}")
|
|
69
|
+
results.append(f"Interrupted: {server_name}")
|
|
70
|
+
continue
|
|
71
|
+
|
|
72
|
+
if was_disconnected:
|
|
73
|
+
results.append(f"Removed server: {server_name}")
|
|
74
|
+
else:
|
|
75
|
+
results.append(f"Unable to remove server: {server_name}")
|
|
61
76
|
else:
|
|
62
|
-
|
|
77
|
+
io.tool_output(
|
|
78
|
+
f"Server '{server_name}' still in use by other coders, "
|
|
79
|
+
f"keeping connection active."
|
|
80
|
+
)
|
|
81
|
+
results.append(f"Removed from active coder, still active for others: {server_name}")
|
|
63
82
|
|
|
64
83
|
io.tool_output("\n".join(results))
|
|
65
84
|
|
|
@@ -27,7 +27,9 @@ class SpawnAgentCommand(BaseCommand):
|
|
|
27
27
|
|
|
28
28
|
try:
|
|
29
29
|
agent_service = AgentService.get_instance(coder)
|
|
30
|
-
new_coder, info = await agent_service.spawn(
|
|
30
|
+
new_coder, info = await agent_service.spawn(
|
|
31
|
+
name, prompt, parent=coder, auto_reap=False, independent=True
|
|
32
|
+
)
|
|
31
33
|
|
|
32
34
|
# Set the newly spawned agent as the foreground agent
|
|
33
35
|
agent_service.foreground_uuid = info.coder.uuid
|
|
@@ -304,6 +304,92 @@ def expand_subdir(file_path: Path) -> List[Path]:
|
|
|
304
304
|
for file in file_path.rglob("*"):
|
|
305
305
|
if file.is_file():
|
|
306
306
|
files.append(file)
|
|
307
|
-
return files
|
|
308
307
|
|
|
309
308
|
return []
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
def iter_all_coders(root_coder):
|
|
312
|
+
"""
|
|
313
|
+
Recursively iterate over all coders in the agent/sub-agent hierarchy.
|
|
314
|
+
|
|
315
|
+
Yields the root coder first, then all sub-agents (and their sub-agents)
|
|
316
|
+
at every nesting level.
|
|
317
|
+
|
|
318
|
+
Args:
|
|
319
|
+
root_coder: The top-level coder instance to start from.
|
|
320
|
+
|
|
321
|
+
Yields:
|
|
322
|
+
Coder instances from the entire hierarchy.
|
|
323
|
+
"""
|
|
324
|
+
|
|
325
|
+
try:
|
|
326
|
+
from cecli.helpers.agents.service import AgentService
|
|
327
|
+
|
|
328
|
+
for coder in AgentService.get_all_agents():
|
|
329
|
+
yield coder
|
|
330
|
+
except Exception:
|
|
331
|
+
pass
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def update_server_registration(coder, server_name, operation, force=False):
|
|
335
|
+
"""
|
|
336
|
+
Unify include/exclude server registration with optional force.
|
|
337
|
+
|
|
338
|
+
When *force* is True, the operation always succeeds and the
|
|
339
|
+
opposing set is cleaned up to be non-conflicting. When *force*
|
|
340
|
+
is False (safe mode), the operation is a no-op if the server
|
|
341
|
+
is already present in the opposing set.
|
|
342
|
+
|
|
343
|
+
Args:
|
|
344
|
+
coder: A coder instance with ``registered_servers`` attribute.
|
|
345
|
+
server_name: Name of the server to register.
|
|
346
|
+
operation: ``"include"`` or ``"exclude"``.
|
|
347
|
+
force: When True, always perform the operation.
|
|
348
|
+
When False, respect the opposing set (excluded wins
|
|
349
|
+
for include, included wins for exclude).
|
|
350
|
+
"""
|
|
351
|
+
name = server_name
|
|
352
|
+
included = coder.registered_servers["included"]
|
|
353
|
+
excluded = coder.registered_servers["excluded"]
|
|
354
|
+
|
|
355
|
+
if operation == "include":
|
|
356
|
+
if force or name not in excluded:
|
|
357
|
+
included.add(name)
|
|
358
|
+
excluded.discard(name)
|
|
359
|
+
elif operation == "exclude":
|
|
360
|
+
if force or name not in included:
|
|
361
|
+
excluded.add(name)
|
|
362
|
+
included.discard(name)
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
def is_server_globally_excluded(coder, server_name):
|
|
366
|
+
"""
|
|
367
|
+
Check whether *server_name* is excluded from *all* coders in the hierarchy.
|
|
368
|
+
|
|
369
|
+
A server is considered "globally excluded" when every coder in the tree
|
|
370
|
+
either:
|
|
371
|
+
- has it in ``registered_servers["excluded"]``, or
|
|
372
|
+
- does **not** have it in ``registered_servers["included"]``
|
|
373
|
+
(empty included means "include all", so the server would be available).
|
|
374
|
+
|
|
375
|
+
Args:
|
|
376
|
+
coder: Any coder in the hierarchy (used to discover the full tree).
|
|
377
|
+
server_name: Name of the MCP server to check.
|
|
378
|
+
|
|
379
|
+
Returns:
|
|
380
|
+
True if the server is excluded from every coder.
|
|
381
|
+
"""
|
|
382
|
+
name = server_name
|
|
383
|
+
for other in iter_all_coders(coder):
|
|
384
|
+
incl = other.registered_servers["included"]
|
|
385
|
+
excl = other.registered_servers["excluded"]
|
|
386
|
+
|
|
387
|
+
# Empty included => implicitly includes all servers
|
|
388
|
+
if not incl:
|
|
389
|
+
if name not in excl:
|
|
390
|
+
return False
|
|
391
|
+
else:
|
|
392
|
+
if name in incl:
|
|
393
|
+
return False
|
|
394
|
+
# Non-empty included means it's an allowlist: not in included => excluded
|
|
395
|
+
return True
|
|
@@ -48,6 +48,7 @@ class SubAgentInfo:
|
|
|
48
48
|
None # Track the generate() task for cancellation/monitoring
|
|
49
49
|
)
|
|
50
50
|
auto_reap: bool = True # If True, agent may be automatically reaped when FINISHED
|
|
51
|
+
independent: bool = False
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
class AgentService:
|
|
@@ -126,6 +127,19 @@ class AgentService:
|
|
|
126
127
|
"""Return the global sub-agent registry (name -> config)."""
|
|
127
128
|
return cls._global_registry
|
|
128
129
|
|
|
130
|
+
@classmethod
|
|
131
|
+
def get_all_agents(cls) -> List[Any]:
|
|
132
|
+
"""Return all live coder instances tracked in the global uuid map.
|
|
133
|
+
|
|
134
|
+
Dereferences weakrefs, skipping any that have been garbage-collected.
|
|
135
|
+
"""
|
|
136
|
+
agents = []
|
|
137
|
+
for ref in cls._uuid_coder_map.values():
|
|
138
|
+
coder = ref()
|
|
139
|
+
if coder is not None:
|
|
140
|
+
agents.append(coder)
|
|
141
|
+
return agents
|
|
142
|
+
|
|
129
143
|
@classmethod
|
|
130
144
|
def register_subagent(cls, name: str, config: Any) -> None:
|
|
131
145
|
"""Register a sub-agent config by name."""
|
|
@@ -405,7 +419,11 @@ class AgentService:
|
|
|
405
419
|
)
|
|
406
420
|
|
|
407
421
|
async def _create_sub_agent_coder(
|
|
408
|
-
self,
|
|
422
|
+
self,
|
|
423
|
+
name: str,
|
|
424
|
+
parent: Any = None,
|
|
425
|
+
auto_reap: Optional[bool] = None,
|
|
426
|
+
independent: bool = False,
|
|
409
427
|
) -> Tuple[Any, SubAgentInfo]:
|
|
410
428
|
"""Create a sub-agent coder, register it, and set up its container and prompt.
|
|
411
429
|
|
|
@@ -489,6 +507,7 @@ class AgentService:
|
|
|
489
507
|
parent_uuid=parent_coder.uuid,
|
|
490
508
|
status=SubAgentStatus.CREATED,
|
|
491
509
|
auto_reap=auto_reap,
|
|
510
|
+
independent=independent,
|
|
492
511
|
)
|
|
493
512
|
self.sub_agents[new_coder.uuid] = info
|
|
494
513
|
self._sub_agent_order.append(new_coder.uuid)
|
|
@@ -571,22 +590,24 @@ class AgentService:
|
|
|
571
590
|
Returns:
|
|
572
591
|
The ``asyncio.Task`` wrapping ``generate()``.
|
|
573
592
|
"""
|
|
593
|
+
from cecli.commands import SwitchCoderSignal
|
|
574
594
|
|
|
575
595
|
async def _run_generate():
|
|
576
596
|
info.status = SubAgentStatus.RUNNING
|
|
577
597
|
try:
|
|
578
598
|
await info.coder.generate(user_message=user_message, preproc=True)
|
|
599
|
+
await self._inject_sub_agent_result(info)
|
|
579
600
|
if info.status == SubAgentStatus.RUNNING:
|
|
580
601
|
info.status = SubAgentStatus.FINISHED
|
|
581
602
|
info.summary = info.summary or DEFAULT_SUMMARY_COMPLETED
|
|
582
|
-
await self._inject_sub_agent_result(info)
|
|
583
603
|
except asyncio.CancelledError:
|
|
604
|
+
await self._inject_sub_agent_result(info)
|
|
584
605
|
info.status = SubAgentStatus.FINISHED
|
|
585
606
|
info.summary = info.summary or DEFAULT_SUMMARY_INTERRUPTED
|
|
586
607
|
logger.debug("Sub-agent %s generate cancelled (interrupted)", info.name)
|
|
587
|
-
await self._inject_sub_agent_result(info)
|
|
588
608
|
raise
|
|
589
609
|
except Exception as exc:
|
|
610
|
+
await self._inject_sub_agent_result(info)
|
|
590
611
|
info.status = SubAgentStatus.ERROR
|
|
591
612
|
info.error = str(exc)
|
|
592
613
|
logger.error(
|
|
@@ -595,7 +616,8 @@ class AgentService:
|
|
|
595
616
|
exc,
|
|
596
617
|
exc_info=True,
|
|
597
618
|
)
|
|
598
|
-
|
|
619
|
+
raise
|
|
620
|
+
except SwitchCoderSignal:
|
|
599
621
|
raise
|
|
600
622
|
|
|
601
623
|
# Cancel any previous generate task to prevent duplicate concurrent generates
|
|
@@ -604,8 +626,15 @@ class AgentService:
|
|
|
604
626
|
|
|
605
627
|
task = asyncio.create_task(_run_generate())
|
|
606
628
|
info.generate_task = task
|
|
629
|
+
|
|
630
|
+
def _raise_if_signal(exc):
|
|
631
|
+
if isinstance(exc, SwitchCoderSignal):
|
|
632
|
+
raise exc
|
|
633
|
+
|
|
607
634
|
# Suppress "Task exception was never retrieved" for fire-and-forget tasks
|
|
608
|
-
task.add_done_callback(
|
|
635
|
+
task.add_done_callback(
|
|
636
|
+
lambda t: _raise_if_signal(t.exception()) if not t.cancelled() else None
|
|
637
|
+
)
|
|
609
638
|
return task
|
|
610
639
|
|
|
611
640
|
async def _inject_sub_agent_result(self, info: SubAgentInfo) -> None:
|
|
@@ -712,6 +741,7 @@ class AgentService:
|
|
|
712
741
|
prompt: Optional[str] = None,
|
|
713
742
|
parent: Any = None,
|
|
714
743
|
auto_reap: Optional[bool] = None,
|
|
744
|
+
independent: bool = False,
|
|
715
745
|
) -> Tuple[Any, SubAgentInfo]:
|
|
716
746
|
"""Spawn a sub-agent (non-blocking) that waits for user input.
|
|
717
747
|
|
|
@@ -727,7 +757,7 @@ class AgentService:
|
|
|
727
757
|
with the sub-agent (e.g. call ``start_generate_task`` later).
|
|
728
758
|
"""
|
|
729
759
|
new_coder, info = await self._create_sub_agent_coder(
|
|
730
|
-
name, auto_reap=auto_reap, parent=parent
|
|
760
|
+
name, auto_reap=auto_reap, parent=parent, independent=independent
|
|
731
761
|
)
|
|
732
762
|
if prompt:
|
|
733
763
|
self.start_generate_task(info, prompt)
|
|
@@ -107,7 +107,7 @@ class ConversationFiles:
|
|
|
107
107
|
# Use coder.io.read_text() - coder should always be available
|
|
108
108
|
coder = self.get_coder()
|
|
109
109
|
try:
|
|
110
|
-
content = coder.io.read_text(abs_fname)
|
|
110
|
+
content = coder.io.read_text(abs_fname, silent=True)
|
|
111
111
|
if coder.hashlines:
|
|
112
112
|
content = hashline(content)
|
|
113
113
|
except Exception:
|
|
@@ -224,7 +224,7 @@ class ConversationFiles:
|
|
|
224
224
|
coder = self.get_coder()
|
|
225
225
|
rel_fname = coder.get_rel_fname(fname)
|
|
226
226
|
try:
|
|
227
|
-
current_content = coder.io.read_text(abs_fname)
|
|
227
|
+
current_content = coder.io.read_text(abs_fname, silent=True)
|
|
228
228
|
if coder.hashlines:
|
|
229
229
|
current_content = hashline(current_content)
|
|
230
230
|
except Exception:
|
|
@@ -525,7 +525,7 @@ class ConversationFiles:
|
|
|
525
525
|
|
|
526
526
|
# Read file content
|
|
527
527
|
try:
|
|
528
|
-
content = coder.io.read_text(abs_fname)
|
|
528
|
+
content = coder.io.read_text(abs_fname, silent=True)
|
|
529
529
|
if not content:
|
|
530
530
|
return ""
|
|
531
531
|
except Exception:
|