cecli-dev 0.99.11__tar.gz → 0.99.12__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-0.99.11 → cecli_dev-0.99.12}/PKG-INFO +1 -1
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/__init__.py +1 -1
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/_version.py +3 -3
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/agent_coder.py +16 -9
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/base_coder.py +3 -5
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/clear.py +2 -1
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/reset.py +2 -1
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/observations/manager.py +8 -5
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/io.py +3 -5
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/main.py +14 -8
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/models.py +20 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/sessions.py +2 -2
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/context_manager.py +1 -2
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/edit_text.py +3 -3
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/load_skill.py +1 -4
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/read_range.py +25 -16
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/remove_skill.py +1 -4
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/thinking.py +2 -2
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/utils/registry.py +11 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/PKG-INFO +1 -1
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_models.py +52 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/observations/test_observation_manager.py +0 -2
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.dockerignore +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.flake8 +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.gitattributes +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.gitignore +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/CHANGELOG.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/CNAME +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/HISTORY.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/LICENSE.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/MANIFEST.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/README.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/README.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/docker.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/over_time.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/plot.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/plots.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/prompts.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/__main__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/args.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/add.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/code.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/context.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/core.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/git.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/help.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/load.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/map.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/model.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/models.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/report.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/run.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/save.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/test.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/web.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/diffs.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/dump.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/editor.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/exceptions.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/format_settings.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/help.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/help_pats.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/main.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/history.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/linter.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/llm.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/mdstream.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/onboarding.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/base.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/repo.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/repomap.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/report.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/scrape.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/sendchat.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/special.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/command.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/grep.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/ls.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/app.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/io.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/urls.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/utils.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/voice.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/waiting.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/watch.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/SOURCES.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/requires.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/docker/Dockerfile +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/pyproject.toml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/pytest.ini +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/common-constraints.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/requirements.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/requirements.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/30k-image.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/blame.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/cost_calculator.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/homepage.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/issues.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/update-history.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/versionbump.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/setup.cfg +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/shim.pyproject.toml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_repo.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/conftest.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/help/test_help.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/hooks/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/mcp/__init__.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/tui/test_app.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 = '0.99.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 99,
|
|
21
|
+
__version__ = version = '0.99.12'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 99, 12)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gdd84a43a9'
|
|
@@ -282,9 +282,7 @@ class AgentCoder(Coder):
|
|
|
282
282
|
content_parts.append(item.text)
|
|
283
283
|
return "".join(content_parts)
|
|
284
284
|
except Exception as e:
|
|
285
|
-
self.io.tool_warning(
|
|
286
|
-
(f"Executing {tool_name} on {server.name} failed:\nError: {e}")
|
|
287
|
-
)
|
|
285
|
+
self.io.tool_warning(f"Executing {tool_name} on {server.name} failed:\nError: {e}")
|
|
288
286
|
return f"Error executing tool call {tool_name}: {e}"
|
|
289
287
|
|
|
290
288
|
result, interrupted = await interruptible(_exec_async(), self.interrupt_event)
|
|
@@ -381,7 +379,10 @@ class AgentCoder(Coder):
|
|
|
381
379
|
try:
|
|
382
380
|
result = '<context name="symbol_outline" from="agent">\n'
|
|
383
381
|
result += "## Symbol Outline (Current Context)\n\n"
|
|
384
|
-
result +=
|
|
382
|
+
result += (
|
|
383
|
+
"Code definitions (classes, functions, methods, etc.) found in files currently in"
|
|
384
|
+
" chat context."
|
|
385
|
+
)
|
|
385
386
|
result += "\n\n"
|
|
386
387
|
files_to_outline = list(self.abs_fnames) + list(self.abs_read_only_fnames)
|
|
387
388
|
if not files_to_outline:
|
|
@@ -522,7 +523,10 @@ class AgentCoder(Coder):
|
|
|
522
523
|
)
|
|
523
524
|
if editable_files:
|
|
524
525
|
result += "\n".join(editable_files) + "\n\n"
|
|
525
|
-
result +=
|
|
526
|
+
result += (
|
|
527
|
+
f"**Total editable: {len(editable_files)} files,"
|
|
528
|
+
f" {editable_tokens:,} tokens**\n\n"
|
|
529
|
+
)
|
|
526
530
|
else:
|
|
527
531
|
result += "No editable files in context\n\n"
|
|
528
532
|
if self.abs_read_only_fnames:
|
|
@@ -542,7 +546,10 @@ class AgentCoder(Coder):
|
|
|
542
546
|
)
|
|
543
547
|
if readonly_files:
|
|
544
548
|
result += "\n".join(readonly_files) + "\n\n"
|
|
545
|
-
result +=
|
|
549
|
+
result += (
|
|
550
|
+
f"**Total read-only: {len(readonly_files)} files,"
|
|
551
|
+
f" {readonly_tokens:,} tokens**\n\n"
|
|
552
|
+
)
|
|
546
553
|
else:
|
|
547
554
|
result += "No read-only files in context\n\n"
|
|
548
555
|
extra_tokens = sum(self.context_block_tokens.values())
|
|
@@ -730,7 +737,7 @@ class AgentCoder(Coder):
|
|
|
730
737
|
self.model_kwargs = {}
|
|
731
738
|
result_message = f"Error executing {tool_name}: {e}"
|
|
732
739
|
self.io.tool_error(
|
|
733
|
-
|
|
740
|
+
f"Error during {tool_name} execution: {e}\n{traceback.format_exc()}"
|
|
734
741
|
)
|
|
735
742
|
tool_responses.append(
|
|
736
743
|
{"role": "tool", "tool_call_id": tool_call.id, "content": result_message}
|
|
@@ -1020,8 +1027,8 @@ class AgentCoder(Coder):
|
|
|
1020
1027
|
context_parts.append("## File Editing Tools Disabled")
|
|
1021
1028
|
context_parts.append(
|
|
1022
1029
|
"File editing tools are currently disabled. Use `ReadRange` to determine the"
|
|
1023
|
-
" current content hash prefixes needed to perform an edit and activate them when
|
|
1024
|
-
" are ready to edit a file."
|
|
1030
|
+
" current content hash prefixes needed to perform an edit and activate them when"
|
|
1031
|
+
" you are ready to edit a file."
|
|
1025
1032
|
)
|
|
1026
1033
|
|
|
1027
1034
|
context_parts.append("\n\n")
|
|
@@ -453,7 +453,6 @@ class Coder:
|
|
|
453
453
|
|
|
454
454
|
# Initialize conversation system if enabled
|
|
455
455
|
ConversationService.get_chunks(self).initialize_conversation_system()
|
|
456
|
-
self.observation_manager = ObservationManager.get_instance(self)
|
|
457
456
|
|
|
458
457
|
self.commands = commands or Commands(self.io, self, args=args)
|
|
459
458
|
self.commands.coder = self
|
|
@@ -1752,7 +1751,7 @@ class Coder:
|
|
|
1752
1751
|
return
|
|
1753
1752
|
|
|
1754
1753
|
# Trigger background observation/reflection check
|
|
1755
|
-
await self.
|
|
1754
|
+
await ObservationManager.get_instance(self).check_and_trigger()
|
|
1756
1755
|
|
|
1757
1756
|
manager = ConversationService.get_manager(self)
|
|
1758
1757
|
done_messages = manager.get_messages_dict(MessageTag.DONE)
|
|
@@ -1789,8 +1788,8 @@ class Coder:
|
|
|
1789
1788
|
if not text:
|
|
1790
1789
|
raise ValueError(f"Summarization of {tag} messages returned empty.")
|
|
1791
1790
|
|
|
1792
|
-
if self.
|
|
1793
|
-
obs_text = "\n".join(self.
|
|
1791
|
+
if ObservationManager.get_instance(self).observations:
|
|
1792
|
+
obs_text = "\n".join(ObservationManager.get_instance(self).observations)
|
|
1794
1793
|
text = f"HISTORICAL OBSERVATIONS:\n{obs_text}\n\n{text}"
|
|
1795
1794
|
|
|
1796
1795
|
manager.clear_tag(tag)
|
|
@@ -2780,7 +2779,6 @@ class Coder:
|
|
|
2780
2779
|
|
|
2781
2780
|
def _print_tool_call_info(self, server_tool_calls):
|
|
2782
2781
|
"""Print information about an MCP tool call."""
|
|
2783
|
-
self.io.ring_bell()
|
|
2784
2782
|
# self.io.tool_output("Preparing to run MCP tools", bold=False)
|
|
2785
2783
|
|
|
2786
2784
|
for server, tool_calls in server_tool_calls.items():
|
|
@@ -2,6 +2,7 @@ from typing import List
|
|
|
2
2
|
|
|
3
3
|
from cecli.commands.utils.base_command import BaseCommand
|
|
4
4
|
from cecli.commands.utils.helpers import format_command_result
|
|
5
|
+
from cecli.helpers.observations.manager import ObservationManager
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class ClearCommand(BaseCommand):
|
|
@@ -19,7 +20,7 @@ class ClearCommand(BaseCommand):
|
|
|
19
20
|
ConversationService.get_manager(coder).clear_tag(MessageTag.FILE_CONTEXTS)
|
|
20
21
|
|
|
21
22
|
ConversationService.get_files(coder).reset()
|
|
22
|
-
coder.
|
|
23
|
+
ObservationManager.get_instance(coder).reset()
|
|
23
24
|
|
|
24
25
|
# Clear TUI output if available
|
|
25
26
|
if coder.tui and coder.tui():
|
|
@@ -3,6 +3,7 @@ from typing import List
|
|
|
3
3
|
from cecli.commands.utils.base_command import BaseCommand
|
|
4
4
|
from cecli.commands.utils.helpers import format_command_result
|
|
5
5
|
from cecli.helpers.conversation import ConversationService
|
|
6
|
+
from cecli.helpers.observations.manager import ObservationManager
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class ResetCommand(BaseCommand):
|
|
@@ -24,7 +25,7 @@ class ResetCommand(BaseCommand):
|
|
|
24
25
|
# Re-initialize Conversation components with current coder
|
|
25
26
|
ConversationService.get_manager(coder).initialize(reformat=True)
|
|
26
27
|
ConversationService.get_files(coder) # Ensure instance exists/initialized
|
|
27
|
-
coder.
|
|
28
|
+
ObservationManager.get_instance(coder).reset()
|
|
28
29
|
|
|
29
30
|
# Clear TUI output if available
|
|
30
31
|
if coder.tui and coder.tui():
|
|
@@ -26,17 +26,21 @@ class ObservationManager:
|
|
|
26
26
|
if self.is_processing:
|
|
27
27
|
return
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
cur_messages = manager.get_messages_dict(MessageTag.CUR)
|
|
29
|
+
cur_messages = ConversationService.get_manager(self.coder).get_messages_dict(MessageTag.CUR)
|
|
31
30
|
|
|
32
31
|
# Calculate unobserved tokens
|
|
33
32
|
unobserved = cur_messages[self._last_observed_index :]
|
|
33
|
+
current_index = len(cur_messages)
|
|
34
|
+
|
|
34
35
|
if not unobserved:
|
|
35
36
|
return
|
|
36
37
|
|
|
37
38
|
tokens = self.coder.summarizer.count_tokens(unobserved)
|
|
38
39
|
|
|
39
|
-
if
|
|
40
|
+
if (
|
|
41
|
+
tokens >= self.observation_threshold
|
|
42
|
+
and (not self._last_observed_index or current_index - self._last_observed_index >= 10)
|
|
43
|
+
) or tokens >= 2 * self.observation_threshold:
|
|
40
44
|
asyncio.create_task(self.run_observation(unobserved))
|
|
41
45
|
self._last_observed_index = len(cur_messages)
|
|
42
46
|
|
|
@@ -50,8 +54,7 @@ class ObservationManager:
|
|
|
50
54
|
async def run_observation(self, messages):
|
|
51
55
|
self.is_processing = True
|
|
52
56
|
try:
|
|
53
|
-
|
|
54
|
-
all_messages = manager.get_messages_dict()
|
|
57
|
+
all_messages = ConversationService.get_manager(self.coder).get_messages_dict()
|
|
55
58
|
prompt = self.coder.gpt_prompts.observation_prompt
|
|
56
59
|
observation = await self.coder.summarizer.summarize_all_as_text(
|
|
57
60
|
all_messages, prompt, max_tokens=8192
|
|
@@ -1718,13 +1718,13 @@ class InputOutput:
|
|
|
1718
1718
|
"$toastXml = $template.GetXml(); "
|
|
1719
1719
|
"$toastXml.GetElementsByTagName('text')[0].AppendChild"
|
|
1720
1720
|
"($template.CreateTextNode('cecli')) > $null; "
|
|
1721
|
-
|
|
1721
|
+
"$toastXml.GetElementsByTagName('text')[1].AppendChild"
|
|
1722
1722
|
f"($template.CreateTextNode('{NOTIFICATION_MESSAGE}')) > $null; "
|
|
1723
1723
|
"$toast = [Windows.UI.Notifications.ToastNotification]::new($toastXml); "
|
|
1724
1724
|
"[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('cecli')"
|
|
1725
1725
|
'.Show($toast)"'
|
|
1726
1726
|
)
|
|
1727
|
-
return "powershell -
|
|
1727
|
+
return "powershell -WindowStyle Hidden -Command" + ps_command
|
|
1728
1728
|
|
|
1729
1729
|
return None # Unknown system
|
|
1730
1730
|
|
|
@@ -1739,9 +1739,7 @@ class InputOutput:
|
|
|
1739
1739
|
"stderr": subprocess.DEVNULL,
|
|
1740
1740
|
}
|
|
1741
1741
|
if platform.system() == "Windows":
|
|
1742
|
-
kwargs["creationflags"] =
|
|
1743
|
-
subprocess.CREATE_NO_WINDOW | subprocess.DETACHED_PROCESS
|
|
1744
|
-
)
|
|
1742
|
+
kwargs["creationflags"] = subprocess.CREATE_NO_WINDOW
|
|
1745
1743
|
else:
|
|
1746
1744
|
# For non-Windows systems, start a new session to detach
|
|
1747
1745
|
kwargs["start_new_session"] = True
|
|
@@ -1194,15 +1194,21 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
|
|
|
1194
1194
|
if args.exit:
|
|
1195
1195
|
return await graceful_exit(coder)
|
|
1196
1196
|
if args.auto_load:
|
|
1197
|
-
|
|
1198
|
-
|
|
1197
|
+
if await pre_init_io.confirm_ask(
|
|
1198
|
+
"Do you want to load your previous session?",
|
|
1199
|
+
acknowledge=True,
|
|
1200
|
+
explicit_yes_required=True,
|
|
1201
|
+
):
|
|
1202
|
+
try:
|
|
1203
|
+
from cecli.sessions import SessionManager
|
|
1199
1204
|
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1205
|
+
session_manager = SessionManager(coder, io)
|
|
1206
|
+
await session_manager.load_session(
|
|
1207
|
+
args.auto_save_session_name if args.auto_save_session_name else "auto-save",
|
|
1208
|
+
switch=False,
|
|
1209
|
+
)
|
|
1210
|
+
except Exception:
|
|
1211
|
+
pass
|
|
1206
1212
|
|
|
1207
1213
|
if suppress_pre_init:
|
|
1208
1214
|
await graceful_exit(coder)
|
|
@@ -1172,6 +1172,26 @@ class Model(ModelSettings):
|
|
|
1172
1172
|
sorted_tools = sorted(
|
|
1173
1173
|
effective_tools, key=lambda x: x.get("function", {}).get("name", "Invalid Name")
|
|
1174
1174
|
)
|
|
1175
|
+
|
|
1176
|
+
try:
|
|
1177
|
+
# Deep copy to avoid modifying original tool schemas
|
|
1178
|
+
sorted_tools = json.loads(json.dumps(sorted_tools))
|
|
1179
|
+
|
|
1180
|
+
for tool in sorted_tools:
|
|
1181
|
+
function_schema = tool.get("function")
|
|
1182
|
+
if function_schema and "description" in function_schema:
|
|
1183
|
+
desc = function_schema.get("description")
|
|
1184
|
+
if isinstance(desc, str):
|
|
1185
|
+
# Escape the description string for JSON, but without the outer quotes.
|
|
1186
|
+
# This is a workaround for issues with special characters in descriptions.
|
|
1187
|
+
function_schema["description"] = json.dumps(desc, ensure_ascii=False)[
|
|
1188
|
+
1:-1
|
|
1189
|
+
]
|
|
1190
|
+
except (TypeError, json.JSONDecodeError):
|
|
1191
|
+
# If deep copy fails, proceed with original tools.
|
|
1192
|
+
# This is a safeguard.
|
|
1193
|
+
pass
|
|
1194
|
+
|
|
1175
1195
|
kwargs["tools"] = sorted_tools
|
|
1176
1196
|
|
|
1177
1197
|
if functions and len(functions) == 1:
|
|
@@ -88,7 +88,7 @@ class SessionManager:
|
|
|
88
88
|
|
|
89
89
|
return sessions
|
|
90
90
|
|
|
91
|
-
async def load_session(self, session_identifier: str) -> bool:
|
|
91
|
+
async def load_session(self, session_identifier: str, switch=True) -> bool:
|
|
92
92
|
"""Load a saved session by name or file path."""
|
|
93
93
|
if not session_identifier:
|
|
94
94
|
self.io.tool_error("Please provide a session name or file path.")
|
|
@@ -113,7 +113,7 @@ class SessionManager:
|
|
|
113
113
|
|
|
114
114
|
# Apply session data
|
|
115
115
|
applied, loaded_edit_format = await self._apply_session_data(session_data, session_file)
|
|
116
|
-
if applied:
|
|
116
|
+
if applied and switch:
|
|
117
117
|
from cecli.commands import SwitchCoderSignal
|
|
118
118
|
|
|
119
119
|
edit_format_to_switch_to = self.coder.edit_format
|
|
@@ -32,8 +32,7 @@ class Tool(BaseTool):
|
|
|
32
32
|
"type": "array",
|
|
33
33
|
"items": {"type": "string"},
|
|
34
34
|
"description": (
|
|
35
|
-
"List of file paths to add as read-only. "
|
|
36
|
-
"Limit to at most 2 at a time."
|
|
35
|
+
"List of file paths to add as read-only. Limit to at most 2 at a time."
|
|
37
36
|
),
|
|
38
37
|
},
|
|
39
38
|
"create": {
|
|
@@ -37,7 +37,7 @@ class Tool(BaseTool):
|
|
|
37
37
|
"Can handle an array of up to 10 edits across multiple files. "
|
|
38
38
|
"Each edit must include its own file_path and operation type. "
|
|
39
39
|
"Use content hash ranges with the start_line and end_line parameters with format "
|
|
40
|
-
|
|
40
|
+
"`{4 char hash}` (without the braces). For empty files, use `@000` as the "
|
|
41
41
|
"content hash references."
|
|
42
42
|
),
|
|
43
43
|
"parameters": {
|
|
@@ -71,14 +71,14 @@ class Tool(BaseTool):
|
|
|
71
71
|
"start_line": {
|
|
72
72
|
"type": "string",
|
|
73
73
|
"description": (
|
|
74
|
-
|
|
74
|
+
"Content hash for start line: `{4 char hash}` (without "
|
|
75
75
|
"the braces)"
|
|
76
76
|
),
|
|
77
77
|
},
|
|
78
78
|
"end_line": {
|
|
79
79
|
"type": "string",
|
|
80
80
|
"description": (
|
|
81
|
-
|
|
81
|
+
"Content hash for end line: `{4 char hash}` (without the"
|
|
82
82
|
" braces)"
|
|
83
83
|
),
|
|
84
84
|
},
|
|
@@ -7,10 +7,7 @@ class Tool(BaseTool):
|
|
|
7
7
|
"type": "function",
|
|
8
8
|
"function": {
|
|
9
9
|
"name": "LoadSkill",
|
|
10
|
-
"description":
|
|
11
|
-
"Load a skill by name (agent mode only). Adds skill to include list and removes"
|
|
12
|
-
" from exclude list."
|
|
13
|
-
),
|
|
10
|
+
"description": "Load a skill by name.",
|
|
14
11
|
"parameters": {
|
|
15
12
|
"type": "object",
|
|
16
13
|
"properties": {
|
|
@@ -22,17 +22,16 @@ class Tool(BaseTool):
|
|
|
22
22
|
"name": "ReadRange",
|
|
23
23
|
"description": (
|
|
24
24
|
"Get content hash prefixes of content between start and end patterns in files."
|
|
25
|
-
" Accepts an array of `show` objects, each with file_path, start_text,"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
" start_texts and end_texts."
|
|
25
|
+
" Accepts an array of `show` objects, each with file_path, start_text, end_text."
|
|
26
|
+
" These values must be lines from the content of the file. They can contain up to 3"
|
|
27
|
+
" lines but newlines should generally be avoided. Avoid using generic keywords and"
|
|
28
|
+
" symbols.Special markers @000 and 000@ represent the file boundaries and can be"
|
|
29
|
+
" used for start_text and end_text for the first and last lines of the file"
|
|
30
|
+
" respectively. Avoid using both of the special markers together on non-empty"
|
|
31
|
+
" files. Never use content hashes as the start_text and end_text values. Do not use"
|
|
32
|
+
" the same pattern for the start_text and end_text. It is best to use function"
|
|
33
|
+
" names, variable declarations and other block identifiers as start_texts and"
|
|
34
|
+
" end_texts."
|
|
36
35
|
),
|
|
37
36
|
"parameters": {
|
|
38
37
|
"type": "object",
|
|
@@ -127,7 +126,10 @@ class Tool(BaseTool):
|
|
|
127
126
|
error_outputs.append(
|
|
128
127
|
cls.format_error(
|
|
129
128
|
coder,
|
|
130
|
-
|
|
129
|
+
(
|
|
130
|
+
f"Show operation {show_index + 1}: Provide both 'start_text' and"
|
|
131
|
+
" 'end_text'."
|
|
132
|
+
),
|
|
131
133
|
file_path,
|
|
132
134
|
start_text,
|
|
133
135
|
end_text,
|
|
@@ -284,7 +286,10 @@ class Tool(BaseTool):
|
|
|
284
286
|
error_outputs.append(
|
|
285
287
|
cls.format_error(
|
|
286
288
|
coder,
|
|
287
|
-
|
|
289
|
+
(
|
|
290
|
+
f"End pattern '{end_text}' not found in {file_path}. Do not"
|
|
291
|
+
" search for it again."
|
|
292
|
+
),
|
|
288
293
|
file_path,
|
|
289
294
|
start_text,
|
|
290
295
|
end_text,
|
|
@@ -297,7 +302,10 @@ class Tool(BaseTool):
|
|
|
297
302
|
error_outputs.append(
|
|
298
303
|
cls.format_error(
|
|
299
304
|
coder,
|
|
300
|
-
|
|
305
|
+
(
|
|
306
|
+
f"End pattern '{end_text}' not found after start pattern in"
|
|
307
|
+
f" {file_path}."
|
|
308
|
+
),
|
|
301
309
|
file_path,
|
|
302
310
|
start_text,
|
|
303
311
|
end_text,
|
|
@@ -314,7 +322,7 @@ class Tool(BaseTool):
|
|
|
314
322
|
cls.format_error(
|
|
315
323
|
coder,
|
|
316
324
|
(
|
|
317
|
-
|
|
325
|
+
"Special markers cannot be used for ranges greater than 200 lines."
|
|
318
326
|
f" The resolved range is {e_idx - s_idx + 1} lines."
|
|
319
327
|
" Pick more refined boundaries."
|
|
320
328
|
),
|
|
@@ -466,7 +474,8 @@ class Tool(BaseTool):
|
|
|
466
474
|
)
|
|
467
475
|
if already_up_to_details:
|
|
468
476
|
coder.io.tool_output(
|
|
469
|
-
|
|
477
|
+
"Lines already up to date in context for"
|
|
478
|
+
f" {len(already_up_to_details)} operation(s)"
|
|
470
479
|
)
|
|
471
480
|
|
|
472
481
|
detail_str = "\n".join(already_up_to_details)
|
|
@@ -7,10 +7,7 @@ class Tool(BaseTool):
|
|
|
7
7
|
"type": "function",
|
|
8
8
|
"function": {
|
|
9
9
|
"name": "RemoveSkill",
|
|
10
|
-
"description":
|
|
11
|
-
"Remove a skill by name (agent mode only). Removes skill from include list and adds"
|
|
12
|
-
" to exclude list."
|
|
13
|
-
),
|
|
10
|
+
"description": "Remove a skill by name.",
|
|
14
11
|
"parameters": {
|
|
15
12
|
"type": "object",
|
|
16
13
|
"properties": {
|
|
@@ -11,8 +11,8 @@ class Tool(BaseTool):
|
|
|
11
11
|
"function": {
|
|
12
12
|
"name": "Thinking",
|
|
13
13
|
"description": (
|
|
14
|
-
"Use this tool to store useful facts for later "
|
|
15
|
-
"keep a scratch pad of your current efforts "
|
|
14
|
+
"Use this tool to store useful facts for later, "
|
|
15
|
+
"keep a scratch pad of your current efforts, "
|
|
16
16
|
"and clarify your thoughts and intentions for your next steps."
|
|
17
17
|
),
|
|
18
18
|
"parameters": {
|
|
@@ -6,6 +6,7 @@ this provides centralized tool registration, discovery, and filtering
|
|
|
6
6
|
based on agent configuration.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
+
import json
|
|
9
10
|
import traceback
|
|
10
11
|
from pathlib import Path
|
|
11
12
|
from typing import Dict, List, Optional, Set, Type
|
|
@@ -32,6 +33,16 @@ class ToolRegistry:
|
|
|
32
33
|
except Exception:
|
|
33
34
|
pass
|
|
34
35
|
|
|
36
|
+
description = tool_class.SCHEMA["function"]["description"]
|
|
37
|
+
wrapped = f'"{description}"'
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
json.loads(wrapped)
|
|
41
|
+
except json.JSONDecodeError:
|
|
42
|
+
tool_class.SCHEMA["function"]["description"] = json.dumps(
|
|
43
|
+
description, ensure_ascii=False
|
|
44
|
+
)[1:-1]
|
|
45
|
+
|
|
35
46
|
if not name and hasattr(tool_class, "NORM_NAME"):
|
|
36
47
|
name = tool_class.NORM_NAME
|
|
37
48
|
|
|
@@ -810,3 +810,55 @@ class TestModels:
|
|
|
810
810
|
output_found = any("$10.50/1m/output" in call for call in calls)
|
|
811
811
|
assert input_found, "Input pricing format incorrect"
|
|
812
812
|
assert output_found, "Output pricing format incorrect"
|
|
813
|
+
|
|
814
|
+
@patch("cecli.models.litellm.acompletion")
|
|
815
|
+
async def test_tool_description_escaping(self, mock_acompletion):
|
|
816
|
+
"""
|
|
817
|
+
Test that tool descriptions with special characters are properly escaped.
|
|
818
|
+
"""
|
|
819
|
+
model = Model("gpt-4")
|
|
820
|
+
messages = [{"role": "user", "content": "Hello"}]
|
|
821
|
+
|
|
822
|
+
# A complex description with various special characters
|
|
823
|
+
complex_description = (
|
|
824
|
+
'This is a "test" description with `special` characters like \\, \n, and *.'
|
|
825
|
+
)
|
|
826
|
+
|
|
827
|
+
# Mock tool with the complex description
|
|
828
|
+
mock_tool = {
|
|
829
|
+
"type": "function",
|
|
830
|
+
"function": {
|
|
831
|
+
"name": "test_tool",
|
|
832
|
+
"description": complex_description,
|
|
833
|
+
"parameters": {
|
|
834
|
+
"type": "object",
|
|
835
|
+
"properties": {},
|
|
836
|
+
"required": [],
|
|
837
|
+
},
|
|
838
|
+
},
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
await model.send_completion(messages, functions=None, stream=False, tools=[mock_tool])
|
|
842
|
+
|
|
843
|
+
# Verify that acompletion was called
|
|
844
|
+
mock_acompletion.assert_called_once()
|
|
845
|
+
|
|
846
|
+
# Get the keyword arguments passed to acompletion
|
|
847
|
+
call_kwargs = mock_acompletion.call_args.kwargs
|
|
848
|
+
|
|
849
|
+
# Check that the 'tools' argument is present and correctly formatted
|
|
850
|
+
assert "tools" in call_kwargs
|
|
851
|
+
sent_tools = call_kwargs["tools"]
|
|
852
|
+
assert isinstance(sent_tools, list)
|
|
853
|
+
assert len(sent_tools) == 1
|
|
854
|
+
|
|
855
|
+
# Verify the description of the sent tool
|
|
856
|
+
sent_tool_function = sent_tools[0].get("function", {})
|
|
857
|
+
sent_description = sent_tool_function.get("description")
|
|
858
|
+
|
|
859
|
+
# The description should be a JSON-escaped string
|
|
860
|
+
# Expected: 'This is a \\"test\\" description with `special` characters like \\\\, \\n, and *.'
|
|
861
|
+
expected_escaped_description = (
|
|
862
|
+
'This is a \\"test\\" description with `special` characters like \\\\, \\n, and *.'
|
|
863
|
+
)
|
|
864
|
+
assert sent_description == expected_escaped_description
|
{cecli_dev-0.99.11 → cecli_dev-0.99.12}/tests/helpers/observations/test_observation_manager.py
RENAMED
|
@@ -71,7 +71,6 @@ async def test_compact_context_with_observations():
|
|
|
71
71
|
# Mock observation manager with some observations
|
|
72
72
|
obs_manager = ObservationManager.get_instance(coder)
|
|
73
73
|
obs_manager.observations = ["Observation 1"]
|
|
74
|
-
coder.observation_manager = obs_manager
|
|
75
74
|
|
|
76
75
|
# Mock prompts
|
|
77
76
|
coder.gpt_prompts = MagicMock()
|
|
@@ -136,7 +135,6 @@ async def test_compact_context_with_observations_integration():
|
|
|
136
135
|
# Mock observation manager with some observations
|
|
137
136
|
obs_manager = ObservationManager.get_instance(coder)
|
|
138
137
|
obs_manager.observations = ["Observation 1"]
|
|
139
|
-
coder.observation_manager = obs_manager
|
|
140
138
|
|
|
141
139
|
# Mock prompts
|
|
142
140
|
coder.gpt_prompts = MagicMock()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|