cecli-dev 1.5.0rc16__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.0rc16 → cecli_dev-1.6.0rc1}/PKG-INFO +1 -1
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/_version.py +3 -3
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/agent_coder.py +54 -13
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/service.py +15 -4
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/background_commands.py +123 -4
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/integration.py +73 -7
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/coroutines.py +19 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/litellm_compat.py +3 -1
- cecli_dev-1.6.0rc1/cecli/helpers/llms/runtime.py +133 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/skills.py +41 -14
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/main.py +25 -1
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mcp/manager.py +44 -25
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mcp/oauth.py +72 -19
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mcp/server.py +47 -4
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/command.py +154 -40
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/worker.py +52 -5
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/voice.py +91 -7
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/mcp.md +31 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/skills.md +5 -7
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/subagents.md +14 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-1.5.0rc16 → 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.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_background_commands.py +167 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_skills.py +85 -6
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_voice.py +51 -0
- cecli_dev-1.6.0rc1/tests/conversations/test_background_command_injection.py +170 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_manager_retry.py +37 -4
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_service.py +61 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_command_timeout_paging.py +46 -58
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_resource_manager_paging.py +17 -7
- cecli_dev-1.5.0rc16/cecli/helpers/llms/runtime.py +0 -43
- cecli_dev-1.5.0rc16/cecli_dev.egg-info/scm_version.json +0 -8
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.dockerignore +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.flake8 +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.gitattributes +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.gitignore +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/CHANGELOG.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/CNAME +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/HISTORY.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/LICENSE.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/MANIFEST.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/README.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/README.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/docker.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/over_time.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/plot.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/plots.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/prompts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/__main__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/args.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/base_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/add.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/code.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/context.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/core.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/git.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/help.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/import_skill.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/insert_queue.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/list_queue.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/load.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/load_session.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/map.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/model.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/models.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/queue.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/remove_queue.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/report.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/run.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/save.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/save_session.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/test.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/web.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/decoding.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/diffs.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/dump.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/editor.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/exceptions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/format_settings.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/help.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/help_pats.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/extensions/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/extensions/skills_importer.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/hashpos/transformations.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/chat.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/messages.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/mistral.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/lock_detect.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/loop_detect.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/pipeline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/app.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/onboarding/providers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/agent_proxy.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/environment.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/safe_methods.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/orchestration/tool_proxy.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/paths.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/subagents.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/helpers/workspaces/workspace.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/history.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/http.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/io.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/linter.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/llm.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/mdstream.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/models.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/onboarding.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/repo.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/repomap.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/report.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/model-metadata.ext.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/resources/providers.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/scrape.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/sendchat.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/sessions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/signals.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/special.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tests/test_queue_commands.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/broadcast.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/grep.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/read_file.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/app.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/io.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/urls.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/utils.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/waiting.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/watch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/package.json +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/docker/Dockerfile +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/pyproject.toml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/pytest.ini +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/common-constraints.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/requirements.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/requirements.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/30k-image.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/blame.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/homepage.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/issues.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/update-history.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/versionbump.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/setup.cfg +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/shim.pyproject.toml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_file_system_service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_main.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/coders/test_rate_limit.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/coders/test_tool_call_consolidation.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_voice.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/commands/test_workspace.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/help/test_help.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_cache_control.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_gemini_auth.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_mistral_adapter.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_mistral_provider.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_loop_detect.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_onboarding.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_orchestration.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/test_skills_importer.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_paths.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_subagents.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/mcp/test_server_sdk_compat.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/test_requests.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_grep.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tools/validations.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/tui/test_completion_bar.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_retry_backoff.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.5.0rc16 → cecli_dev-1.6.0rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.5.0rc16 → 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.
|
|
@@ -617,11 +617,22 @@ class AgentService:
|
|
|
617
617
|
parent_uuid=parent_coder.uuid,
|
|
618
618
|
map_tokens=0,
|
|
619
619
|
init_metadata={"agent_config": agent_config},
|
|
620
|
-
# Sub-agents start with an empty file context; rules are inherited.
|
|
621
|
-
fnames=[],
|
|
622
|
-
read_only_fnames=[],
|
|
623
|
-
read_only_stubs_fnames=[],
|
|
624
620
|
)
|
|
621
|
+
|
|
622
|
+
# Sub-agents start with an empty file context by default; rules are
|
|
623
|
+
# inherited. When ``keep_files`` is set in the sub-agent's metadata,
|
|
624
|
+
# inherit the parent's editable and read-only files instead of
|
|
625
|
+
# resetting them.
|
|
626
|
+
keep_files = isinstance(metadata, dict) and bool(metadata.get("keep_files", False))
|
|
627
|
+
if not keep_files:
|
|
628
|
+
kwargs.update(
|
|
629
|
+
dict(
|
|
630
|
+
fnames=[],
|
|
631
|
+
read_only_fnames=[],
|
|
632
|
+
read_only_stubs_fnames=[],
|
|
633
|
+
)
|
|
634
|
+
)
|
|
635
|
+
|
|
625
636
|
if configured_root:
|
|
626
637
|
kwargs["root"] = configured_root
|
|
627
638
|
|
|
@@ -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))
|
|
@@ -29,6 +29,8 @@ from typing import Any, Dict, List, Optional
|
|
|
29
29
|
from cecli.dump import dump # noqa: F401
|
|
30
30
|
from cecli.http import httpx
|
|
31
31
|
|
|
32
|
+
from .runtime import log_error_response
|
|
33
|
+
|
|
32
34
|
warnings.filterwarnings("ignore", category=UserWarning, module="pydantic")
|
|
33
35
|
|
|
34
36
|
SITE_URL = "https://cecli.dev"
|
|
@@ -1156,7 +1158,7 @@ class _LiteLLMFacade:
|
|
|
1156
1158
|
if language:
|
|
1157
1159
|
data["language"] = language
|
|
1158
1160
|
|
|
1159
|
-
with httpx.Client(timeout=600) as client:
|
|
1161
|
+
with httpx.Client(timeout=600, event_hooks={"response": [log_error_response]}) as client:
|
|
1160
1162
|
resp = client.post(
|
|
1161
1163
|
"https://api.openai.com/v1/audio/transcriptions",
|
|
1162
1164
|
headers=headers,
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""Runtime knobs for the llms package (import-light, no heavy deps).
|
|
2
|
+
|
|
3
|
+
The dispatcher and domain adapters read :data:`VERIFY_SSL` when constructing
|
|
4
|
+
httpx clients so ``--no-verify-ssl`` keeps working after the litellm swap
|
|
5
|
+
(litellm previously patched ``client_session``/``aclient_session`` globals).
|
|
6
|
+
|
|
7
|
+
``make_client`` additionally attaches a response hook that appends the body of
|
|
8
|
+
any 4xx/5xx response to :data:`ERROR_LOG_PATH` (``.cecli/logs/requests-errors.log``)
|
|
9
|
+
so failed provider requests stay diagnosable after the fact.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import os
|
|
15
|
+
import ssl
|
|
16
|
+
import threading
|
|
17
|
+
import time
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
from cecli.http import httpx
|
|
21
|
+
|
|
22
|
+
#: Global TLS verification flag; set False for ``--no-verify-ssl``.
|
|
23
|
+
VERIFY_SSL = True
|
|
24
|
+
|
|
25
|
+
#: Append-only destination for 4xx/5xx response bodies.
|
|
26
|
+
ERROR_LOG_PATH = ".cecli/logs/requests-errors.log"
|
|
27
|
+
|
|
28
|
+
#: Serializes appends from concurrent sync/async hooks (writes are tiny).
|
|
29
|
+
_ERROR_LOG_LOCK = threading.Lock()
|
|
30
|
+
|
|
31
|
+
#: Maximum decoded body size kept per record.
|
|
32
|
+
_MAX_LOGGED_BODY = 64 * 1024
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def set_verify_ssl(verify: bool) -> None:
|
|
36
|
+
"""Set whether outbound httpx clients verify TLS certificates."""
|
|
37
|
+
global VERIFY_SSL
|
|
38
|
+
|
|
39
|
+
VERIFY_SSL = bool(verify)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def make_client(timeout: float, **kwargs: Any) -> httpx.AsyncClient:
|
|
43
|
+
"""Create an httpx AsyncClient, retrying once on the OpenSSL first-init flake.
|
|
44
|
+
|
|
45
|
+
On some platforms (observed: WSL2 + OpenSSL 3.5 + Python 3.14) the very
|
|
46
|
+
first ``ssl.create_default_context(cafile=...)`` in a fresh process can
|
|
47
|
+
fail with ``ssl.SSLError`` (``[CONF: MODULE_INITIALIZATION_ERROR]`` /
|
|
48
|
+
"unknown error (0x0)") because the OpenSSL CONF module races its lazy
|
|
49
|
+
initialization. A second attempt succeeds. Retrying keeps per-request
|
|
50
|
+
httpx clients reliable whether or not truststore has been injected.
|
|
51
|
+
|
|
52
|
+
A response hook is always attached so 4xx/5xx bodies land in
|
|
53
|
+
:data:`ERROR_LOG_PATH`; caller-supplied ``event_hooks`` are preserved.
|
|
54
|
+
"""
|
|
55
|
+
hooks = dict(kwargs.pop("event_hooks", None) or {})
|
|
56
|
+
hooks["response"] = [*hooks.get("response", []), _log_error_response]
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
return httpx.AsyncClient(timeout=timeout, event_hooks=hooks, **kwargs)
|
|
60
|
+
|
|
61
|
+
except ssl.SSLError:
|
|
62
|
+
return httpx.AsyncClient(timeout=timeout, event_hooks=hooks, **kwargs)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def log_error_response(response: Any) -> None:
|
|
66
|
+
"""Sync httpx response hook: append 4xx/5xx bodies to :data:`ERROR_LOG_PATH`."""
|
|
67
|
+
|
|
68
|
+
if response.status_code < 400:
|
|
69
|
+
return
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
response.read()
|
|
73
|
+
body = response.text
|
|
74
|
+
|
|
75
|
+
except Exception:
|
|
76
|
+
body = "<body unavailable>"
|
|
77
|
+
|
|
78
|
+
_append_error_record(response, body)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async def _log_error_response(response: Any) -> None:
|
|
82
|
+
"""Async httpx response hook: append 4xx/5xx bodies to :data:`ERROR_LOG_PATH`.
|
|
83
|
+
|
|
84
|
+
Reading the body here also makes it available to the caller's later
|
|
85
|
+
``raise_for_status()``/error handling; streaming error responses are
|
|
86
|
+
otherwise left unread.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
if response.status_code < 400:
|
|
90
|
+
return
|
|
91
|
+
|
|
92
|
+
try:
|
|
93
|
+
await response.aread()
|
|
94
|
+
body = response.text
|
|
95
|
+
|
|
96
|
+
except Exception:
|
|
97
|
+
body = "<body unavailable>"
|
|
98
|
+
|
|
99
|
+
_append_error_record(response, body)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _append_error_record(response: Any, body: str) -> None:
|
|
103
|
+
"""Append one error record; logging failures never reach the request path."""
|
|
104
|
+
|
|
105
|
+
request = response.request
|
|
106
|
+
body = body or ""
|
|
107
|
+
|
|
108
|
+
if len(body) > _MAX_LOGGED_BODY:
|
|
109
|
+
body = f"{body[:_MAX_LOGGED_BODY]}\n<truncated>"
|
|
110
|
+
|
|
111
|
+
record = (
|
|
112
|
+
f"{time.strftime('%Y-%m-%d %H:%M:%S')} "
|
|
113
|
+
f"{getattr(request, 'method', '?')} {getattr(request, 'url', '?')} -> "
|
|
114
|
+
f"{response.status_code}\n{body}\n{'-' * 80}\n"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
os.makedirs(os.path.dirname(ERROR_LOG_PATH), exist_ok=True)
|
|
119
|
+
|
|
120
|
+
with _ERROR_LOG_LOCK, open(ERROR_LOG_PATH, "a", encoding="utf-8") as handle:
|
|
121
|
+
handle.write(record)
|
|
122
|
+
|
|
123
|
+
except Exception:
|
|
124
|
+
pass
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
__all__ = [
|
|
128
|
+
"ERROR_LOG_PATH",
|
|
129
|
+
"VERIFY_SSL",
|
|
130
|
+
"log_error_response",
|
|
131
|
+
"make_client",
|
|
132
|
+
"set_verify_ssl",
|
|
133
|
+
]
|