cecli-dev 1.3.2rc3__tar.gz → 1.4.0__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.3.2rc3 → cecli_dev-1.4.0}/PKG-INFO +1 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/_version.py +3 -3
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/base_coder.py +37 -6
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/service.py +10 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/litellm_compat.py +10 -6
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/main.py +18 -7
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/models.py +168 -25
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/delegate.py +30 -9
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/app.py +1 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/agent-mode.md +1 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/subagents.md +1 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/scm_file_list.json +1 -0
- cecli_dev-1.4.0/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_main.py +32 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_delegate.py +52 -2
- cecli_dev-1.4.0/tests/unit/test_retry_backoff.py +536 -0
- cecli_dev-1.3.2rc3/cecli_dev.egg-info/scm_version.json +0 -8
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.dockerignore +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.flake8 +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.gitattributes +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.gitignore +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CHANGELOG.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CNAME +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/HISTORY.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/LICENSE.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/MANIFEST.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/README.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/README.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/docker.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/over_time.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/plot.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/plots.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/prompts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/__main__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/args.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/agent_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/add.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/code.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/core.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/git.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/help.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_queue.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_session.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/map.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/model.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/models.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/open.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/queue.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_queue.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/report.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/run.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/save.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/save_session.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/test.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/web.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/decoding.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/diffs.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/dump.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/editor.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/exceptions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/format_settings.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/help.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/help_pats.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/hashpos/transformations.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/chat.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/messages.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/runtime.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/lock_detect.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/loop_detect.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/pipeline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/agent_proxy.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/environment.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/safe_methods.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/orchestration/tool_proxy.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/paths.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/subagents.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/helpers/workspaces/workspace.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/history.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/http.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/io.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/linter.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/llm.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/server.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/mdstream.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/onboarding.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/repo.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/repomap.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/report.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-metadata.ext.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/resources/providers.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/scrape.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/sendchat.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/sessions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/signals.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/special.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/broadcast.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/command.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/grep.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/read_file.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/io.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/tui/worker.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/urls.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/utils.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/voice.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/waiting.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/watch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/package.json +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/docker/Dockerfile +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/pyproject.toml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/pytest.ini +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/common-constraints.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/requirements.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/requirements.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/30k-image.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/blame.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/homepage.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/issues.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/update-history.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/versionbump.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/setup.cfg +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/shim.pyproject.toml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_file_system_service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/coders/test_tool_call_consolidation.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_open.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/help/test_help.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_cache_control.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_gemini_auth.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_loop_detect.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/test_orchestration.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_paths.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_subagents.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/helpers/workspaces/test_workspace.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_manager_retry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/mcp/test_server_sdk_compat.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/test_requests.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_grep.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tools/validations.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.3.2rc3 → cecli_dev-1.4.0}/tests/unit/test_ws_server.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.4.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 4, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g1933dd2b7'
|
|
@@ -474,14 +474,14 @@ class Coder(metaclass=UsageMeta):
|
|
|
474
474
|
self._inherited_tools = True
|
|
475
475
|
|
|
476
476
|
self.interrupt_event = ThreadSafeEvent()
|
|
477
|
-
self.uuid = str(generate_unique_id())
|
|
477
|
+
self.uuid = str(generate_unique_id()).split("-")[0]
|
|
478
478
|
self.reflected_message = None
|
|
479
479
|
|
|
480
480
|
if uuid:
|
|
481
|
-
self.uuid = str(uuid)
|
|
481
|
+
self.uuid = str(uuid).split("-")[0]
|
|
482
482
|
|
|
483
483
|
if parent_uuid:
|
|
484
|
-
self.parent_uuid = str(parent_uuid)
|
|
484
|
+
self.parent_uuid = str(parent_uuid).split("-")[0]
|
|
485
485
|
|
|
486
486
|
self.map_cache_dir = map_cache_dir
|
|
487
487
|
|
|
@@ -4962,13 +4962,44 @@ class Coder(metaclass=UsageMeta):
|
|
|
4962
4962
|
return edits
|
|
4963
4963
|
|
|
4964
4964
|
def local_agent_folder(self, path):
|
|
4965
|
+
primary_uuid = self._resolve_primary_agent_uuid()
|
|
4966
|
+
primary_root = os.path.abspath(self.primary_root)
|
|
4967
|
+
|
|
4968
|
+
stripped = path.lstrip("/")
|
|
4969
|
+
|
|
4970
|
+
if self.uuid == primary_uuid:
|
|
4971
|
+
rel_dir = f"{primary_root}/.cecli/agents/{GLOBAL_DATE}/{primary_uuid}"
|
|
4972
|
+
else:
|
|
4973
|
+
rel_dir = f"{primary_root}/.cecli/agents/{GLOBAL_DATE}/{primary_uuid}/s/{self.uuid}"
|
|
4974
|
+
|
|
4965
4975
|
os.makedirs(
|
|
4966
|
-
self.abs_root_path(
|
|
4976
|
+
self.abs_root_path(rel_dir),
|
|
4967
4977
|
exist_ok=True,
|
|
4968
4978
|
)
|
|
4969
4979
|
|
|
4970
|
-
|
|
4971
|
-
|
|
4980
|
+
return f"{rel_dir}/{stripped}"
|
|
4981
|
+
|
|
4982
|
+
def _resolve_primary_agent_uuid(self):
|
|
4983
|
+
"""Return the primary coder's uuid for this session (memoized).
|
|
4984
|
+
|
|
4985
|
+
All agents spawned under a primary coder share the same base folder,
|
|
4986
|
+
so sub-agent files nest under one location regardless of delegation
|
|
4987
|
+
depth. Falls back to this coder's own uuid when the service is
|
|
4988
|
+
unavailable (e.g. in unit tests).
|
|
4989
|
+
"""
|
|
4990
|
+
if getattr(self, "_primary_agent_uuid", None):
|
|
4991
|
+
return self._primary_agent_uuid
|
|
4992
|
+
|
|
4993
|
+
primary_uuid = self.uuid
|
|
4994
|
+
try:
|
|
4995
|
+
from cecli.helpers.agents.service import AgentService
|
|
4996
|
+
|
|
4997
|
+
primary_uuid = AgentService.get_primary_uuid() or self.uuid
|
|
4998
|
+
except Exception:
|
|
4999
|
+
pass
|
|
5000
|
+
|
|
5001
|
+
self._primary_agent_uuid = primary_uuid
|
|
5002
|
+
return primary_uuid
|
|
4972
5003
|
|
|
4973
5004
|
async def auto_save_session(self, force=False):
|
|
4974
5005
|
"""Automatically save the current session to {auto-save-session-name}.json."""
|
|
@@ -137,6 +137,15 @@ class AgentService:
|
|
|
137
137
|
"""Return the global sub-agent registry (name -> config)."""
|
|
138
138
|
return cls._global_registry
|
|
139
139
|
|
|
140
|
+
@classmethod
|
|
141
|
+
def get_primary_uuid(cls) -> Optional[str]:
|
|
142
|
+
"""Return the primary coder's uuid for the current session (memoized).
|
|
143
|
+
|
|
144
|
+
Fixed on the first :meth:`get_instance` call, so every agent spawned
|
|
145
|
+
in a session resolves to the same shared base uuid.
|
|
146
|
+
"""
|
|
147
|
+
return cls._primary_agent_uuid
|
|
148
|
+
|
|
140
149
|
@classmethod
|
|
141
150
|
def get_all_agents(cls) -> List[Any]:
|
|
142
151
|
"""Return all live coder instances tracked in the global uuid map.
|
|
@@ -576,7 +585,7 @@ class AgentService:
|
|
|
576
585
|
|
|
577
586
|
async with self._get_lock(self._spawn_locks, parent_coder.uuid):
|
|
578
587
|
self._check_max_sub_agents()
|
|
579
|
-
new_uuid = str(uuid4())
|
|
588
|
+
new_uuid = str(uuid4()).split("-")[0]
|
|
580
589
|
|
|
581
590
|
from cecli.coders import Coder
|
|
582
591
|
|
|
@@ -395,6 +395,8 @@ class _FacadeException(Exception):
|
|
|
395
395
|
) -> None:
|
|
396
396
|
super().__init__(message or "")
|
|
397
397
|
self.status_code = status_code
|
|
398
|
+
for k, v in kwargs.items():
|
|
399
|
+
setattr(self, k, v)
|
|
398
400
|
|
|
399
401
|
|
|
400
402
|
class APIConnectionError(_FacadeException):
|
|
@@ -508,21 +510,23 @@ def _translate_http_error(err: httpx.HTTPStatusError) -> _FacadeException:
|
|
|
508
510
|
if status == 400 and any(
|
|
509
511
|
token in body for token in ("context", "context_length", "maximum context")
|
|
510
512
|
):
|
|
511
|
-
return ContextWindowExceededError(
|
|
513
|
+
return ContextWindowExceededError(
|
|
514
|
+
message=message, status_code=status, response=err.response
|
|
515
|
+
)
|
|
512
516
|
|
|
513
517
|
if status in (401, 403):
|
|
514
|
-
return AuthenticationError(message=message, status_code=status)
|
|
518
|
+
return AuthenticationError(message=message, status_code=status, response=err.response)
|
|
515
519
|
|
|
516
520
|
if status == 404:
|
|
517
|
-
return NotFoundError(message=message, status_code=status)
|
|
521
|
+
return NotFoundError(message=message, status_code=status, response=err.response)
|
|
518
522
|
|
|
519
523
|
if status == 429:
|
|
520
|
-
return RateLimitError(message=message, status_code=status)
|
|
524
|
+
return RateLimitError(message=message, status_code=status, response=err.response)
|
|
521
525
|
|
|
522
526
|
if status >= 500:
|
|
523
|
-
return InternalServerError(message=message, status_code=status)
|
|
527
|
+
return InternalServerError(message=message, status_code=status, response=err.response)
|
|
524
528
|
|
|
525
|
-
return APIError(message=message, status_code=status)
|
|
529
|
+
return APIError(message=message, status_code=status, response=err.response)
|
|
526
530
|
|
|
527
531
|
|
|
528
532
|
# ---------------------------------------------------------------------------
|
|
@@ -1424,7 +1424,10 @@ async def main_async(
|
|
|
1424
1424
|
pre_init_io.tool_output()
|
|
1425
1425
|
webbrowser.open(urls.release_notes)
|
|
1426
1426
|
return await graceful_exit(coder)
|
|
1427
|
-
elif args.show_release_notes is None and is_first_run:
|
|
1427
|
+
elif args.show_release_notes is None and is_first_run and not args.yes_always:
|
|
1428
|
+
# Suppress the first-run release-notes prompt when --yes-always is set,
|
|
1429
|
+
# so automated/headless runs don't have the browser hijacked by an
|
|
1430
|
+
# auto-confirmed offer_url. Explicit --show-release-notes still opens.
|
|
1428
1431
|
pre_init_io.tool_output()
|
|
1429
1432
|
await pre_init_io.offer_url(
|
|
1430
1433
|
urls.release_notes,
|
|
@@ -1781,13 +1784,21 @@ async def graceful_exit(coder=None, exit_code=0):
|
|
|
1781
1784
|
if (now - mtime) > week_seconds:
|
|
1782
1785
|
shutil.rmtree(agent_folder, ignore_errors=True)
|
|
1783
1786
|
else:
|
|
1784
|
-
#
|
|
1785
|
-
for
|
|
1786
|
-
|
|
1787
|
-
|
|
1787
|
+
# Find all nested subdirectories inside this agent folder
|
|
1788
|
+
all_subdirs = [d for d in agent_folder.rglob("*") if d.is_dir()]
|
|
1789
|
+
|
|
1790
|
+
# Sort them by depth (deepest first) so child dirs are processed before parents
|
|
1791
|
+
all_subdirs.sort(key=lambda x: len(x.parts), reverse=True)
|
|
1792
|
+
|
|
1793
|
+
for sub_folder in all_subdirs:
|
|
1794
|
+
try:
|
|
1795
|
+
# rmdir() safely fails if a file is present
|
|
1796
|
+
# any() checks if the directory has any files or remaining folders
|
|
1797
|
+
if not any(sub_folder.iterdir()):
|
|
1788
1798
|
sub_folder.rmdir()
|
|
1789
|
-
|
|
1790
|
-
|
|
1799
|
+
except OSError:
|
|
1800
|
+
pass
|
|
1801
|
+
|
|
1791
1802
|
except (OSError, PermissionError):
|
|
1792
1803
|
pass
|
|
1793
1804
|
except Exception:
|
|
@@ -12,12 +12,15 @@ from uuid import uuid4 as generate_unique_id
|
|
|
12
12
|
|
|
13
13
|
import yaml
|
|
14
14
|
|
|
15
|
-
from cecli import __version__
|
|
15
|
+
from cecli import __version__, utils
|
|
16
16
|
from cecli.decoding import safe_open
|
|
17
17
|
from cecli.dump import dump
|
|
18
18
|
from cecli.exceptions import LiteLLMExceptions
|
|
19
19
|
from cecli.helpers import coroutines, nested
|
|
20
|
-
from cecli.helpers.file_searcher import
|
|
20
|
+
from cecli.helpers.file_searcher import (
|
|
21
|
+
generate_search_path_list,
|
|
22
|
+
handle_core_files,
|
|
23
|
+
)
|
|
21
24
|
from cecli.helpers.model_config import get_default_config
|
|
22
25
|
from cecli.helpers.model_config.utils import get_entry_from_raw
|
|
23
26
|
from cecli.helpers.model_providers import ModelProviderManager
|
|
@@ -289,7 +292,9 @@ class ModelInfoManager:
|
|
|
289
292
|
import re
|
|
290
293
|
|
|
291
294
|
if re.search(
|
|
292
|
-
f"The model\\s*.*{re.escape(url_part)}.* is not available",
|
|
295
|
+
f"The model\\s*.*{re.escape(url_part)}.* is not available",
|
|
296
|
+
html,
|
|
297
|
+
re.IGNORECASE,
|
|
293
298
|
):
|
|
294
299
|
print(f"\x1b[91mError: Model '{url_part}' is not available\x1b[0m")
|
|
295
300
|
return {}
|
|
@@ -497,7 +502,8 @@ class Model(ModelSettings):
|
|
|
497
502
|
"editor_model", nested.getter(from_model, "editor_model", None)
|
|
498
503
|
)
|
|
499
504
|
editor_edit_format = kwargs.get(
|
|
500
|
-
"editor_edit_format",
|
|
505
|
+
"editor_edit_format",
|
|
506
|
+
nested.getter(from_model, "editor_edit_format", None),
|
|
501
507
|
)
|
|
502
508
|
else:
|
|
503
509
|
agent_model = kwargs.get("agent_model", None)
|
|
@@ -538,7 +544,8 @@ class Model(ModelSettings):
|
|
|
538
544
|
self.editor_model = None
|
|
539
545
|
self.agent_model = None
|
|
540
546
|
self.extra_model_settings = next(
|
|
541
|
-
(ms for ms in MODEL_SETTINGS if ms.name == "cecli/extra_params"),
|
|
547
|
+
(ms for ms in MODEL_SETTINGS if ms.name == "cecli/extra_params"),
|
|
548
|
+
None,
|
|
542
549
|
)
|
|
543
550
|
self.info = self.get_model_info(model)
|
|
544
551
|
self.model_config_defaults = get_default_config(
|
|
@@ -654,18 +661,24 @@ class Model(ModelSettings):
|
|
|
654
661
|
for key, value in config.items():
|
|
655
662
|
if key in ("agent", "model_settings", "model-settings"):
|
|
656
663
|
if not isinstance(value, dict):
|
|
657
|
-
raise ValueError(
|
|
664
|
+
raise ValueError(
|
|
665
|
+
f"override_kwargs '{key}' must be a dict, got" f" {type(value)}"
|
|
666
|
+
)
|
|
658
667
|
|
|
659
668
|
for setting_key, setting_value in value.items():
|
|
660
669
|
if setting_key not in valid_model_settings_fields:
|
|
661
670
|
raise ValueError(
|
|
662
|
-
f"Invalid model_settings key '{setting_key}'. "
|
|
663
|
-
f"
|
|
671
|
+
f"Invalid model_settings key '{setting_key}'. Must"
|
|
672
|
+
f" be one of: {sorted(valid_model_settings_fields)}"
|
|
664
673
|
)
|
|
665
674
|
|
|
666
675
|
setattr(self, setting_key, setting_value)
|
|
667
676
|
|
|
668
|
-
elif has_structured_keys and key in (
|
|
677
|
+
elif has_structured_keys and key in (
|
|
678
|
+
"api",
|
|
679
|
+
"api_settings",
|
|
680
|
+
"api-settings",
|
|
681
|
+
):
|
|
669
682
|
# api_settings: merge each sub-key into extra_params
|
|
670
683
|
if not isinstance(value, dict):
|
|
671
684
|
raise ValueError(f"override_kwargs '{key}' must be a dict, got {type(value)}")
|
|
@@ -687,11 +700,18 @@ class Model(ModelSettings):
|
|
|
687
700
|
if isinstance(api_value, dict) and isinstance(
|
|
688
701
|
self.extra_params.get(api_key), dict
|
|
689
702
|
):
|
|
690
|
-
self.extra_params[api_key] = {
|
|
703
|
+
self.extra_params[api_key] = {
|
|
704
|
+
**self.extra_params[api_key],
|
|
705
|
+
**api_value,
|
|
706
|
+
}
|
|
691
707
|
else:
|
|
692
708
|
self.extra_params[api_key] = api_value
|
|
693
709
|
|
|
694
|
-
elif has_structured_keys and key in (
|
|
710
|
+
elif has_structured_keys and key in (
|
|
711
|
+
"llm",
|
|
712
|
+
"llm_settings",
|
|
713
|
+
"llm-settings",
|
|
714
|
+
):
|
|
695
715
|
# llm_settings: merge into self.info
|
|
696
716
|
if not isinstance(value, dict):
|
|
697
717
|
raise ValueError(f"override_kwargs '{key}' must be a dict, got {type(value)}")
|
|
@@ -1213,7 +1233,10 @@ class Model(ModelSettings):
|
|
|
1213
1233
|
elif "reasoning" in extra_body:
|
|
1214
1234
|
del extra_body["reasoning"]
|
|
1215
1235
|
elif num_tokens > 0:
|
|
1216
|
-
extra_body["thinking"] = {
|
|
1236
|
+
extra_body["thinking"] = {
|
|
1237
|
+
"type": "enabled",
|
|
1238
|
+
"budget_tokens": num_tokens,
|
|
1239
|
+
}
|
|
1217
1240
|
# extra_body is authoritative; drop any legacy top-level copy.
|
|
1218
1241
|
self.extra_params.pop("thinking", None)
|
|
1219
1242
|
else:
|
|
@@ -1322,7 +1345,8 @@ class Model(ModelSettings):
|
|
|
1322
1345
|
|
|
1323
1346
|
if effective_tools:
|
|
1324
1347
|
sorted_tools = sorted(
|
|
1325
|
-
effective_tools,
|
|
1348
|
+
effective_tools,
|
|
1349
|
+
key=lambda x: x.get("function", {}).get("name", "Invalid Name"),
|
|
1326
1350
|
)
|
|
1327
1351
|
|
|
1328
1352
|
try:
|
|
@@ -1352,7 +1376,10 @@ class Model(ModelSettings):
|
|
|
1352
1376
|
if "name" in function:
|
|
1353
1377
|
tool_name = function.get("name")
|
|
1354
1378
|
if tool_name:
|
|
1355
|
-
kwargs["tool_choice"] = {
|
|
1379
|
+
kwargs["tool_choice"] = {
|
|
1380
|
+
"type": "function",
|
|
1381
|
+
"function": {"name": tool_name},
|
|
1382
|
+
}
|
|
1356
1383
|
|
|
1357
1384
|
if self.extra_params:
|
|
1358
1385
|
kwargs.update(self.extra_params)
|
|
@@ -1456,10 +1483,15 @@ class Model(ModelSettings):
|
|
|
1456
1483
|
if ex_info.name == "ServiceUnavailableError":
|
|
1457
1484
|
should_retry = should_retry or self.retry_on_unavailable
|
|
1458
1485
|
|
|
1459
|
-
|
|
1486
|
+
custom_retry_delay = self._extract_retry_delay(err)
|
|
1487
|
+
if custom_retry_delay is not None:
|
|
1488
|
+
retry_delay = custom_retry_delay
|
|
1489
|
+
should_retry = True
|
|
1490
|
+
elif should_retry:
|
|
1460
1491
|
retry_delay *= self.retry_backoff_factor
|
|
1461
|
-
|
|
1462
|
-
|
|
1492
|
+
|
|
1493
|
+
if retry_delay > self.retry_timeout:
|
|
1494
|
+
should_retry = False
|
|
1463
1495
|
|
|
1464
1496
|
# Check for non-retryable RateLimitError within ServiceUnavailableError
|
|
1465
1497
|
if (
|
|
@@ -1550,10 +1582,16 @@ class Model(ModelSettings):
|
|
|
1550
1582
|
if ex_info.description:
|
|
1551
1583
|
print(ex_info.description)
|
|
1552
1584
|
should_retry = ex_info.retry
|
|
1553
|
-
|
|
1585
|
+
custom_retry_delay = self._extract_retry_delay(err)
|
|
1586
|
+
if custom_retry_delay is not None:
|
|
1587
|
+
retry_delay = custom_retry_delay
|
|
1588
|
+
should_retry = True
|
|
1589
|
+
elif should_retry:
|
|
1554
1590
|
retry_delay *= 2
|
|
1555
|
-
|
|
1556
|
-
|
|
1591
|
+
|
|
1592
|
+
if retry_delay > RETRY_TIMEOUT:
|
|
1593
|
+
should_retry = False
|
|
1594
|
+
|
|
1557
1595
|
if not should_retry:
|
|
1558
1596
|
return None
|
|
1559
1597
|
print(f"Retrying in {retry_delay:.1f} seconds...")
|
|
@@ -1574,7 +1612,7 @@ class Model(ModelSettings):
|
|
|
1574
1612
|
finish_reason="stop",
|
|
1575
1613
|
index=0,
|
|
1576
1614
|
message=litellm.Message(
|
|
1577
|
-
content="Model API Response Error. Please retry the previous request"
|
|
1615
|
+
content=("Model API Response Error. Please retry the previous request")
|
|
1578
1616
|
),
|
|
1579
1617
|
)
|
|
1580
1618
|
],
|
|
@@ -1584,6 +1622,104 @@ class Model(ModelSettings):
|
|
|
1584
1622
|
async def model_error_response_stream(self):
|
|
1585
1623
|
yield self.model_error_response()
|
|
1586
1624
|
|
|
1625
|
+
def _extract_retry_delay(self, err):
|
|
1626
|
+
"""
|
|
1627
|
+
Extract suggested retry delay (in seconds) from a 429 rate-limit error.
|
|
1628
|
+
|
|
1629
|
+
1. Gemini payload body: Google RPC APIs return `google.rpc.RetryInfo` with
|
|
1630
|
+
a `retryDelay` field (e.g. "15.2s") inside the `error.details` array.
|
|
1631
|
+
2. HTTP headers fallback: Standard providers (OpenAI, Anthropic, Groq, etc.)
|
|
1632
|
+
supply `retry-after` (seconds) or `retry-after-ms` (milliseconds) headers.
|
|
1633
|
+
"""
|
|
1634
|
+
status_code = nested.getter(err, ["status_code", "response.status_code"], None)
|
|
1635
|
+
if isinstance(status_code, (int, str, float)) and str(status_code) != "429":
|
|
1636
|
+
return None
|
|
1637
|
+
|
|
1638
|
+
# 1. Check Gemini response payload for google.rpc.RetryInfo retryDelay
|
|
1639
|
+
candidates = []
|
|
1640
|
+
response = nested.getter(err, "response")
|
|
1641
|
+
if callable(getattr(response, "json", None)):
|
|
1642
|
+
try:
|
|
1643
|
+
data = response.json()
|
|
1644
|
+
if isinstance(data, dict):
|
|
1645
|
+
candidates.append(data)
|
|
1646
|
+
except Exception:
|
|
1647
|
+
pass
|
|
1648
|
+
|
|
1649
|
+
sources = [
|
|
1650
|
+
response,
|
|
1651
|
+
nested.getter(err, "message"),
|
|
1652
|
+
nested.getter(err, "body"),
|
|
1653
|
+
nested.getter(err, "error"),
|
|
1654
|
+
nested.getter(err, "raw_response"),
|
|
1655
|
+
str(err) if isinstance(err, Exception) else None,
|
|
1656
|
+
err,
|
|
1657
|
+
]
|
|
1658
|
+
|
|
1659
|
+
for src in sources:
|
|
1660
|
+
if not src:
|
|
1661
|
+
continue
|
|
1662
|
+
if isinstance(src, dict):
|
|
1663
|
+
candidates.append(src)
|
|
1664
|
+
elif isinstance(src, (str, bytes)):
|
|
1665
|
+
text_str = src.decode("utf-8", errors="ignore") if isinstance(src, bytes) else src
|
|
1666
|
+
for chunk in utils.split_concatenated_json(text_str):
|
|
1667
|
+
try:
|
|
1668
|
+
parsed = json.loads(chunk)
|
|
1669
|
+
if isinstance(parsed, dict):
|
|
1670
|
+
candidates.append(parsed)
|
|
1671
|
+
except Exception:
|
|
1672
|
+
pass
|
|
1673
|
+
else:
|
|
1674
|
+
text = nested.getter(src, ["text", "content"])
|
|
1675
|
+
if isinstance(text, (str, bytes)):
|
|
1676
|
+
text_str = (
|
|
1677
|
+
text.decode("utf-8", errors="ignore") if isinstance(text, bytes) else text
|
|
1678
|
+
)
|
|
1679
|
+
for chunk in utils.split_concatenated_json(text_str):
|
|
1680
|
+
try:
|
|
1681
|
+
parsed = json.loads(chunk)
|
|
1682
|
+
if isinstance(parsed, dict):
|
|
1683
|
+
candidates.append(parsed)
|
|
1684
|
+
except Exception:
|
|
1685
|
+
pass
|
|
1686
|
+
|
|
1687
|
+
for candidate in candidates:
|
|
1688
|
+
if not isinstance(candidate, dict):
|
|
1689
|
+
continue
|
|
1690
|
+
|
|
1691
|
+
details = nested.getter(candidate, "error.details")
|
|
1692
|
+
if isinstance(details, list):
|
|
1693
|
+
for item in details:
|
|
1694
|
+
delay_val = nested.getter(item, "retryDelay")
|
|
1695
|
+
if delay_val is not None:
|
|
1696
|
+
delay_str = str(delay_val).strip()
|
|
1697
|
+
if delay_str.endswith("s"):
|
|
1698
|
+
delay_str = delay_str[:-1]
|
|
1699
|
+
try:
|
|
1700
|
+
return float(delay_str)
|
|
1701
|
+
except (ValueError, TypeError):
|
|
1702
|
+
pass
|
|
1703
|
+
|
|
1704
|
+
# 2. Check HTTP headers fallback (retry-after, retry-after-ms)
|
|
1705
|
+
headers = nested.getter(err, ["response.headers", "headers"], None)
|
|
1706
|
+
if headers is not None:
|
|
1707
|
+
retry_after = nested.getter(headers, ["retry-after"], None)
|
|
1708
|
+
if retry_after is not None:
|
|
1709
|
+
try:
|
|
1710
|
+
return float(str(retry_after).strip())
|
|
1711
|
+
except (ValueError, TypeError):
|
|
1712
|
+
pass
|
|
1713
|
+
|
|
1714
|
+
retry_after_ms = nested.getter(headers, ["retry-after-ms"], None)
|
|
1715
|
+
if retry_after_ms is not None:
|
|
1716
|
+
try:
|
|
1717
|
+
return float(str(retry_after_ms).strip()) / 1000.0
|
|
1718
|
+
except (ValueError, TypeError):
|
|
1719
|
+
pass
|
|
1720
|
+
|
|
1721
|
+
return None
|
|
1722
|
+
|
|
1587
1723
|
def _log_messages(self, messages, name="message"):
|
|
1588
1724
|
"""
|
|
1589
1725
|
Log conversation messages to a JSON file.
|
|
@@ -1591,7 +1727,11 @@ class Model(ModelSettings):
|
|
|
1591
1727
|
os.makedirs(".cecli/logs/messages", exist_ok=True)
|
|
1592
1728
|
with safe_open(f".cecli/logs/messages/{name}-{time.time()}.log", "w") as f:
|
|
1593
1729
|
json.dump(
|
|
1594
|
-
messages,
|
|
1730
|
+
messages,
|
|
1731
|
+
f,
|
|
1732
|
+
indent=4,
|
|
1733
|
+
ensure_ascii=False,
|
|
1734
|
+
default=lambda o: "<not serializable>",
|
|
1595
1735
|
)
|
|
1596
1736
|
|
|
1597
1737
|
def _log_request(self, model_call_dict):
|
|
@@ -1691,8 +1831,8 @@ async def sanity_check_model(io, model):
|
|
|
1691
1831
|
io.tool_output(f"- {key}: {status}")
|
|
1692
1832
|
if platform.system() == "Windows":
|
|
1693
1833
|
io.tool_output(
|
|
1694
|
-
"Note: You may need to restart your terminal or command prompt
|
|
1695
|
-
" effect."
|
|
1834
|
+
"Note: You may need to restart your terminal or command prompt"
|
|
1835
|
+
" for `setx` to take effect."
|
|
1696
1836
|
)
|
|
1697
1837
|
elif not model.keys_in_environment:
|
|
1698
1838
|
show = True
|
|
@@ -1721,7 +1861,10 @@ async def check_for_dependencies(io, model_name):
|
|
|
1721
1861
|
"""
|
|
1722
1862
|
if model_name.startswith("bedrock/"):
|
|
1723
1863
|
await check_pip_install_extra(
|
|
1724
|
-
io,
|
|
1864
|
+
io,
|
|
1865
|
+
"boto3",
|
|
1866
|
+
"AWS Bedrock models require the boto3 package.",
|
|
1867
|
+
["boto3"],
|
|
1725
1868
|
)
|
|
1726
1869
|
elif model_name.startswith("vertex_ai/"):
|
|
1727
1870
|
await check_pip_install_extra(
|
|
@@ -49,6 +49,13 @@ class Tool(BaseTool):
|
|
|
49
49
|
" If false, wait for the result."
|
|
50
50
|
),
|
|
51
51
|
},
|
|
52
|
+
"persist": {
|
|
53
|
+
"type": "boolean",
|
|
54
|
+
"default": False,
|
|
55
|
+
"description": (
|
|
56
|
+
"If true, keep the sub-agent active after the task is complete."
|
|
57
|
+
),
|
|
58
|
+
},
|
|
52
59
|
},
|
|
53
60
|
"required": ["name", "prompt"],
|
|
54
61
|
},
|
|
@@ -69,7 +76,7 @@ class Tool(BaseTool):
|
|
|
69
76
|
|
|
70
77
|
if not delegations or not isinstance(delegations, list):
|
|
71
78
|
response.append_error(
|
|
72
|
-
"'delegations' parameter must be a non-empty array of {name, prompt, async} objects."
|
|
79
|
+
"'delegations' parameter must be a non-empty array of {name, prompt, async, persist} objects."
|
|
73
80
|
)
|
|
74
81
|
return response
|
|
75
82
|
|
|
@@ -90,23 +97,35 @@ class Tool(BaseTool):
|
|
|
90
97
|
agent_service = AgentService.get_instance(coder)
|
|
91
98
|
|
|
92
99
|
# Separate async (fire-and-forget) and sync (blocking) delegations
|
|
93
|
-
async_delegations = [
|
|
100
|
+
async_delegations = [
|
|
101
|
+
(d["name"], d["prompt"], d.get("persist", False))
|
|
102
|
+
for d in delegations
|
|
103
|
+
if d.get("async", True)
|
|
104
|
+
]
|
|
94
105
|
sync_delegations = [
|
|
95
|
-
(d["name"], d["prompt"]
|
|
106
|
+
(d["name"], d["prompt"], d.get("persist", False))
|
|
107
|
+
for d in delegations
|
|
108
|
+
if not d.get("async", True)
|
|
96
109
|
]
|
|
97
110
|
|
|
98
|
-
async def _spawn_one(name: str, prompt: str) -> tuple:
|
|
111
|
+
async def _spawn_one(name: str, prompt: str, persist: bool) -> tuple:
|
|
99
112
|
"""Spawn a single sub-agent (fire-and-forget). Returns (name, uuid_or_error, error)."""
|
|
113
|
+
auto_reap = None if not persist else False
|
|
100
114
|
try:
|
|
101
|
-
new_coder, info = await agent_service.spawn(
|
|
115
|
+
new_coder, info = await agent_service.spawn(
|
|
116
|
+
name, prompt, parent=coder, auto_reap=auto_reap
|
|
117
|
+
)
|
|
102
118
|
return name, info.coder.uuid, None
|
|
103
119
|
except Exception as e:
|
|
104
120
|
return name, None, f"failed: {e}"
|
|
105
121
|
|
|
106
|
-
async def _invoke_one(name: str, prompt: str) -> tuple:
|
|
122
|
+
async def _invoke_one(name: str, prompt: str, persist: bool) -> tuple:
|
|
107
123
|
"""Invoke a single sub-agent (blocking). Returns (name, summary_or_error, error)."""
|
|
124
|
+
auto_reap = None if not persist else False
|
|
108
125
|
try:
|
|
109
|
-
summary = await agent_service.invoke(
|
|
126
|
+
summary = await agent_service.invoke(
|
|
127
|
+
name, prompt, parent=coder, auto_reap=auto_reap
|
|
128
|
+
)
|
|
110
129
|
return name, summary or "(no summary)", None
|
|
111
130
|
except Exception as e:
|
|
112
131
|
return name, None, f"failed: {e}"
|
|
@@ -114,13 +133,13 @@ class Tool(BaseTool):
|
|
|
114
133
|
# Process async delegations (fire-and-forget spawn)
|
|
115
134
|
async_results = []
|
|
116
135
|
if async_delegations:
|
|
117
|
-
tasks = [_spawn_one(n, p) for n, p in async_delegations]
|
|
136
|
+
tasks = [_spawn_one(n, p, persist) for n, p, persist in async_delegations]
|
|
118
137
|
async_results = list(await asyncio.gather(*tasks))
|
|
119
138
|
|
|
120
139
|
# Process sync delegations (blocking invoke)
|
|
121
140
|
sync_results = []
|
|
122
141
|
if sync_delegations:
|
|
123
|
-
tasks = [_invoke_one(n, p) for n, p in sync_delegations]
|
|
142
|
+
tasks = [_invoke_one(n, p, persist) for n, p, persist in sync_delegations]
|
|
124
143
|
sync_results = list(await asyncio.gather(*tasks))
|
|
125
144
|
|
|
126
145
|
# Build response
|
|
@@ -185,9 +204,11 @@ class Tool(BaseTool):
|
|
|
185
204
|
name = d.get("name", "")
|
|
186
205
|
prompt = d.get("prompt", "")
|
|
187
206
|
is_async = d.get("async", True)
|
|
207
|
+
is_persist = d.get("persist", False)
|
|
188
208
|
coder.io.tool_output(f"{color_start}delegation_{i + 1}:{color_end}")
|
|
189
209
|
coder.io.tool_output(f"agent: {name}")
|
|
190
210
|
coder.io.tool_output(f"mode: {'async' if is_async else 'sync'}")
|
|
211
|
+
coder.io.tool_output(f"persist: {'true' if is_persist else 'false'}")
|
|
191
212
|
coder.io.tool_output(f"task: {prompt}")
|
|
192
213
|
if i < len(delegations) - 1:
|
|
193
214
|
coder.io.tool_output("")
|
|
@@ -1636,7 +1636,7 @@ class TUI(App):
|
|
|
1636
1636
|
tuple[list[str], set[str]]: A tuple of (ordered_list, fast_lookup_set)
|
|
1637
1637
|
containing the matched path completions.
|
|
1638
1638
|
"""
|
|
1639
|
-
coder = self.worker.coder
|
|
1639
|
+
coder = AgentService.get_instance(self.worker.coder).foreground_coder
|
|
1640
1640
|
root = Path(coder.root) if hasattr(coder, "root") else Path.cwd()
|
|
1641
1641
|
|
|
1642
1642
|
# Try FileSystemService first for efficient lookups
|
|
@@ -287,7 +287,7 @@ Tools are loaded automatically when the registry is built and will be available
|
|
|
287
287
|
|
|
288
288
|
#### Sub-agent Behavior
|
|
289
289
|
|
|
290
|
-
`Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and
|
|
290
|
+
`Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and optional `async` and `persist` flags. Asynchronous delegations run in the background; synchronous delegations wait for the sub-agent result. The system uses `Yield` to wait for outstanding child tasks when finishing the parent task.
|
|
291
291
|
|
|
292
292
|
Sub-agent results are reported back to the parent conversation as summaries or errors. Sub-agents use `auto_reap: true` by default, so completed agents can be removed automatically after their work and descendants finish. Independent agents may be cleaned up shortly after completion, while the service also reaps completed agents when the configured limit requires space. Set `max_sub_agents` to `-1` to remove the limit on simultaneous sub agents.
|
|
293
293
|
|
|
@@ -164,7 +164,7 @@ You are a code review specialist.
|
|
|
164
164
|
```
|
|
165
165
|
|
|
166
166
|
- **`/spawn-agent`** always spawns sub-agents with `auto_reap=false` — since these agents are created manually by the user, they should persist until explicitly reaped with `/reap-agent`.
|
|
167
|
-
- **`Delegate` tool** uses the sub-agent's configured `auto_reap` value from its definition. If not set in the `.md` front matter, it defaults to `true`.
|
|
167
|
+
- **`Delegate` tool** uses the sub-agent's configured `auto_reap` value from its definition. If not set in the `.md` front matter, it defaults to `true`. A delegation may set `persist: true` to keep that sub-agent alive by passing `auto_reap: false`; by default `persist` is `false`, deferring to the sub-agent's configured behavior.
|
|
168
168
|
|
|
169
169
|
Sub-agents with `auto_reap: true` that finish their work are candidates for automatic cleanup when the agent limit is reached. Sub-agents with `auto_reap: false` are never automatically reaped and must be cleaned up manually.
|
|
170
170
|
|
|
@@ -825,6 +825,7 @@ tests/unit/test_load_mcp.py
|
|
|
825
825
|
tests/unit/test_performance.py
|
|
826
826
|
tests/unit/test_queues.py
|
|
827
827
|
tests/unit/test_remove_mcp.py
|
|
828
|
+
tests/unit/test_retry_backoff.py
|
|
828
829
|
tests/unit/test_shallow_merge.py
|
|
829
830
|
tests/unit/test_signals.py
|
|
830
831
|
tests/unit/test_unit_load_mcp_tool.py
|
|
@@ -1067,6 +1067,7 @@
|
|
|
1067
1067
|
"tests/unit/test_performance.py",
|
|
1068
1068
|
"tests/unit/test_queues.py",
|
|
1069
1069
|
"tests/unit/test_remove_mcp.py",
|
|
1070
|
+
"tests/unit/test_retry_backoff.py",
|
|
1070
1071
|
"tests/unit/test_shallow_merge.py",
|
|
1071
1072
|
"tests/unit/test_signals.py",
|
|
1072
1073
|
"tests/unit/test_unit_load_mcp_tool.py",
|