cecli-dev 1.5.1__tar.gz → 1.6.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/PKG-INFO +1 -1
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/_version.py +3 -3
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/agent_coder.py +54 -13
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/background_commands.py +123 -4
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/integration.py +73 -7
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/coroutines.py +19 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mcp/manager.py +44 -25
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mcp/oauth.py +72 -19
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mcp/server.py +47 -4
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/command.py +154 -40
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/worker.py +34 -4
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/mcp.md +31 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/scm_file_list.json +1 -0
- cecli_dev-1.6.0rc1/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_background_commands.py +167 -0
- cecli_dev-1.6.0rc1/tests/conversations/test_background_command_injection.py +170 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_manager_retry.py +37 -4
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_command_timeout_paging.py +46 -58
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_resource_manager_paging.py +17 -7
- cecli_dev-1.5.1/cecli_dev.egg-info/scm_version.json +0 -8
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.dockerignore +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.flake8 +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.gitattributes +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.gitignore +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/CHANGELOG.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/CNAME +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/HISTORY.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/LICENSE.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/MANIFEST.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/README.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/README.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/docker.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/over_time.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/plot.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/plots.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/prompts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/__main__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/args.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/base_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/add.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/code.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/context.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/core.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/git.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/help.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/import_skill.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/insert_queue.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/list_queue.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/load.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/load_session.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/map.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/model.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/models.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/queue.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/remove_queue.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/report.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/run.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/save.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/save_session.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/test.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/web.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/decoding.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/diffs.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/dump.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/editor.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/exceptions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/format_settings.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/help.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/help_pats.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/extensions/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/extensions/skills_importer.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/transformations.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/chat.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/messages.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/litellm_compat.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/mistral.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/runtime.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/lock_detect.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/loop_detect.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/pipeline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/app.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/providers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/agent_proxy.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/environment.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/safe_methods.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/tool_proxy.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/paths.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/subagents.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/workspace.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/history.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/http.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/io.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/linter.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/llm.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/main.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/mdstream.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/models.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/onboarding.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/repo.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/repomap.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/report.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/model-metadata.ext.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/resources/providers.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/scrape.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/sendchat.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/sessions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/signals.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/special.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tests/test_queue_commands.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/broadcast.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/grep.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/read_file.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/app.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/io.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/urls.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/utils.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/voice.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/waiting.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/watch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/package.json +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/docker/Dockerfile +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/pyproject.toml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/pytest.ini +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/common-constraints.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/requirements.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/requirements.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/30k-image.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/blame.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/homepage.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/issues.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/update-history.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/versionbump.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/setup.cfg +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/shim.pyproject.toml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_file_system_service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_main.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/coders/test_rate_limit.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/coders/test_tool_call_consolidation.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_voice.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/commands/test_workspace.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/help/test_help.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_cache_control.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_gemini_auth.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_mistral_adapter.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_mistral_provider.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_loop_detect.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_onboarding.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_orchestration.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/test_skills_importer.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_paths.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_subagents.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/mcp/test_server_sdk_compat.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/test_requests.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_grep.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tools/validations.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/tui/test_completion_bar.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_retry_backoff.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.5.1 → cecli_dev-1.6.0rc1}/tests/unit/test_ws_server.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 = '1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.6.0rc1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 6, 0, 'rc1')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g42b3f06cf'
|
|
@@ -652,6 +652,10 @@ class AgentCoder(Coder):
|
|
|
652
652
|
# Add post-message context blocks (priority 250 - between CUR and REMINDER)
|
|
653
653
|
ConversationService.get_chunks(self).add_post_message_context_blocks()
|
|
654
654
|
|
|
655
|
+
# Background command output is debounced independently so it is not
|
|
656
|
+
# re-dumped every turn as its contents mutate slightly
|
|
657
|
+
ConversationService.get_chunks(self).add_background_command_output()
|
|
658
|
+
|
|
655
659
|
# Add sub-agent states context block (same priority as post-message blocks)
|
|
656
660
|
ConversationService.get_chunks(self).add_sub_agent_states()
|
|
657
661
|
|
|
@@ -1845,25 +1849,44 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1845
1849
|
"""
|
|
1846
1850
|
Get background command output to append after the main message.
|
|
1847
1851
|
|
|
1848
|
-
|
|
1849
|
-
|
|
1852
|
+
Emits a roster of active commands (keeping command keys in context)
|
|
1853
|
+
plus any new incremental output. Output that has been paged to disk is
|
|
1854
|
+
advertised by command key and read on demand through ``ResourceManager``
|
|
1855
|
+
paging.
|
|
1850
1856
|
"""
|
|
1851
|
-
|
|
1852
|
-
bg_outputs = BackgroundCommandManager.get_all_command_outputs(clear=True)
|
|
1857
|
+
command_info = BackgroundCommandManager.list_background_commands()
|
|
1853
1858
|
|
|
1854
|
-
if not
|
|
1859
|
+
if not command_info:
|
|
1855
1860
|
return ""
|
|
1856
1861
|
|
|
1857
|
-
|
|
1858
|
-
|
|
1862
|
+
new_outputs = {}
|
|
1863
|
+
for command_key in command_info:
|
|
1864
|
+
output = BackgroundCommandManager.get_new_command_output(command_key)
|
|
1865
|
+
if output.strip():
|
|
1866
|
+
new_outputs[command_key] = output
|
|
1859
1867
|
|
|
1860
|
-
# Create formatted output for background commands
|
|
1861
1868
|
output = "--- Background Commands Output ---\n"
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1869
|
+
output += "Commands:\n"
|
|
1870
|
+
|
|
1871
|
+
paged_keys = []
|
|
1872
|
+
for command_key, info in sorted(command_info.items()):
|
|
1873
|
+
status = "running" if info.get("running", False) else "finished"
|
|
1874
|
+
pages = info.get("pages", 0)
|
|
1875
|
+
page_note = f"pages 1-{pages}" if pages else "no pages yet"
|
|
1876
|
+
output += (
|
|
1877
|
+
f"- {command_key} [{status}] `{info.get('command', command_key)}`"
|
|
1878
|
+
f" — {info.get('total_chars', 0):,} chars, {page_note}\n"
|
|
1879
|
+
)
|
|
1880
|
+
if pages:
|
|
1881
|
+
paged_keys.append(command_key)
|
|
1882
|
+
|
|
1883
|
+
for command_key, cmd_output in new_outputs.items():
|
|
1884
|
+
output += f"\nNew output ({command_key}):\n{cmd_output}\n"
|
|
1885
|
+
|
|
1886
|
+
if paged_keys:
|
|
1887
|
+
output += "\nPaged output is available via `ResourceManager` (up to 3 pages):\n"
|
|
1888
|
+
for command_key in paged_keys:
|
|
1889
|
+
output += f'{{"paging": [{{"target": "{command_key}", "page": 1}}]}}\n'
|
|
1867
1890
|
|
|
1868
1891
|
# Clean up stale (finished) background commands after reading their output
|
|
1869
1892
|
for command_key, info in command_info.items():
|
|
@@ -1872,6 +1895,24 @@ Todo list does not exist. Please update it with the `UpdateTodoList` tool.</cont
|
|
|
1872
1895
|
|
|
1873
1896
|
return output
|
|
1874
1897
|
|
|
1898
|
+
def get_background_command_state(self):
|
|
1899
|
+
"""
|
|
1900
|
+
Return a lightweight status snapshot of tracked background commands.
|
|
1901
|
+
|
|
1902
|
+
Maps each command key to its running state and page count so the
|
|
1903
|
+
injection layer can detect finish and page-flush transitions cheaply
|
|
1904
|
+
without consuming any output.
|
|
1905
|
+
"""
|
|
1906
|
+
command_info = BackgroundCommandManager.list_background_commands()
|
|
1907
|
+
|
|
1908
|
+
return {
|
|
1909
|
+
key: {
|
|
1910
|
+
"running": bool(info.get("running", False)),
|
|
1911
|
+
"pages": info.get("pages", 0),
|
|
1912
|
+
}
|
|
1913
|
+
for key, info in command_info.items()
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1875
1916
|
def get_git_status(self):
|
|
1876
1917
|
"""
|
|
1877
1918
|
Generate a git status context block for repository information.
|
|
@@ -106,6 +106,110 @@ class CircularBuffer:
|
|
|
106
106
|
return len(self.buffer)
|
|
107
107
|
|
|
108
108
|
|
|
109
|
+
class PagedOutputBuffer:
|
|
110
|
+
"""
|
|
111
|
+
Thread-safe output window that spills full pages to disk.
|
|
112
|
+
|
|
113
|
+
Output accumulates in memory until it reaches ``page_size`` characters.
|
|
114
|
+
Full pages are written to ``pages_dir`` as ``{n}.txt`` and dropped from
|
|
115
|
+
memory, so the in-memory window never grows beyond ``page_size``. Unlike
|
|
116
|
+
``CircularBuffer``, ``total_added`` is a monotonic stream offset that is
|
|
117
|
+
never reset, so incremental readers can resume after content has been
|
|
118
|
+
flushed; anything older than the in-memory window lives on disk.
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
def __init__(self, page_size: int = 4096, pages_dir: Optional[str] = None):
|
|
122
|
+
self.page_size = max(1, int(page_size))
|
|
123
|
+
self.pages_dir = pages_dir
|
|
124
|
+
self.buffer = deque()
|
|
125
|
+
self.lock = threading.Lock()
|
|
126
|
+
self.total_added = 0
|
|
127
|
+
self.window_start = 0
|
|
128
|
+
self.page_count = 0
|
|
129
|
+
|
|
130
|
+
def append(self, text: str) -> None:
|
|
131
|
+
"""Append text, spilling full pages to disk once the window fills."""
|
|
132
|
+
if not text:
|
|
133
|
+
return
|
|
134
|
+
|
|
135
|
+
with self.lock:
|
|
136
|
+
self.buffer.extend(text)
|
|
137
|
+
self.total_added += len(text)
|
|
138
|
+
|
|
139
|
+
if self.total_added - self.window_start >= self.page_size:
|
|
140
|
+
self._spill_locked()
|
|
141
|
+
|
|
142
|
+
def get_all(self, clear: bool = False) -> str:
|
|
143
|
+
"""Return the in-memory window (content not yet flushed to disk)."""
|
|
144
|
+
with self.lock:
|
|
145
|
+
result = "".join(self.buffer)
|
|
146
|
+
|
|
147
|
+
if clear:
|
|
148
|
+
self.buffer.clear()
|
|
149
|
+
self.window_start = self.total_added
|
|
150
|
+
|
|
151
|
+
return result
|
|
152
|
+
|
|
153
|
+
def get_new_output(self, last_read_position: int) -> Tuple[str, int]:
|
|
154
|
+
"""Return window content past ``last_read_position`` and the new offset.
|
|
155
|
+
|
|
156
|
+
Content older than the window has already been paged to disk, so the
|
|
157
|
+
read position is clamped forward to the window start rather than
|
|
158
|
+
replaying bytes that are only available as pages.
|
|
159
|
+
"""
|
|
160
|
+
with self.lock:
|
|
161
|
+
if last_read_position >= self.total_added:
|
|
162
|
+
return "", self.total_added
|
|
163
|
+
|
|
164
|
+
start = max(last_read_position, self.window_start)
|
|
165
|
+
new_output = "".join(self.buffer)[start - self.window_start :]
|
|
166
|
+
|
|
167
|
+
return new_output, self.total_added
|
|
168
|
+
|
|
169
|
+
def clear(self) -> None:
|
|
170
|
+
"""Drop the in-memory window; flushed pages are unaffected."""
|
|
171
|
+
with self.lock:
|
|
172
|
+
self.buffer.clear()
|
|
173
|
+
self.window_start = self.total_added
|
|
174
|
+
|
|
175
|
+
def size(self) -> int:
|
|
176
|
+
"""Get current buffer size in characters."""
|
|
177
|
+
with self.lock:
|
|
178
|
+
return len(self.buffer)
|
|
179
|
+
|
|
180
|
+
def _spill_locked(self) -> None:
|
|
181
|
+
content = "".join(self.buffer)
|
|
182
|
+
|
|
183
|
+
if not self.pages_dir:
|
|
184
|
+
# Without a page directory, retain only the newest page in memory.
|
|
185
|
+
if len(content) > self.page_size:
|
|
186
|
+
dropped = len(content) - self.page_size
|
|
187
|
+
content = content[dropped:]
|
|
188
|
+
self.window_start += dropped
|
|
189
|
+
self.buffer = deque(content)
|
|
190
|
+
|
|
191
|
+
return
|
|
192
|
+
|
|
193
|
+
while len(content) >= self.page_size:
|
|
194
|
+
page = content[: self.page_size]
|
|
195
|
+
content = content[self.page_size :]
|
|
196
|
+
self.page_count += 1
|
|
197
|
+
self._write_page_locked(self.page_count, page)
|
|
198
|
+
self.window_start += self.page_size
|
|
199
|
+
|
|
200
|
+
self.buffer = deque(content)
|
|
201
|
+
|
|
202
|
+
def _write_page_locked(self, page_number: int, content: str) -> None:
|
|
203
|
+
os.makedirs(self.pages_dir, exist_ok=True)
|
|
204
|
+
abs_path = os.path.join(self.pages_dir, f"{page_number}.txt")
|
|
205
|
+
tmp_path = f"{abs_path}.tmp"
|
|
206
|
+
|
|
207
|
+
with safe_open(tmp_path, "w") as page_file:
|
|
208
|
+
page_file.write(content)
|
|
209
|
+
|
|
210
|
+
os.replace(tmp_path, abs_path)
|
|
211
|
+
|
|
212
|
+
|
|
109
213
|
class InputBuffer:
|
|
110
214
|
"""
|
|
111
215
|
Thread-safe buffer for queuing input to be sent to a process.
|
|
@@ -442,6 +546,9 @@ class BackgroundCommandManager:
|
|
|
442
546
|
existing_input_buffer: Optional[InputBuffer] = None,
|
|
443
547
|
use_pty: bool = False,
|
|
444
548
|
master_fd: Optional[int] = None,
|
|
549
|
+
command_key: Optional[str] = None,
|
|
550
|
+
page_size: Optional[int] = None,
|
|
551
|
+
pages_dir: Optional[str] = None,
|
|
445
552
|
) -> str:
|
|
446
553
|
"""
|
|
447
554
|
Start a command in background.
|
|
@@ -452,15 +559,23 @@ class BackgroundCommandManager:
|
|
|
452
559
|
cwd: Working directory for command
|
|
453
560
|
max_buffer_size: Maximum buffer size for output
|
|
454
561
|
existing_process: Optional existing subprocess.Popen to register
|
|
455
|
-
existing_buffer: Optional existing
|
|
562
|
+
existing_buffer: Optional existing buffer to use (CircularBuffer or PagedOutputBuffer)
|
|
456
563
|
persist: If True, output buffer won't be cleared when read
|
|
564
|
+
command_key: Optional pre-generated command key; generated when omitted
|
|
565
|
+
page_size: Characters per page when paging output to disk
|
|
566
|
+
pages_dir: Directory where full output pages are written
|
|
457
567
|
|
|
458
568
|
Returns:
|
|
459
569
|
Command key for future reference
|
|
460
570
|
"""
|
|
461
571
|
try:
|
|
462
|
-
# Use existing buffer or create
|
|
463
|
-
|
|
572
|
+
# Use existing buffer or create a paged/circular one
|
|
573
|
+
if existing_buffer is not None:
|
|
574
|
+
buffer = existing_buffer
|
|
575
|
+
elif page_size and pages_dir:
|
|
576
|
+
buffer = PagedOutputBuffer(page_size=page_size, pages_dir=pages_dir)
|
|
577
|
+
else:
|
|
578
|
+
buffer = CircularBuffer(max_size=max_buffer_size)
|
|
464
579
|
|
|
465
580
|
# Use existing process or start new one
|
|
466
581
|
# Use provided master_fd (e.g., from _execute_with_timeout) or default to None
|
|
@@ -523,7 +638,7 @@ class BackgroundCommandManager:
|
|
|
523
638
|
)
|
|
524
639
|
|
|
525
640
|
# Generate unique key and store
|
|
526
|
-
command_key = cls._generate_command_key(command)
|
|
641
|
+
command_key = command_key or cls._generate_command_key(command)
|
|
527
642
|
|
|
528
643
|
with cls._lock:
|
|
529
644
|
cls._background_commands[command_key] = bg_process
|
|
@@ -691,6 +806,10 @@ class BackgroundCommandManager:
|
|
|
691
806
|
"command": bg_process.command,
|
|
692
807
|
"running": bg_process.is_alive(),
|
|
693
808
|
"buffer_size": bg_process.buffer.size(),
|
|
809
|
+
"pages": getattr(bg_process.buffer, "page_count", 0),
|
|
810
|
+
"total_chars": getattr(
|
|
811
|
+
bg_process.buffer, "total_added", bg_process.buffer.size()
|
|
812
|
+
),
|
|
694
813
|
"start_time": bg_process.start_time,
|
|
695
814
|
"end_time": bg_process.end_time,
|
|
696
815
|
"duration": (
|
|
@@ -930,7 +930,9 @@ class ConversationChunks:
|
|
|
930
930
|
"""
|
|
931
931
|
Add post-message context blocks to conversation (priority 250).
|
|
932
932
|
|
|
933
|
-
Post-message blocks include: tool_context
|
|
933
|
+
Post-message blocks include: todo_list, context_summary, tool_context,
|
|
934
|
+
and write_context. Background command output is injected separately via
|
|
935
|
+
``add_background_command_output`` with its own debounce.
|
|
934
936
|
"""
|
|
935
937
|
coder = self.get_coder()
|
|
936
938
|
if not coder:
|
|
@@ -972,12 +974,6 @@ class ConversationChunks:
|
|
|
972
974
|
if write_context:
|
|
973
975
|
message_blocks["write_context"] = write_context
|
|
974
976
|
|
|
975
|
-
# Add background command output if any
|
|
976
|
-
if hasattr(coder, "get_background_command_output"):
|
|
977
|
-
bg_output = coder.get_background_command_output()
|
|
978
|
-
if bg_output:
|
|
979
|
-
message_blocks["background_command_output"] = bg_output
|
|
980
|
-
|
|
981
977
|
# Add post-message blocks to conversation manager with stable hash keys
|
|
982
978
|
for block_type, block_content in message_blocks.items():
|
|
983
979
|
ConversationService.get_manager(coder).add_message(
|
|
@@ -989,6 +985,56 @@ class ConversationChunks:
|
|
|
989
985
|
force=True,
|
|
990
986
|
)
|
|
991
987
|
|
|
988
|
+
def add_background_command_output(self, frequency=5):
|
|
989
|
+
"""
|
|
990
|
+
Inject background command output at most once every ``frequency`` turns,
|
|
991
|
+
except when a command finishes or flushes a new page. Those transitions
|
|
992
|
+
bypass the debounce so important changes surface immediately.
|
|
993
|
+
|
|
994
|
+
Debounced independently from the other post-message blocks: the injected
|
|
995
|
+
content mutates slightly as commands produce output, so re-adding it
|
|
996
|
+
every turn would churn the conversation tail without the usual hash-key
|
|
997
|
+
deduplication catching it.
|
|
998
|
+
"""
|
|
999
|
+
coder = self.get_coder()
|
|
1000
|
+
if not coder:
|
|
1001
|
+
return
|
|
1002
|
+
|
|
1003
|
+
if not hasattr(coder, "use_enhanced_context") or not coder.use_enhanced_context:
|
|
1004
|
+
return
|
|
1005
|
+
|
|
1006
|
+
if not hasattr(coder, "get_background_command_output"):
|
|
1007
|
+
return
|
|
1008
|
+
|
|
1009
|
+
last_turn = self.message_tracker.get("background_command_output")
|
|
1010
|
+
due = last_turn is None or coder.turn_count - last_turn >= frequency
|
|
1011
|
+
|
|
1012
|
+
previous_state = self.message_tracker.get("background_command_state")
|
|
1013
|
+
state = None
|
|
1014
|
+
if hasattr(coder, "get_background_command_state"):
|
|
1015
|
+
state = coder.get_background_command_state()
|
|
1016
|
+
|
|
1017
|
+
significant = self._has_background_signal(previous_state, state)
|
|
1018
|
+
if state is not None:
|
|
1019
|
+
self.message_tracker["background_command_state"] = state
|
|
1020
|
+
|
|
1021
|
+
if not significant and not due:
|
|
1022
|
+
return
|
|
1023
|
+
|
|
1024
|
+
bg_output = coder.get_background_command_output()
|
|
1025
|
+
if not bg_output:
|
|
1026
|
+
return
|
|
1027
|
+
|
|
1028
|
+
self.message_tracker["background_command_output"] = coder.turn_count
|
|
1029
|
+
ConversationService.get_manager(coder).add_message(
|
|
1030
|
+
message_dict={"role": "user", "content": bg_output},
|
|
1031
|
+
tag=MessageTag.STATIC,
|
|
1032
|
+
priority=DEFAULT_TAG_PRIORITY[MessageTag.REMINDER] + 25,
|
|
1033
|
+
mark_for_delete=0,
|
|
1034
|
+
hash_key=("post_message", "background_command_output"),
|
|
1035
|
+
force=True,
|
|
1036
|
+
)
|
|
1037
|
+
|
|
992
1038
|
def add_sub_agent_states(self) -> None:
|
|
993
1039
|
"""
|
|
994
1040
|
Add sub-agent states context block to conversation (priority 250).
|
|
@@ -1056,6 +1102,26 @@ class ConversationChunks:
|
|
|
1056
1102
|
|
|
1057
1103
|
return not should_send
|
|
1058
1104
|
|
|
1105
|
+
@staticmethod
|
|
1106
|
+
def _has_background_signal(previous, current):
|
|
1107
|
+
"""Return True when a command finished or flushed a new page since ``previous``."""
|
|
1108
|
+
if not current or not previous:
|
|
1109
|
+
return False
|
|
1110
|
+
|
|
1111
|
+
for key, info in current.items():
|
|
1112
|
+
prior = previous.get(key)
|
|
1113
|
+
|
|
1114
|
+
if prior is None:
|
|
1115
|
+
return True
|
|
1116
|
+
|
|
1117
|
+
if prior.get("running") and not info.get("running"):
|
|
1118
|
+
return True
|
|
1119
|
+
|
|
1120
|
+
if info.get("pages", 0) > prior.get("pages", 0):
|
|
1121
|
+
return True
|
|
1122
|
+
|
|
1123
|
+
return False
|
|
1124
|
+
|
|
1059
1125
|
def _cancel_post_message_injections(self, modulus=10):
|
|
1060
1126
|
coder = self.get_coder()
|
|
1061
1127
|
if not coder:
|
|
@@ -109,3 +109,22 @@ async def interruptible(coroutine, interrupt_event):
|
|
|
109
109
|
return main_task.result(), False
|
|
110
110
|
except asyncio.CancelledError:
|
|
111
111
|
return None, True
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def task_is_cancelling() -> bool:
|
|
115
|
+
"""Return True when the running asyncio task has a pending cancellation.
|
|
116
|
+
|
|
117
|
+
Used to tell a genuine cancellation of the caller apart from cancellation
|
|
118
|
+
errors that transports (e.g. MCP's anyio TaskGroups) surface for ordinary
|
|
119
|
+
connection failures.
|
|
120
|
+
"""
|
|
121
|
+
task = asyncio.current_task()
|
|
122
|
+
if task is None:
|
|
123
|
+
return False
|
|
124
|
+
|
|
125
|
+
cancelling = getattr(task, "cancelling", None)
|
|
126
|
+
if cancelling is not None:
|
|
127
|
+
return cancelling() > 0
|
|
128
|
+
|
|
129
|
+
# Python 3.10 has no Task.cancelling(); fall back to the private flag.
|
|
130
|
+
return bool(getattr(task, "_must_cancel", False))
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
|
|
3
|
-
from cecli.
|
|
3
|
+
from cecli.helpers.coroutines import task_is_cancelling
|
|
4
|
+
from cecli.mcp.server import DEFAULT_MCP_REQUEST_TIMEOUT, LocalServer, McpServer
|
|
4
5
|
from cecli.tools.utils.registry import ToolRegistry
|
|
5
6
|
|
|
6
7
|
|
|
@@ -196,9 +197,10 @@ class McpServerManager:
|
|
|
196
197
|
return True
|
|
197
198
|
|
|
198
199
|
# Retry with exponential backoff for transient connection failures.
|
|
199
|
-
#
|
|
200
|
-
#
|
|
201
|
-
#
|
|
200
|
+
# A genuine cancellation must still propagate, but some transports
|
|
201
|
+
# (MCP's streamable-HTTP runs its writer inside an anyio TaskGroup)
|
|
202
|
+
# surface ordinary connection failures as CancelledError, so only a
|
|
203
|
+
# real cancellation of this task is re-raised.
|
|
202
204
|
# When io is None (e.g., during from_servers before IO is assigned),
|
|
203
205
|
# _log_warning and _log_error silently return — retries still happen
|
|
204
206
|
# but with no user-visible feedback. This is intentional.
|
|
@@ -206,38 +208,55 @@ class McpServerManager:
|
|
|
206
208
|
delay = 1.0
|
|
207
209
|
backoff = 2.0
|
|
208
210
|
max_delay = 30.0
|
|
211
|
+
# Bound each attempt so a server that accepts a connection but never
|
|
212
|
+
# speaks MCP cannot wedge startup. The SDK read timeout usually fires
|
|
213
|
+
# first; this wait_for is a backstop for hangs inside the transport.
|
|
214
|
+
try:
|
|
215
|
+
base_timeout = float(server._request_timeout_seconds())
|
|
216
|
+
except (TypeError, ValueError):
|
|
217
|
+
base_timeout = DEFAULT_MCP_REQUEST_TIMEOUT
|
|
218
|
+
|
|
219
|
+
if base_timeout <= 0:
|
|
220
|
+
base_timeout = DEFAULT_MCP_REQUEST_TIMEOUT
|
|
221
|
+
|
|
222
|
+
attempt_timeout = base_timeout + 5
|
|
209
223
|
|
|
210
224
|
for attempt in range(1, max_retries + 1):
|
|
225
|
+
error = None
|
|
226
|
+
|
|
211
227
|
try:
|
|
212
|
-
session = await server.connect()
|
|
213
|
-
tools_result = await session.list_tools()
|
|
228
|
+
session = await asyncio.wait_for(server.connect(), timeout=attempt_timeout)
|
|
229
|
+
tools_result = await asyncio.wait_for(session.list_tools(), timeout=attempt_timeout)
|
|
214
230
|
tools = _mcp_tools_to_openai_tools(tools_result.tools)
|
|
215
231
|
self._server_tools[server.name] = tools
|
|
216
232
|
self._connected_servers.add(server)
|
|
217
233
|
self._log_verbose(f"Connected to MCP server: {name}")
|
|
218
234
|
return True
|
|
219
235
|
except asyncio.CancelledError:
|
|
220
|
-
|
|
236
|
+
if task_is_cancelling():
|
|
237
|
+
raise
|
|
238
|
+
error = "connection cancelled by transport"
|
|
221
239
|
except Exception as e:
|
|
222
|
-
|
|
223
|
-
self._log_warning(
|
|
224
|
-
f"Connection attempt {attempt} failed for {name}, "
|
|
225
|
-
f"retrying in {delay}s... ({e})"
|
|
226
|
-
)
|
|
240
|
+
error = e
|
|
227
241
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
if attempt < max_retries and server.name != "unnamed-server":
|
|
243
|
+
self._log_warning(
|
|
244
|
+
f"Connection attempt {attempt} failed for {name}, "
|
|
245
|
+
f"retrying in {delay}s... ({error})"
|
|
246
|
+
)
|
|
247
|
+
await asyncio.sleep(delay)
|
|
248
|
+
delay = min(delay * backoff, max_delay)
|
|
249
|
+
else:
|
|
250
|
+
if server.name != "unnamed-server":
|
|
251
|
+
self._log_error(
|
|
252
|
+
f"Failed to connect to MCP server {name} "
|
|
253
|
+
f"after {max_retries} attempts: {error}"
|
|
254
|
+
)
|
|
255
|
+
if server.is_connected:
|
|
256
|
+
# Session was established but tool listing failed; tear
|
|
257
|
+
# it down so the transport/subprocess doesn't leak.
|
|
258
|
+
await server.disconnect()
|
|
259
|
+
return False
|
|
241
260
|
|
|
242
261
|
async def disconnect_server(self, name: str) -> bool:
|
|
243
262
|
"""
|
|
@@ -15,20 +15,29 @@ from mcp.shared.auth import OAuthClientInformationFull, OAuthToken
|
|
|
15
15
|
from cecli.decoding import safe_open
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
def create_oauth_callback_server(
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
def create_oauth_callback_server(port, path="/callback") -> Tuple[
|
|
19
|
+
Callable[[], Awaitable[Tuple[str, str]]],
|
|
20
|
+
Callable[[], None],
|
|
21
|
+
Callable[[], None],
|
|
22
|
+
]:
|
|
21
23
|
"""
|
|
22
24
|
Create a local HTTP server to handle OAuth callback.
|
|
23
25
|
|
|
26
|
+
The listener is started lazily via the returned ``ensure_started`` callable
|
|
27
|
+
so servers that never actually trigger OAuth don't leave a daemon HTTP
|
|
28
|
+
server (and its bound port) running for the life of the process.
|
|
29
|
+
|
|
24
30
|
Returns:
|
|
25
|
-
Tuple of (async callback handler function,
|
|
31
|
+
Tuple of (async callback handler, shutdown function, start function)
|
|
26
32
|
"""
|
|
27
33
|
auth_code = None
|
|
28
34
|
state = None
|
|
29
35
|
server_error = None
|
|
30
36
|
callback_received = threading.Event()
|
|
31
37
|
server = None
|
|
38
|
+
server_thread = None
|
|
39
|
+
server_started = threading.Event()
|
|
40
|
+
start_lock = threading.Lock()
|
|
32
41
|
|
|
33
42
|
class OAuthCallbackHandler(http.server.SimpleHTTPRequestHandler):
|
|
34
43
|
def do_GET(self):
|
|
@@ -78,27 +87,71 @@ def create_oauth_callback_server(
|
|
|
78
87
|
def log_message(self, format, *args):
|
|
79
88
|
pass
|
|
80
89
|
|
|
81
|
-
# Start server in a separate thread
|
|
82
90
|
def start_server():
|
|
83
|
-
nonlocal server
|
|
91
|
+
nonlocal server, server_error
|
|
92
|
+
srv = None
|
|
84
93
|
try:
|
|
85
|
-
|
|
86
|
-
server
|
|
94
|
+
srv = socketserver.TCPServer(("localhost", port), OAuthCallbackHandler)
|
|
95
|
+
server = srv
|
|
96
|
+
server_started.set()
|
|
97
|
+
srv.serve_forever()
|
|
87
98
|
except Exception as e:
|
|
88
|
-
server_error = f"Server error: {e}"
|
|
99
|
+
server_error = f"Server error: {e}"
|
|
100
|
+
server_started.set()
|
|
89
101
|
callback_received.set()
|
|
102
|
+
finally:
|
|
103
|
+
if srv is not None:
|
|
104
|
+
try:
|
|
105
|
+
srv.server_close()
|
|
106
|
+
except Exception:
|
|
107
|
+
pass
|
|
108
|
+
|
|
109
|
+
def ensure_started():
|
|
110
|
+
"""Start the callback listener once, blocking briefly for the bind."""
|
|
111
|
+
nonlocal server_thread
|
|
112
|
+
with start_lock:
|
|
113
|
+
if server_started.is_set():
|
|
114
|
+
return
|
|
115
|
+
|
|
116
|
+
server_thread = threading.Thread(
|
|
117
|
+
target=start_server, daemon=True, name="oauth-callback-server"
|
|
118
|
+
)
|
|
119
|
+
server_thread.start()
|
|
120
|
+
|
|
121
|
+
# Wait for the bind to complete so the browser redirect cannot race the
|
|
122
|
+
# listener coming up.
|
|
123
|
+
server_started.wait(timeout=5)
|
|
90
124
|
|
|
91
|
-
server_thread = threading.Thread(target=start_server, daemon=True)
|
|
92
|
-
server_thread.start()
|
|
93
|
-
|
|
94
|
-
# Shutdown function
|
|
95
125
|
def shutdown():
|
|
126
|
+
"""Stop the callback listener. Idempotent and safe to call repeatedly.
|
|
127
|
+
|
|
128
|
+
``socketserver.shutdown()`` blocks until ``serve_forever`` exits; async
|
|
129
|
+
callers must run this in a thread (see ``asyncio.to_thread``) so a stuck
|
|
130
|
+
listener can never wedge the event loop.
|
|
131
|
+
"""
|
|
96
132
|
nonlocal server
|
|
97
|
-
|
|
98
|
-
server
|
|
133
|
+
with start_lock:
|
|
134
|
+
srv = server
|
|
99
135
|
server = None
|
|
100
136
|
|
|
137
|
+
if srv is None:
|
|
138
|
+
return
|
|
139
|
+
|
|
140
|
+
try:
|
|
141
|
+
srv.shutdown()
|
|
142
|
+
except Exception:
|
|
143
|
+
pass
|
|
144
|
+
finally:
|
|
145
|
+
try:
|
|
146
|
+
srv.server_close()
|
|
147
|
+
except Exception:
|
|
148
|
+
pass
|
|
149
|
+
|
|
101
150
|
async def get_auth_code() -> Tuple[str, str]:
|
|
151
|
+
# Backstop for callers that didn't start the listener via the redirect
|
|
152
|
+
# handler first (e.g. a resumed flow).
|
|
153
|
+
ensure_started()
|
|
154
|
+
|
|
102
155
|
# Wait for callback to be received
|
|
103
156
|
MINUTES = 5
|
|
104
157
|
timeout = MINUTES * 60
|
|
@@ -106,23 +159,23 @@ def create_oauth_callback_server(
|
|
|
106
159
|
start_time = time.time()
|
|
107
160
|
while not callback_received.is_set():
|
|
108
161
|
if time.time() - start_time > timeout:
|
|
109
|
-
shutdown
|
|
162
|
+
await asyncio.to_thread(shutdown)
|
|
110
163
|
raise Exception(f"OAuth callback timed out after {MINUTES} minutes")
|
|
111
164
|
|
|
112
165
|
# Small sleep to avoid busy waiting
|
|
113
166
|
await asyncio.sleep(0.1)
|
|
114
167
|
|
|
115
168
|
if server_error:
|
|
116
|
-
shutdown
|
|
169
|
+
await asyncio.to_thread(shutdown)
|
|
117
170
|
raise Exception(server_error)
|
|
118
171
|
|
|
119
172
|
if not auth_code:
|
|
120
|
-
shutdown
|
|
173
|
+
await asyncio.to_thread(shutdown)
|
|
121
174
|
raise Exception("No authorization code received")
|
|
122
175
|
|
|
123
176
|
return auth_code, state
|
|
124
177
|
|
|
125
|
-
return get_auth_code, shutdown
|
|
178
|
+
return get_auth_code, shutdown, ensure_started
|
|
126
179
|
|
|
127
180
|
|
|
128
181
|
def get_token_file_path():
|