ayder-cli 1.8.3__tar.gz → 2.0.0__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.
- ayder_cli-2.0.0/CHANGELOG.md +14 -0
- ayder_cli-1.8.3/README.md → ayder_cli-2.0.0/PKG-INFO +73 -12
- ayder_cli-1.8.3/PKG-INFO → ayder_cli-2.0.0/README.md +33 -41
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/config.toml.example +7 -6
- ayder_cli-2.0.0/docs/superpowers/plans/2026-06-02-optional-provider-deps.md +879 -0
- ayder_cli-2.0.0/docs/superpowers/specs/2026-06-02-optional-provider-deps-design.md +271 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/pyproject.toml +12 -3
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli_runner.py +4 -0
- ayder_cli-2.0.0/src/ayder_cli/console.py +26 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/config.py +13 -3
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context.py +0 -22
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/default_context_manager.py +0 -26
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/__init__.py +2 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/base.py +28 -2
- ayder_cli-2.0.0/src/ayder_cli/providers/orchestrator.py +116 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/tasks.py +0 -24
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/registry.py +1 -6
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/__init__.py +9 -3
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/adapter.py +0 -7
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/commands.py +12 -15
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/widgets.py +60 -66
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/COVERAGE.md +6 -0
- ayder_cli-2.0.0/tests/agents/test_runner_provider_unavailable.py +31 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_execution_policy_parity.py +47 -90
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_validation_path.py +41 -86
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_cache_monitor.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_v2.py +24 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_context_manager_factory.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_default_context_manager.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_inspector.py +0 -2
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_native.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml.py +0 -11
- ayder_cli-2.0.0/tests/providers/test_orchestrator_capabilities.py +131 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retry_integration.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/services/test_interaction_sink.py +0 -2
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_loading.py +0 -1
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_multi_select_screen.py +0 -1
- ayder_cli-2.0.0/tests/tui/test_paste.py +131 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_diff_preview.py +0 -2
- ayder_cli-2.0.0/tests/ui/test_provider_switch.py +32 -0
- ayder_cli-2.0.0/tests/ui/test_run_tui_startup.py +21 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_provider.py +4 -4
- ayder_cli-1.8.3/src/ayder_cli/console.py +0 -69
- ayder_cli-1.8.3/src/ayder_cli/providers/orchestrator.py +0 -46
- ayder_cli-1.8.3/tests/manual_test_verbose.py +0 -111
- ayder_cli-1.8.3/tests/tui/test_paste.py +0 -69
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.github/workflows/ci.yml +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.github/workflows/python-package.yml +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.gitignore +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.python-version +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/AGENTS.md +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/LICENSE +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/PROJECT_STRUCTURE.md +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/README_OLLAMA.md +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/cc.png +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/__main__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/callbacks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/config.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/registry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/runner.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/summary.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/tool.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/README.md +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/execution_policy.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/message_contract.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/runtime_factory.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/validation.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli_callbacks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/cache_monitor.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/config_migration.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context_manager_factory.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/ollama_context_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/result.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/logging_config.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/loops/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/loops/chat_loop.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/parser.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/process_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/prompts.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/claude.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/deepseek.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/gemini.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/glm.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/_errors.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/base.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/deepseek.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/generic_native.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/generic_xml.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/matrix.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/minimax.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/qwen3.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/registry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_inspector.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/openai.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/qwen.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/retry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/services/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/services/interactions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/claude.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/original.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/context.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/context_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/filesystem.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/filesystem_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/notes.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/notes_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/process_manager_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/search.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/search_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/shell.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/shell_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/tasks_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/utils_tools.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/utils_tools_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/web.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/web_definitions.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/definition.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/execution.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/hooks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/normalization.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_api.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_github.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/schemas.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/utils.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/app.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/helpers.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/keybindings.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/parser.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/screens.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/theme_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/types.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/ui.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/version.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_callbacks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_config.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_integration.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_registry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_runner.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_summary.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_tool.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/application/test_message_contract.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/application/test_runtime_factory.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/client/test_main.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_runtime_wiring.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_coverage.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_migration.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_retry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_default_context_manager_should_compact.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager_cache_monitor.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager_max_history.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_parameter_aliasing.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_parser.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_base.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_chat_loop_hook.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_chat_loop_tool_truncation.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_base.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_deepseek.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_errors.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_fallback.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_generic_native.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_generic_xml.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_matrix.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_minimax.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_provider_integration.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_qwen3.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_registry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_glm_async.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml_autoroute.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml_usage.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_qwen_async.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retry_classifier.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retrying_provider.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/services/test_boundary.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_cli.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_cli_callbacks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_context.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_env_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_logging_config.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_notes.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_process_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_tasks.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_definition_discovery.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_di_injection.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_impl.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_impl_coverage.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_path_security.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_api.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_github.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_manager.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_registry.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_registry_coverage.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_result.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_schemas.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_search_codebase.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_utils.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_web.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/__init__.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_agent_list_screen.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_do_clear_coordination.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_follow_mode.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_help_screen.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_keybindings.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_multiline_input.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_pending_compact_consumer.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_widgets.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_confirm_screen.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_assistant_sanitization.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_chat_loop.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_agent.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_logging.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_helpers.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_temporal_command.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_widgets.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_ui.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_ui_coverage.py +0 -0
- {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_ui_verbose.py +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2.0.0
|
|
4
|
+
|
|
5
|
+
### Breaking
|
|
6
|
+
- `anthropic` and `google-genai` are no longer installed by default. Install the
|
|
7
|
+
corresponding extra: `pip install ayder-cli[anthropic]` / `[google]`.
|
|
8
|
+
- Default install now ships OpenAI + Ollama (+ DeepSeek, which reuses the OpenAI SDK).
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Optional extras: `[anthropic]`, `[google]`, `[qwen]`, `[glm]`, `[all]`.
|
|
12
|
+
- Driver names `deepseek`, `qwen`/`dashscope`, `glm`/`zhipu` are now selectable.
|
|
13
|
+
- Selecting an uninstalled driver fails fast with the exact `pip install` command
|
|
14
|
+
and a list of available drivers.
|
|
@@ -1,3 +1,43 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ayder-cli
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: AI agent for any LLMs
|
|
5
|
+
Project-URL: Homepage, https://github.com/ayder/ayder-cli
|
|
6
|
+
Project-URL: Repository, https://github.com/ayder/ayder-cli.git
|
|
7
|
+
Project-URL: Issues, https://github.com/ayder/ayder-cli/issues
|
|
8
|
+
Author-email: Sinan Alyuruk <sinan.alyuruk@gmail.com>
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: agent,ai,ayder,cli,llm,tui
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Requires-Dist: httpx
|
|
18
|
+
Requires-Dist: libcst>=1.0.0
|
|
19
|
+
Requires-Dist: loguru
|
|
20
|
+
Requires-Dist: ollama>=0.6.2
|
|
21
|
+
Requires-Dist: openai
|
|
22
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
23
|
+
Requires-Dist: rich>=13.0.0
|
|
24
|
+
Requires-Dist: textual<9.0.0,>=1.0.0
|
|
25
|
+
Requires-Dist: tiktoken>=0.7.0
|
|
26
|
+
Provides-Extra: all
|
|
27
|
+
Requires-Dist: anthropic; extra == 'all'
|
|
28
|
+
Requires-Dist: dashscope; extra == 'all'
|
|
29
|
+
Requires-Dist: google-genai; extra == 'all'
|
|
30
|
+
Requires-Dist: zhipuai; extra == 'all'
|
|
31
|
+
Provides-Extra: anthropic
|
|
32
|
+
Requires-Dist: anthropic; extra == 'anthropic'
|
|
33
|
+
Provides-Extra: glm
|
|
34
|
+
Requires-Dist: zhipuai; extra == 'glm'
|
|
35
|
+
Provides-Extra: google
|
|
36
|
+
Requires-Dist: google-genai; extra == 'google'
|
|
37
|
+
Provides-Extra: qwen
|
|
38
|
+
Requires-Dist: dashscope; extra == 'qwen'
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
1
41
|
# ayder-cli
|
|
2
42
|
|
|
3
43
|
A multi-provider AI agent chat client for your terminal. ayder supports Ollama, Anthropic Claude, OpenAI, Gemini,
|
|
@@ -5,6 +45,12 @@ or any OpenAI-compatible API and provides an autonomous coding assistant with fi
|
|
|
5
45
|
|
|
6
46
|

|
|
7
47
|
|
|
48
|
+
## What's New in 2.0
|
|
49
|
+
|
|
50
|
+
Provider SDKs are now **optional**. The core install ships only OpenAI + Ollama (plus DeepSeek, which reuses the OpenAI SDK); Anthropic, Google, Qwen, and GLM are opt-in extras -- install only what you use. Selecting a driver whose package isn't installed fails fast with the exact `pip install` command and a list of the drivers available in your install. See [CHANGELOG.md](CHANGELOG.md) and [Installation](#installation).
|
|
51
|
+
|
|
52
|
+
> **Upgrading from 1.x (breaking):** `anthropic` and `google` are no longer installed by default. Run `pip install ayder-cli[anthropic]` / `[google]` (or `[all]`) if you use them.
|
|
53
|
+
|
|
8
54
|
## Supported LLM providers
|
|
9
55
|
|
|
10
56
|
- [Ollama](https://ollama.com) (local or cloud)
|
|
@@ -25,7 +71,7 @@ Most AI coding assistants require cloud APIs, subscriptions, or heavy IDE plugin
|
|
|
25
71
|
- **Agentic workflow** -- the LLM reads files, edits code, runs shell commands, and iterates autonomously with configurable iteration limits per message.
|
|
26
72
|
- **Multi-agent** -- define specialized sub-agents in `config.toml`. Each agent runs independently with its own LLM, model, and context. Results are injected back into the main conversation when complete.
|
|
27
73
|
- **Textual TUI** -- an inline terminal interface with chat view, tool panel, thinking block toggle, slash command auto-completion, permission toggles, and tool confirmation modals with diff previews.
|
|
28
|
-
- **Batteries included** -- the OpenAI
|
|
74
|
+
- **Batteries included** -- the OpenAI and Ollama SDKs ship with ayder-cli core. Anthropic, Google, Qwen, and GLM are optional extras (install only what you need). The terminal UI is built on Rich and Textual.
|
|
29
75
|
|
|
30
76
|
### Tools
|
|
31
77
|
|
|
@@ -41,17 +87,29 @@ Each tool has an OpenAI-compatible JSON schema so models that support function c
|
|
|
41
87
|
## Installation
|
|
42
88
|
|
|
43
89
|
Requires Python 3.12+.
|
|
44
|
-
Works best with uv
|
|
45
|
-
|
|
90
|
+
Works best with uv. If you don't have uv in your path, get it from
|
|
91
|
+
[Astral uv](https://docs.astral.sh/uv/#highlights).
|
|
92
|
+
|
|
93
|
+
Core install (OpenAI + Ollama, plus DeepSeek which reuses the OpenAI SDK):
|
|
94
|
+
|
|
95
|
+
pip install ayder-cli
|
|
96
|
+
|
|
97
|
+
Optional providers (install only what you use):
|
|
98
|
+
|
|
99
|
+
pip install ayder-cli[anthropic] # Claude
|
|
100
|
+
pip install ayder-cli[google] # Gemini
|
|
101
|
+
pip install ayder-cli[qwen] # Qwen (dashscope)
|
|
102
|
+
pip install ayder-cli[glm] # GLM (zhipuai)
|
|
103
|
+
pip install ayder-cli[all] # everything
|
|
104
|
+
|
|
105
|
+
If you select a driver whose package isn't installed, ayder prints the exact
|
|
106
|
+
install command and lists the drivers available in your install.
|
|
46
107
|
|
|
47
108
|
```bash
|
|
48
|
-
# Install to user environment
|
|
109
|
+
# Install to user environment (uv tool)
|
|
49
110
|
uv tool install ayder-cli
|
|
50
111
|
|
|
51
|
-
#
|
|
52
|
-
pip install ayder-cli
|
|
53
|
-
|
|
54
|
-
# For nightly builds:
|
|
112
|
+
# Or for nightly / development builds:
|
|
55
113
|
git clone https://github.com/ayder/ayder-cli.git
|
|
56
114
|
cd ayder-cli
|
|
57
115
|
|
|
@@ -77,16 +135,19 @@ export OLLAMA_FLASH_ATTENTION=true
|
|
|
77
135
|
export OLLAMA_MAX_LOADED_MODELS=1
|
|
78
136
|
```
|
|
79
137
|
|
|
80
|
-
### Cloud providers
|
|
138
|
+
### Cloud providers
|
|
81
139
|
|
|
82
|
-
|
|
83
|
-
Just add an API key to a profile in `~/.ayder/config.toml` (see Configuration
|
|
140
|
+
Add an API key to a profile in `~/.ayder/config.toml` (see Configuration
|
|
84
141
|
below) and switch provider in the TUI:
|
|
85
142
|
|
|
86
143
|
```bash
|
|
87
|
-
/provider anthropic # or: openai,
|
|
144
|
+
/provider anthropic # or: openai, google, deepseek, qwen, glm
|
|
88
145
|
```
|
|
89
146
|
|
|
147
|
+
Note: `anthropic` and `google` require the corresponding optional extra
|
|
148
|
+
(see Installation above). `openai`, `ollama`, and `deepseek` are included
|
|
149
|
+
in the core install.
|
|
150
|
+
|
|
90
151
|
### Configuration: Profiles and Drivers
|
|
91
152
|
|
|
92
153
|
ayder-cli uses a flexible profile-based configuration system. On the first run, it creates a config file at `~/.ayder/config.toml`.
|
|
@@ -1,32 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: ayder-cli
|
|
3
|
-
Version: 1.8.3
|
|
4
|
-
Summary: AI agent for any LLMs
|
|
5
|
-
Project-URL: Homepage, https://github.com/ayder/ayder-cli
|
|
6
|
-
Project-URL: Repository, https://github.com/ayder/ayder-cli.git
|
|
7
|
-
Project-URL: Issues, https://github.com/ayder/ayder-cli/issues
|
|
8
|
-
Author-email: Sinan Alyuruk <sinan.alyuruk@gmail.com>
|
|
9
|
-
License: MIT
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Keywords: agent,ai,ayder,cli,llm,tui
|
|
12
|
-
Classifier: Environment :: Console
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Requires-Python: >=3.12
|
|
17
|
-
Requires-Dist: anthropic
|
|
18
|
-
Requires-Dist: google-genai
|
|
19
|
-
Requires-Dist: httpx
|
|
20
|
-
Requires-Dist: libcst>=1.0.0
|
|
21
|
-
Requires-Dist: loguru
|
|
22
|
-
Requires-Dist: ollama>=0.6.2
|
|
23
|
-
Requires-Dist: openai
|
|
24
|
-
Requires-Dist: python-dotenv>=1.0.0
|
|
25
|
-
Requires-Dist: rich>=13.0.0
|
|
26
|
-
Requires-Dist: textual<9.0.0,>=1.0.0
|
|
27
|
-
Requires-Dist: tiktoken>=0.7.0
|
|
28
|
-
Description-Content-Type: text/markdown
|
|
29
|
-
|
|
30
1
|
# ayder-cli
|
|
31
2
|
|
|
32
3
|
A multi-provider AI agent chat client for your terminal. ayder supports Ollama, Anthropic Claude, OpenAI, Gemini,
|
|
@@ -34,6 +5,12 @@ or any OpenAI-compatible API and provides an autonomous coding assistant with fi
|
|
|
34
5
|
|
|
35
6
|

|
|
36
7
|
|
|
8
|
+
## What's New in 2.0
|
|
9
|
+
|
|
10
|
+
Provider SDKs are now **optional**. The core install ships only OpenAI + Ollama (plus DeepSeek, which reuses the OpenAI SDK); Anthropic, Google, Qwen, and GLM are opt-in extras -- install only what you use. Selecting a driver whose package isn't installed fails fast with the exact `pip install` command and a list of the drivers available in your install. See [CHANGELOG.md](CHANGELOG.md) and [Installation](#installation).
|
|
11
|
+
|
|
12
|
+
> **Upgrading from 1.x (breaking):** `anthropic` and `google` are no longer installed by default. Run `pip install ayder-cli[anthropic]` / `[google]` (or `[all]`) if you use them.
|
|
13
|
+
|
|
37
14
|
## Supported LLM providers
|
|
38
15
|
|
|
39
16
|
- [Ollama](https://ollama.com) (local or cloud)
|
|
@@ -54,7 +31,7 @@ Most AI coding assistants require cloud APIs, subscriptions, or heavy IDE plugin
|
|
|
54
31
|
- **Agentic workflow** -- the LLM reads files, edits code, runs shell commands, and iterates autonomously with configurable iteration limits per message.
|
|
55
32
|
- **Multi-agent** -- define specialized sub-agents in `config.toml`. Each agent runs independently with its own LLM, model, and context. Results are injected back into the main conversation when complete.
|
|
56
33
|
- **Textual TUI** -- an inline terminal interface with chat view, tool panel, thinking block toggle, slash command auto-completion, permission toggles, and tool confirmation modals with diff previews.
|
|
57
|
-
- **Batteries included** -- the OpenAI
|
|
34
|
+
- **Batteries included** -- the OpenAI and Ollama SDKs ship with ayder-cli core. Anthropic, Google, Qwen, and GLM are optional extras (install only what you need). The terminal UI is built on Rich and Textual.
|
|
58
35
|
|
|
59
36
|
### Tools
|
|
60
37
|
|
|
@@ -70,17 +47,29 @@ Each tool has an OpenAI-compatible JSON schema so models that support function c
|
|
|
70
47
|
## Installation
|
|
71
48
|
|
|
72
49
|
Requires Python 3.12+.
|
|
73
|
-
Works best with uv
|
|
74
|
-
|
|
50
|
+
Works best with uv. If you don't have uv in your path, get it from
|
|
51
|
+
[Astral uv](https://docs.astral.sh/uv/#highlights).
|
|
52
|
+
|
|
53
|
+
Core install (OpenAI + Ollama, plus DeepSeek which reuses the OpenAI SDK):
|
|
54
|
+
|
|
55
|
+
pip install ayder-cli
|
|
56
|
+
|
|
57
|
+
Optional providers (install only what you use):
|
|
58
|
+
|
|
59
|
+
pip install ayder-cli[anthropic] # Claude
|
|
60
|
+
pip install ayder-cli[google] # Gemini
|
|
61
|
+
pip install ayder-cli[qwen] # Qwen (dashscope)
|
|
62
|
+
pip install ayder-cli[glm] # GLM (zhipuai)
|
|
63
|
+
pip install ayder-cli[all] # everything
|
|
64
|
+
|
|
65
|
+
If you select a driver whose package isn't installed, ayder prints the exact
|
|
66
|
+
install command and lists the drivers available in your install.
|
|
75
67
|
|
|
76
68
|
```bash
|
|
77
|
-
# Install to user environment
|
|
69
|
+
# Install to user environment (uv tool)
|
|
78
70
|
uv tool install ayder-cli
|
|
79
71
|
|
|
80
|
-
#
|
|
81
|
-
pip install ayder-cli
|
|
82
|
-
|
|
83
|
-
# For nightly builds:
|
|
72
|
+
# Or for nightly / development builds:
|
|
84
73
|
git clone https://github.com/ayder/ayder-cli.git
|
|
85
74
|
cd ayder-cli
|
|
86
75
|
|
|
@@ -106,16 +95,19 @@ export OLLAMA_FLASH_ATTENTION=true
|
|
|
106
95
|
export OLLAMA_MAX_LOADED_MODELS=1
|
|
107
96
|
```
|
|
108
97
|
|
|
109
|
-
### Cloud providers
|
|
98
|
+
### Cloud providers
|
|
110
99
|
|
|
111
|
-
|
|
112
|
-
Just add an API key to a profile in `~/.ayder/config.toml` (see Configuration
|
|
100
|
+
Add an API key to a profile in `~/.ayder/config.toml` (see Configuration
|
|
113
101
|
below) and switch provider in the TUI:
|
|
114
102
|
|
|
115
103
|
```bash
|
|
116
|
-
/provider anthropic # or: openai,
|
|
104
|
+
/provider anthropic # or: openai, google, deepseek, qwen, glm
|
|
117
105
|
```
|
|
118
106
|
|
|
107
|
+
Note: `anthropic` and `google` require the corresponding optional extra
|
|
108
|
+
(see Installation above). `openai`, `ollama`, and `deepseek` are included
|
|
109
|
+
in the core install.
|
|
110
|
+
|
|
119
111
|
### Configuration: Profiles and Drivers
|
|
120
112
|
|
|
121
113
|
ayder-cli uses a flexible profile-based configuration system. On the first run, it creates a config file at `~/.ayder/config.toml`.
|
|
@@ -61,8 +61,14 @@ retention = "7 days"
|
|
|
61
61
|
# Each [llm.<name>] section defines a provider profile. Set [app].provider
|
|
62
62
|
# to the profile name you want to use.
|
|
63
63
|
#
|
|
64
|
+
# driver may be: openai, ollama, deepseek (core, always available),
|
|
65
|
+
# anthropic, google, qwen (or dashscope), glm (or zhipu).
|
|
66
|
+
# Non-core drivers require their extra, e.g.:
|
|
67
|
+
# pip install ayder-cli[anthropic]
|
|
68
|
+
#
|
|
64
69
|
# Required fields per profile:
|
|
65
|
-
# driver - SDK backend: "openai", "ollama", "anthropic", "google"
|
|
70
|
+
# driver - SDK backend: "openai", "ollama", "anthropic", "google",
|
|
71
|
+
# "deepseek", "qwen", or "glm"
|
|
66
72
|
# model - Model identifier
|
|
67
73
|
#
|
|
68
74
|
# Optional fields:
|
|
@@ -221,11 +227,6 @@ tool_result_compress_age = 5 # Compress tool results older than N tur
|
|
|
221
227
|
max_tool_result_length = 2048 # Max chars per tool result before truncation
|
|
222
228
|
compress_tool_results = true # Enable automatic tool result compression
|
|
223
229
|
|
|
224
|
-
# Per-model overrides (optional)
|
|
225
|
-
# [context_manager.model_overrides."gpt-4o"]
|
|
226
|
-
# max_context_tokens = 128000
|
|
227
|
-
# reserve_ratio = 0.20
|
|
228
|
-
|
|
229
230
|
|
|
230
231
|
# =============================================================================
|
|
231
232
|
# Agents
|