cecli-dev 1.6.0rc5__tar.gz → 1.6.2rc1__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.6.0rc5 → cecli_dev-1.6.2rc1}/PKG-INFO +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/_version.py +3 -3
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/base_coder.py +20 -19
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/core.py +0 -51
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/insert_queue.py +2 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_queue.py +2 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_sessions.py +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_session.py +6 -3
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/queue.py +3 -2
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_queue.py +7 -6
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/save_session.py +6 -2
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/transformations.py +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/pipeline.py +4 -2
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_providers.py +4 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/agent_proxy.py +17 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/environment.py +4 -2
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/safe_methods.py +11 -10
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/tool_proxy.py +83 -4
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/responses.py +52 -2
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/__init__.py +20 -0
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/layout.py +112 -0
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/manager.py +325 -0
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/payload.py +287 -0
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/storage.py +245 -0
- cecli_dev-1.6.2rc1/cecli/helpers/sessions/subagents.py +152 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/main.py +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/server.py +17 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/models.py +50 -17
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-metadata.ext.json +32 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-metadata.json +16442 -10023
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/providers.json +12 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tests/test_queue_commands.py +201 -219
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/broadcast.py +4 -5
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/grep.py +11 -4
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/read_file.py +4 -4
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/styles.tcss +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/output.py +5 -0
- cecli_dev-1.6.2rc1/cecli/tui/widgets/thin_scrollbar.py +58 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/ollama.md +3 -4
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/SOURCES.txt +9 -1
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/scm_file_list.json +9 -1
- cecli_dev-1.6.2rc1/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sessions.py +1 -1
- cecli_dev-1.6.2rc1/tests/basic/test_sessions_manager.py +473 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_orchestration.py +103 -7
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_server_sdk_compat.py +19 -0
- cecli_dev-1.6.2rc1/tests/mcp/test_tool_name_sanitization.py +138 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_grep.py +23 -0
- cecli_dev-1.6.2rc1/tests/tui/test_output.py +24 -0
- cecli_dev-1.6.0rc5/cecli/sessions.py +0 -505
- cecli_dev-1.6.0rc5/cecli_dev.egg-info/scm_version.json +0 -8
- cecli_dev-1.6.0rc5/tests/basic/test_sessions_manager.py +0 -219
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.dockerignore +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.flake8 +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.gitattributes +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.gitignore +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CHANGELOG.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CNAME +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/HISTORY.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/LICENSE.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/MANIFEST.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/README.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/README.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/docker.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/over_time.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/plot.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/plots.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/prompts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/__main__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/args.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/agent_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/add.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/code.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/git.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/help.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/import_skill.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/map.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/model.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/models.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/report.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/run.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/save.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/test.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/web.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/decoding.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/diffs.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/dump.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/editor.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/exceptions.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/format_settings.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/help.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/help_pats.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/extensions/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/extensions/skills_importer.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/chat.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/messages.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/litellm_compat.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/mistral.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/runtime.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/lock_detect.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/loop_detect.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/app.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/onboarding/providers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/paths.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/subagents.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/helpers/workspaces/workspace.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/history.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/http.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/io.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/linter.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/llm.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/mdstream.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/onboarding.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/repo.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/repomap.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/report.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/scrape.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/sendchat.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/signals.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/special.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/command.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/app.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/io.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/tui/worker.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/urls.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/utils.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/voice.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/waiting.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/watch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/package.json +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/docker/Dockerfile +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/pyproject.toml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/pytest.ini +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/common-constraints.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/requirements.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/requirements.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/30k-image.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/blame.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/homepage.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/issues.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/update-history.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/versionbump.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/setup.cfg +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/shim.pyproject.toml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_file_system_service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_main.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_rate_limit.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/coders/test_tool_call_consolidation.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_voice.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/commands/test_workspace.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_background_command_injection.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/help/test_help.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_cache_control.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_gemini_auth.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_mistral_adapter.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_mistral_provider.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_loop_detect.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_onboarding.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/test_skills_importer.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_paths.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_subagents.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_manager_retry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/test_requests.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_command_timeout_paging.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_resource_manager_paging.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tools/validations.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/tui/test_completion_bar.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_retry_backoff.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc5 → cecli_dev-1.6.2rc1}/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.6.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 6,
|
|
21
|
+
__version__ = version = '1.6.2rc1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 6, 2, 'rc1')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g699b98e21'
|
|
@@ -46,6 +46,7 @@ from cecli.helpers.loop_detect import LoopDetectedError, LoopDetector
|
|
|
46
46
|
from cecli.helpers.memory_control import trim_memory
|
|
47
47
|
from cecli.helpers.observations.service import ObservationService
|
|
48
48
|
from cecli.helpers.profiler import TokenProfiler
|
|
49
|
+
from cecli.helpers.sessions import SessionManager
|
|
49
50
|
from cecli.helpers.threading import ThreadSafeEvent
|
|
50
51
|
from cecli.history import ChatSummary
|
|
51
52
|
from cecli.hooks import HookIntegration
|
|
@@ -53,7 +54,6 @@ from cecli.io import ConfirmGroup, InputOutput
|
|
|
53
54
|
from cecli.linter import Linter
|
|
54
55
|
from cecli.llm import litellm
|
|
55
56
|
from cecli.mcp import LocalServer
|
|
56
|
-
from cecli.models import RETRY_TIMEOUT
|
|
57
57
|
from cecli.reasoning_tags import (
|
|
58
58
|
REASONING_TAG,
|
|
59
59
|
format_reasoning_content,
|
|
@@ -64,7 +64,6 @@ from cecli.repo import ANY_GIT_ERROR, GitRepoProxy
|
|
|
64
64
|
from cecli.repomap import RepoMap
|
|
65
65
|
from cecli.report import update_error_prefix
|
|
66
66
|
from cecli.run_cmd import run_cmd_async
|
|
67
|
-
from cecli.sessions import SessionManager
|
|
68
67
|
from cecli.tools.utils.output import print_tool_response
|
|
69
68
|
from cecli.tools.utils.registry import ToolRegistry
|
|
70
69
|
from cecli.utils import copy_tool_call, format_tokens, is_image_file
|
|
@@ -2829,24 +2828,14 @@ class Coder(metaclass=UsageMeta):
|
|
|
2829
2828
|
except EmptyResponseError:
|
|
2830
2829
|
self.io.tool_warning(self.empty_llm_tool_warning())
|
|
2831
2830
|
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
if isinstance(retries_config, str):
|
|
2835
|
-
try:
|
|
2836
|
-
retries_config = json.loads(retries_config)
|
|
2837
|
-
except json.JSONDecodeError:
|
|
2838
|
-
self.io.tool_warning(
|
|
2839
|
-
f"Could not parse retries config: {retries_config}"
|
|
2840
|
-
)
|
|
2841
|
-
retries_config = {}
|
|
2842
|
-
if isinstance(retries_config, dict):
|
|
2843
|
-
retry_on_empty = retries_config.get("retry_on_empty", False)
|
|
2831
|
+
retry_config = models.parse_retry_config(self.get_active_model().retries)
|
|
2832
|
+
retry_on_empty = retry_config["retry_on_empty"]
|
|
2844
2833
|
|
|
2845
2834
|
if not retry_on_empty:
|
|
2846
2835
|
break
|
|
2847
2836
|
|
|
2848
|
-
retry_delay *=
|
|
2849
|
-
if retry_delay >
|
|
2837
|
+
retry_delay *= retry_config["retry_backoff_factor"]
|
|
2838
|
+
if retry_delay > retry_config["retry_timeout"]:
|
|
2850
2839
|
self.io.tool_error("Retry timeout exceeded on empty response.")
|
|
2851
2840
|
break
|
|
2852
2841
|
|
|
@@ -2866,10 +2855,15 @@ class Coder(metaclass=UsageMeta):
|
|
|
2866
2855
|
exhausted = True
|
|
2867
2856
|
break
|
|
2868
2857
|
|
|
2858
|
+
retry_config = models.parse_retry_config(self.get_active_model().retries)
|
|
2859
|
+
|
|
2869
2860
|
should_retry = ex_info.retry
|
|
2861
|
+
if ex_info.name == "ServiceUnavailableError":
|
|
2862
|
+
should_retry = should_retry or retry_config["retry_on_unavailable"]
|
|
2863
|
+
|
|
2870
2864
|
if should_retry:
|
|
2871
|
-
retry_delay *=
|
|
2872
|
-
if retry_delay >
|
|
2865
|
+
retry_delay *= retry_config["retry_backoff_factor"]
|
|
2866
|
+
if retry_delay > retry_config["retry_timeout"]:
|
|
2873
2867
|
should_retry = False
|
|
2874
2868
|
|
|
2875
2869
|
if not should_retry:
|
|
@@ -3193,7 +3187,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
3193
3187
|
tool_name_from_schema = nested.getter(tool, "function.name")
|
|
3194
3188
|
if (
|
|
3195
3189
|
tool_name_from_schema
|
|
3196
|
-
and
|
|
3190
|
+
and responses.sanitize_tool_name(tool_name_from_schema).lower()
|
|
3191
|
+
== responses.sanitize_tool_name(unprefixed_tool_name).lower()
|
|
3197
3192
|
):
|
|
3198
3193
|
# Find the McpServer instance that will be used for communication
|
|
3199
3194
|
for server in self.mcp_manager:
|
|
@@ -3415,6 +3410,10 @@ class Coder(metaclass=UsageMeta):
|
|
|
3415
3410
|
# with a "missing required parameter" error.
|
|
3416
3411
|
arguments = responses.coerce_tool_structure(arguments)
|
|
3417
3412
|
|
|
3413
|
+
# Providers require a provider-safe tool name, so the name coming back
|
|
3414
|
+
# from the model may not be the name the MCP server advertises.
|
|
3415
|
+
name = responses.original_tool_name(name)
|
|
3416
|
+
|
|
3418
3417
|
return await session.call_tool(name=name, arguments=arguments)
|
|
3419
3418
|
|
|
3420
3419
|
async def process_tool_calls(self, tool_call_response):
|
|
@@ -3504,6 +3503,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3504
3503
|
|
|
3505
3504
|
def get_tool_list(self):
|
|
3506
3505
|
"""Get a flattened list of all MCP tools with server prefixes, filtered by registered_servers."""
|
|
3506
|
+
responses.register_tool_names(self.mcp_tools)
|
|
3507
3507
|
tool_list = []
|
|
3508
3508
|
if self.mcp_tools:
|
|
3509
3509
|
for server_name, server_tools in self.mcp_tools:
|
|
@@ -5234,6 +5234,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
5234
5234
|
session_manager.save_session,
|
|
5235
5235
|
getattr(self.args, "auto_save_session_name", "auto-save"),
|
|
5236
5236
|
False,
|
|
5237
|
+
True,
|
|
5237
5238
|
)
|
|
5238
5239
|
except Exception:
|
|
5239
5240
|
# Don't show errors for auto-save to avoid interrupting the user experience
|
|
@@ -92,57 +92,6 @@ class Commands:
|
|
|
92
92
|
# Commands that should NOT trigger auto-processing of the queue
|
|
93
93
|
self._MANAGEMENT_COMMANDS = {"queue", "list-queue", "remove-queue"}
|
|
94
94
|
|
|
95
|
-
# ── Queue Management Methods (CLI-33) ────────────────────────────── #
|
|
96
|
-
#
|
|
97
|
-
# The prompt queue itself lives on the coder (Coder.prompt_queue) and
|
|
98
|
-
# is managed by cecli.helpers.command_queue. These thin wrappers keep
|
|
99
|
-
# the /queue, /list-queue and /remove-queue command implementations
|
|
100
|
-
# stable while operating on the coder that owns this Commands
|
|
101
|
-
# instance, so each sub-agent's commands manage that sub-agent's own
|
|
102
|
-
# queue.
|
|
103
|
-
|
|
104
|
-
@property
|
|
105
|
-
def prompt_queue(self):
|
|
106
|
-
"""Proxy to the owning coder's prompt queue."""
|
|
107
|
-
coder = self.coder
|
|
108
|
-
return coder.prompt_queue if coder is not None else []
|
|
109
|
-
|
|
110
|
-
def _insert_prompt(self, text: str, index: int) -> dict:
|
|
111
|
-
"""Insert a prompt at the given index in the active coder's queue."""
|
|
112
|
-
from cecli.helpers import command_queue
|
|
113
|
-
|
|
114
|
-
return command_queue.insert_prompt(self._active_coder(), text, index)
|
|
115
|
-
|
|
116
|
-
def _enqueue_prompt(self, text: str) -> dict:
|
|
117
|
-
"""Add a prompt to the owning coder's queue."""
|
|
118
|
-
from cecli.helpers import command_queue
|
|
119
|
-
|
|
120
|
-
return command_queue.enqueue_prompt(self.coder, text)
|
|
121
|
-
|
|
122
|
-
def _dequeue_prompt(self) -> dict | None:
|
|
123
|
-
"""Remove and return the first item from the owning coder's queue."""
|
|
124
|
-
from cecli.helpers import command_queue
|
|
125
|
-
|
|
126
|
-
return command_queue.dequeue_prompt(self.coder)
|
|
127
|
-
|
|
128
|
-
def _get_queue_length(self) -> int:
|
|
129
|
-
"""Return the current number of items in the owning coder's queue."""
|
|
130
|
-
from cecli.helpers import command_queue
|
|
131
|
-
|
|
132
|
-
return command_queue.get_queue_length(self.coder)
|
|
133
|
-
|
|
134
|
-
def _remove_from_queue(self, index: int) -> dict | None:
|
|
135
|
-
"""Remove and return the item at the given index from the owning coder's queue."""
|
|
136
|
-
from cecli.helpers import command_queue
|
|
137
|
-
|
|
138
|
-
return command_queue.remove_from_queue(self.coder, index)
|
|
139
|
-
|
|
140
|
-
def _clear_queue(self) -> list:
|
|
141
|
-
"""Remove all items from the owning coder's queue and return them."""
|
|
142
|
-
from cecli.helpers import command_queue
|
|
143
|
-
|
|
144
|
-
return command_queue.clear_queue(self.coder)
|
|
145
|
-
|
|
146
95
|
def _load_custom_commands(self, custom_commands):
|
|
147
96
|
"""
|
|
148
97
|
Load custom commands from plugin paths.
|
|
@@ -4,6 +4,7 @@ from typing import List
|
|
|
4
4
|
|
|
5
5
|
from cecli.commands.utils.base_command import BaseCommand
|
|
6
6
|
from cecli.commands.utils.helpers import format_command_result
|
|
7
|
+
from cecli.helpers import command_queue
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class InsertQueueCommand(BaseCommand):
|
|
@@ -57,7 +58,7 @@ class InsertQueueCommand(BaseCommand):
|
|
|
57
58
|
|
|
58
59
|
# Happy path: insert the prompt
|
|
59
60
|
try:
|
|
60
|
-
item =
|
|
61
|
+
item = command_queue.insert_prompt(coder, prompt_text, index)
|
|
61
62
|
io.tool_output(f"Prompt inserted at position {index + 1} (id: {item['id']})")
|
|
62
63
|
return f"Successfully executed {cls.NORM_NAME}."
|
|
63
64
|
except ValueError as e:
|
|
@@ -5,6 +5,7 @@ from typing import List
|
|
|
5
5
|
|
|
6
6
|
from cecli.commands.utils.base_command import BaseCommand
|
|
7
7
|
from cecli.commands.utils.helpers import format_command_result
|
|
8
|
+
from cecli.helpers import command_queue
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class ListQueueCommand(BaseCommand):
|
|
@@ -30,7 +31,7 @@ class ListQueueCommand(BaseCommand):
|
|
|
30
31
|
io, cls.NORM_NAME, "", error="Command system not available. Cannot list queue."
|
|
31
32
|
)
|
|
32
33
|
|
|
33
|
-
queue = coder
|
|
34
|
+
queue = command_queue.list_queue(coder)
|
|
34
35
|
|
|
35
36
|
# Sad path: empty queue
|
|
36
37
|
if not queue:
|
|
@@ -11,7 +11,7 @@ class ListSessionsCommand(BaseCommand):
|
|
|
11
11
|
@classmethod
|
|
12
12
|
async def execute(cls, io, coder, args, **kwargs):
|
|
13
13
|
"""Execute the list-sessions command with given parameters."""
|
|
14
|
-
from cecli import sessions
|
|
14
|
+
from cecli.helpers import sessions
|
|
15
15
|
|
|
16
16
|
session_manager = sessions.SessionManager(coder, io)
|
|
17
17
|
sessions_list = session_manager.list_sessions()
|
|
@@ -15,7 +15,7 @@ class LoadSessionCommand(BaseCommand):
|
|
|
15
15
|
io.tool_output("Usage: /load-session <session-name>")
|
|
16
16
|
return format_command_result(io, "load-session", "No session name provided")
|
|
17
17
|
|
|
18
|
-
from cecli import sessions
|
|
18
|
+
from cecli.helpers import sessions
|
|
19
19
|
|
|
20
20
|
session_manager = sessions.SessionManager(coder, io)
|
|
21
21
|
await session_manager.load_session(args.strip())
|
|
@@ -26,7 +26,7 @@ class LoadSessionCommand(BaseCommand):
|
|
|
26
26
|
def get_completions(cls, io, coder, args) -> List[str]:
|
|
27
27
|
"""Get completion options for load-session command."""
|
|
28
28
|
# Return available session names for completion
|
|
29
|
-
from cecli import sessions
|
|
29
|
+
from cecli.helpers import sessions
|
|
30
30
|
|
|
31
31
|
session_manager = sessions.SessionManager(coder, io)
|
|
32
32
|
sessions_list = session_manager.list_sessions()
|
|
@@ -41,7 +41,10 @@ class LoadSessionCommand(BaseCommand):
|
|
|
41
41
|
help_text += "\nExamples:\n"
|
|
42
42
|
help_text += " /load-session my-feature # Load session 'my-feature'\n"
|
|
43
43
|
help_text += " /load-session bug-fix # Load session 'bug-fix'\n"
|
|
44
|
-
help_text +=
|
|
44
|
+
help_text += (
|
|
45
|
+
"\nSessions are loaded from the .cecli/sessions/ directory. Loading a session"
|
|
46
|
+
" also restores any sub-agents saved with it.\n"
|
|
47
|
+
)
|
|
45
48
|
help_text += (
|
|
46
49
|
"Use /list-sessions to see saved sessions and /save-session to save a session.\n"
|
|
47
50
|
)
|
|
@@ -4,6 +4,7 @@ from typing import List
|
|
|
4
4
|
|
|
5
5
|
from cecli.commands.utils.base_command import BaseCommand
|
|
6
6
|
from cecli.commands.utils.helpers import format_command_result
|
|
7
|
+
from cecli.helpers import command_queue
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class QueueCommand(BaseCommand):
|
|
@@ -55,8 +56,8 @@ class QueueCommand(BaseCommand):
|
|
|
55
56
|
|
|
56
57
|
# Happy path: enqueue the prompt
|
|
57
58
|
try:
|
|
58
|
-
item =
|
|
59
|
-
position =
|
|
59
|
+
item = command_queue.enqueue_prompt(coder, prompt_text)
|
|
60
|
+
position = command_queue.get_queue_length(coder)
|
|
60
61
|
io.tool_output(f"Prompt queued at position {position} (id: {item['id']})")
|
|
61
62
|
return f"Successfully executed {cls.NORM_NAME}."
|
|
62
63
|
except ValueError as e:
|
|
@@ -4,6 +4,7 @@ from typing import List
|
|
|
4
4
|
|
|
5
5
|
from cecli.commands.utils.base_command import BaseCommand
|
|
6
6
|
from cecli.commands.utils.helpers import format_command_result
|
|
7
|
+
from cecli.helpers import command_queue
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class RemoveQueueCommand(BaseCommand):
|
|
@@ -33,14 +34,14 @@ class RemoveQueueCommand(BaseCommand):
|
|
|
33
34
|
)
|
|
34
35
|
|
|
35
36
|
# Sad path: empty queue
|
|
36
|
-
if
|
|
37
|
+
if command_queue.get_queue_length(coder) == 0:
|
|
37
38
|
return format_command_result(
|
|
38
39
|
io, cls.NORM_NAME, "", error="Queue is empty. Nothing to remove."
|
|
39
40
|
)
|
|
40
41
|
|
|
41
42
|
# Handle wildcard: clear entire queue
|
|
42
43
|
if args and args.strip() == "*":
|
|
43
|
-
items =
|
|
44
|
+
items = command_queue.clear_queue(coder)
|
|
44
45
|
count = len(items)
|
|
45
46
|
io.tool_output(f"Removed all {count} queued prompt(s).")
|
|
46
47
|
return f"Successfully executed {cls.NORM_NAME}."
|
|
@@ -57,9 +58,9 @@ class RemoveQueueCommand(BaseCommand):
|
|
|
57
58
|
error=f"Invalid index: '{args.strip()}'. Please provide a number or '*'.",
|
|
58
59
|
)
|
|
59
60
|
|
|
60
|
-
item =
|
|
61
|
+
item = command_queue.remove_from_queue(coder, index)
|
|
61
62
|
if item is None:
|
|
62
|
-
queue_len =
|
|
63
|
+
queue_len = command_queue.get_queue_length(coder)
|
|
63
64
|
return format_command_result(
|
|
64
65
|
io,
|
|
65
66
|
cls.NORM_NAME,
|
|
@@ -71,7 +72,7 @@ class RemoveQueueCommand(BaseCommand):
|
|
|
71
72
|
return f"Successfully executed {cls.NORM_NAME}."
|
|
72
73
|
|
|
73
74
|
# Interactive mode: no args provided
|
|
74
|
-
queue = coder
|
|
75
|
+
queue = command_queue.list_queue(coder)
|
|
75
76
|
io.tool_output("Queued prompts:")
|
|
76
77
|
for i, item in enumerate(queue, 1):
|
|
77
78
|
text = item["text"][:80]
|
|
@@ -91,7 +92,7 @@ class RemoveQueueCommand(BaseCommand):
|
|
|
91
92
|
if not coder.commands:
|
|
92
93
|
return []
|
|
93
94
|
|
|
94
|
-
queue_len =
|
|
95
|
+
queue_len = command_queue.get_queue_length(coder)
|
|
95
96
|
completions = [str(i) for i in range(1, queue_len + 1)]
|
|
96
97
|
completions.append("*")
|
|
97
98
|
return completions
|
|
@@ -15,7 +15,7 @@ class SaveSessionCommand(BaseCommand):
|
|
|
15
15
|
io.tool_error("Please provide a session name to save.")
|
|
16
16
|
return format_command_result(io, "save-session", "No session name provided")
|
|
17
17
|
|
|
18
|
-
from cecli import sessions
|
|
18
|
+
from cecli.helpers import sessions
|
|
19
19
|
|
|
20
20
|
session_manager = sessions.SessionManager(coder, io)
|
|
21
21
|
session_manager.save_session(args.strip())
|
|
@@ -26,7 +26,7 @@ class SaveSessionCommand(BaseCommand):
|
|
|
26
26
|
def get_completions(cls, io, coder, args) -> List[str]:
|
|
27
27
|
"""Get completion options for save-session command."""
|
|
28
28
|
# Return existing session names for completion to prevent accidental overwrites
|
|
29
|
-
from cecli import sessions
|
|
29
|
+
from cecli.helpers import sessions
|
|
30
30
|
|
|
31
31
|
session_manager = sessions.SessionManager(coder, io)
|
|
32
32
|
sessions_list = session_manager.list_sessions()
|
|
@@ -42,6 +42,10 @@ class SaveSessionCommand(BaseCommand):
|
|
|
42
42
|
help_text += " /save-session my-feature # Save session as 'my-feature'\n"
|
|
43
43
|
help_text += " /save-session bug-fix # Save session as 'bug-fix'\n"
|
|
44
44
|
help_text += "\nSessions are saved in the .cecli/sessions/ directory as JSON files.\n"
|
|
45
|
+
help_text += (
|
|
46
|
+
"When the session has sub-agents it is saved as a folder holding the primary"
|
|
47
|
+
" and each sub-agent payload.\n"
|
|
48
|
+
)
|
|
45
49
|
help_text += "Use /list-sessions to see saved sessions and /load-session to load them.\n"
|
|
46
50
|
help_text += (
|
|
47
51
|
"\nNote: Existing session names will be shown for tab completion to help prevent"
|
|
@@ -297,7 +297,7 @@ def apply_contextual_marker(
|
|
|
297
297
|
range_end: str,
|
|
298
298
|
num_lines: int,
|
|
299
299
|
) -> tuple[list[int], list[int]]:
|
|
300
|
-
"""Expand range using @C
|
|
300
|
+
"""Expand range using @C<num>, @P<num>, or @N<num> contextual markers.
|
|
301
301
|
|
|
302
302
|
Requires exactly one start match. Raises ValueError when the number
|
|
303
303
|
of start matches is not 1 (the caller is expected to format the error
|
|
@@ -333,7 +333,9 @@ def _closest_provider_match(sources, provider, route):
|
|
|
333
333
|
|
|
334
334
|
Raw sources are enumerated via a lightweight top-level key scan (a string
|
|
335
335
|
pass, never a full parse) and only ``provider/``-prefixed keys are parsed
|
|
336
|
-
for scoring, so the fallback stays memory friendly.
|
|
336
|
+
for scoring, so the fallback stays memory friendly. A candidate with no
|
|
337
|
+
shared leading characters is not a match: returning it would let an
|
|
338
|
+
unrelated route inherit an arbitrary sibling record's wire mode.
|
|
337
339
|
"""
|
|
338
340
|
if not provider:
|
|
339
341
|
return None
|
|
@@ -376,7 +378,7 @@ def _closest_provider_match(sources, provider, route):
|
|
|
376
378
|
best_score = score
|
|
377
379
|
best = record
|
|
378
380
|
|
|
379
|
-
return best
|
|
381
|
+
return best if best_score > 0 else None
|
|
380
382
|
|
|
381
383
|
|
|
382
384
|
def _prefix_score(left, right):
|
|
@@ -399,6 +399,10 @@ class ModelProviderManager:
|
|
|
399
399
|
)
|
|
400
400
|
response.raise_for_status()
|
|
401
401
|
return response.json()
|
|
402
|
+
except requests.exceptions.ConnectionError:
|
|
403
|
+
# Unreachable endpoint (e.g. no local Ollama server at
|
|
404
|
+
# localhost:11434): stay silent and contribute no models.
|
|
405
|
+
return None
|
|
402
406
|
except Exception as ex:
|
|
403
407
|
print(f"Failed to fetch {provider} model list: {ex}")
|
|
404
408
|
return None
|
|
@@ -89,10 +89,27 @@ class AgentProxy:
|
|
|
89
89
|
self._coder,
|
|
90
90
|
mcp_server=server,
|
|
91
91
|
mcp_tool_name=schema_name,
|
|
92
|
+
tool_schema=tool_schema,
|
|
92
93
|
)
|
|
93
94
|
|
|
94
95
|
raise ValueError(f"Unknown tool: '{tool_name}'")
|
|
95
96
|
|
|
97
|
+
def get_tool_schema(self, tool_name: str) -> dict[str, Any] | None:
|
|
98
|
+
"""Return a copy of the full function-calling schema for a tool.
|
|
99
|
+
|
|
100
|
+
Returns ``None`` when the tool has no schema. Unknown or disallowed
|
|
101
|
+
tools raise the same errors as ``get_tool``.
|
|
102
|
+
"""
|
|
103
|
+
return self.get_tool(tool_name).get_schema()
|
|
104
|
+
|
|
105
|
+
def get_tool_signature(self, tool_name: str) -> str | None:
|
|
106
|
+
"""Return a readable Python-style call signature for a tool.
|
|
107
|
+
|
|
108
|
+
Optional parameters without a declared default use ``...`` to show
|
|
109
|
+
that they may be omitted without implying a value such as ``None``.
|
|
110
|
+
"""
|
|
111
|
+
return self.get_tool(tool_name).get_signature()
|
|
112
|
+
|
|
96
113
|
def _find_mcp_server(self, server_name: str, server_prefix: str) -> Any:
|
|
97
114
|
if not hasattr(self._coder, "mcp_manager") or not self._coder.mcp_manager:
|
|
98
115
|
return None
|
|
@@ -547,7 +547,7 @@ def build_orchestration_context_block(agent_config: dict[str, Any]) -> str | Non
|
|
|
547
547
|
context = """<context name="orchestration" from="agent">
|
|
548
548
|
The `Orchestrate` tool runs Python in a sandbox where you can script other tools programmatically.
|
|
549
549
|
Use it for batch, loop-heavy, and repeat-able workflows.
|
|
550
|
-
|
|
550
|
+
The sandbox is stateless between calls — variables don't persist. To carry values across calls, use `state` (per-agent) or `shared_state` (cross-agent).
|
|
551
551
|
You may need to explore the below primitives to understand how to use the sandbox effectively.
|
|
552
552
|
|
|
553
553
|
### Primitives
|
|
@@ -556,11 +556,13 @@ You may need to explore the below primitives to understand how to use the sandbo
|
|
|
556
556
|
|-----------|--------------|
|
|
557
557
|
| `Agent.allowed_methods()` / `Agent.allowed_tools()` | List helper methods and available tools |
|
|
558
558
|
| `Agent.get_tool(name)` | Get a tool proxy (case-insensitive; `Local--` / `{{Server Name}}--` prefixes ok) |
|
|
559
|
+
| `Agent.get_tool_schema(name)` | Return a copy of the full function-calling JSON schema |
|
|
560
|
+
| `Agent.get_tool_signature(name)` | Return a readable Python-style signature; optional params without defaults appear as `= ...` |
|
|
559
561
|
| `await tool.call(**params)` | Run a tool; returns `{"result": [...], "errors": [...], "details": [...]}`, items with shape `{"content", "_"}` |
|
|
560
562
|
| `Agent.peek(result)` / `Agent.get_value(result, path, default?)` | Inspect / extract values from tool results. path is dot-separated string |
|
|
561
563
|
| `Agent.resolve_regions(path, specs)` / `Agent.edit_region(path, edits)` | Resolve text boundaries once, then apply edits |
|
|
562
564
|
| `gather(**tasks)` | Run tasks concurrently; results expose `.key` and `["key"]` |
|
|
563
|
-
| `state` / `shared_state` | Persistent dicts; `state.get(k)` falls back to `shared_state
|
|
565
|
+
| `state` / `shared_state` | Persistent dicts that survive between Orchestrate calls; `state.get(k)` falls back to `shared_state`. Use these for anything you need to reuse in a later call |
|
|
564
566
|
| `print(...)` / `reset(local_vars=True, state=False)` | Emit output / clear namespaces |
|
|
565
567
|
| `typeof(x)`, `isinstance(x, t)`, `hasattr(x, n)`, `repr(x)`, `vars(obj)` | Type inspection and debugging |
|
|
566
568
|
|
|
@@ -12,6 +12,7 @@ import json
|
|
|
12
12
|
import pathlib
|
|
13
13
|
import re as _re_mod
|
|
14
14
|
import traceback as _tb_mod
|
|
15
|
+
from collections.abc import Mapping
|
|
15
16
|
from typing import Any
|
|
16
17
|
|
|
17
18
|
# ---------------------------------------------------------------------------
|
|
@@ -139,12 +140,12 @@ async def _safe_sleep(seconds: float) -> None:
|
|
|
139
140
|
await asyncio.sleep(seconds)
|
|
140
141
|
|
|
141
142
|
|
|
142
|
-
class GatherResult:
|
|
143
|
-
"""
|
|
143
|
+
class GatherResult(Mapping[str, Any]):
|
|
144
|
+
"""Read-only mapping of named ``gather()`` task results.
|
|
144
145
|
|
|
145
|
-
Supports
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
Supports standard mapping access (``results["task"]``, iteration over
|
|
147
|
+
keys, and ``keys()``, ``values()``, and ``items()``) plus attribute access
|
|
148
|
+
as a convenience. Use key access when task names may collide with methods.
|
|
148
149
|
"""
|
|
149
150
|
|
|
150
151
|
def __init__(self, results: dict[str, Any]) -> None:
|
|
@@ -192,7 +193,7 @@ class GatherResult:
|
|
|
192
193
|
|
|
193
194
|
def __iter__(self):
|
|
194
195
|
results = object.__getattribute__(self, "_results")
|
|
195
|
-
return iter(results
|
|
196
|
+
return iter(results)
|
|
196
197
|
|
|
197
198
|
def keys(self) -> Any:
|
|
198
199
|
results = object.__getattribute__(self, "_results")
|
|
@@ -225,12 +226,12 @@ async def _safe_gather(*args: Any, **named_awaitables: Any):
|
|
|
225
226
|
Safely execute multiple awaitables concurrently.
|
|
226
227
|
|
|
227
228
|
All awaitables must be passed as keyword arguments. Results are returned
|
|
228
|
-
as a ``GatherResult`` with attribute
|
|
229
|
+
as a ``GatherResult`` mapping with attribute access as a convenience:
|
|
229
230
|
|
|
230
231
|
results = await gather(read_a=task_a, grep_b=task_b)
|
|
231
|
-
print(results
|
|
232
|
-
print(results
|
|
233
|
-
|
|
232
|
+
print(results["read_a"]) # canonical mapping access
|
|
233
|
+
print(results.grep_b) # attribute convenience
|
|
234
|
+
list(results) # task names
|
|
234
235
|
|
|
235
236
|
Forces ``return_exceptions=True`` so that failures in one task
|
|
236
237
|
do not crash the entire batch. Exceptions are converted to
|
|
@@ -9,6 +9,7 @@ from __future__ import annotations
|
|
|
9
9
|
|
|
10
10
|
import asyncio
|
|
11
11
|
import json
|
|
12
|
+
from copy import deepcopy
|
|
12
13
|
from typing import Any
|
|
13
14
|
|
|
14
15
|
|
|
@@ -63,6 +64,7 @@ class ToolProxy:
|
|
|
63
64
|
tool_module: Any = None,
|
|
64
65
|
mcp_server: Any = None,
|
|
65
66
|
mcp_tool_name: str = "",
|
|
67
|
+
tool_schema: dict[str, Any] | None = None,
|
|
66
68
|
) -> None:
|
|
67
69
|
# Respect the per-coder tool includelist/excludelist filters
|
|
68
70
|
incl = getattr(coder, "registered_tools", {}).get("included", set())
|
|
@@ -78,6 +80,16 @@ class ToolProxy:
|
|
|
78
80
|
self._tool_module = tool_module
|
|
79
81
|
self._mcp_server = mcp_server
|
|
80
82
|
self._mcp_tool_name = mcp_tool_name
|
|
83
|
+
self._tool_schema = (
|
|
84
|
+
tool_schema if tool_schema is not None else getattr(tool_module, "SCHEMA", None)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
def get_schema(self) -> dict[str, Any] | None:
|
|
88
|
+
"""Return a deep copy of this tool's JSON schema, if available."""
|
|
89
|
+
if not isinstance(self._tool_schema, dict):
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
return deepcopy(self._tool_schema)
|
|
81
93
|
|
|
82
94
|
async def __call__(self, *args: Any, **kwargs: Any):
|
|
83
95
|
"""Make the proxy directly callable.
|
|
@@ -131,12 +143,79 @@ class ToolProxy:
|
|
|
131
143
|
|
|
132
144
|
return await self.call(**kwargs)
|
|
133
145
|
|
|
146
|
+
def get_signature(self) -> str | None:
|
|
147
|
+
"""Return a readable Python-style signature based on the JSON schema.
|
|
148
|
+
|
|
149
|
+
Type annotations are best-effort summaries; use the schema for exact
|
|
150
|
+
constraints. Optional parameters without defaults display as ``...``.
|
|
151
|
+
"""
|
|
152
|
+
schema = self._tool_schema
|
|
153
|
+
if not isinstance(schema, dict):
|
|
154
|
+
return None
|
|
155
|
+
|
|
156
|
+
function = schema.get("function", {})
|
|
157
|
+
if not isinstance(function, dict):
|
|
158
|
+
return None
|
|
159
|
+
|
|
160
|
+
parameters = function.get("parameters", {})
|
|
161
|
+
if not isinstance(parameters, dict):
|
|
162
|
+
return None
|
|
163
|
+
|
|
164
|
+
properties = parameters.get("properties", {})
|
|
165
|
+
if not isinstance(properties, dict):
|
|
166
|
+
return None
|
|
167
|
+
|
|
168
|
+
required = parameters.get("required", [])
|
|
169
|
+
required = set(required) if isinstance(required, list) else set()
|
|
170
|
+
signature_parameters = []
|
|
171
|
+
for name, property_schema in properties.items():
|
|
172
|
+
annotation = self._python_type_name(property_schema)
|
|
173
|
+
parameter = f"{name}: {annotation}"
|
|
174
|
+
if name not in required:
|
|
175
|
+
if isinstance(property_schema, dict) and "default" in property_schema:
|
|
176
|
+
parameter += f" = {property_schema['default']!r}"
|
|
177
|
+
else:
|
|
178
|
+
parameter += " = ..."
|
|
179
|
+
signature_parameters.append(parameter)
|
|
180
|
+
|
|
181
|
+
function_name = function.get("name") or self._tool_name
|
|
182
|
+
if signature_parameters:
|
|
183
|
+
return f"{function_name}(*, {', '.join(signature_parameters)})"
|
|
184
|
+
return f"{function_name}()"
|
|
185
|
+
|
|
186
|
+
@staticmethod
|
|
187
|
+
def _python_type_name(schema: Any) -> str:
|
|
188
|
+
"""Render common JSON Schema types as readable Python type names."""
|
|
189
|
+
if not isinstance(schema, dict):
|
|
190
|
+
return "Any"
|
|
191
|
+
|
|
192
|
+
schema_type = schema.get("type")
|
|
193
|
+
if isinstance(schema_type, list):
|
|
194
|
+
type_names = [ToolProxy._python_type_name({"type": item}) for item in schema_type]
|
|
195
|
+
return " | ".join(type_names)
|
|
196
|
+
|
|
197
|
+
type_names = {
|
|
198
|
+
"array": "list",
|
|
199
|
+
"boolean": "bool",
|
|
200
|
+
"integer": "int",
|
|
201
|
+
"number": "float",
|
|
202
|
+
"null": "None",
|
|
203
|
+
"object": "dict",
|
|
204
|
+
"string": "str",
|
|
205
|
+
}
|
|
206
|
+
if schema_type in type_names:
|
|
207
|
+
return type_names[schema_type]
|
|
208
|
+
|
|
209
|
+
alternatives = schema.get("anyOf") or schema.get("oneOf")
|
|
210
|
+
if isinstance(alternatives, list):
|
|
211
|
+
return " | ".join(ToolProxy._python_type_name(item) for item in alternatives)
|
|
212
|
+
|
|
213
|
+
return "Any"
|
|
214
|
+
|
|
134
215
|
def _get_param_names(self) -> list:
|
|
135
|
-
"""Extract
|
|
136
|
-
if self._tool_module is None:
|
|
137
|
-
return []
|
|
216
|
+
"""Extract parameter names in schema order for positional calls."""
|
|
138
217
|
try:
|
|
139
|
-
props = self.
|
|
218
|
+
props = self._tool_schema["function"]["parameters"]["properties"]
|
|
140
219
|
return list(props.keys())
|
|
141
220
|
except (KeyError, TypeError, AttributeError):
|
|
142
221
|
return []
|