cecli-dev 1.6.0rc4__tar.gz → 1.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/PKG-INFO +1 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/_version.py +3 -3
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/agent_coder.py +9 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/base_coder.py +9 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/list_sessions.py +1 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/load_session.py +6 -3
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/save_session.py +6 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/coroutines.py +85 -36
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/hashpos/transformations.py +1 -1
- cecli_dev-1.6.1/cecli/helpers/lock_detect.py +137 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/pipeline.py +4 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_providers.py +4 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/agent_proxy.py +17 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/environment.py +4 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/safe_methods.py +11 -10
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/tool_proxy.py +83 -4
- cecli_dev-1.6.1/cecli/helpers/sessions/__init__.py +20 -0
- cecli_dev-1.6.1/cecli/helpers/sessions/layout.py +112 -0
- cecli_dev-1.6.1/cecli/helpers/sessions/manager.py +325 -0
- cecli_dev-1.6.1/cecli/helpers/sessions/payload.py +287 -0
- cecli_dev-1.6.1/cecli/helpers/sessions/storage.py +245 -0
- cecli_dev-1.6.1/cecli/helpers/sessions/subagents.py +152 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/main.py +1 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mcp/manager.py +34 -6
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mcp/server.py +17 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/models.py +2 -2
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/repo.py +48 -13
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/model-metadata.ext.json +32 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/model-metadata.json +16442 -10023
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/providers.json +2 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/broadcast.py +4 -5
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/command.py +41 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/grep.py +11 -4
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/read_file.py +4 -4
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/styles.tcss +1 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/output.py +5 -0
- cecli_dev-1.6.1/cecli/tui/widgets/thin_scrollbar.py +58 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/worker.py +177 -21
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/SOURCES.txt +8 -1
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/scm_file_list.json +8 -1
- cecli_dev-1.6.1/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_sessions.py +1 -1
- cecli_dev-1.6.1/tests/basic/test_sessions_manager.py +473 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_orchestration.py +103 -7
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_server_sdk_compat.py +19 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_grep.py +23 -0
- cecli_dev-1.6.1/tests/tui/test_output.py +24 -0
- cecli_dev-1.6.0rc4/cecli/helpers/lock_detect.py +0 -61
- cecli_dev-1.6.0rc4/cecli/sessions.py +0 -505
- cecli_dev-1.6.0rc4/cecli_dev.egg-info/scm_version.json +0 -8
- cecli_dev-1.6.0rc4/tests/basic/test_sessions_manager.py +0 -219
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.dockerignore +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.flake8 +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.gitattributes +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.gitignore +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/CHANGELOG.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/CNAME +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/HISTORY.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/LICENSE.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/MANIFEST.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/README.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/README.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/docker.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/over_time.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/plot.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/plots.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/prompts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/__main__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/args.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/add.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/auto_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/code.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/context.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/core.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/git.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/help.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/history_search.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/import_skill.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/insert_queue.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/list_queue.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/load.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/map.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/model.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/models.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/queue.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/remove_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/remove_queue.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/report.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/run.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/save.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/search_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/test.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/web.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/commands/workspace.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/decoding.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/diffs.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/dump.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/editor.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/exceptions.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/format_settings.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/help.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/help_pats.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/command_queue.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/config_utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/extensions/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/extensions/skills_importer.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/builders.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/ignore.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/io_proxy.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/aws_sigv4.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/bedrock.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/chat.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/gemini.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/messages.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/domains/responses.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/formatters/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/formatters/reasoning.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/formatters/thinking.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/identifiers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/litellm_compat.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/pipeline.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/anthropic.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/azure.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/base.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/bedrock.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/bedrock_mantle.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/deepseek.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/gemini.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/github_copilot.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/meta.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/mistral.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/openai.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/providers/openrouter.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/runtime.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/types.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/llms/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/loop_detect.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/memory_control.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/api.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/formatters/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/formatters/reasoning.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/formatters/thinking.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/identifiers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/llm.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/model_config/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/onboarding/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/onboarding/app.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/onboarding/providers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/workspaces/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/workspaces/config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/workspaces/paths.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/workspaces/subagents.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/helpers/workspaces/workspace.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/history.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/http.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/io.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/linter.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/llm.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mcp/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/mdstream.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/onboarding.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/repomap.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/report.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/model-settings-condensed.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/scrape.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/sendchat.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/signals.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/special.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tests/test_queue_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/resource_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/app.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/io.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/urls.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/utils.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/voice.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/waiting.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/watch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docmd.config.json +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/cecli-temp-logo-favicon.svg +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/opencode-go.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/package-lock.json +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/package.json +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/docker/Dockerfile +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/pyproject.toml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/pytest.ini +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/common-constraints.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-help.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/requirements.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/requirements.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/30k-image.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/blame.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/condense_model_settings.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/docmd_build.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/homepage.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/issues.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/update-history.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/versionbump.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/setup.cfg +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/shim.pyproject.toml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_agent_config_merge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_file_system_service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_main.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/coders/test_rate_limit.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/coders/test_tool_call_consolidation.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_auto_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_remove_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_search_memory.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_voice.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/commands/test_workspace.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/conversations/test_background_command_injection.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/help/test_help.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_api_base.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_aws_sigv4.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_cache_control.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_gemini_auth.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_github_copilot_auth.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_hyperscalers.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_messages_stream.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_messages_wire.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_mistral_adapter.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_mistral_provider.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_providers_json.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_reasoning_config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_reasoning_extract.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_reasoning_summaries.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_llms_vision.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_loop_detect.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_memory_control.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_model_config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_onboarding.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/test_skills_importer.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/workspaces/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/workspaces/test_config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/workspaces/test_paths.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/workspaces/test_subagents.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/helpers/workspaces/test_workspace_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_manager_retry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/mcp/test_server_name_normalization.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/test_requests.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_command_format_output.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_command_timeout_paging.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_edit_file_format_output.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_resource_manager_paging.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tools/validations.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/tui/test_completion_bar.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_retry_backoff.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.6.0rc4 → cecli_dev-1.6.1}/tests/unit/test_ws_server.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.6.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 6,
|
|
21
|
+
__version__ = version = '1.6.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 6, 1)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ge49b18e26'
|
|
@@ -939,7 +939,11 @@ class AgentCoder(Coder):
|
|
|
939
939
|
lint_coro = self.lint_edited(edited, show_output=False)
|
|
940
940
|
lint_errors, interrupted = await interruptible(lint_coro, self.interrupt_event)
|
|
941
941
|
if interrupted:
|
|
942
|
-
|
|
942
|
+
# Abort the turn with CancelledError, which the linear run loop
|
|
943
|
+
# handles by re-prompting for input. KeyboardInterrupt is a
|
|
944
|
+
# BaseException that would escape the worker's event loop and
|
|
945
|
+
# leave it unable to accept further prompts.
|
|
946
|
+
raise asyncio.CancelledError("Interrupted during linting")
|
|
943
947
|
|
|
944
948
|
has_errors = False
|
|
945
949
|
|
|
@@ -1078,7 +1082,10 @@ class AgentCoder(Coder):
|
|
|
1078
1082
|
sleep_coro = asyncio.sleep(command_timeout / 2)
|
|
1079
1083
|
_res, interrupted = await interruptible(sleep_coro, self.interrupt_event)
|
|
1080
1084
|
if interrupted:
|
|
1081
|
-
|
|
1085
|
+
# Use CancelledError (not KeyboardInterrupt) so the interrupt
|
|
1086
|
+
# stays inside the worker loop and re-prompts, matching the
|
|
1087
|
+
# lint interrupt path above.
|
|
1088
|
+
raise asyncio.CancelledError("Interrupted while waiting for background commands")
|
|
1082
1089
|
return True
|
|
1083
1090
|
|
|
1084
1091
|
# Check for recently finished commands that need reflection
|
|
@@ -46,6 +46,7 @@ from cecli.helpers.loop_detect import LoopDetectedError, LoopDetector
|
|
|
46
46
|
from cecli.helpers.memory_control import trim_memory
|
|
47
47
|
from cecli.helpers.observations.service import ObservationService
|
|
48
48
|
from cecli.helpers.profiler import TokenProfiler
|
|
49
|
+
from cecli.helpers.sessions import SessionManager
|
|
49
50
|
from cecli.helpers.threading import ThreadSafeEvent
|
|
50
51
|
from cecli.history import ChatSummary
|
|
51
52
|
from cecli.hooks import HookIntegration
|
|
@@ -64,7 +65,6 @@ from cecli.repo import ANY_GIT_ERROR, GitRepoProxy
|
|
|
64
65
|
from cecli.repomap import RepoMap
|
|
65
66
|
from cecli.report import update_error_prefix
|
|
66
67
|
from cecli.run_cmd import run_cmd_async
|
|
67
|
-
from cecli.sessions import SessionManager
|
|
68
68
|
from cecli.tools.utils.output import print_tool_response
|
|
69
69
|
from cecli.tools.utils.registry import ToolRegistry
|
|
70
70
|
from cecli.utils import copy_tool_call, format_tokens, is_image_file
|
|
@@ -1999,7 +1999,13 @@ class Coder(metaclass=UsageMeta):
|
|
|
1999
1999
|
if self.commands.is_run_command(inp):
|
|
2000
2000
|
self.commands.cmd_running_event.clear() # Command is running
|
|
2001
2001
|
|
|
2002
|
-
|
|
2002
|
+
try:
|
|
2003
|
+
return await self.commands.run(inp, coder=self, **run_kwargs)
|
|
2004
|
+
finally:
|
|
2005
|
+
# Dispatch can return early (unknown/ambiguous command) or
|
|
2006
|
+
# raise without ever running a command; the gate must still be
|
|
2007
|
+
# reopened or the input/output loops park forever.
|
|
2008
|
+
self.commands.cmd_running_event.set()
|
|
2003
2009
|
|
|
2004
2010
|
await self.check_for_file_mentions(inp)
|
|
2005
2011
|
inp = await self.check_for_urls(inp)
|
|
@@ -5228,6 +5234,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
5228
5234
|
session_manager.save_session,
|
|
5229
5235
|
getattr(self.args, "auto_save_session_name", "auto-save"),
|
|
5230
5236
|
False,
|
|
5237
|
+
True,
|
|
5231
5238
|
)
|
|
5232
5239
|
except Exception:
|
|
5233
5240
|
# Don't show errors for auto-save to avoid interrupting the user experience
|
|
@@ -11,7 +11,7 @@ class ListSessionsCommand(BaseCommand):
|
|
|
11
11
|
@classmethod
|
|
12
12
|
async def execute(cls, io, coder, args, **kwargs):
|
|
13
13
|
"""Execute the list-sessions command with given parameters."""
|
|
14
|
-
from cecli import sessions
|
|
14
|
+
from cecli.helpers import sessions
|
|
15
15
|
|
|
16
16
|
session_manager = sessions.SessionManager(coder, io)
|
|
17
17
|
sessions_list = session_manager.list_sessions()
|
|
@@ -15,7 +15,7 @@ class LoadSessionCommand(BaseCommand):
|
|
|
15
15
|
io.tool_output("Usage: /load-session <session-name>")
|
|
16
16
|
return format_command_result(io, "load-session", "No session name provided")
|
|
17
17
|
|
|
18
|
-
from cecli import sessions
|
|
18
|
+
from cecli.helpers import sessions
|
|
19
19
|
|
|
20
20
|
session_manager = sessions.SessionManager(coder, io)
|
|
21
21
|
await session_manager.load_session(args.strip())
|
|
@@ -26,7 +26,7 @@ class LoadSessionCommand(BaseCommand):
|
|
|
26
26
|
def get_completions(cls, io, coder, args) -> List[str]:
|
|
27
27
|
"""Get completion options for load-session command."""
|
|
28
28
|
# Return available session names for completion
|
|
29
|
-
from cecli import sessions
|
|
29
|
+
from cecli.helpers import sessions
|
|
30
30
|
|
|
31
31
|
session_manager = sessions.SessionManager(coder, io)
|
|
32
32
|
sessions_list = session_manager.list_sessions()
|
|
@@ -41,7 +41,10 @@ class LoadSessionCommand(BaseCommand):
|
|
|
41
41
|
help_text += "\nExamples:\n"
|
|
42
42
|
help_text += " /load-session my-feature # Load session 'my-feature'\n"
|
|
43
43
|
help_text += " /load-session bug-fix # Load session 'bug-fix'\n"
|
|
44
|
-
help_text +=
|
|
44
|
+
help_text += (
|
|
45
|
+
"\nSessions are loaded from the .cecli/sessions/ directory. Loading a session"
|
|
46
|
+
" also restores any sub-agents saved with it.\n"
|
|
47
|
+
)
|
|
45
48
|
help_text += (
|
|
46
49
|
"Use /list-sessions to see saved sessions and /save-session to save a session.\n"
|
|
47
50
|
)
|
|
@@ -15,7 +15,7 @@ class SaveSessionCommand(BaseCommand):
|
|
|
15
15
|
io.tool_error("Please provide a session name to save.")
|
|
16
16
|
return format_command_result(io, "save-session", "No session name provided")
|
|
17
17
|
|
|
18
|
-
from cecli import sessions
|
|
18
|
+
from cecli.helpers import sessions
|
|
19
19
|
|
|
20
20
|
session_manager = sessions.SessionManager(coder, io)
|
|
21
21
|
session_manager.save_session(args.strip())
|
|
@@ -26,7 +26,7 @@ class SaveSessionCommand(BaseCommand):
|
|
|
26
26
|
def get_completions(cls, io, coder, args) -> List[str]:
|
|
27
27
|
"""Get completion options for save-session command."""
|
|
28
28
|
# Return existing session names for completion to prevent accidental overwrites
|
|
29
|
-
from cecli import sessions
|
|
29
|
+
from cecli.helpers import sessions
|
|
30
30
|
|
|
31
31
|
session_manager = sessions.SessionManager(coder, io)
|
|
32
32
|
sessions_list = session_manager.list_sessions()
|
|
@@ -42,6 +42,10 @@ class SaveSessionCommand(BaseCommand):
|
|
|
42
42
|
help_text += " /save-session my-feature # Save session as 'my-feature'\n"
|
|
43
43
|
help_text += " /save-session bug-fix # Save session as 'bug-fix'\n"
|
|
44
44
|
help_text += "\nSessions are saved in the .cecli/sessions/ directory as JSON files.\n"
|
|
45
|
+
help_text += (
|
|
46
|
+
"When the session has sub-agents it is saved as a folder holding the primary"
|
|
47
|
+
" and each sub-agent payload.\n"
|
|
48
|
+
)
|
|
45
49
|
help_text += "Use /list-sessions to see saved sessions and /load-session to load them.\n"
|
|
46
50
|
help_text += (
|
|
47
51
|
"\nNote: Existing session names will be shown for tab completion to help prevent"
|
|
@@ -9,16 +9,10 @@ logger = logging.getLogger(__name__)
|
|
|
9
9
|
# Strong reference pool to protect fire-and-forget tasks from garbage collection
|
|
10
10
|
background_tasks: set = set()
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
try:
|
|
17
|
-
task.result()
|
|
18
|
-
except asyncio.CancelledError:
|
|
19
|
-
pass
|
|
20
|
-
except Exception as e:
|
|
21
|
-
logger.error(f"Background task failed: {e}", exc_info=True)
|
|
12
|
+
# Grace period granted to a cancelled task to unwind. Transports that defer or
|
|
13
|
+
# swallow cancellation (AnyIO cancel scopes, shielded streams) would otherwise
|
|
14
|
+
# block the interrupting coroutine forever.
|
|
15
|
+
INTERRUPT_UNWIND_GRACE_SECONDS = 5.0
|
|
22
16
|
|
|
23
17
|
|
|
24
18
|
def fire_and_forget(coro) -> asyncio.Task:
|
|
@@ -35,6 +29,7 @@ async def interruptible_async_generator(async_generator, interrupt_event):
|
|
|
35
29
|
"""
|
|
36
30
|
gen = async_generator.__aiter__()
|
|
37
31
|
interrupt_task = asyncio.create_task(interrupt_event.wait())
|
|
32
|
+
next_task = None
|
|
38
33
|
|
|
39
34
|
try:
|
|
40
35
|
while True:
|
|
@@ -44,11 +39,7 @@ async def interruptible_async_generator(async_generator, interrupt_event):
|
|
|
44
39
|
)
|
|
45
40
|
|
|
46
41
|
if interrupt_task in done:
|
|
47
|
-
next_task
|
|
48
|
-
try:
|
|
49
|
-
await next_task
|
|
50
|
-
except asyncio.CancelledError:
|
|
51
|
-
pass
|
|
42
|
+
await cancel_and_abandon([next_task])
|
|
52
43
|
break
|
|
53
44
|
|
|
54
45
|
if next_task in done:
|
|
@@ -57,11 +48,9 @@ async def interruptible_async_generator(async_generator, interrupt_event):
|
|
|
57
48
|
except StopAsyncIteration:
|
|
58
49
|
break
|
|
59
50
|
finally:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
except asyncio.CancelledError:
|
|
64
|
-
pass
|
|
51
|
+
# Cancel whichever task is still pending if the generator is closed early
|
|
52
|
+
# (e.g. GeneratorExit at the wait or yield), not just the interrupt waiter.
|
|
53
|
+
await cancel_and_abandon([task for task in (next_task, interrupt_task) if task is not None])
|
|
65
54
|
|
|
66
55
|
|
|
67
56
|
def is_active(task):
|
|
@@ -83,6 +72,10 @@ async def interruptible(coroutine, interrupt_event):
|
|
|
83
72
|
A tuple of (result, interrupted).
|
|
84
73
|
- If not interrupted: (coroutine_result, False)
|
|
85
74
|
- If interrupted: (None, True)
|
|
75
|
+
|
|
76
|
+
A task that ignores cancellation is abandoned once the grace period
|
|
77
|
+
elapses (see cancel_and_abandon) so a wedged transport cannot block the
|
|
78
|
+
caller forever.
|
|
86
79
|
"""
|
|
87
80
|
if interrupt_event is None:
|
|
88
81
|
interrupt_event = ThreadSafeEvent()
|
|
@@ -90,25 +83,26 @@ async def interruptible(coroutine, interrupt_event):
|
|
|
90
83
|
main_task = asyncio.create_task(coroutine)
|
|
91
84
|
interrupt_task = asyncio.create_task(interrupt_event.wait())
|
|
92
85
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
86
|
+
try:
|
|
87
|
+
done, pending = await asyncio.wait(
|
|
88
|
+
{main_task, interrupt_task},
|
|
89
|
+
return_when=asyncio.FIRST_COMPLETED,
|
|
90
|
+
)
|
|
97
91
|
|
|
98
|
-
|
|
99
|
-
task.cancel()
|
|
100
|
-
try:
|
|
101
|
-
await task
|
|
102
|
-
except asyncio.CancelledError:
|
|
103
|
-
pass # Expected
|
|
92
|
+
await cancel_and_abandon(pending)
|
|
104
93
|
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
if interrupt_task in done:
|
|
95
|
+
return None, True
|
|
107
96
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
97
|
+
try:
|
|
98
|
+
return main_task.result(), False
|
|
99
|
+
except asyncio.CancelledError:
|
|
100
|
+
return None, True
|
|
101
|
+
finally:
|
|
102
|
+
# When the caller is cancelled while waiting, neither branch above
|
|
103
|
+
# runs, so cancel any remaining tasks here instead of orphaning the
|
|
104
|
+
# inner coroutine (which would keep running detached).
|
|
105
|
+
await cancel_and_abandon([main_task, interrupt_task])
|
|
112
106
|
|
|
113
107
|
|
|
114
108
|
def task_is_cancelling() -> bool:
|
|
@@ -133,3 +127,58 @@ def task_is_cancelling() -> bool:
|
|
|
133
127
|
|
|
134
128
|
# Python 3.10 fallback: best-effort only (see docstring).
|
|
135
129
|
return bool(getattr(task, "_must_cancel", False))
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def drain_task_results(tasks):
|
|
133
|
+
"""Consume exceptions from finished tasks so they aren't reported as unretrieved."""
|
|
134
|
+
for task in tasks:
|
|
135
|
+
if task.cancelled():
|
|
136
|
+
continue
|
|
137
|
+
|
|
138
|
+
try:
|
|
139
|
+
exc = task.exception()
|
|
140
|
+
except (asyncio.CancelledError, asyncio.InvalidStateError):
|
|
141
|
+
continue
|
|
142
|
+
|
|
143
|
+
if exc is not None:
|
|
144
|
+
logger.warning(f"Task raised while unwinding after interrupt: {exc}")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
async def cancel_and_abandon(tasks, grace=INTERRUPT_UNWIND_GRACE_SECONDS):
|
|
148
|
+
"""Cancel tasks and wait up to ``grace`` seconds for them to unwind.
|
|
149
|
+
|
|
150
|
+
Cancellation is cooperative, and some transports (AnyIO cancel scopes,
|
|
151
|
+
shielded streams) defer or swallow it. Waiting on them unconditionally
|
|
152
|
+
would block the caller forever, so anything still running after the grace
|
|
153
|
+
period is abandoned: it keeps a strong reference so it can finish on its
|
|
154
|
+
own without tripping the "Task was destroyed but it is pending" warning.
|
|
155
|
+
"""
|
|
156
|
+
pending_tasks = [task for task in tasks if not task.done()]
|
|
157
|
+
|
|
158
|
+
if not pending_tasks:
|
|
159
|
+
return
|
|
160
|
+
|
|
161
|
+
for task in pending_tasks:
|
|
162
|
+
task.cancel()
|
|
163
|
+
|
|
164
|
+
done, still_running = await asyncio.wait(set(pending_tasks), timeout=grace)
|
|
165
|
+
drain_task_results(done)
|
|
166
|
+
|
|
167
|
+
for task in still_running:
|
|
168
|
+
logger.warning(
|
|
169
|
+
f"Task ignored cancellation after {grace}s; abandoning it. It may still be"
|
|
170
|
+
" running and could touch shared state later."
|
|
171
|
+
)
|
|
172
|
+
background_tasks.add(task)
|
|
173
|
+
task.add_done_callback(_handle_result)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def _handle_result(task: asyncio.Task) -> None:
|
|
177
|
+
"""Callback to clean up references and capture exceptions safely."""
|
|
178
|
+
background_tasks.discard(task)
|
|
179
|
+
try:
|
|
180
|
+
task.result()
|
|
181
|
+
except asyncio.CancelledError:
|
|
182
|
+
pass
|
|
183
|
+
except Exception as e:
|
|
184
|
+
logger.error(f"Background task failed: {e}", exc_info=True)
|
|
@@ -297,7 +297,7 @@ def apply_contextual_marker(
|
|
|
297
297
|
range_end: str,
|
|
298
298
|
num_lines: int,
|
|
299
299
|
) -> tuple[list[int], list[int]]:
|
|
300
|
-
"""Expand range using @C
|
|
300
|
+
"""Expand range using @C<num>, @P<num>, or @N<num> contextual markers.
|
|
301
301
|
|
|
302
302
|
Requires exactly one start match. Raises ValueError when the number
|
|
303
303
|
of start matches is not 1 (the caller is expected to format the error
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
import threading
|
|
6
|
+
import time
|
|
7
|
+
import traceback
|
|
8
|
+
|
|
9
|
+
from cecli.decoding import safe_open
|
|
10
|
+
|
|
11
|
+
# Set up logging to catch asyncio framework logs
|
|
12
|
+
logging.basicConfig(level=logging.INFO)
|
|
13
|
+
logging.getLogger("asyncio").setLevel(logging.DEBUG)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Registered event loops whose asyncio tasks are included in each dump.
|
|
17
|
+
# Task state is only read from the owning loop (see _dump_async_state), since
|
|
18
|
+
# thread stacks alone cannot show coroutine/task state.
|
|
19
|
+
_async_loops: dict = {}
|
|
20
|
+
_async_state_providers: dict = {}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def dump_stacks_to_file(filename=".cecli/logs/threads.log", interval=5, max_prints=10):
|
|
24
|
+
"""Periodically writes stack traces to a file, resetting it after max_prints."""
|
|
25
|
+
print_count = 0
|
|
26
|
+
|
|
27
|
+
log_dir = os.path.dirname(filename)
|
|
28
|
+
if log_dir:
|
|
29
|
+
os.makedirs(log_dir, exist_ok=True)
|
|
30
|
+
|
|
31
|
+
while True:
|
|
32
|
+
time.sleep(interval)
|
|
33
|
+
try:
|
|
34
|
+
# Determine mode: "w" to overwrite/clear on the 11th print, "a" to append
|
|
35
|
+
mode = "w" if print_count >= max_prints else "a"
|
|
36
|
+
|
|
37
|
+
with safe_open(filename, mode) as f:
|
|
38
|
+
if mode == "w":
|
|
39
|
+
f.write(f"--- Log reset automatically after {max_prints} prints ---\n")
|
|
40
|
+
print_count = 0 # Reset the counter
|
|
41
|
+
|
|
42
|
+
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
|
|
43
|
+
f.write(
|
|
44
|
+
f"\n=================== STACK TRACE DUMP ({timestamp}) ===================\n"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
for thread_id, frame in sys._current_frames().items():
|
|
48
|
+
thread_obj = threading._active.get(thread_id)
|
|
49
|
+
thread_name = thread_obj.name if thread_obj else "Unknown Thread"
|
|
50
|
+
|
|
51
|
+
f.write(f"\nThread Name: {thread_name} (ID: {thread_id})\n")
|
|
52
|
+
f.write("-" * 40 + "\n")
|
|
53
|
+
traceback.print_stack(frame, file=f)
|
|
54
|
+
|
|
55
|
+
f.write("=" * 70 + "\n")
|
|
56
|
+
|
|
57
|
+
for name in list(_async_loops.keys()):
|
|
58
|
+
_schedule_async_dump(name, filename)
|
|
59
|
+
|
|
60
|
+
print_count += 1 # Increment after a successful write
|
|
61
|
+
|
|
62
|
+
except Exception as e:
|
|
63
|
+
print(f"Error writing stack dump to file: {e}", file=sys.stderr)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def register_async_loop(name, loop) -> None:
|
|
67
|
+
"""Register an event loop to include asyncio task dumps for."""
|
|
68
|
+
_async_loops[name] = loop
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def register_async_state_provider(name, provider) -> None:
|
|
72
|
+
"""Register a callable returning extra state text for a loop's dump."""
|
|
73
|
+
_async_state_providers[name] = provider
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _format_async_tasks(loop, name) -> str:
|
|
77
|
+
"""Return a readable dump of every task on ``loop`` (loop thread only)."""
|
|
78
|
+
lines = [f"\n------------------- ASYNCIO TASKS ({name}) -------------------\n"]
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
tasks = asyncio.all_tasks(loop)
|
|
82
|
+
except Exception as e:
|
|
83
|
+
return f"<unable to read asyncio tasks: {e}>\n"
|
|
84
|
+
|
|
85
|
+
for task in tasks:
|
|
86
|
+
lines.append(f"\n[{task.get_name()}] done={task.done()} cancelled={task.cancelled()}\n")
|
|
87
|
+
lines.append(f" {task.get_coro()!r}\n")
|
|
88
|
+
|
|
89
|
+
for frame in task.get_stack(limit=10):
|
|
90
|
+
lines.append("".join(traceback.format_stack(frame, limit=1)))
|
|
91
|
+
|
|
92
|
+
return "".join(lines)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def _dump_async_state(name, filename) -> None:
|
|
96
|
+
"""Append asyncio task/state info for one loop. Runs on the loop thread."""
|
|
97
|
+
loop = _async_loops.get(name)
|
|
98
|
+
if loop is None or loop.is_closed():
|
|
99
|
+
return
|
|
100
|
+
|
|
101
|
+
parts = []
|
|
102
|
+
provider = _async_state_providers.get(name)
|
|
103
|
+
|
|
104
|
+
if provider is not None:
|
|
105
|
+
try:
|
|
106
|
+
parts.append(provider())
|
|
107
|
+
except Exception as e:
|
|
108
|
+
parts.append(f"<state provider error: {e}>\n")
|
|
109
|
+
|
|
110
|
+
parts.append(_format_async_tasks(loop, name))
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
with safe_open(filename, "a") as f:
|
|
114
|
+
f.write("".join(parts))
|
|
115
|
+
except Exception:
|
|
116
|
+
pass
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _schedule_async_dump(name, filename) -> None:
|
|
120
|
+
"""Schedule an async-state dump onto a registered loop, if it is running."""
|
|
121
|
+
loop = _async_loops.get(name)
|
|
122
|
+
if loop is None or loop.is_closed() or not loop.is_running():
|
|
123
|
+
return
|
|
124
|
+
|
|
125
|
+
try:
|
|
126
|
+
loop.call_soon_threadsafe(_dump_async_state, name, filename)
|
|
127
|
+
except RuntimeError:
|
|
128
|
+
pass
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# Start the monitor in a background daemon thread
|
|
132
|
+
monitor_thread = threading.Thread(
|
|
133
|
+
target=dump_stacks_to_file,
|
|
134
|
+
args=(".cecli/logs/threads.log", 5, 10), # Clears every 10 prints
|
|
135
|
+
daemon=True,
|
|
136
|
+
)
|
|
137
|
+
monitor_thread.start()
|
|
@@ -333,7 +333,9 @@ def _closest_provider_match(sources, provider, route):
|
|
|
333
333
|
|
|
334
334
|
Raw sources are enumerated via a lightweight top-level key scan (a string
|
|
335
335
|
pass, never a full parse) and only ``provider/``-prefixed keys are parsed
|
|
336
|
-
for scoring, so the fallback stays memory friendly.
|
|
336
|
+
for scoring, so the fallback stays memory friendly. A candidate with no
|
|
337
|
+
shared leading characters is not a match: returning it would let an
|
|
338
|
+
unrelated route inherit an arbitrary sibling record's wire mode.
|
|
337
339
|
"""
|
|
338
340
|
if not provider:
|
|
339
341
|
return None
|
|
@@ -376,7 +378,7 @@ def _closest_provider_match(sources, provider, route):
|
|
|
376
378
|
best_score = score
|
|
377
379
|
best = record
|
|
378
380
|
|
|
379
|
-
return best
|
|
381
|
+
return best if best_score > 0 else None
|
|
380
382
|
|
|
381
383
|
|
|
382
384
|
def _prefix_score(left, right):
|
|
@@ -399,6 +399,10 @@ class ModelProviderManager:
|
|
|
399
399
|
)
|
|
400
400
|
response.raise_for_status()
|
|
401
401
|
return response.json()
|
|
402
|
+
except requests.exceptions.ConnectionError:
|
|
403
|
+
# Unreachable endpoint (e.g. no local Ollama server at
|
|
404
|
+
# localhost:11434): stay silent and contribute no models.
|
|
405
|
+
return None
|
|
402
406
|
except Exception as ex:
|
|
403
407
|
print(f"Failed to fetch {provider} model list: {ex}")
|
|
404
408
|
return None
|
|
@@ -89,10 +89,27 @@ class AgentProxy:
|
|
|
89
89
|
self._coder,
|
|
90
90
|
mcp_server=server,
|
|
91
91
|
mcp_tool_name=schema_name,
|
|
92
|
+
tool_schema=tool_schema,
|
|
92
93
|
)
|
|
93
94
|
|
|
94
95
|
raise ValueError(f"Unknown tool: '{tool_name}'")
|
|
95
96
|
|
|
97
|
+
def get_tool_schema(self, tool_name: str) -> dict[str, Any] | None:
|
|
98
|
+
"""Return a copy of the full function-calling schema for a tool.
|
|
99
|
+
|
|
100
|
+
Returns ``None`` when the tool has no schema. Unknown or disallowed
|
|
101
|
+
tools raise the same errors as ``get_tool``.
|
|
102
|
+
"""
|
|
103
|
+
return self.get_tool(tool_name).get_schema()
|
|
104
|
+
|
|
105
|
+
def get_tool_signature(self, tool_name: str) -> str | None:
|
|
106
|
+
"""Return a readable Python-style call signature for a tool.
|
|
107
|
+
|
|
108
|
+
Optional parameters without a declared default use ``...`` to show
|
|
109
|
+
that they may be omitted without implying a value such as ``None``.
|
|
110
|
+
"""
|
|
111
|
+
return self.get_tool(tool_name).get_signature()
|
|
112
|
+
|
|
96
113
|
def _find_mcp_server(self, server_name: str, server_prefix: str) -> Any:
|
|
97
114
|
if not hasattr(self._coder, "mcp_manager") or not self._coder.mcp_manager:
|
|
98
115
|
return None
|
|
@@ -547,7 +547,7 @@ def build_orchestration_context_block(agent_config: dict[str, Any]) -> str | Non
|
|
|
547
547
|
context = """<context name="orchestration" from="agent">
|
|
548
548
|
The `Orchestrate` tool runs Python in a sandbox where you can script other tools programmatically.
|
|
549
549
|
Use it for batch, loop-heavy, and repeat-able workflows.
|
|
550
|
-
|
|
550
|
+
The sandbox is stateless between calls — variables don't persist. To carry values across calls, use `state` (per-agent) or `shared_state` (cross-agent).
|
|
551
551
|
You may need to explore the below primitives to understand how to use the sandbox effectively.
|
|
552
552
|
|
|
553
553
|
### Primitives
|
|
@@ -556,11 +556,13 @@ You may need to explore the below primitives to understand how to use the sandbo
|
|
|
556
556
|
|-----------|--------------|
|
|
557
557
|
| `Agent.allowed_methods()` / `Agent.allowed_tools()` | List helper methods and available tools |
|
|
558
558
|
| `Agent.get_tool(name)` | Get a tool proxy (case-insensitive; `Local--` / `{{Server Name}}--` prefixes ok) |
|
|
559
|
+
| `Agent.get_tool_schema(name)` | Return a copy of the full function-calling JSON schema |
|
|
560
|
+
| `Agent.get_tool_signature(name)` | Return a readable Python-style signature; optional params without defaults appear as `= ...` |
|
|
559
561
|
| `await tool.call(**params)` | Run a tool; returns `{"result": [...], "errors": [...], "details": [...]}`, items with shape `{"content", "_"}` |
|
|
560
562
|
| `Agent.peek(result)` / `Agent.get_value(result, path, default?)` | Inspect / extract values from tool results. path is dot-separated string |
|
|
561
563
|
| `Agent.resolve_regions(path, specs)` / `Agent.edit_region(path, edits)` | Resolve text boundaries once, then apply edits |
|
|
562
564
|
| `gather(**tasks)` | Run tasks concurrently; results expose `.key` and `["key"]` |
|
|
563
|
-
| `state` / `shared_state` | Persistent dicts; `state.get(k)` falls back to `shared_state
|
|
565
|
+
| `state` / `shared_state` | Persistent dicts that survive between Orchestrate calls; `state.get(k)` falls back to `shared_state`. Use these for anything you need to reuse in a later call |
|
|
564
566
|
| `print(...)` / `reset(local_vars=True, state=False)` | Emit output / clear namespaces |
|
|
565
567
|
| `typeof(x)`, `isinstance(x, t)`, `hasattr(x, n)`, `repr(x)`, `vars(obj)` | Type inspection and debugging |
|
|
566
568
|
|
|
@@ -12,6 +12,7 @@ import json
|
|
|
12
12
|
import pathlib
|
|
13
13
|
import re as _re_mod
|
|
14
14
|
import traceback as _tb_mod
|
|
15
|
+
from collections.abc import Mapping
|
|
15
16
|
from typing import Any
|
|
16
17
|
|
|
17
18
|
# ---------------------------------------------------------------------------
|
|
@@ -139,12 +140,12 @@ async def _safe_sleep(seconds: float) -> None:
|
|
|
139
140
|
await asyncio.sleep(seconds)
|
|
140
141
|
|
|
141
142
|
|
|
142
|
-
class GatherResult:
|
|
143
|
-
"""
|
|
143
|
+
class GatherResult(Mapping[str, Any]):
|
|
144
|
+
"""Read-only mapping of named ``gather()`` task results.
|
|
144
145
|
|
|
145
|
-
Supports
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
Supports standard mapping access (``results["task"]``, iteration over
|
|
147
|
+
keys, and ``keys()``, ``values()``, and ``items()``) plus attribute access
|
|
148
|
+
as a convenience. Use key access when task names may collide with methods.
|
|
148
149
|
"""
|
|
149
150
|
|
|
150
151
|
def __init__(self, results: dict[str, Any]) -> None:
|
|
@@ -192,7 +193,7 @@ class GatherResult:
|
|
|
192
193
|
|
|
193
194
|
def __iter__(self):
|
|
194
195
|
results = object.__getattribute__(self, "_results")
|
|
195
|
-
return iter(results
|
|
196
|
+
return iter(results)
|
|
196
197
|
|
|
197
198
|
def keys(self) -> Any:
|
|
198
199
|
results = object.__getattribute__(self, "_results")
|
|
@@ -225,12 +226,12 @@ async def _safe_gather(*args: Any, **named_awaitables: Any):
|
|
|
225
226
|
Safely execute multiple awaitables concurrently.
|
|
226
227
|
|
|
227
228
|
All awaitables must be passed as keyword arguments. Results are returned
|
|
228
|
-
as a ``GatherResult`` with attribute
|
|
229
|
+
as a ``GatherResult`` mapping with attribute access as a convenience:
|
|
229
230
|
|
|
230
231
|
results = await gather(read_a=task_a, grep_b=task_b)
|
|
231
|
-
print(results
|
|
232
|
-
print(results
|
|
233
|
-
|
|
232
|
+
print(results["read_a"]) # canonical mapping access
|
|
233
|
+
print(results.grep_b) # attribute convenience
|
|
234
|
+
list(results) # task names
|
|
234
235
|
|
|
235
236
|
Forces ``return_exceptions=True`` so that failures in one task
|
|
236
237
|
do not crash the entire batch. Exceptions are converted to
|