cecli-dev 1.0.1__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/PKG-INFO +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/__init__.py +1 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/_version.py +3 -3
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/base_coder.py +7 -3
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/history_search.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/terminal_setup.py +23 -22
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/save_load_manager.py +4 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/workspace.py +2 -1
- cecli_dev-1.0.2/cecli/decoding.py +115 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/diffs.py +4 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/editor.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/config.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/background_commands.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/config_utils.py +4 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/manager.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/builders.py +67 -31
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/ignore.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/service.py +6 -4
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/main.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/io_proxy.py +21 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/lock_detect.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/config.py +4 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/workspace.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/history.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/registry.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/io.py +9 -7
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/main.py +38 -8
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/oauth.py +5 -3
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/server.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/utils.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mdstream.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/models.py +5 -4
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/onboarding.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/registry.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/repo.py +3 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/model-metadata.json +3409 -1375
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/sessions.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/command.py +7 -6
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/resource_manager.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/app.py +25 -10
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/voice.py +3 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/watch.py +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/mcp.md +51 -30
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/PKG-INFO +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/SOURCES.txt +1 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/requires.txt +1 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/scm_file_list.json +1 -0
- cecli_dev-1.0.2/cecli_dev.egg-info/scm_version.json +8 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/common-constraints.txt +4 -2
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-help.txt +1 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements.in +1 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements.txt +2 -1
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_coder.py +1 -1
- cecli_dev-1.0.1/cecli_dev.egg-info/scm_version.json +0 -8
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.dockerignore +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.flake8 +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.gitattributes +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/check_pypi_version.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/docker-build-test.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/docker-release.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/issues.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/pages.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/pre-commit.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/release.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/ubuntu-tests.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/windows-tests.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.gitignore +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/.pre-commit-config.yaml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CHANGELOG.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CNAME +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/CONTRIBUTING.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/HISTORY.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/LICENSE.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/MANIFEST.in +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/README.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/Dockerfile +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/README.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/benchmark.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/benchmark_classic.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/clone-exercism.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/cpp-test.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/docker.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/docker_build.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/install-docker-ubuntu.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/npm-test.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/over_time.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/plot.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/plots.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/problem_stats.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/prompts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/refactor_tools.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/rsync.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/rungrid.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe-bench-lite.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe-bench.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/swe_bench.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/test_benchmark.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.1.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.2.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.3.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/benchmark/variations.4.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/__main__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/args.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/args_formatter.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/change_tracker.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/agent_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/architect_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/ask_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/chat_chunks.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/context_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/copypaste_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_fenced_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editblock_func_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_diff_fenced_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_editblock_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/editor_whole_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/hashline_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/help_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/patch_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/search_replace.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/shell.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/single_wholefile_func_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/sub_agent_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/udiff_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/udiff_simple.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/wholefile_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/coders/wholefile_func_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/add.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent_model.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/agent_tree.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/architect.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/ask.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/chat_mode.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/clear.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/code.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/command_prefix.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/commit.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/compact.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context_blocks.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/context_management.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/copy.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/copy_context.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/core.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/diff.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/drop.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/editor.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/editor_model.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/exclude_skill.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/exit.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/git.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hashline.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/help.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hooks.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/hot_reload.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/include_skill.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/lint.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_mcp.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_sessions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/list_skills.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_hook.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_mcp.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_session.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/load_skill.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/ls.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/map.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/map_refresh.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/merge.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/model.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/models.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/multiline_mode.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/paste.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/quit.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/read_only.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/read_only_stub.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reap_agent.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reasoning_effort.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_hook.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_mcp.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/remove_skill.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/report.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/reset.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/rules.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/run.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/save.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/save_session.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/settings.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/spawn_agent.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/switch_agent.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/terminal_data/linux.keytab +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/test.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/think_tokens.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/tokens.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/undo.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/base_command.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/helpers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/utils/registry.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/voice.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/weak_model.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/commands/web.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/deprecated_args.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/dump.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/exceptions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/format_settings.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/help.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/help_pats.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/memorizer.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/defaults/worker.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/agents/service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/command_parser.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/base_message.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/files.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/integration.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/tags.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/conversation/utils.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/copypaste.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/coroutines.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/crypto.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_searcher.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/ngram_index.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/file_system/trie_index.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/dump.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/grep_ast.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/parsers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/grep_ast/tsl.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashline.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/hashpos.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/hashpos.v1.bak +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/hashpos/transformations.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/leak_detect.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/db.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/memory/utils.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/model_providers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/local_workspace.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/project.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/monorepo/worktree.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/nested.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/observations/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/observations/service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/agent_proxy.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/environment.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/region_resolver.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/safe_methods.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/security.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/orchestration/tool_proxy.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/plugin_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/profiler.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/queues.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/requests.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/responses.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/bridge.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/models.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/acp/protocol.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/signals.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/server/ws_server.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/similarity.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/skills.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/helpers/threading.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/base.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/helpers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/integration.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/hooks/types.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/interruptible_input.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/linter.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/llm.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/mcp/manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/agent.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/architect.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/ask.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/base.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/context.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/copypaste.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock_fenced.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editblock_func.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_diff_fenced.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_editblock.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/editor_whole.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/hashline.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/help.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/patch.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/single_wholefile_func.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/subagent.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/udiff.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/udiff_simple.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/utils/system.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/wholefile.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/prompts/wholefile_func.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/README.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/bash-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/README.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/bash-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/c-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/fortran-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/go-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/haskell-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/java-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/php-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/python-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/queries/tree-sitter-languages/zig-tags.scm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/reasoning_tags.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/repomap.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/report.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/model-settings.yml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/resources/providers.json +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/run_cmd.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/scrape.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/sendchat.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/signals.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/special.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/_yield.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/delegate.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/edit_file.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/explore_code.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_branch.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_diff.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_log.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_remote.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_show.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/git_status.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/grep.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/ls.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/orchestrate.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/read_file.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/replace_facts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/search_facts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/thinking.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/undo_change.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/update_todo_list.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/base_tool.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/helpers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/output.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/registry.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/utils/responses.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/validations/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tools/validations/validations.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/io.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/styles.tcss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/completion_bar.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/file_list.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/footer.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/input_area.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/input_container.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/key_hints.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/output.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/output_alt.bak +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/selectable_log.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/status_bar.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/widgets/subagent_pills.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/tui/worker.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/urls.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/utils.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/versioncheck.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/waiting.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/watch_prompts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/Gemfile +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/blame.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/get-started.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/help-tip.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/help.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/install.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/keys.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/model-warnings.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/multi-line.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/python-m-aider.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/recording.css +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/recording.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_includes/works-best.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_features.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_footer.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_hero.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_info.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_layout.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_reset.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_testimonials.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_typography.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/_variables.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/custom/custom.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/_sass/global-overrides.scss +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/adv-model-settings.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/agent-mode.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/api-keys.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/api.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/conf.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/custom-commands.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/custom-system-prompts.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/dotenv.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/editor.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/hooks.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-aliases.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-configuration.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/model-providers.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/options.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/persistent-memory.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/reasoning.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/retries.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/security.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/skills.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/subagents.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/tui.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config/workspaces.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/config.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/git.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/index.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/install/docker.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/install.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/languages.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/legal/contributor-agreement.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/legal/privacy.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/anthropic.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/azure.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/bedrock.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/cohere.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/deepseek.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/gemini.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/github.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/groq.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/lm-studio.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/ollama.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openai-compat.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openai.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/openrouter.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/other.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/vertex.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/warnings.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms/xai.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/llms.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/analytics.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/edit-formats.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more/infinite-output.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/more-info.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/repomap.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/scripting.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/cecli-not-found.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/edit-errors.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/imports.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/models-and-keys.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/support.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/token-limits.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting/warnings.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/troubleshooting.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/commands.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/conventions.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/copypaste.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/images-urls.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/lint-test.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/modes.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/not-code.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/notifications.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/optional.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/sessions.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/tips.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/voice.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage/watch.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/docs/usage.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli/website/share/index.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/dependency_links.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/entry_points.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/cecli_dev.egg-info/top_level.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/docker/Dockerfile +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/docker/Dockerfile.local.nvidia.cuda.ubuntu +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/pyproject.toml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/pytest.ini +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-dev.in +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-dev.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-help.in +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-playwright.in +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/requirements-playwright.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/requirements/tree-sitter.in +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/30k-image.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/Dockerfile.jekyll +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/blame.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/clean_metadata.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/compare-message-history.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/cost_analyzer.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/cost_calculator.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/dl_icons.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/filter-chat-mode.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/generate_providers.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/get_contributor_list.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/get_hashline.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/history_prompts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/homepage.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/issues.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/jekyll_build.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/jekyll_run.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/logo_svg.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/optimize_tokens.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/pip-compile.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/recording_audio.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/redact-cast.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/rename_to_cecli.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/tmux_record.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/tsl_pack_langs.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-blame.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-docs.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/update-history.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/versionbump.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/scripts/yank-old-versions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/setup.cfg +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/shim.pyproject.toml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/conftest.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_aws_credentials.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_background_commands.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_commands.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_custom_commands.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_deprecated.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_editblock.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_editor.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_exceptions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_find_or_blocks.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_hashline.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_hashline_closure.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_history.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_io.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_linter.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_main.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_model_info_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_model_provider_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_models.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_onboarding.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_plugin_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_prompts.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_reasoning.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_repo.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_repomap.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_run_cmd.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sanity_check_repo.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_scripting.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_select_selector.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sendchat.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_session_args.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_session_crypto.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sessions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_sessions_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_skills.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_special.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_spinner.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_ssl_verification.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_udiff.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_urls.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_voice.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_watch.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/basic/test_wholefile.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/coders/test_coder_switching.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/coders/test_copypaste_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/commands/test_compaction.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/commands/test_switch_agent.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conftest.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conversations/test_conversation_integration.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/conversations/test_conversation_system.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/chat-history.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/arduino/test.ino +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/bash/test.sh +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/c/test.c +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/clojure/test.clj +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/csharp/test.cs +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/d/test.d +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/dart/test.dart +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elisp/test.el +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elixir/test.ex +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/elm/test.elm +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/go/test.go +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/haskell/test.hs +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/hcl/test.tf +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/java/test.java +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/javascript/test.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/lua/test.lua +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/matlab/test.m +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/php/test.php +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/pony/test.pony +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/properties/test.properties +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/python/test.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ql/test.ql +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/r/test.r +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/racket/test.rkt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/ruby/test.rb +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/rust/test.rs +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/scala/test.scala +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/solidity/test.sol +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/swift/test.swift +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/typescript/test.ts +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/udev/test.rules +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/languages/zig/test.zig +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base/sample.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base/sample.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.lisp +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/fixtures/watch_question.js +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/help/test_help.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/LOCAL_WORKSPACE.md +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_config.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_config_active.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_ignore_logic.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_local_workspace.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_repomap_workspace.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/monorepo/test_workspace.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/observations/test_observation_service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_bridge.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_dispatch.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_models.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/server/acp/test_protocol.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/helpers/test_orchestration.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_base.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/hooks/test_registry.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_agent_mcp_management.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_config_loading.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/integration/test_mcp_management.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/conftest.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/mock_server.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_concurrency.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_config.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_integration.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_logging.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_resilience.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_keepalive_unit.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_manager.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/mcp/test_manager_retry.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/scrape/test_playwright_disable.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/scrape/test_scrape.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/__init__.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/conftest.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_commands.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_config.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_delegate.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_finished.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_io_proxy.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_service.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/subagents/test_sub_agent_coder.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/test_requests.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_extractions.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_get_lines.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_git_branch.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_git_diff.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_grep.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_insert_block.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_read_range_execute.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_registry.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_remove_mcp_tool.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_tool_arguments.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/test_tools_load_mcp_tool.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tools/validations.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/tui/test_app.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/conftest.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_deep_merge.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_edge_cases.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_load_mcp.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_performance.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_queues.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_remove_mcp.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_shallow_merge.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_signals.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_unit_load_mcp_tool.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_unit_remove_mcp_tool.py +0 -0
- {cecli_dev-1.0.1 → cecli_dev-1.0.2}/tests/unit/test_ws_server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecli-dev
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
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
|
|
@@ -24,6 +24,7 @@ Requires-Dist: oslex>=0.1.3
|
|
|
24
24
|
Requires-Dist: pexpect>=4.9.0
|
|
25
25
|
Requires-Dist: psutil>=7.0.0
|
|
26
26
|
Requires-Dist: watchfiles>=1.1.0
|
|
27
|
+
Requires-Dist: charset-normalizer>=3.4.7
|
|
27
28
|
Requires-Dist: GitPython>=3.1.45
|
|
28
29
|
Requires-Dist: pathspec>=0.12.1
|
|
29
30
|
Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.80.11
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 2)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gbe5c3ba9d'
|
|
@@ -34,6 +34,7 @@ from uuid import uuid4 as generate_unique_id
|
|
|
34
34
|
import cecli.prompts.utils.system as prompts
|
|
35
35
|
from cecli import __version__, models, urls, utils
|
|
36
36
|
from cecli.commands import Commands, SwitchCoderSignal
|
|
37
|
+
from cecli.decoding import safe_open
|
|
37
38
|
from cecli.exceptions import LiteLLMExceptions
|
|
38
39
|
from cecli.helpers import command_parser, coroutines, nested, responses
|
|
39
40
|
from cecli.helpers.conversation import ConversationService, MessageTag
|
|
@@ -245,6 +246,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
245
246
|
model_kwargs = {}
|
|
246
247
|
cost_multiplier = 1
|
|
247
248
|
stop_on_empty = True
|
|
249
|
+
error_code = None
|
|
248
250
|
|
|
249
251
|
# Task coordination state variables
|
|
250
252
|
input_running = False
|
|
@@ -1429,7 +1431,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
1429
1431
|
if not mime_type:
|
|
1430
1432
|
continue
|
|
1431
1433
|
|
|
1432
|
-
with
|
|
1434
|
+
with safe_open(fname, "rb") as image_file:
|
|
1433
1435
|
encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
|
|
1434
1436
|
image_url = f"data:{mime_type};base64,{encoded_string}"
|
|
1435
1437
|
rel_fname = self.get_rel_fname(fname)
|
|
@@ -1873,7 +1875,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
1873
1875
|
if not self.commands.is_command(user_message):
|
|
1874
1876
|
ConversationService.get_chunks(self).flush_removals()
|
|
1875
1877
|
self.last_user_message = user_message
|
|
1876
|
-
|
|
1878
|
+
self.error_code = None
|
|
1877
1879
|
# Fire memorizer after each user request
|
|
1878
1880
|
# if self.auto_memory and self.edit_format not in ["subagent"]:
|
|
1879
1881
|
# from cecli.helpers.memory.utils import invoke_memorizer
|
|
@@ -3648,6 +3650,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3648
3650
|
self.calculate_and_show_tokens_and_cost(messages, completion)
|
|
3649
3651
|
|
|
3650
3652
|
except litellm_ex.exceptions_tuple() as err:
|
|
3653
|
+
self.error_code = 1
|
|
3651
3654
|
ex_info = litellm_ex.get_ex_info(err)
|
|
3652
3655
|
if ex_info.name == "ContextWindowExceededError":
|
|
3653
3656
|
# Still calculate costs for context window errors
|
|
@@ -3655,6 +3658,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3655
3658
|
self.calculate_and_show_tokens_and_cost(messages, completion)
|
|
3656
3659
|
raise
|
|
3657
3660
|
except (KeyboardInterrupt, asyncio.CancelledError) as kbi:
|
|
3661
|
+
self.error_code = 130 # apparently standard?
|
|
3658
3662
|
self.keyboard_interrupt()
|
|
3659
3663
|
raise kbi
|
|
3660
3664
|
finally:
|
|
@@ -3755,7 +3759,7 @@ class Coder(metaclass=UsageMeta):
|
|
|
3755
3759
|
completion, self.interrupt_event
|
|
3756
3760
|
):
|
|
3757
3761
|
if self.args.debug:
|
|
3758
|
-
with
|
|
3762
|
+
with safe_open(".cecli/logs/chunks.log", "a") as f:
|
|
3759
3763
|
print(chunk, file=f)
|
|
3760
3764
|
|
|
3761
3765
|
# Check if confirmation is in progress and wait if needed
|
|
@@ -3,6 +3,7 @@ from typing import List
|
|
|
3
3
|
|
|
4
4
|
from cecli.commands.utils.base_command import BaseCommand
|
|
5
5
|
from cecli.commands.utils.helpers import format_command_result
|
|
6
|
+
from cecli.decoding import safe_open
|
|
6
7
|
from cecli.utils import run_fzf
|
|
7
8
|
|
|
8
9
|
|
|
@@ -68,7 +69,7 @@ class HistorySearchCommand(BaseCommand):
|
|
|
68
69
|
return []
|
|
69
70
|
|
|
70
71
|
try:
|
|
71
|
-
with
|
|
72
|
+
with safe_open(file_path, "r") as f:
|
|
72
73
|
content = f.read()
|
|
73
74
|
except (OSError, IOError):
|
|
74
75
|
return []
|
|
@@ -12,6 +12,7 @@ except ImportError:
|
|
|
12
12
|
|
|
13
13
|
from cecli.commands.utils.base_command import BaseCommand
|
|
14
14
|
from cecli.commands.utils.helpers import format_command_result
|
|
15
|
+
from cecli.decoding import safe_open
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
class TerminalSetupCommand(BaseCommand):
|
|
@@ -177,7 +178,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
177
178
|
data = {
|
|
178
179
|
"keyboard": {"bindings": [{"key": "Return", "mods": "Shift", "chars": "\n"}]}
|
|
179
180
|
}
|
|
180
|
-
with
|
|
181
|
+
with safe_open(path, "w") as f:
|
|
181
182
|
tomlkit.dump(data, f)
|
|
182
183
|
io.tool_output("Created Alacritty config with shift+enter binding.")
|
|
183
184
|
return True
|
|
@@ -189,7 +190,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
189
190
|
io.tool_output(f"DRY-RUN: Would check Alacritty config at {path}")
|
|
190
191
|
io.tool_output(f"DRY-RUN: Would add binding: {new_binding}")
|
|
191
192
|
try:
|
|
192
|
-
with
|
|
193
|
+
with safe_open(path, "r") as f:
|
|
193
194
|
data = tomlkit.load(f)
|
|
194
195
|
|
|
195
196
|
# Check if binding already exists
|
|
@@ -222,7 +223,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
222
223
|
cls._backup_file(path, io)
|
|
223
224
|
|
|
224
225
|
try:
|
|
225
|
-
with
|
|
226
|
+
with safe_open(path, "r") as f:
|
|
226
227
|
data = tomlkit.load(f)
|
|
227
228
|
|
|
228
229
|
# Ensure keyboard section exists
|
|
@@ -253,7 +254,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
253
254
|
data["keyboard"]["bindings"].append(new_binding)
|
|
254
255
|
|
|
255
256
|
# Write back to file
|
|
256
|
-
with
|
|
257
|
+
with safe_open(path, "w") as f:
|
|
257
258
|
tomlkit.dump(data, f)
|
|
258
259
|
|
|
259
260
|
io.tool_output("Updated Alacritty config.")
|
|
@@ -280,7 +281,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
280
281
|
else:
|
|
281
282
|
io.tool_output(f"Creating Kitty config at {path}")
|
|
282
283
|
# Create Kitty config with shift+enter binding
|
|
283
|
-
with
|
|
284
|
+
with safe_open(path, "w") as f:
|
|
284
285
|
f.write(cls.KITTY_BINDING)
|
|
285
286
|
io.tool_output("Created Kitty config with shift+enter binding.")
|
|
286
287
|
return True
|
|
@@ -290,7 +291,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
290
291
|
io.tool_output(f"DRY-RUN: Would append binding:\n{cls.KITTY_BINDING.strip()}")
|
|
291
292
|
# Simulate checking for duplicates
|
|
292
293
|
try:
|
|
293
|
-
with
|
|
294
|
+
with safe_open(path, "r") as f:
|
|
294
295
|
content = f.read()
|
|
295
296
|
if "map shift+enter send_text all \\n" in content:
|
|
296
297
|
io.tool_output("DRY-RUN: Kitty already configured.")
|
|
@@ -304,14 +305,14 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
304
305
|
|
|
305
306
|
cls._backup_file(path, io)
|
|
306
307
|
|
|
307
|
-
with
|
|
308
|
+
with safe_open(path, "r") as f:
|
|
308
309
|
content = f.read()
|
|
309
310
|
|
|
310
311
|
if "map shift+enter send_text all \\n" in content:
|
|
311
312
|
io.tool_output("Kitty already configured.")
|
|
312
313
|
return False
|
|
313
314
|
|
|
314
|
-
with
|
|
315
|
+
with safe_open(path, "a") as f:
|
|
315
316
|
f.write(cls.KITTY_BINDING)
|
|
316
317
|
io.tool_output("Updated Kitty config.")
|
|
317
318
|
return True
|
|
@@ -336,7 +337,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
336
337
|
return False
|
|
337
338
|
|
|
338
339
|
try:
|
|
339
|
-
with
|
|
340
|
+
with safe_open(path, "r") as f:
|
|
340
341
|
content = f.read()
|
|
341
342
|
|
|
342
343
|
import re
|
|
@@ -359,7 +360,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
359
360
|
|
|
360
361
|
cls._backup_file(path, io)
|
|
361
362
|
new_content = re.sub(pattern, new_rule, content, flags=re.MULTILINE)
|
|
362
|
-
with
|
|
363
|
+
with safe_open(path, "w") as f:
|
|
363
364
|
f.write(new_content)
|
|
364
365
|
io.tool_output("Updated Konsole keytab rule.")
|
|
365
366
|
return True
|
|
@@ -369,7 +370,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
369
370
|
return True
|
|
370
371
|
|
|
371
372
|
cls._backup_file(path, io)
|
|
372
|
-
with
|
|
373
|
+
with safe_open(path, "a") as f:
|
|
373
374
|
f.write(f"\n{new_rule}\n")
|
|
374
375
|
io.tool_output("Added Konsole Return+Shift rule.")
|
|
375
376
|
return True
|
|
@@ -399,7 +400,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
399
400
|
io.tool_output(f"Creating Windows Terminal config at {path}")
|
|
400
401
|
# Create minimal Windows Terminal config with shift+enter binding
|
|
401
402
|
data = {"actions": [cls.WT_ACTION], "keybindings": [cls.WT_KEYBINDING]}
|
|
402
|
-
with
|
|
403
|
+
with safe_open(path, "w") as f:
|
|
403
404
|
json.dump(data, f, indent=4)
|
|
404
405
|
io.tool_output("Created Windows Terminal config with shift+enter binding.")
|
|
405
406
|
return True
|
|
@@ -412,7 +413,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
412
413
|
)
|
|
413
414
|
# Simulate checking for duplicates
|
|
414
415
|
try:
|
|
415
|
-
with
|
|
416
|
+
with safe_open(path, "r") as f:
|
|
416
417
|
data = json.load(f)
|
|
417
418
|
|
|
418
419
|
# Check if already configured
|
|
@@ -451,7 +452,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
451
452
|
return False
|
|
452
453
|
|
|
453
454
|
try:
|
|
454
|
-
with
|
|
455
|
+
with safe_open(path, "r") as f:
|
|
455
456
|
data = json.load(f)
|
|
456
457
|
|
|
457
458
|
# Check if already configured
|
|
@@ -493,7 +494,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
493
494
|
|
|
494
495
|
cls._backup_file(path, io)
|
|
495
496
|
|
|
496
|
-
with
|
|
497
|
+
with safe_open(path, "w") as f:
|
|
497
498
|
json.dump(data, f, indent=4)
|
|
498
499
|
io.tool_output("Updated Windows Terminal config.")
|
|
499
500
|
return True
|
|
@@ -522,7 +523,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
522
523
|
io.tool_output(f"Creating VS Code keybindings.json at {path}")
|
|
523
524
|
# Create file with our binding
|
|
524
525
|
data = [cls.VSCODE_SHIFT_ENTER_BINDING]
|
|
525
|
-
with
|
|
526
|
+
with safe_open(path, "w") as f:
|
|
526
527
|
json.dump(data, f, indent=4)
|
|
527
528
|
io.tool_output("Created VS Code config with shift+enter binding.")
|
|
528
529
|
return True
|
|
@@ -536,7 +537,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
536
537
|
# Simulate checking for duplicates
|
|
537
538
|
try:
|
|
538
539
|
content = ""
|
|
539
|
-
with
|
|
540
|
+
with safe_open(path, "r") as f:
|
|
540
541
|
content = f.read()
|
|
541
542
|
|
|
542
543
|
# Strip comments before parsing
|
|
@@ -580,7 +581,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
580
581
|
|
|
581
582
|
try:
|
|
582
583
|
content = ""
|
|
583
|
-
with
|
|
584
|
+
with safe_open(path, "r") as f:
|
|
584
585
|
content = f.read()
|
|
585
586
|
|
|
586
587
|
# Strip comments before parsing
|
|
@@ -618,7 +619,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
618
619
|
data.append(cls.VSCODE_SHIFT_ENTER_BINDING)
|
|
619
620
|
|
|
620
621
|
# Write back to file
|
|
621
|
-
with
|
|
622
|
+
with safe_open(path, "w") as f:
|
|
622
623
|
json.dump(data, f, indent=4)
|
|
623
624
|
|
|
624
625
|
io.tool_output("Updated VS Code config.")
|
|
@@ -647,7 +648,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
647
648
|
try:
|
|
648
649
|
if settings_path.exists():
|
|
649
650
|
content = ""
|
|
650
|
-
with
|
|
651
|
+
with safe_open(settings_path, "r") as f:
|
|
651
652
|
content = f.read()
|
|
652
653
|
|
|
653
654
|
content_no_comments = cls._strip_json_comments(content)
|
|
@@ -703,7 +704,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
703
704
|
if settings_path.exists():
|
|
704
705
|
cls._backup_file(settings_path, io)
|
|
705
706
|
content = ""
|
|
706
|
-
with
|
|
707
|
+
with safe_open(settings_path, "r") as f:
|
|
707
708
|
content = f.read()
|
|
708
709
|
|
|
709
710
|
# Strip comments before parsing
|
|
@@ -770,7 +771,7 @@ class TerminalSetupCommand(BaseCommand):
|
|
|
770
771
|
]
|
|
771
772
|
|
|
772
773
|
# Write back to file
|
|
773
|
-
with
|
|
774
|
+
with safe_open(settings_path, "w") as f:
|
|
774
775
|
json.dump(data, f, indent=4)
|
|
775
776
|
|
|
776
777
|
io.tool_output("Updated VS Code settings.")
|
|
@@ -2,6 +2,8 @@ import os
|
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
|
+
from cecli.decoding import safe_open
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
class SaveLoadManager:
|
|
7
9
|
"""Manager for saving and loading command files."""
|
|
@@ -35,7 +37,7 @@ class SaveLoadManager:
|
|
|
35
37
|
# Ensure parent directory exists
|
|
36
38
|
os.makedirs(filepath.parent, exist_ok=True)
|
|
37
39
|
|
|
38
|
-
with
|
|
40
|
+
with safe_open(filepath, "w") as f:
|
|
39
41
|
f.write("/drop\n")
|
|
40
42
|
# Write commands to add editable files
|
|
41
43
|
for fname in sorted(self.coder.abs_fnames):
|
|
@@ -68,7 +70,7 @@ class SaveLoadManager:
|
|
|
68
70
|
filepath = self.resolve_filepath(filename)
|
|
69
71
|
|
|
70
72
|
try:
|
|
71
|
-
with
|
|
73
|
+
with safe_open(filepath, "r", errors="replace") as f:
|
|
72
74
|
commands = f.readlines()
|
|
73
75
|
return [
|
|
74
76
|
cmd.strip() for cmd in commands if cmd.strip() and not cmd.strip().startswith("#")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import subprocess
|
|
2
2
|
|
|
3
3
|
from cecli.commands.utils.base_command import BaseCommand
|
|
4
|
+
from cecli.decoding import safe_open
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class WorkspaceCommand(BaseCommand):
|
|
@@ -26,7 +27,7 @@ class WorkspaceCommand(BaseCommand):
|
|
|
26
27
|
config = {}
|
|
27
28
|
if metadata_path.exists():
|
|
28
29
|
try:
|
|
29
|
-
with
|
|
30
|
+
with safe_open(metadata_path, "r") as f:
|
|
30
31
|
config = json.load(f)
|
|
31
32
|
except Exception:
|
|
32
33
|
pass
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Encoding-aware file operations with automatic encoding detection for reading
|
|
3
|
+
and configurable encoding for writing.
|
|
4
|
+
|
|
5
|
+
Provides safe_open() as a drop-in replacement for built-in open() that handles
|
|
6
|
+
encoding intelligently on reads, smart_read() for direct file reading with
|
|
7
|
+
fallback encoding detection via charset_normalizer, and safe_write() for
|
|
8
|
+
writing files with a configurable default encoding.
|
|
9
|
+
|
|
10
|
+
The module-level DEFAULT_ENCODING variable can be overridden at runtime
|
|
11
|
+
(e.g., from main.py) to set the preferred encoding for write operations.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import charset_normalizer
|
|
15
|
+
|
|
16
|
+
# Global encoding setting used by safe_open() and safe_write() for write
|
|
17
|
+
# operations. Can be overridden at runtime from main.py or elsewhere.
|
|
18
|
+
DEFAULT_ENCODING = "utf-8"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def smart_read(filepath):
|
|
22
|
+
"""
|
|
23
|
+
Read a text file, automatically detecting the encoding if not UTF-8.
|
|
24
|
+
|
|
25
|
+
Attempts a fast UTF-8 decode first using Python's optimized native
|
|
26
|
+
decoder. Falls back to charset_normalizer for legacy encodings (e.g.
|
|
27
|
+
GBK, Latin-1, Shift-JIS) when a UnicodeDecodeError is raised.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
filepath: Path to the file to read.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
The file contents as a string.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: If the encoding cannot be determined.
|
|
37
|
+
FileNotFoundError: If the file does not exist.
|
|
38
|
+
"""
|
|
39
|
+
try:
|
|
40
|
+
# FAST PATH: Try standard UTF-8 first using Python's optimized
|
|
41
|
+
# native decoder — this handles the vast majority of modern files.
|
|
42
|
+
with open(filepath, "r", encoding="utf-8") as f:
|
|
43
|
+
return f.read()
|
|
44
|
+
|
|
45
|
+
except UnicodeDecodeError:
|
|
46
|
+
# SLOW PATH: A decode error means this is likely a legacy encoding.
|
|
47
|
+
# Let the library read the raw bytes and guess the correct encoding.
|
|
48
|
+
results = charset_normalizer.from_path(filepath)
|
|
49
|
+
match = results.best()
|
|
50
|
+
|
|
51
|
+
if match is None:
|
|
52
|
+
raise ValueError(f"Could not determine text encoding for {filepath}")
|
|
53
|
+
|
|
54
|
+
return str(match)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def safe_write(filepath, content, encoding=None):
|
|
58
|
+
"""
|
|
59
|
+
Write string content to a file using the specified or default encoding.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
filepath: Path to the file to write.
|
|
63
|
+
content: The string content to write.
|
|
64
|
+
encoding: Encoding to use. Defaults to the module-level
|
|
65
|
+
DEFAULT_ENCODING if not provided.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
The content that was written (for convenience / chaining).
|
|
69
|
+
"""
|
|
70
|
+
if encoding is None:
|
|
71
|
+
encoding = DEFAULT_ENCODING
|
|
72
|
+
|
|
73
|
+
with open(filepath, "w", encoding=encoding) as f:
|
|
74
|
+
f.write(content)
|
|
75
|
+
|
|
76
|
+
return content
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def safe_open(filepath, mode="r", encoding=None, **kwargs):
|
|
80
|
+
"""
|
|
81
|
+
Open a file with intelligent encoding handling.
|
|
82
|
+
"""
|
|
83
|
+
# Binary modes — pass through to built-in open() unchanged.
|
|
84
|
+
if "b" in mode:
|
|
85
|
+
return open(filepath, mode, **kwargs)
|
|
86
|
+
|
|
87
|
+
# If the user explicitly provided an encoding, respect it unconditionally.
|
|
88
|
+
if encoding is not None:
|
|
89
|
+
return open(filepath, mode, encoding=encoding, **kwargs)
|
|
90
|
+
|
|
91
|
+
# Write / append modes (with no explicit encoding) — use DEFAULT_ENCODING.
|
|
92
|
+
# Note: We don't check for "r+" here because if a file is being read,
|
|
93
|
+
# we must detect its existing encoding first so we don't corrupt it.
|
|
94
|
+
if "w" in mode or "a" in mode or "x" in mode:
|
|
95
|
+
return open(filepath, mode, encoding=DEFAULT_ENCODING, **kwargs)
|
|
96
|
+
|
|
97
|
+
# Read modes (and read/write "r+" modes) — Auto-detect the encoding.
|
|
98
|
+
try:
|
|
99
|
+
# FAST PATH: Try UTF-8 first by opening and reading a tiny chunk
|
|
100
|
+
with open(filepath, mode, encoding="utf-8", **kwargs) as f:
|
|
101
|
+
f.read(1) # Test if it raises a DecodeError
|
|
102
|
+
|
|
103
|
+
# If we got here, UTF-8 is valid. Return a fresh file object.
|
|
104
|
+
return open(filepath, mode, encoding="utf-8", **kwargs)
|
|
105
|
+
|
|
106
|
+
except UnicodeDecodeError:
|
|
107
|
+
# SLOW PATH: Detect encoding using charset_normalizer
|
|
108
|
+
results = charset_normalizer.from_path(filepath)
|
|
109
|
+
match = results.best()
|
|
110
|
+
|
|
111
|
+
if match is None:
|
|
112
|
+
raise ValueError(f"Could not determine text encoding for {filepath}")
|
|
113
|
+
|
|
114
|
+
# Return a real file object using the detected encoding
|
|
115
|
+
return open(filepath, mode, encoding=match.encoding, **kwargs)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import difflib
|
|
2
2
|
import sys
|
|
3
3
|
|
|
4
|
+
from cecli.decoding import safe_open
|
|
5
|
+
|
|
4
6
|
from .dump import dump # noqa: F401
|
|
5
7
|
|
|
6
8
|
|
|
@@ -11,10 +13,10 @@ def main():
|
|
|
11
13
|
|
|
12
14
|
file_orig, file_updated = sys.argv[1], sys.argv[2]
|
|
13
15
|
|
|
14
|
-
with
|
|
16
|
+
with safe_open(file_orig, "r") as f:
|
|
15
17
|
lines_orig = f.readlines()
|
|
16
18
|
|
|
17
|
-
with
|
|
19
|
+
with safe_open(file_updated, "r") as f:
|
|
18
20
|
lines_updated = f.readlines()
|
|
19
21
|
|
|
20
22
|
for i in range(len(file_updated)):
|
|
@@ -15,6 +15,7 @@ import tempfile
|
|
|
15
15
|
|
|
16
16
|
from rich.console import Console
|
|
17
17
|
|
|
18
|
+
from cecli.decoding import safe_open
|
|
18
19
|
from cecli.dump import dump # noqa
|
|
19
20
|
|
|
20
21
|
DEFAULT_EDITOR_NIX = "vi"
|
|
@@ -132,7 +133,7 @@ def pipe_editor(input_data="", suffix=None, editor=None):
|
|
|
132
133
|
command_str += " " + filepath
|
|
133
134
|
|
|
134
135
|
subprocess.call(command_str, shell=True)
|
|
135
|
-
with
|
|
136
|
+
with safe_open(filepath, "r") as f:
|
|
136
137
|
output_data = f.read()
|
|
137
138
|
try:
|
|
138
139
|
os.remove(filepath)
|
|
@@ -10,6 +10,8 @@ from typing import Any, Dict, Optional
|
|
|
10
10
|
|
|
11
11
|
import yaml
|
|
12
12
|
|
|
13
|
+
from cecli.decoding import safe_open
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
@dataclass
|
|
15
17
|
class SubAgentConfig:
|
|
@@ -49,7 +51,7 @@ def parse_subagent_file(file_path: str) -> Optional[SubAgentConfig]:
|
|
|
49
51
|
"""
|
|
50
52
|
|
|
51
53
|
try:
|
|
52
|
-
with
|
|
54
|
+
with safe_open(file_path, "r") as f:
|
|
53
55
|
content = f.read()
|
|
54
56
|
except (FileNotFoundError, IOError, OSError) as e:
|
|
55
57
|
raise ValueError(f"Cannot read file '{file_path}': {e}")
|
|
@@ -12,6 +12,8 @@ import threading
|
|
|
12
12
|
from collections import deque
|
|
13
13
|
from typing import Dict, List, Optional, Tuple
|
|
14
14
|
|
|
15
|
+
from cecli.decoding import safe_open
|
|
16
|
+
|
|
15
17
|
try:
|
|
16
18
|
import pty
|
|
17
19
|
import termios
|
|
@@ -783,7 +785,7 @@ class BackgroundCommandManager:
|
|
|
783
785
|
filename = f"{page_num}.txt"
|
|
784
786
|
abs_path = os.path.join(abs_folder, filename)
|
|
785
787
|
page_content = output[i * page_size : (i + 1) * page_size]
|
|
786
|
-
with
|
|
788
|
+
with safe_open(abs_path, "w") as f:
|
|
787
789
|
f.write(page_content)
|
|
788
790
|
|
|
789
791
|
file_paths = [f"{folder_path}/{page_num}.txt" for page_num in range(1, num_pages + 1)]
|
|
@@ -6,6 +6,8 @@ from typing import Any, Dict, List
|
|
|
6
6
|
|
|
7
7
|
import yaml
|
|
8
8
|
|
|
9
|
+
from cecli.decoding import safe_open
|
|
10
|
+
|
|
9
11
|
|
|
10
12
|
def load_and_apply_cecli_conf_files(
|
|
11
13
|
cecli_conf_yml_files: List[str], args: Any, parser: Any
|
|
@@ -23,7 +25,7 @@ def load_and_apply_cecli_conf_files(
|
|
|
23
25
|
|
|
24
26
|
for config_file in existing_cecli_conf:
|
|
25
27
|
try:
|
|
26
|
-
with
|
|
28
|
+
with safe_open(config_file, "r") as f:
|
|
27
29
|
config_data = yaml.safe_load(f)
|
|
28
30
|
|
|
29
31
|
if isinstance(config_data, dict):
|
|
@@ -199,7 +201,7 @@ def read_and_merge_all_configs(
|
|
|
199
201
|
for path in all_config_paths:
|
|
200
202
|
if os.path.exists(path):
|
|
201
203
|
try:
|
|
202
|
-
with
|
|
204
|
+
with safe_open(path, "r") as f:
|
|
203
205
|
data = yaml.safe_load(f)
|
|
204
206
|
|
|
205
207
|
if isinstance(data, dict):
|
|
@@ -4,6 +4,7 @@ import time
|
|
|
4
4
|
import weakref
|
|
5
5
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
6
6
|
|
|
7
|
+
from cecli.decoding import safe_open
|
|
7
8
|
from cecli.helpers import nested
|
|
8
9
|
|
|
9
10
|
from .base_message import BaseMessage
|
|
@@ -354,7 +355,7 @@ class ConversationManager:
|
|
|
354
355
|
import os
|
|
355
356
|
|
|
356
357
|
os.makedirs(".cecli/logs", exist_ok=True)
|
|
357
|
-
with
|
|
358
|
+
with safe_open(".cecli/logs/conversation.log", "w") as f:
|
|
358
359
|
json.dump(messages_dict, f, indent=4, default=lambda o: "<not serializable>")
|
|
359
360
|
|
|
360
361
|
# Add cache control headers when getting all messages (for LLM consumption)
|