cecli-dev 0.99.2__tar.gz → 0.99.3__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.2 → cecli_dev-0.99.3}/PKG-INFO +2 -1
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/__init__.py +1 -1
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/_version.py +3 -3
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/args.py +6 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/agent_coder.py +6 -7
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/base_coder.py +114 -129
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/clear.py +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/reset.py +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/integration.py +8 -2
- cecli_dev-0.99.3/cecli/helpers/observations/manager.py +98 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/agent.yml +7 -7
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/base.yml +29 -15
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/hashline.yml +2 -1
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/__init__.py +2 -6
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/command.py +51 -4
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/context_manager.py +33 -0
- cecli_dev-0.99.3/cecli/tools/explore_symbols.py +287 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/grep.py +51 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/insert_text.py +2 -2
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/ls.py +25 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/replace_text.py +2 -2
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/show_context.py +36 -2
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/utils/base_tool.py +21 -1
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/app.py +8 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/styles.tcss +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/input_container.py +5 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/output.py +2 -2
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/PKG-INFO +2 -1
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/SOURCES.txt +4 -3
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/requires.txt +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/pytest.ini +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/common-constraints.txt +2 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements.in +1 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements.txt +4 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_find_or_blocks.py +8 -4
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_repo.py +36 -24
- cecli_dev-0.99.3/tests/helpers/observations/test_observation_manager.py +185 -0
- cecli_dev-0.99.3/tests/mcp/__init__.py +0 -0
- cecli_dev-0.99.2/cecli/tools/list_changes.py +0 -71
- cecli_dev-0.99.2/cecli/tools/view_files_matching.py +0 -138
- cecli_dev-0.99.2/cecli/tools/view_files_with_symbol.py +0 -117
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.dockerignore +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.flake8 +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.gitattributes +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/issues.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/pages.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/release.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.gitignore +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/.pre-commit-config.yaml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/CHANGELOG.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/CNAME +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/CONTRIBUTING.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/HISTORY.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/LICENSE.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/MANIFEST.in +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/README.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/Dockerfile +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/README.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/benchmark.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/docker.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/docker_build.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/npm-test.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/over_time.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/plot.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/plots.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/problem_stats.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/prompts.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/rsync.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/rungrid.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/swe_bench.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/variations.1.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/variations.2.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/variations.3.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/benchmark/variations.4.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/__main__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/args_formatter.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/change_tracker.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/shell.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/add.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/agent.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/architect.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/ask.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/code.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/commit.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/compact.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/context.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/context_management.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/copy.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/core.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/diff.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/drop.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/editor.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/exit.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/git.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/hashline.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/help.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/history_search.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/hooks.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/lint.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/load.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/load_session.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/ls.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/map.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/model.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/models.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/paste.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/quit.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/read_only.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/report.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/rules.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/run.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/save.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/save_session.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/settings.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/terminal_setup.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/test.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/tokens.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/undo.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/utils/save_load_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/voice.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/web.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/commands/workspace.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/deprecated_args.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/diffs.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/dump.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/editor.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/exceptions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/format_settings.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/help.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/help_pats.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/background_commands.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/monorepo/config.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/monorepo/workspace.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/nested.py +0 -0
- {cecli_dev-0.99.2/cecli/prompts → cecli_dev-0.99.3/cecli/helpers/observations}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/requests.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/responses.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/helpers/skills.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/history.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/base.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/integration.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/hooks/types.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/interruptible_input.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/io.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/linter.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/llm.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/main.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mcp/manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mcp/oauth.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mcp/server.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mcp/utils.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/mdstream.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/models.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/onboarding.py +0 -0
- {cecli_dev-0.99.2/cecli/prompts/utils → cecli_dev-0.99.3/cecli/prompts}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/context.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/help.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-0.99.2/scripts → cecli_dev-0.99.3/cecli/prompts/utils}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/utils/registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/repo.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/repomap.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/report.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/resources/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/resources/model-metadata.json +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/resources/providers.json +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/run_cmd.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/scrape.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/sendchat.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/sessions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/special.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/command_interactive.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/delete_text.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/finished.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_log.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_show.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/git_status.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/load_skill.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/remove_skill.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/thinking.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/io.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/tui/worker.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/urls.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/utils.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/versioncheck.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/voice.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/waiting.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/watch.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/watch_prompts.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/Gemfile +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/aider_conf.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/mcp.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/config.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/faq.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/git.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/index.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/install/optional.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/install.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli/website/share/index.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/docker/Dockerfile +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/pyproject.toml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-dev.in +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-help.in +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-help.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/requirements/tree-sitter.in +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/30k-image.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-0.99.2/tests → cecli_dev-0.99.3/scripts}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/blame.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/clean_metadata.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/dl_icons.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/generate_providers.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/get_hashline.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/history_prompts.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/homepage.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/issues.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/logo_svg.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/pip-compile.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/recording_audio.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/redact-cast.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/tmux_record.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/update-blame.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/update-docs.sh +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/update-history.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/versionbump.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/setup.cfg +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/shim.pyproject.toml +0 -0
- {cecli_dev-0.99.2/tests/basic → cecli_dev-0.99.3/tests}/__init__.py +0 -0
- {cecli_dev-0.99.2/tests/hooks → cecli_dev-0.99.3/tests/basic}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_commands.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_editor.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_history.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_io.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_linter.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_main.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_models.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_skills.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_special.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_urls.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_voice.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_watch.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/conftest.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/watch.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/watch.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/help/test_help.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-0.99.2/tests/mcp → cecli_dev-0.99.3/tests/hooks}/__init__.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/hooks/test_base.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_grep.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_registry.py +0 -0
- {cecli_dev-0.99.2 → cecli_dev-0.99.3}/tests/tools/test_show_context.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 0.99.
|
|
3
|
+
Version: 0.99.3
|
|
4
4
|
Summary: we also can't pronounce cecli
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/cecli
|
|
6
6
|
Project-URL: Documentation, https://github.com/dwash96/cecli
|
|
@@ -52,6 +52,7 @@ Requires-Dist: textual>=6.0.0
|
|
|
52
52
|
Requires-Dist: tomlkit>=0.14.0
|
|
53
53
|
Requires-Dist: truststore
|
|
54
54
|
Requires-Dist: xxhash>=3.6.0
|
|
55
|
+
Requires-Dist: py-cymbal>=0.1.5
|
|
55
56
|
Requires-Dist: rustworkx>=0.15.0
|
|
56
57
|
Requires-Dist: scipy>=1.15.3
|
|
57
58
|
Requires-Dist: importlib-metadata>=7.2.1
|
|
@@ -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.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 99, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g2909d229a'
|
|
@@ -593,6 +593,12 @@ def get_parser(default_config_files, git_root):
|
|
|
593
593
|
help="Show token processing and generation speed in usage report (default: False)",
|
|
594
594
|
default=False,
|
|
595
595
|
)
|
|
596
|
+
group.add_argument(
|
|
597
|
+
"--use-reminders",
|
|
598
|
+
action=argparse.BooleanOptionalAction,
|
|
599
|
+
default=True,
|
|
600
|
+
help="Enable/disable injecting reminder messages (default: True)",
|
|
601
|
+
)
|
|
596
602
|
group.add_argument(
|
|
597
603
|
"--completion-menu-color",
|
|
598
604
|
metavar="COLOR",
|
|
@@ -25,6 +25,7 @@ from cecli.helpers.skills import SkillsManager
|
|
|
25
25
|
from cecli.hooks import HookIntegration
|
|
26
26
|
from cecli.llm import litellm
|
|
27
27
|
from cecli.mcp import LocalServer, McpServerManager
|
|
28
|
+
from cecli.tools.utils.base_tool import BaseTool
|
|
28
29
|
from cecli.tools.utils.registry import ToolRegistry
|
|
29
30
|
from cecli.utils import copy_tool_call, tool_call_to_dict
|
|
30
31
|
|
|
@@ -52,12 +53,9 @@ class AgentCoder(Coder):
|
|
|
52
53
|
self.read_tools = {
|
|
53
54
|
"command",
|
|
54
55
|
"commandinteractive",
|
|
55
|
-
"
|
|
56
|
-
"viewfilesmatching",
|
|
56
|
+
"exploresymbols",
|
|
57
57
|
"ls",
|
|
58
|
-
"viewfileswithsymbol",
|
|
59
58
|
"grep",
|
|
60
|
-
"listchanges",
|
|
61
59
|
"showcontext",
|
|
62
60
|
"thinking",
|
|
63
61
|
"updatetodolist",
|
|
@@ -328,7 +326,7 @@ class AgentCoder(Coder):
|
|
|
328
326
|
{"role": "tool", "tool_call_id": tool_call.id, "content": result_message}
|
|
329
327
|
)
|
|
330
328
|
|
|
331
|
-
if self.auto_lint and used_write_tool
|
|
329
|
+
if self.auto_lint and used_write_tool:
|
|
332
330
|
edited = list(self.files_edited_by_tools)
|
|
333
331
|
lint_errors = self.lint_edited(edited, show_output=False)
|
|
334
332
|
self.lint_outcome = not lint_errors
|
|
@@ -1160,7 +1158,7 @@ I will proceed based on the tool results and updated context.""")
|
|
|
1160
1158
|
|
|
1161
1159
|
Parameters:
|
|
1162
1160
|
- file_path: Path to the file to add
|
|
1163
|
-
- explicit: Whether this was an explicit view command (vs. implicit through
|
|
1161
|
+
- explicit: Whether this was an explicit view command (vs. implicit through other tools)
|
|
1164
1162
|
"""
|
|
1165
1163
|
abs_path = self.abs_root_path(file_path)
|
|
1166
1164
|
rel_path = self.get_rel_fname(abs_path)
|
|
@@ -1205,7 +1203,7 @@ I will proceed based on the tool results and updated context.""")
|
|
|
1205
1203
|
|
|
1206
1204
|
Override parent's method to disable implicit file mention handling in agent mode.
|
|
1207
1205
|
Files should only be added via explicit tool commands
|
|
1208
|
-
(`
|
|
1206
|
+
(`ContextManager`).
|
|
1209
1207
|
"""
|
|
1210
1208
|
pass
|
|
1211
1209
|
|
|
@@ -1217,6 +1215,7 @@ I will proceed based on the tool results and updated context.""")
|
|
|
1217
1215
|
inp = await super().preproc_user_input(inp)
|
|
1218
1216
|
inp = self.wrap_user_input(inp)
|
|
1219
1217
|
|
|
1218
|
+
BaseTool.clear_invocation_cache()
|
|
1220
1219
|
self.agent_finished = False
|
|
1221
1220
|
self.turn_count = 0
|
|
1222
1221
|
return inp
|
|
@@ -42,6 +42,7 @@ from cecli.commands import Commands, SwitchCoderSignal
|
|
|
42
42
|
from cecli.exceptions import LiteLLMExceptions
|
|
43
43
|
from cecli.helpers import command_parser, coroutines, nested, responses
|
|
44
44
|
from cecli.helpers.conversation import ConversationService, MessageTag
|
|
45
|
+
from cecli.helpers.observations.manager import ObservationManager
|
|
45
46
|
from cecli.helpers.profiler import TokenProfiler
|
|
46
47
|
from cecli.history import ChatSummary
|
|
47
48
|
from cecli.hooks import HookIntegration
|
|
@@ -441,6 +442,7 @@ class Coder:
|
|
|
441
442
|
|
|
442
443
|
# Initialize conversation system if enabled
|
|
443
444
|
ConversationService.get_chunks(self).initialize_conversation_system()
|
|
445
|
+
self.observation_manager = ObservationManager.get_instance(self)
|
|
444
446
|
|
|
445
447
|
self.commands = commands or Commands(self.io, self, args=args)
|
|
446
448
|
self.commands.coder = self
|
|
@@ -921,10 +923,10 @@ class Coder:
|
|
|
921
923
|
file_stub = RepoMap.get_file_stub(fname, self.io)
|
|
922
924
|
|
|
923
925
|
# Add message about showing definitions instead of full content
|
|
924
|
-
self.io.tool_output(
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
)
|
|
926
|
+
# self.io.tool_output(
|
|
927
|
+
# f"⚠️ '{relative_fname}' is very large ({file_tokens} tokens). "
|
|
928
|
+
# "Use /context-management to toggle truncation off if needed."
|
|
929
|
+
# )
|
|
928
930
|
|
|
929
931
|
# Add a message in the content itself so the model knows it's truncated
|
|
930
932
|
truncation_note = (
|
|
@@ -989,10 +991,10 @@ class Coder:
|
|
|
989
991
|
file_stub = RepoMap.get_file_stub(fname, self.io)
|
|
990
992
|
|
|
991
993
|
# Add message about showing definitions instead of full content
|
|
992
|
-
self.io.tool_output(
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
)
|
|
994
|
+
# self.io.tool_output(
|
|
995
|
+
# f"⚠️ '{relative_fname}' is very large ({file_tokens} tokens). "
|
|
996
|
+
# "Use /context-management to toggle truncation off if needed."
|
|
997
|
+
# )
|
|
996
998
|
|
|
997
999
|
# Add a message in the content itself so the model knows it's truncated
|
|
998
1000
|
truncation_note = (
|
|
@@ -1746,11 +1748,14 @@ class Coder:
|
|
|
1746
1748
|
if not self.enable_context_compaction:
|
|
1747
1749
|
return
|
|
1748
1750
|
|
|
1749
|
-
#
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1751
|
+
# Trigger background observation/reflection check
|
|
1752
|
+
await self.observation_manager.check_and_trigger()
|
|
1753
|
+
|
|
1754
|
+
manager = ConversationService.get_manager(self)
|
|
1755
|
+
done_messages = manager.get_messages_dict(MessageTag.DONE)
|
|
1756
|
+
cur_messages = manager.get_messages_dict(MessageTag.CUR)
|
|
1757
|
+
diff_messages = manager.get_messages_dict(MessageTag.DIFFS)
|
|
1758
|
+
|
|
1754
1759
|
# Exclude first cur_message since that's the user's initial input
|
|
1755
1760
|
done_tokens = self.summarizer.count_tokens(done_messages)
|
|
1756
1761
|
cur_tokens = self.summarizer.count_tokens(cur_messages[1:] if len(cur_messages) > 1 else [])
|
|
@@ -1768,129 +1773,97 @@ class Coder:
|
|
|
1768
1773
|
self.io.update_spinner("Compacting...")
|
|
1769
1774
|
|
|
1770
1775
|
try:
|
|
1771
|
-
|
|
1772
|
-
if
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
summary_text = await self.summarizer.summarize_all_as_text(
|
|
1780
|
-
done_messages,
|
|
1776
|
+
compaction_prompt = self.gpt_prompts.compaction_prompt
|
|
1777
|
+
if message:
|
|
1778
|
+
compaction_prompt = f"{compaction_prompt}\n\n{message}"
|
|
1779
|
+
|
|
1780
|
+
async def summarize_and_update(messages, tag):
|
|
1781
|
+
text = await self.summarizer.summarize_all_as_text(
|
|
1782
|
+
messages,
|
|
1781
1783
|
compaction_prompt,
|
|
1782
1784
|
self.context_compaction_summary_tokens,
|
|
1783
1785
|
)
|
|
1786
|
+
if not text:
|
|
1787
|
+
raise ValueError(f"Summarization of {tag} messages returned empty.")
|
|
1784
1788
|
|
|
1785
|
-
if
|
|
1786
|
-
|
|
1789
|
+
if self.observation_manager.observations:
|
|
1790
|
+
obs_text = "\n".join(self.observation_manager.observations)
|
|
1791
|
+
text = f"HISTORICAL OBSERVATIONS:\n{obs_text}\n\n{text}"
|
|
1787
1792
|
|
|
1788
|
-
|
|
1789
|
-
ConversationService.get_manager(self).clear_tag(MessageTag.DONE)
|
|
1790
|
-
ConversationService.get_manager(self).add_message(
|
|
1791
|
-
message_dict={
|
|
1792
|
-
"role": "user",
|
|
1793
|
-
"content": summary_text,
|
|
1794
|
-
},
|
|
1795
|
-
tag=MessageTag.DONE,
|
|
1796
|
-
)
|
|
1797
|
-
ConversationService.get_manager(self).add_message(
|
|
1798
|
-
message_dict={
|
|
1799
|
-
"role": "assistant",
|
|
1800
|
-
"content": (
|
|
1801
|
-
"Ok, I will use this summary as the context for our conversation going"
|
|
1802
|
-
" forward."
|
|
1803
|
-
),
|
|
1804
|
-
},
|
|
1805
|
-
tag=MessageTag.DONE,
|
|
1806
|
-
)
|
|
1793
|
+
manager.clear_tag(tag)
|
|
1807
1794
|
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1795
|
+
if tag == MessageTag.DONE:
|
|
1796
|
+
manager.add_message({"role": "user", "content": text}, tag=tag)
|
|
1797
|
+
manager.add_message(
|
|
1798
|
+
{
|
|
1799
|
+
"role": "assistant",
|
|
1800
|
+
"content": (
|
|
1801
|
+
"Ok, I will use this summary and the observations as context for"
|
|
1802
|
+
" our conversation going forward."
|
|
1803
|
+
),
|
|
1804
|
+
},
|
|
1805
|
+
tag=tag,
|
|
1806
|
+
)
|
|
1807
|
+
else:
|
|
1808
|
+
if self.last_user_message:
|
|
1809
|
+
manager.add_message(
|
|
1810
|
+
{"role": "user", "content": self.last_user_message}, tag=tag
|
|
1811
|
+
)
|
|
1824
1812
|
|
|
1825
|
-
|
|
1826
|
-
|
|
1813
|
+
manager.add_message(
|
|
1814
|
+
{
|
|
1815
|
+
"role": "assistant",
|
|
1816
|
+
"content": "Ok. I am awaiting your summary of our goals to proceed.",
|
|
1817
|
+
},
|
|
1818
|
+
tag=tag,
|
|
1819
|
+
force=True,
|
|
1820
|
+
)
|
|
1827
1821
|
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
message_dict={
|
|
1822
|
+
manager.add_message(
|
|
1823
|
+
{
|
|
1831
1824
|
"role": "user",
|
|
1832
|
-
"content":
|
|
1825
|
+
"content": (
|
|
1826
|
+
"Here is a summary of our current goals and historical"
|
|
1827
|
+
f" context:\n{text}"
|
|
1828
|
+
),
|
|
1833
1829
|
},
|
|
1834
|
-
tag=
|
|
1830
|
+
tag=tag,
|
|
1835
1831
|
)
|
|
1836
1832
|
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
"content": f"Here is a summary of our current goals:\n{cur_summary_text}",
|
|
1850
|
-
},
|
|
1851
|
-
tag=MessageTag.CUR,
|
|
1852
|
-
)
|
|
1853
|
-
ConversationService.get_manager(self).add_message(
|
|
1854
|
-
message_dict={
|
|
1855
|
-
"role": "assistant",
|
|
1856
|
-
"content": (
|
|
1857
|
-
"Ok, I will use this summary and proceed with our task."
|
|
1858
|
-
" I will first apply any changes in the summary and then"
|
|
1859
|
-
" continue exploration as necessary."
|
|
1860
|
-
),
|
|
1861
|
-
},
|
|
1862
|
-
tag=MessageTag.CUR,
|
|
1863
|
-
force=True,
|
|
1864
|
-
)
|
|
1865
|
-
|
|
1866
|
-
# Find the last assistant messages in the current conversation
|
|
1867
|
-
latest_messages = []
|
|
1833
|
+
manager.add_message(
|
|
1834
|
+
{
|
|
1835
|
+
"role": "assistant",
|
|
1836
|
+
"content": (
|
|
1837
|
+
"Ok, I will use this summary and proceed with our task. I will"
|
|
1838
|
+
" first apply any changes in the summary and then continue"
|
|
1839
|
+
" exploration as necessary."
|
|
1840
|
+
),
|
|
1841
|
+
},
|
|
1842
|
+
tag=tag,
|
|
1843
|
+
force=True,
|
|
1844
|
+
)
|
|
1868
1845
|
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1846
|
+
latest_messages = []
|
|
1847
|
+
for msg in reversed(messages):
|
|
1848
|
+
latest_messages.append(msg)
|
|
1849
|
+
if msg["role"] == "assistant":
|
|
1850
|
+
break
|
|
1851
|
+
for msg in reversed(latest_messages):
|
|
1852
|
+
manager.add_message(msg, tag=tag)
|
|
1872
1853
|
|
|
1873
|
-
|
|
1874
|
-
|
|
1854
|
+
if done_tokens > self.context_compaction_max_tokens or done_tokens > cur_tokens:
|
|
1855
|
+
await summarize_and_update(done_messages, MessageTag.DONE)
|
|
1875
1856
|
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
message_dict={
|
|
1879
|
-
"role": msg["role"],
|
|
1880
|
-
"content": msg["content"],
|
|
1881
|
-
},
|
|
1882
|
-
tag=MessageTag.CUR,
|
|
1883
|
-
)
|
|
1857
|
+
if cur_tokens > self.context_compaction_max_tokens or cur_tokens > done_tokens:
|
|
1858
|
+
await summarize_and_update(cur_messages, MessageTag.CUR)
|
|
1884
1859
|
|
|
1885
1860
|
self.io.tool_output("...chat history compacted.")
|
|
1886
1861
|
self.io.update_spinner(self.io.last_spinner_text)
|
|
1887
1862
|
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
ConversationService.get_manager(self).clear_tag(MessageTag.FILE_CONTEXTS)
|
|
1891
|
-
|
|
1892
|
-
# Reset ConversationFiles cache entirely
|
|
1863
|
+
manager.clear_tag(MessageTag.DIFFS)
|
|
1864
|
+
manager.clear_tag(MessageTag.FILE_CONTEXTS)
|
|
1893
1865
|
ConversationService.get_files(self).clear_file_cache()
|
|
1866
|
+
|
|
1894
1867
|
except Exception as e:
|
|
1895
1868
|
self.io.tool_warning(f"Context compaction failed: {e}")
|
|
1896
1869
|
self.io.tool_warning("Proceeding with full history for now.")
|
|
@@ -2233,10 +2206,11 @@ class Coder:
|
|
|
2233
2206
|
|
|
2234
2207
|
self.multi_response_content = ""
|
|
2235
2208
|
if self.show_pretty():
|
|
2236
|
-
spinner_text = (
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2209
|
+
spinner_text = f"Waiting for {self.get_active_model().name}"
|
|
2210
|
+
|
|
2211
|
+
if not self.tui:
|
|
2212
|
+
spinner_text += f" • ${self.format_cost(self.total_cost)} session"
|
|
2213
|
+
|
|
2240
2214
|
self.io.start_spinner(spinner_text)
|
|
2241
2215
|
if self.stream:
|
|
2242
2216
|
self.mdstream = True
|
|
@@ -3541,13 +3515,18 @@ class Coder:
|
|
|
3541
3515
|
|
|
3542
3516
|
self.message_tokens_received += completion_tokens
|
|
3543
3517
|
|
|
3544
|
-
|
|
3518
|
+
# Build the new streamlined format
|
|
3519
|
+
tokens_parts = [format_tokens(prompt_tokens)]
|
|
3545
3520
|
|
|
3546
|
-
if cache_write_tokens:
|
|
3547
|
-
tokens_report += f", {format_tokens(cache_write_tokens)} cache write"
|
|
3548
3521
|
if cache_hit_tokens:
|
|
3549
|
-
|
|
3550
|
-
|
|
3522
|
+
tokens_parts.append(f"{format_tokens(cache_hit_tokens)}")
|
|
3523
|
+
if cache_write_tokens:
|
|
3524
|
+
tokens_parts.append(f"{format_tokens(cache_write_tokens)}")
|
|
3525
|
+
|
|
3526
|
+
tokens_str = "/".join(tokens_parts)
|
|
3527
|
+
|
|
3528
|
+
tokens_report = f"{tokens_str} ↑ {format_tokens(completion_tokens)} ↓"
|
|
3529
|
+
|
|
3551
3530
|
tokens_report = self.token_profiler.add_to_usage_report(
|
|
3552
3531
|
tokens_report, self.message_tokens_sent, self.message_tokens_received
|
|
3553
3532
|
)
|
|
@@ -3570,9 +3549,12 @@ class Coder:
|
|
|
3570
3549
|
self.total_cost += cost
|
|
3571
3550
|
self.message_cost += cost
|
|
3572
3551
|
|
|
3552
|
+
total_combined_tokens = (
|
|
3553
|
+
self.total_tokens_sent + self.total_tokens_received + prompt_tokens + completion_tokens
|
|
3554
|
+
)
|
|
3573
3555
|
cost_report = (
|
|
3574
|
-
f"
|
|
3575
|
-
f" ${self.format_cost(self.total_cost)}
|
|
3556
|
+
f"${self.format_cost(self.message_cost)} • {format_tokens(total_combined_tokens)} ↑↓"
|
|
3557
|
+
f" ${self.format_cost(self.total_cost)}"
|
|
3576
3558
|
)
|
|
3577
3559
|
|
|
3578
3560
|
if cache_hit_tokens and cache_write_tokens:
|
|
@@ -3630,8 +3612,11 @@ class Coder:
|
|
|
3630
3612
|
self.total_tokens_sent += self.message_tokens_sent
|
|
3631
3613
|
self.total_tokens_received += self.message_tokens_received
|
|
3632
3614
|
|
|
3633
|
-
self.
|
|
3634
|
-
|
|
3615
|
+
if self.tui and self.tui():
|
|
3616
|
+
self.tui().update_cost(self.usage_report.replace("\n", " "))
|
|
3617
|
+
else:
|
|
3618
|
+
self.io.tool_output(self.usage_report)
|
|
3619
|
+
self.io.rule()
|
|
3635
3620
|
|
|
3636
3621
|
self.message_cost = 0.0
|
|
3637
3622
|
self.message_tokens_sent = 0
|
|
@@ -19,6 +19,7 @@ class ClearCommand(BaseCommand):
|
|
|
19
19
|
ConversationService.get_manager(coder).clear_tag(MessageTag.FILE_CONTEXTS)
|
|
20
20
|
|
|
21
21
|
ConversationService.get_files(coder).reset()
|
|
22
|
+
coder.observation_manager.reset()
|
|
22
23
|
|
|
23
24
|
# Clear TUI output if available
|
|
24
25
|
if coder.tui and coder.tui():
|
|
@@ -22,6 +22,7 @@ class ResetCommand(BaseCommand):
|
|
|
22
22
|
# Re-initialize Conversation components with current coder
|
|
23
23
|
ConversationService.get_manager(coder).initialize(reformat=True)
|
|
24
24
|
ConversationService.get_files(coder) # Ensure instance exists/initialized
|
|
25
|
+
coder.observation_manager.reset()
|
|
25
26
|
|
|
26
27
|
# Clear TUI output if available
|
|
27
28
|
if coder.tui and coder.tui():
|
|
@@ -85,7 +85,12 @@ class ConversationChunks:
|
|
|
85
85
|
)
|
|
86
86
|
|
|
87
87
|
# Add system reminder as a pre-prompt context block
|
|
88
|
-
|
|
88
|
+
use_reminders = getattr(coder.args, "use_reminders", True)
|
|
89
|
+
if (
|
|
90
|
+
use_reminders
|
|
91
|
+
and hasattr(coder.gpt_prompts, "system_reminder")
|
|
92
|
+
and coder.gpt_prompts.system_reminder
|
|
93
|
+
):
|
|
89
94
|
msg = dict(
|
|
90
95
|
role="user",
|
|
91
96
|
content=coder.fmt_system_prompt(coder.gpt_prompts.system_reminder),
|
|
@@ -235,7 +240,8 @@ class ConversationChunks:
|
|
|
235
240
|
for f in editable_rel_files:
|
|
236
241
|
reminder_lines.append(f" - {f}")
|
|
237
242
|
|
|
238
|
-
|
|
243
|
+
use_reminders = getattr(coder.args, "use_reminders", True)
|
|
244
|
+
if use_reminders and len(reminder_lines) > 1: # Only add reminder if there are files
|
|
239
245
|
reminder_lines.append("</context>\n")
|
|
240
246
|
reminder_content = "\n".join(reminder_lines)
|
|
241
247
|
ConversationService.get_manager(coder).add_message(
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
|
|
4
|
+
from cecli.helpers.conversation.service import ConversationService
|
|
5
|
+
from cecli.helpers.conversation.tags import MessageTag
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ObservationManager:
|
|
9
|
+
_instances = {}
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
def get_instance(cls, coder):
|
|
13
|
+
if coder.uuid not in cls._instances:
|
|
14
|
+
cls._instances[coder.uuid] = cls(coder)
|
|
15
|
+
return cls._instances[coder.uuid]
|
|
16
|
+
|
|
17
|
+
def __init__(self, coder):
|
|
18
|
+
self.coder = coder
|
|
19
|
+
self.observation_threshold = max((coder.context_compaction_max_tokens or 0) / 3, 20000)
|
|
20
|
+
self.reflection_threshold = self.observation_threshold * 2
|
|
21
|
+
self.is_processing = False
|
|
22
|
+
self._last_observed_index = 0
|
|
23
|
+
self.observations = [] # Internal storage
|
|
24
|
+
|
|
25
|
+
async def check_and_trigger(self):
|
|
26
|
+
if self.is_processing:
|
|
27
|
+
return
|
|
28
|
+
|
|
29
|
+
manager = ConversationService.get_manager(self.coder)
|
|
30
|
+
cur_messages = manager.get_messages_dict(MessageTag.CUR)
|
|
31
|
+
|
|
32
|
+
# Calculate unobserved tokens
|
|
33
|
+
unobserved = cur_messages[self._last_observed_index :]
|
|
34
|
+
if not unobserved:
|
|
35
|
+
return
|
|
36
|
+
|
|
37
|
+
tokens = self.coder.summarizer.count_tokens(unobserved)
|
|
38
|
+
|
|
39
|
+
if tokens >= self.observation_threshold:
|
|
40
|
+
asyncio.create_task(self.run_observation(unobserved))
|
|
41
|
+
self._last_observed_index = len(cur_messages)
|
|
42
|
+
|
|
43
|
+
obs_tokens = self.coder.summarizer.count_tokens(
|
|
44
|
+
[{"role": "user", "content": o} for o in self.observations]
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
if obs_tokens >= self.reflection_threshold:
|
|
48
|
+
asyncio.create_task(self.run_reflection())
|
|
49
|
+
|
|
50
|
+
async def run_observation(self, messages):
|
|
51
|
+
self.is_processing = True
|
|
52
|
+
try:
|
|
53
|
+
manager = ConversationService.get_manager(self.coder)
|
|
54
|
+
all_messages = manager.get_messages_dict()
|
|
55
|
+
prompt = self.coder.gpt_prompts.observation_prompt
|
|
56
|
+
observation = await self.coder.summarizer.summarize_all_as_text(
|
|
57
|
+
all_messages, prompt, max_tokens=8192
|
|
58
|
+
)
|
|
59
|
+
self.observations.append(self.format_observation(observation))
|
|
60
|
+
except asyncio.CancelledError:
|
|
61
|
+
raise
|
|
62
|
+
except Exception as e:
|
|
63
|
+
self.coder.io.tool_error(f"Error during observation: {e}")
|
|
64
|
+
finally:
|
|
65
|
+
self.is_processing = False
|
|
66
|
+
|
|
67
|
+
async def run_reflection(self):
|
|
68
|
+
self.is_processing = True
|
|
69
|
+
try:
|
|
70
|
+
# Prepare observations for the reflector
|
|
71
|
+
obs_text = "\n".join([f"- {o}" for o in self.observations])
|
|
72
|
+
|
|
73
|
+
# Use the Reflector to condense and get next steps
|
|
74
|
+
reflection_prompt = self.coder.gpt_prompts.reflection_prompt
|
|
75
|
+
reflection = await self.coder.summarizer.summarize_all_as_text(
|
|
76
|
+
[{"role": "user", "content": obs_text}],
|
|
77
|
+
reflection_prompt,
|
|
78
|
+
max_tokens=8192,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# 1. Internal State Update: Store the condensed log internally
|
|
82
|
+
self.observations = [reflection]
|
|
83
|
+
|
|
84
|
+
self._last_observed_index = 0
|
|
85
|
+
except asyncio.CancelledError:
|
|
86
|
+
raise
|
|
87
|
+
except Exception as e:
|
|
88
|
+
self.coder.io.tool_error(f"Error during reflection: {e}")
|
|
89
|
+
finally:
|
|
90
|
+
self.is_processing = False
|
|
91
|
+
|
|
92
|
+
def reset(self):
|
|
93
|
+
self.observations = []
|
|
94
|
+
self._last_observed_index = 0
|
|
95
|
+
|
|
96
|
+
def format_observation(self, text):
|
|
97
|
+
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")
|
|
98
|
+
return f"[{timestamp}] {text}"
|
|
@@ -17,16 +17,16 @@ files_no_full_files_with_repo_map: |
|
|
|
17
17
|
main_system: |
|
|
18
18
|
<context name="role_and_directives">
|
|
19
19
|
## Core Directives
|
|
20
|
-
**Act Proactively**: Autonomously use discovery and management tools
|
|
20
|
+
**Act Proactively**: Autonomously use discovery and management tools to fulfill the request. Chain tool calls across multiple turns for continuous exploration.
|
|
21
21
|
**Be Decisive**: Trust your findings. Do not repeat identical searches or ask redundant questions.
|
|
22
|
-
**Be Efficient**: Batch tool calls when tools allow you to. Respect usage limits while maximizing the utility of each turn.
|
|
22
|
+
**Be Efficient**: You may use multiple tools each turn. Batch tool calls when tools allow you to. Respect usage limits while maximizing the utility of each turn.
|
|
23
23
|
**Be Persistent**: Do not take short cuts. Work through your task until completion. No task takes too long as long as you are making progress towards the goal.
|
|
24
24
|
</context>
|
|
25
25
|
|
|
26
26
|
<context name="file_format">
|
|
27
27
|
### 1. FILE FORMAT
|
|
28
|
-
Files are provided in "hashline" format. Each line starts with a case-sensitive content hash followed by `::`.
|
|
29
|
-
Do not attempt to
|
|
28
|
+
Files are provided in "hashline" format. Each line starts with a case-sensitive content hash followed by `::`. These are used as identifiers for editing tools.
|
|
29
|
+
Do not attempt to search for these content hashes. They are automatically generated, maintained, and subject to change.
|
|
30
30
|
|
|
31
31
|
**Example File Format :**
|
|
32
32
|
il9n::#!/usr/bin/env python3
|
|
@@ -39,8 +39,8 @@ main_system: |
|
|
|
39
39
|
<context name="workflow_and_tool_usage">
|
|
40
40
|
## Core Workflow
|
|
41
41
|
1. **Plan**: Start by using `UpdateTodoList` to outline the task.
|
|
42
|
-
2. **Explore**: Use
|
|
43
|
-
3. **Execute**: Use the appropriate editing tool. Mark files as editable with `ContextManager`
|
|
42
|
+
2. **Explore**: Use discovery tools (`ExploreSymbols`, `Grep`, `Ls`) to research and gather understanding for you task. Use `ContextManager` to add files contents as context.
|
|
43
|
+
3. **Execute**: Use the appropriate editing tool. Mark files as editable with `ContextManager` before attempting edits. Proactively use skills if they are available.
|
|
44
44
|
4. **Verify & Recover**: Review the diff output of every edit. If an edit fails or introduces linting errors, use `UndoChange` immediately.
|
|
45
45
|
5. **Finished**: Use the `Finished` tool only after verifying the solution. Briefly summarize the changes for the user.
|
|
46
46
|
|
|
@@ -65,7 +65,7 @@ system_reminder: |
|
|
|
65
65
|
<context name="critical_reminders">
|
|
66
66
|
## Reminders
|
|
67
67
|
**Strict Scope**: Stay on task. Do not alter functionality and syntax that is out of scope or pursue unrequested refactors. Do not attempt to modify large files in one shot. Work step by step.
|
|
68
|
-
**Context Hygiene**: Remove files and loaded skills from context using `ContextManager` or `RemoveSkill` once they are no longer needed to save tokens and prevent confusion.
|
|
68
|
+
**Context Hygiene**: Remove files and loaded skills from context using `ContextManager` and/or `RemoveSkill` once they are no longer needed to save tokens and prevent confusion.
|
|
69
69
|
**Turn Management**: Tool calls trigger the next turn. Do not include tool calls in your final summary to the user. You must use `ShowContext` to view the relevant hashline range before each edit.
|
|
70
70
|
**Sandbox**: Use `.cecli/temp` for all verification and temporary logic.
|
|
71
71
|
**Novelty**: Do not repeat phrases in your responses to the user. You do not need to declare you understand the task. Simply proceed. Only give status updates when you have new information.
|