cecli-dev 1.2.3rc4__tar.gz → 1.3.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/PKG-INFO +2 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/__init__.py +1 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/_version.py +3 -3
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/base_coder.py +93 -16
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/defaults/memorizer.md +1 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/integration.py +15 -4
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/hashline.py +145 -51
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/hashpos/hashpos.py +1 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/config.py +2 -2
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/chat.py +7 -3
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/messages.py +6 -144
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/litellm_compat.py +57 -15
- cecli_dev-1.3.0rc1/cecli/helpers/loop_detect.py +121 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/agent.py +3 -3
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/pipeline.py +32 -5
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/main.py +20 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mcp/manager.py +76 -39
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mcp/server.py +65 -33
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/model-metadata.json +535 -60
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/command.py +3 -2
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/edit_file.py +61 -20
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/read_file.py +11 -4
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/worker.py +22 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/PKG-INFO +2 -1
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/SOURCES.txt +2 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/requires.txt +1 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/scm_file_list.json +2 -0
- cecli_dev-1.3.0rc1/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/common-constraints.txt +1 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements.in +2 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements.txt +4 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_hashline.py +95 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_main.py +0 -1
- cecli_dev-1.3.0rc1/tests/coders/test_tool_call_consolidation.py +539 -0
- cecli_dev-1.3.0rc1/tests/helpers/test_llms_cache_control.py +121 -0
- cecli_dev-1.3.0rc1/tests/helpers/test_loop_detect.py +430 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_insert_block.py +7 -7
- cecli_dev-1.2.3rc4/cecli_dev.egg-info/scm_version.json +0 -8
- cecli_dev-1.2.3rc4/tests/coders/test_tool_call_consolidation.py +0 -197
- cecli_dev-1.2.3rc4/tests/helpers/test_llms_cache_control.py +0 -192
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.dockerignore +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.flake8 +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.gitattributes +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.gitignore +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/CHANGELOG.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/CNAME +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/HISTORY.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/LICENSE.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/MANIFEST.in +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/README.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/README.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/docker.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/over_time.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/plot.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/plots.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/prompts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/__main__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/args.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/agent_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/add.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/code.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/context.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/core.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/git.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/help.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/list_queue.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/load.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/load_session.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/map.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/model.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/models.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/queue.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/remove_queue.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/report.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/run.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/save.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/save_session.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/test.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/web.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/decoding.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/diffs.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/dump.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/editor.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/exceptions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/format_settings.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/help.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/help_pats.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/hashpos/transformations.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/runtime.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/lock_detect.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/local_workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/agent_proxy.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/environment.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/safe_methods.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/orchestration/tool_proxy.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/history.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/http.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/io.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/linter.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/llm.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/mdstream.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/models.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/onboarding.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/repo.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/repomap.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/report.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/model-metadata.ext.json +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/resources/providers.json +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/scrape.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/sendchat.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/sessions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/signals.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/special.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tests/test_queue_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/grep.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/app.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/io.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/urls.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/utils.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/voice.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/waiting.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/watch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/package.json +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/docker/Dockerfile +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/pyproject.toml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/pytest.ini +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/30k-image.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/blame.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/homepage.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/issues.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/update-history.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/versionbump.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/setup.cfg +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/shim.pyproject.toml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/conftest.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/help/test_help.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_local_workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/helpers/test_orchestration.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_manager_retry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/mcp/test_server_sdk_compat.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/test_requests.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_grep.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tools/validations.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.2.3rc4 → cecli_dev-1.3.0rc1}/tests/unit/test_ws_server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0rc1
|
|
4
4
|
Summary: we also can't pronounce cecli
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/cecli
|
|
6
6
|
Project-URL: Documentation, https://github.com/dwash96/cecli
|
|
@@ -43,6 +43,7 @@ Requires-Dist: PyYAML>=6.0.2
|
|
|
43
43
|
Requires-Dist: tomli>=2.3.0; python_version <= "3.10"
|
|
44
44
|
Requires-Dist: tomlkit>=0.14.0
|
|
45
45
|
Requires-Dist: diff-match-patch>=20241021
|
|
46
|
+
Requires-Dist: tqdm>3.0.0
|
|
46
47
|
Requires-Dist: pyperclip>=1.9.0
|
|
47
48
|
Requires-Dist: pydub>=0.25.1
|
|
48
49
|
Requires-Dist: sounddevice>=0.5.2
|
|
@@ -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.3.0rc1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 0, 'rc1')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gee851b36f'
|
|
@@ -42,6 +42,7 @@ from cecli.helpers import command_parser, command_queue, coroutines, nested, res
|
|
|
42
42
|
from cecli.helpers.conversation import ConversationService, MessageTag
|
|
43
43
|
from cecli.helpers.file_system import FileSystemService
|
|
44
44
|
from cecli.helpers.io_proxy import IOProxy
|
|
45
|
+
from cecli.helpers.loop_detect import LoopDetectedError, LoopDetector
|
|
45
46
|
from cecli.helpers.memory_control import trim_memory
|
|
46
47
|
from cecli.helpers.observations.service import ObservationService
|
|
47
48
|
from cecli.helpers.profiler import TokenProfiler
|
|
@@ -250,6 +251,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
250
251
|
cost_multiplier = 1
|
|
251
252
|
stop_on_empty = True
|
|
252
253
|
error_code = None
|
|
254
|
+
_output_loop_detected = False
|
|
255
|
+
_output_loop_message = ""
|
|
253
256
|
|
|
254
257
|
# Task coordination state variables
|
|
255
258
|
input_running = False
|
|
@@ -3649,6 +3652,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
3649
3652
|
self.got_reasoning_content = False
|
|
3650
3653
|
self.ended_reasoning_content = False
|
|
3651
3654
|
self.empty_response = False
|
|
3655
|
+
self._output_loop_detected = False
|
|
3656
|
+
self._output_loop_message = ""
|
|
3652
3657
|
|
|
3653
3658
|
self._streaming_buffer_length = 0
|
|
3654
3659
|
self.io.reset_streaming_response()
|
|
@@ -3857,11 +3862,14 @@ class Coder(metaclass=UsageMeta):
|
|
|
3857
3862
|
async def show_send_output_stream(self, completion):
|
|
3858
3863
|
received_content = False
|
|
3859
3864
|
chunk_index = 0
|
|
3865
|
+
content_detector = LoopDetector()
|
|
3866
|
+
tool_detector = LoopDetector()
|
|
3867
|
+
loop_detected = False
|
|
3868
|
+
|
|
3869
|
+
stream = coroutines.interruptible_async_generator(completion, self.interrupt_event)
|
|
3860
3870
|
|
|
3861
3871
|
try:
|
|
3862
|
-
async for chunk in
|
|
3863
|
-
completion, self.interrupt_event
|
|
3864
|
-
):
|
|
3872
|
+
async for chunk in stream:
|
|
3865
3873
|
if self.args.debug:
|
|
3866
3874
|
with safe_open(".cecli/logs/chunks.log", "a") as f:
|
|
3867
3875
|
print(chunk, file=f)
|
|
@@ -3902,6 +3910,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
3902
3910
|
tool_call_chunk.function.arguments
|
|
3903
3911
|
)
|
|
3904
3912
|
|
|
3913
|
+
tool_detector.push(tool_call_chunk.function.arguments)
|
|
3914
|
+
|
|
3905
3915
|
except (AttributeError, IndexError):
|
|
3906
3916
|
# Handle cases where the response structure doesn't match expectations
|
|
3907
3917
|
pass
|
|
@@ -3965,6 +3975,9 @@ class Coder(metaclass=UsageMeta):
|
|
|
3965
3975
|
chunk._hidden_params["created_at"] = chunk_index
|
|
3966
3976
|
self.partial_response_chunks.append(chunk)
|
|
3967
3977
|
|
|
3978
|
+
if text:
|
|
3979
|
+
content_detector.push(text)
|
|
3980
|
+
|
|
3968
3981
|
if self.show_pretty():
|
|
3969
3982
|
# Use simplified streaming - just call the method with full content
|
|
3970
3983
|
content_to_show = self.live_incremental_response(False)
|
|
@@ -3985,6 +3998,30 @@ class Coder(metaclass=UsageMeta):
|
|
|
3985
3998
|
except (asyncio.CancelledError, KeyboardInterrupt):
|
|
3986
3999
|
raise KeyboardInterrupt
|
|
3987
4000
|
|
|
4001
|
+
except LoopDetectedError as e:
|
|
4002
|
+
self._output_loop_detected = True
|
|
4003
|
+
self._output_loop_message = str(e)
|
|
4004
|
+
loop_detected = True
|
|
4005
|
+
|
|
4006
|
+
if loop_detected:
|
|
4007
|
+
self.io.tool_warning(
|
|
4008
|
+
f"Output loop detected while streaming: {self._output_loop_message}"
|
|
4009
|
+
)
|
|
4010
|
+
# Explicitly close the async generators so the wrapper's interrupt
|
|
4011
|
+
# task and the underlying provider generator are cleaned up instead
|
|
4012
|
+
# of being left suspended after we stop consuming them.
|
|
4013
|
+
if hasattr(stream, "aclose"):
|
|
4014
|
+
try:
|
|
4015
|
+
await stream.aclose()
|
|
4016
|
+
except Exception:
|
|
4017
|
+
pass
|
|
4018
|
+
if hasattr(completion, "aclose"):
|
|
4019
|
+
try:
|
|
4020
|
+
await completion.aclose()
|
|
4021
|
+
except Exception:
|
|
4022
|
+
pass
|
|
4023
|
+
return
|
|
4024
|
+
|
|
3988
4025
|
if (
|
|
3989
4026
|
self.show_pretty()
|
|
3990
4027
|
and nested.getter(self.args, "show_thinking")
|
|
@@ -4130,22 +4167,45 @@ class Coder(metaclass=UsageMeta):
|
|
|
4130
4167
|
self.tool_reflection = True
|
|
4131
4168
|
self.partial_response_tool_calls = extracted_calls
|
|
4132
4169
|
|
|
4170
|
+
if self._output_loop_detected:
|
|
4171
|
+
# A repeating output loop was caught while streaming; turn it into an
|
|
4172
|
+
# assistant message so the model can adjust and drop any tool calls.
|
|
4173
|
+
marker = "\n\n[SYSTEM CANCEL: OUTPUT LOOP DETECTED]\n"
|
|
4174
|
+
self.partial_response_content += marker
|
|
4175
|
+
self.partial_response_tool_calls = []
|
|
4176
|
+
self.partial_response_function_call = dict()
|
|
4177
|
+
|
|
4178
|
+
# The assistant message stored in the conversation is built from the
|
|
4179
|
+
# response object (via model_dump()), so the marker has to be written
|
|
4180
|
+
# there too, otherwise it never reaches the model to react to.
|
|
4181
|
+
message = response.choices[0].message
|
|
4182
|
+
message.content = (message.content or "") + marker
|
|
4183
|
+
message.tool_calls = []
|
|
4184
|
+
if hasattr(message, "function_call"):
|
|
4185
|
+
message.function_call = None
|
|
4186
|
+
|
|
4133
4187
|
self.partial_response_consolidated = (response, func_err, content_err)
|
|
4134
4188
|
return response, func_err, content_err
|
|
4135
4189
|
|
|
4136
4190
|
def _build_tool_calls_from_chunks(self):
|
|
4137
|
-
"""Rebuild tool calls from the raw streaming chunks
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4191
|
+
"""Rebuild tool calls from the raw streaming chunks.
|
|
4192
|
+
|
|
4193
|
+
Parallel tool calls arrive interleaved and may start at any index.
|
|
4194
|
+
Most providers key fragments by a per-call ``index`` (openai / anthropic /
|
|
4195
|
+
gemini), but some (e.g. deepseek) reuse index0 for every call and only
|
|
4196
|
+
distinguish them by the ``id`` announced on the first fragment. Keying
|
|
4197
|
+
by id when present -- and remembering the index -> key mapping so later
|
|
4198
|
+
id-less fragments resolve to the right call -- preserves every parallel
|
|
4199
|
+
call instead of collapsing them onto one, keeps them ordered by first
|
|
4200
|
+
appearance, and retains provider-specific fields (e.g. thought
|
|
4201
|
+
signatures) attached.
|
|
4144
4202
|
"""
|
|
4145
4203
|
ChatCompletionMessageToolCall = litellm.types.utils.ChatCompletionMessageToolCall
|
|
4146
4204
|
Function = litellm.types.utils.Function
|
|
4147
4205
|
|
|
4148
4206
|
tool_calls_dict = {}
|
|
4207
|
+
index_lookup = {}
|
|
4208
|
+
last_key = None
|
|
4149
4209
|
|
|
4150
4210
|
for chunk in self.partial_response_chunks:
|
|
4151
4211
|
try:
|
|
@@ -4160,22 +4220,39 @@ class Coder(metaclass=UsageMeta):
|
|
|
4160
4220
|
if nested.getter(tool_call, "function") is None:
|
|
4161
4221
|
continue
|
|
4162
4222
|
|
|
4223
|
+
tool_id = nested.getter(tool_call, "id") or ""
|
|
4163
4224
|
index = nested.getter(tool_call, "index")
|
|
4164
|
-
|
|
4165
|
-
|
|
4225
|
+
|
|
4226
|
+
if tool_id:
|
|
4227
|
+
key = ("id", tool_id)
|
|
4228
|
+
|
|
4229
|
+
if index is not None:
|
|
4230
|
+
index_lookup[index] = key
|
|
4231
|
+
|
|
4232
|
+
last_key = key
|
|
4233
|
+
elif index is not None and index in index_lookup:
|
|
4234
|
+
key = index_lookup[index]
|
|
4235
|
+
elif index is not None:
|
|
4236
|
+
key = ("index", index)
|
|
4237
|
+
index_lookup[index] = key
|
|
4238
|
+
elif last_key is not None:
|
|
4239
|
+
key = last_key
|
|
4240
|
+
else:
|
|
4241
|
+
key = ("slot", len(tool_calls_dict))
|
|
4166
4242
|
|
|
4167
4243
|
entry = tool_calls_dict.setdefault(
|
|
4168
|
-
|
|
4244
|
+
key,
|
|
4169
4245
|
{
|
|
4170
4246
|
"id": None,
|
|
4171
4247
|
"name": None,
|
|
4172
4248
|
"type": "function",
|
|
4173
4249
|
"arguments": [],
|
|
4174
4250
|
"provider_specific_fields": {},
|
|
4251
|
+
"_order": len(tool_calls_dict),
|
|
4175
4252
|
},
|
|
4176
4253
|
)
|
|
4177
4254
|
|
|
4178
|
-
entry["id"] =
|
|
4255
|
+
entry["id"] = tool_id or entry["id"]
|
|
4179
4256
|
entry["type"] = nested.getter(tool_call, "type") or entry["type"]
|
|
4180
4257
|
entry["name"] = nested.getter(tool_call, "function.name") or entry["name"]
|
|
4181
4258
|
|
|
@@ -4192,8 +4269,8 @@ class Coder(metaclass=UsageMeta):
|
|
|
4192
4269
|
continue
|
|
4193
4270
|
|
|
4194
4271
|
tool_calls = []
|
|
4195
|
-
for
|
|
4196
|
-
data = tool_calls_dict[
|
|
4272
|
+
for key in sorted(tool_calls_dict.keys(), key=lambda k: tool_calls_dict[k]["_order"]):
|
|
4273
|
+
data = tool_calls_dict[key]
|
|
4197
4274
|
if not (data["id"] and data["name"]):
|
|
4198
4275
|
continue
|
|
4199
4276
|
|
|
@@ -76,4 +76,4 @@ Before this number hits at most 10, update what you can and yield. Do not delibe
|
|
|
76
76
|
Important facts will be easy to search for and extract from the given context.
|
|
77
77
|
|
|
78
78
|
Always prefer **concrete, reusable** facts over vague prose.
|
|
79
|
-
Focus on extracting
|
|
79
|
+
Focus on extracting aids for navigating, modifying, and extending the project in the future.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import random
|
|
3
|
+
import time
|
|
3
4
|
import weakref
|
|
4
5
|
from typing import Any, Dict, List
|
|
5
6
|
|
|
@@ -959,13 +960,23 @@ class ConversationChunks:
|
|
|
959
960
|
if not block:
|
|
960
961
|
return
|
|
961
962
|
|
|
963
|
+
if not hasattr(coder, "_last_child_agent_hash") or not coder._last_child_agent_hash:
|
|
964
|
+
coder._last_child_agent_hash = ""
|
|
965
|
+
|
|
966
|
+
message_hash = xxhash.xxh3_128_hexdigest(block.encode("utf-8"))
|
|
967
|
+
|
|
968
|
+
if message_hash == coder._last_child_agent_hash:
|
|
969
|
+
return # No change in sub-agent states, skip adding message
|
|
970
|
+
|
|
971
|
+
coder._last_child_agent_hash = message_hash
|
|
972
|
+
|
|
962
973
|
ConversationService.get_manager(coder).add_message(
|
|
963
974
|
message_dict={"role": "user", "content": block},
|
|
964
975
|
tag=MessageTag.STATIC,
|
|
965
|
-
priority=DEFAULT_TAG_PRIORITY[
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
976
|
+
priority=DEFAULT_TAG_PRIORITY[
|
|
977
|
+
MessageTag.CUR
|
|
978
|
+
], # Inject on change in normal message sequence
|
|
979
|
+
hash_key=("sub_agent_states", str(time.monotonic_ns())),
|
|
969
980
|
)
|
|
970
981
|
|
|
971
982
|
def defer_removal(self, file_path: str):
|
|
@@ -1341,28 +1341,43 @@ def _honor_cancellations(resolved_ops):
|
|
|
1341
1341
|
|
|
1342
1342
|
def _deduplicate_ranges(resolved_ops):
|
|
1343
1343
|
"""
|
|
1344
|
-
Deduplicate operations that
|
|
1345
|
-
|
|
1346
|
-
|
|
1344
|
+
Deduplicate operations that target the same line and operation type.
|
|
1345
|
+
|
|
1346
|
+
Inserts are anchored after their target line, so an insert and a replace
|
|
1347
|
+
sharing a start index are independent operations and must both be retained.
|
|
1348
|
+
Multiple operations of the same type still keep only the latest one.
|
|
1349
|
+
|
|
1350
|
+
Returns:
|
|
1351
|
+
tuple: (deduplicated_ops, dropped_ops) where dropped_ops describes the
|
|
1352
|
+
operations that were removed so callers can surface them as failures.
|
|
1347
1353
|
"""
|
|
1348
1354
|
deduplicated_ops = []
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1355
|
+
dropped = []
|
|
1356
|
+
ops_by_key = {}
|
|
1357
|
+
|
|
1352
1358
|
for op in resolved_ops:
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
# For each start_idx, keep only the operation with the highest original index (latest in the list)
|
|
1359
|
-
# Loop to select only the latest operation per start index
|
|
1360
|
-
for start_idx, ops in start_idx_to_ops.items():
|
|
1361
|
-
# Sort by original index descending and take the first one
|
|
1359
|
+
key = (op["start_idx"], op["op"]["operation"])
|
|
1360
|
+
ops_by_key.setdefault(key, []).append(op)
|
|
1361
|
+
|
|
1362
|
+
for ops in ops_by_key.values():
|
|
1362
1363
|
ops.sort(key=lambda x: x["index"], reverse=True)
|
|
1363
|
-
|
|
1364
|
+
kept = ops[0]
|
|
1365
|
+
deduplicated_ops.append(kept)
|
|
1366
|
+
|
|
1367
|
+
for dropped_op in ops[1:]:
|
|
1368
|
+
dropped.append(
|
|
1369
|
+
{
|
|
1370
|
+
"index": dropped_op["index"],
|
|
1371
|
+
"error": (
|
|
1372
|
+
f"Edit {dropped_op['index'] + 1} targets the same start line and "
|
|
1373
|
+
f"operation type as Edit {kept['index'] + 1} and was not applied"
|
|
1374
|
+
),
|
|
1375
|
+
"operation": dropped_op["op"],
|
|
1376
|
+
"failure_type": "not_applied",
|
|
1377
|
+
}
|
|
1378
|
+
)
|
|
1364
1379
|
|
|
1365
|
-
return deduplicated_ops
|
|
1380
|
+
return deduplicated_ops, dropped
|
|
1366
1381
|
|
|
1367
1382
|
|
|
1368
1383
|
def _honor_special_markers(resolved_ops):
|
|
@@ -1376,9 +1391,21 @@ def _honor_special_markers(resolved_ops):
|
|
|
1376
1391
|
starting between beginning of file and that end hash.
|
|
1377
1392
|
3. If an operation has a normal start hash and "000@" as end hash,
|
|
1378
1393
|
remove any operations ending between that start hash and end of file.
|
|
1394
|
+
|
|
1395
|
+
Returns:
|
|
1396
|
+
tuple: (remaining_ops, dropped_ops) where dropped_ops describes the
|
|
1397
|
+
operations removed by the special markers so callers can surface them
|
|
1398
|
+
as failures instead of silently discarding them.
|
|
1379
1399
|
"""
|
|
1380
1400
|
if not resolved_ops:
|
|
1381
|
-
return resolved_ops
|
|
1401
|
+
return resolved_ops, []
|
|
1402
|
+
|
|
1403
|
+
def _drop(op, reason):
|
|
1404
|
+
return {
|
|
1405
|
+
"index": op["index"],
|
|
1406
|
+
"error": f"Edit {op['index'] + 1} {reason}",
|
|
1407
|
+
"operation": op["op"],
|
|
1408
|
+
}
|
|
1382
1409
|
|
|
1383
1410
|
# Check for full file replacement (@000 to 000@)
|
|
1384
1411
|
for op in resolved_ops:
|
|
@@ -1388,7 +1415,12 @@ def _honor_special_markers(resolved_ops):
|
|
|
1388
1415
|
|
|
1389
1416
|
if start_hash == "@000" and end_hash == "000@":
|
|
1390
1417
|
# This operation replaces the entire file, keep only this one
|
|
1391
|
-
|
|
1418
|
+
dropped = [
|
|
1419
|
+
_drop(other, "was superseded by a full-file replacement (@000..000@)")
|
|
1420
|
+
for other in resolved_ops
|
|
1421
|
+
if other is not op
|
|
1422
|
+
]
|
|
1423
|
+
return [op], dropped
|
|
1392
1424
|
|
|
1393
1425
|
# Track which operations have special markers
|
|
1394
1426
|
has_special_marker = [False] * len(resolved_ops)
|
|
@@ -1399,8 +1431,8 @@ def _honor_special_markers(resolved_ops):
|
|
|
1399
1431
|
if start_hash == "@000" or end_hash == "000@":
|
|
1400
1432
|
has_special_marker[i] = True
|
|
1401
1433
|
|
|
1402
|
-
# Mark operations for removal
|
|
1403
|
-
ops_to_remove =
|
|
1434
|
+
# Mark operations for removal, along with the reason they were removed
|
|
1435
|
+
ops_to_remove = {}
|
|
1404
1436
|
|
|
1405
1437
|
for i, op in enumerate(resolved_ops):
|
|
1406
1438
|
original_op = op["op"]
|
|
@@ -1416,7 +1448,10 @@ def _honor_special_markers(resolved_ops):
|
|
|
1416
1448
|
if j != i and not has_special_marker[j]:
|
|
1417
1449
|
other_start_idx = other_op["start_idx"]
|
|
1418
1450
|
if other_start_idx <= end_idx:
|
|
1419
|
-
ops_to_remove.
|
|
1451
|
+
ops_to_remove.setdefault(
|
|
1452
|
+
j,
|
|
1453
|
+
"was superseded by an operation starting at the top of the file (@000)",
|
|
1454
|
+
)
|
|
1420
1455
|
elif end_hash == "000@":
|
|
1421
1456
|
# Operation ends at end of file
|
|
1422
1457
|
# Remove any operations ending at or after this operation's start_idx
|
|
@@ -1426,26 +1461,39 @@ def _honor_special_markers(resolved_ops):
|
|
|
1426
1461
|
if j != i and not has_special_marker[j]:
|
|
1427
1462
|
other_end_idx = other_op["end_idx"]
|
|
1428
1463
|
if other_end_idx >= start_idx:
|
|
1429
|
-
ops_to_remove.
|
|
1464
|
+
ops_to_remove.setdefault(
|
|
1465
|
+
j,
|
|
1466
|
+
"was superseded by an operation ending at the bottom of the file (000@)",
|
|
1467
|
+
)
|
|
1430
1468
|
|
|
1431
1469
|
# Filter out operations marked for removal
|
|
1432
1470
|
result = []
|
|
1471
|
+
dropped = []
|
|
1433
1472
|
for i, op in enumerate(resolved_ops):
|
|
1434
1473
|
if i not in ops_to_remove:
|
|
1435
1474
|
result.append(op)
|
|
1475
|
+
else:
|
|
1476
|
+
dropped.append(_drop(op, ops_to_remove[i]))
|
|
1436
1477
|
|
|
1437
|
-
return result
|
|
1478
|
+
return result, dropped
|
|
1438
1479
|
|
|
1439
1480
|
|
|
1440
1481
|
def _merged_contained_ranges(resolved_ops):
|
|
1441
1482
|
"""
|
|
1442
1483
|
Discard inner ranges that are completely contained within outer ranges.
|
|
1443
1484
|
This prevents redundant operations and potential errors.
|
|
1485
|
+
|
|
1486
|
+
Returns:
|
|
1487
|
+
tuple: (optimized_ops, dropped_ops) where dropped_ops describes the
|
|
1488
|
+
contained operations that were removed so callers can surface them
|
|
1489
|
+
as failures instead of silently discarding them.
|
|
1444
1490
|
"""
|
|
1445
1491
|
optimized_ops = []
|
|
1492
|
+
dropped = []
|
|
1446
1493
|
# Loop to remove operations that are completely contained within other operations
|
|
1447
1494
|
for i, op_a in enumerate(resolved_ops):
|
|
1448
1495
|
keep_op = True
|
|
1496
|
+
container = None
|
|
1449
1497
|
|
|
1450
1498
|
# Check if this operation is contained within any other operation
|
|
1451
1499
|
for j, op_b in enumerate(resolved_ops):
|
|
@@ -1466,13 +1514,25 @@ def _merged_contained_ranges(resolved_ops):
|
|
|
1466
1514
|
# Keep both operations if they have different types
|
|
1467
1515
|
continue
|
|
1468
1516
|
# op_a is inside op_b, discard op_a
|
|
1517
|
+
container = op_b
|
|
1469
1518
|
keep_op = False
|
|
1470
1519
|
break
|
|
1471
1520
|
|
|
1472
1521
|
if keep_op:
|
|
1473
1522
|
optimized_ops.append(op_a)
|
|
1523
|
+
else:
|
|
1524
|
+
dropped.append(
|
|
1525
|
+
{
|
|
1526
|
+
"index": op_a["index"],
|
|
1527
|
+
"error": (
|
|
1528
|
+
f"Edit {op_a['index'] + 1} range is contained within "
|
|
1529
|
+
f"Edit {container['index'] + 1} and was not applied"
|
|
1530
|
+
),
|
|
1531
|
+
"operation": op_a["op"],
|
|
1532
|
+
}
|
|
1533
|
+
)
|
|
1474
1534
|
|
|
1475
|
-
return optimized_ops
|
|
1535
|
+
return optimized_ops, dropped
|
|
1476
1536
|
|
|
1477
1537
|
|
|
1478
1538
|
def sort_ranges(op):
|
|
@@ -2002,13 +2062,6 @@ def apply_hashline_operations(
|
|
|
2002
2062
|
|
|
2003
2063
|
if not normalized_operations:
|
|
2004
2064
|
return original_content, [], failed_ops
|
|
2005
|
-
# Convert insert operations without @000 marker to inclusive replace operations
|
|
2006
|
-
for op in normalized_operations:
|
|
2007
|
-
if op["operation"] == "insert":
|
|
2008
|
-
start_hash_fragment, _, _ = parse_hashline(op["start_line_hash"])
|
|
2009
|
-
if start_hash_fragment != "@000" and start_hash_fragment != "000@":
|
|
2010
|
-
op["operation"] = "replace"
|
|
2011
|
-
op["end_line_hash"] = op["start_line_hash"]
|
|
2012
2065
|
|
|
2013
2066
|
# Apply hashline to original content once
|
|
2014
2067
|
# This converts content to hashed lines for line tracking
|
|
@@ -2029,6 +2082,9 @@ def apply_hashline_operations(
|
|
|
2029
2082
|
# Genesis anchor - if empty, insert at 0. If not empty, insert at -1
|
|
2030
2083
|
# so that hashed_lines.insert(found_start + 1, text) inserts at 0.
|
|
2031
2084
|
found_start = 0 if not hashed_lines else -1
|
|
2085
|
+
elif start_hash_fragment == "000@":
|
|
2086
|
+
# Bottom-of-file anchor - insert after the last line
|
|
2087
|
+
found_start = len(hashed_lines) - 1 if hashed_lines else -1
|
|
2032
2088
|
else:
|
|
2033
2089
|
# Try exact match first for insert operations
|
|
2034
2090
|
found_start = find_hashline_by_exact_match(
|
|
@@ -2100,14 +2156,23 @@ def apply_hashline_operations(
|
|
|
2100
2156
|
|
|
2101
2157
|
# Honor cancellations: remove operations that are cancelled by later cancel operations
|
|
2102
2158
|
resolved_ops = _honor_cancellations(resolved_ops)
|
|
2103
|
-
# Deduplicate: if multiple operations start on the same line, keep only the latest one
|
|
2104
|
-
# This handles cases where a model might generate multiple operations for the same line while "thinking"
|
|
2105
|
-
|
|
2159
|
+
# Deduplicate: if multiple operations start on the same line, keep only the latest one.
|
|
2160
|
+
# This handles cases where a model might generate multiple operations for the same line while "thinking".
|
|
2161
|
+
# Dropped operations are surfaced as failures instead of being silently discarded.
|
|
2162
|
+
resolved_ops, dropped = _deduplicate_ranges(resolved_ops)
|
|
2163
|
+
for drop in dropped:
|
|
2164
|
+
failed_ops.append(drop)
|
|
2165
|
+
|
|
2106
2166
|
# Honor special markers: handle @000 and 000@ special markers for whole-file or partial-file operations
|
|
2107
|
-
resolved_ops = _honor_special_markers(resolved_ops)
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2167
|
+
resolved_ops, dropped = _honor_special_markers(resolved_ops)
|
|
2168
|
+
for drop in dropped:
|
|
2169
|
+
failed_ops.append(drop)
|
|
2170
|
+
|
|
2171
|
+
# Optimize: discard inner ranges that are completely contained within outer ranges.
|
|
2172
|
+
# This prevents redundant operations and potential errors.
|
|
2173
|
+
resolved_ops, dropped = _merged_contained_ranges(resolved_ops)
|
|
2174
|
+
for drop in dropped:
|
|
2175
|
+
failed_ops.append(drop)
|
|
2111
2176
|
# Merge contiguous replace operations
|
|
2112
2177
|
resolved_ops = _merge_replace_operations(resolved_ops)
|
|
2113
2178
|
|
|
@@ -2140,19 +2205,22 @@ def apply_hashline_operations(
|
|
|
2140
2205
|
op = resolved["op"]
|
|
2141
2206
|
start_idx = resolved["start_idx"]
|
|
2142
2207
|
end_idx = resolved["end_idx"]
|
|
2208
|
+
changed = True
|
|
2143
2209
|
|
|
2144
2210
|
if op["operation"] == "insert":
|
|
2145
2211
|
text = op["text"]
|
|
2146
|
-
if
|
|
2147
|
-
|
|
2148
|
-
# Special handling for empty hashed_lines (genesis anchor case)
|
|
2149
|
-
if hashed_lines:
|
|
2150
|
-
if not hashed_lines[start_idx].endswith("\n"):
|
|
2151
|
-
hashed_lines[start_idx] += "\n"
|
|
2152
|
-
hashed_lines.insert(start_idx + 1, text)
|
|
2212
|
+
if not text:
|
|
2213
|
+
changed = False
|
|
2153
2214
|
else:
|
|
2154
|
-
|
|
2155
|
-
|
|
2215
|
+
if not text.endswith("\n"):
|
|
2216
|
+
text += "\n"
|
|
2217
|
+
# Special handling for empty hashed_lines (genesis anchor case)
|
|
2218
|
+
if hashed_lines:
|
|
2219
|
+
if not hashed_lines[start_idx].endswith("\n"):
|
|
2220
|
+
hashed_lines[start_idx] += "\n"
|
|
2221
|
+
hashed_lines.insert(start_idx + 1, text)
|
|
2222
|
+
else:
|
|
2223
|
+
hashed_lines.append(text)
|
|
2156
2224
|
elif op["operation"] == "delete":
|
|
2157
2225
|
del hashed_lines[start_idx : end_idx + 1]
|
|
2158
2226
|
elif op["operation"] == "replace":
|
|
@@ -2161,6 +2229,13 @@ def apply_hashline_operations(
|
|
|
2161
2229
|
end_idx = len(hashed_lines) - 1
|
|
2162
2230
|
|
|
2163
2231
|
text = op["text"]
|
|
2232
|
+
# Snapshot the pre-edit range content so no-op replacements are
|
|
2233
|
+
# not counted as successful edits. Normalize line endings because
|
|
2234
|
+
# the apply path enforces a trailing newline on replacement lines.
|
|
2235
|
+
before_range = [
|
|
2236
|
+
strip_hashline(line).rstrip("\r\n")
|
|
2237
|
+
for line in hashed_lines[start_idx : end_idx + 1]
|
|
2238
|
+
]
|
|
2164
2239
|
if text:
|
|
2165
2240
|
# Split text into lines, preserving trailing newline behavior
|
|
2166
2241
|
# If text doesn't end with newline, we add one to ensure proper line separation
|
|
@@ -2207,12 +2282,31 @@ def apply_hashline_operations(
|
|
|
2207
2282
|
|
|
2208
2283
|
else:
|
|
2209
2284
|
# Empty text - replace with nothing (delete)
|
|
2285
|
+
replacement_lines = []
|
|
2210
2286
|
hashed_lines[start_idx : end_idx + 1] = []
|
|
2211
2287
|
|
|
2212
|
-
|
|
2213
|
-
|
|
2288
|
+
replacement_content = [line.rstrip("\r\n") for line in replacement_lines]
|
|
2289
|
+
if before_range == replacement_content:
|
|
2290
|
+
changed = False
|
|
2291
|
+
|
|
2292
|
+
if changed:
|
|
2293
|
+
if "merged_indices" in resolved:
|
|
2294
|
+
successful_ops.extend(resolved["merged_indices"])
|
|
2295
|
+
else:
|
|
2296
|
+
successful_ops.append(resolved["index"])
|
|
2214
2297
|
else:
|
|
2215
|
-
|
|
2298
|
+
# No-op edit: report it as failed so the caller's success count
|
|
2299
|
+
# reflects edits that actually changed the file
|
|
2300
|
+
indices = resolved.get("merged_indices") or [resolved["index"]]
|
|
2301
|
+
for idx in indices:
|
|
2302
|
+
failed_ops.append(
|
|
2303
|
+
{
|
|
2304
|
+
"index": idx,
|
|
2305
|
+
"error": "Edit resulted in no changes to the file content",
|
|
2306
|
+
"operation": op,
|
|
2307
|
+
"failure_type": "no_change",
|
|
2308
|
+
}
|
|
2309
|
+
)
|
|
2216
2310
|
except Exception as e:
|
|
2217
2311
|
failed_ops.append(
|
|
2218
2312
|
{"index": resolved["index"], "error": str(e), "operation": resolved["op"]}
|
|
@@ -76,7 +76,7 @@ class HashPos:
|
|
|
76
76
|
|
|
77
77
|
# Loose prefix for robust stripping: Matches a tilde-wrapped 4-char string containing non-ASCII
|
|
78
78
|
_LOOSE_PREFIX_RE = re.compile(
|
|
79
|
-
rf"^{HASH_DELIMITER}(?=.{{0,3}}[^\x00-\x7f]).{{4}}{HASH_DELIMITER}"
|
|
79
|
+
rf"^[{HASH_DELIMITER}]?(?=.{{0,3}}[^\x00-\x7f]).{{4}}{HASH_DELIMITER}"
|
|
80
80
|
)
|
|
81
81
|
|
|
82
82
|
def __init__(self, source_text: str = ""):
|
|
@@ -143,8 +143,8 @@ def resolve_model_config(model: str) -> Dict[str, Any]:
|
|
|
143
143
|
|
|
144
144
|
# Effective cache flags for the domain adapters. Anthropic messages-API
|
|
145
145
|
# models never cache "by default": prompt caching only happens when the
|
|
146
|
-
# request
|
|
147
|
-
#
|
|
146
|
+
# request asks for it, so the messages domain requests top-level automatic
|
|
147
|
+
# caching (agent.cache_control True + caches_by_default False).
|
|
148
148
|
if family == "messages":
|
|
149
149
|
agent_block["cache_control"] = True
|
|
150
150
|
agent_block["caches_by_default"] = False
|
|
@@ -274,14 +274,18 @@ def parse_chat_chunk(data: Dict[str, Any]) -> Optional[CompletionChunk]:
|
|
|
274
274
|
|
|
275
275
|
# Tool-call deltas arrive as fragments keyed by provider ``index``: the
|
|
276
276
|
# first fragment carries id+name, later fragments only argument deltas.
|
|
277
|
-
# Preserve
|
|
278
|
-
#
|
|
277
|
+
# Preserve the raw index AND the id -- consumers (base_coder /
|
|
278
|
+
# stream_chunk_builder) key by id when present and fall back to the index,
|
|
279
|
+
# so parallel calls that reuse index0 (e.g. deepseek) are not collapsed.
|
|
279
280
|
for tc in delta.get("tool_calls") or []:
|
|
280
281
|
fn = tc.get("function") or {}
|
|
281
282
|
args_raw = fn.get("arguments") or ""
|
|
282
283
|
tool_calls.append(
|
|
283
284
|
ToolCall(
|
|
284
|
-
id=tc.get("id", ""),
|
|
285
|
+
id=tc.get("id", ""),
|
|
286
|
+
name=fn.get("name", ""),
|
|
287
|
+
index=tc.get("index"),
|
|
288
|
+
arguments={"_fragment": args_raw},
|
|
285
289
|
)
|
|
286
290
|
)
|
|
287
291
|
|