ayder-cli 2.1.5__tar.gz → 2.2.6__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.1.5 → ayder_cli-2.2.6}/AGENTS.md +2 -2
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/PKG-INFO +4 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/PROJECT_STRUCTURE.md +7 -7
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/config.toml.example +22 -0
- ayder_cli-2.2.6/docs/superpowers/plans/2026-06-26-file-editor-improvements.md +771 -0
- ayder_cli-2.2.6/docs/superpowers/plans/2026-06-26-session-save-resume.md +1047 -0
- ayder_cli-2.2.6/docs/superpowers/specs/2026-06-26-file-editor-improvements-design.md +180 -0
- ayder_cli-2.2.6/docs/superpowers/specs/2026-06-26-session-save-resume-design.md +319 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/pyproject.toml +7 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/registry.py +202 -44
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/run.py +5 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/runner.py +45 -4
- ayder_cli-2.2.6/src/ayder_cli/agents/tool.py +184 -0
- ayder_cli-2.2.6/src/ayder_cli/agents/worktree.py +130 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli.py +70 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli_runner.py +6 -16
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/config.py +31 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context_manager.py +8 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/ollama_context_manager.py +12 -1
- ayder_cli-2.2.6/src/ayder_cli/core/session.py +216 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/process_manager.py +220 -27
- ayder_cli-2.2.6/src/ayder_cli/prompts.py +398 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/themes/__init__.py +16 -3
- ayder_cli-2.2.6/src/ayder_cli/themes/ayder.py +898 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/background_process_tool.py +103 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/filesystem.py +93 -35
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/filesystem_definitions.py +24 -3
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/note_tool.py +158 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/notes.py +115 -4
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/notes_definitions.py +97 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/process_manager_definitions.py +67 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/shell.py +106 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/shell_definitions.py +53 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/task_definitions.py +131 -0
- ayder_cli-2.2.6/src/ayder_cli/tools/builtins/task_tool.py +399 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/tasks.py +18 -7
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/definition.py +2 -2
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/registry.py +1 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/__init__.py +32 -10
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/app.py +72 -23
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/commands.py +3 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/screens.py +1 -1
- ayder_cli-2.2.6/src/ayder_cli/tui/theme_manager.py +274 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/COVERAGE.md +2 -2
- ayder_cli-2.2.6/tests/agents/test_agent_consolidated.py +92 -0
- ayder_cli-2.2.6/tests/agents/test_agent_tools.py +83 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_callbacks.py +1 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_config.py +1 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_integration.py +5 -5
- ayder_cli-2.2.6/tests/agents/test_queue.py +204 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_registry.py +66 -12
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_run.py +15 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_runner.py +81 -4
- ayder_cli-2.2.6/tests/agents/test_tool.py +19 -0
- ayder_cli-2.2.6/tests/agents/test_worktree_helpers.py +105 -0
- ayder_cli-2.2.6/tests/agents/test_worktree_isolation.py +296 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_execution_policy_parity.py +3 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_v2.py +10 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager.py +29 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_parser.py +11 -11
- ayder_cli-2.2.6/tests/core/test_session.py +157 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_chat_loop_tool_truncation.py +24 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_cli.py +51 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_process_manager.py +150 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_tasks.py +1 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_agent_notes.py +1 -1
- ayder_cli-2.2.6/tests/tools/test_background_process_tool.py +121 -0
- ayder_cli-2.2.6/tests/tools/test_bash_tool.py +183 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_definition_discovery.py +4 -4
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_impl.py +206 -14
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_impl_coverage.py +5 -5
- ayder_cli-2.2.6/tests/tools/test_note_tool.py +158 -0
- ayder_cli-2.2.6/tests/tools/test_notes_api.py +118 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_registry.py +3 -3
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_registry_coverage.py +1 -1
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_schemas.py +5 -6
- ayder_cli-2.2.6/tests/tools/test_task_tool.py +375 -0
- ayder_cli-2.2.6/tests/tui/test_resume.py +86 -0
- ayder_cli-2.2.6/tests/tui/test_themes.py +450 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_confirm_screen.py +8 -4
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_helpers.py +4 -4
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_ui.py +3 -3
- ayder_cli-2.1.5/src/ayder_cli/agents/tool.py +0 -183
- ayder_cli-2.1.5/src/ayder_cli/prompts.py +0 -345
- ayder_cli-2.1.5/src/ayder_cli/themes/original.py +0 -588
- ayder_cli-2.1.5/src/ayder_cli/tools/builtins/notes_definitions.py +0 -39
- ayder_cli-2.1.5/src/ayder_cli/tools/builtins/process_manager_definitions.py +0 -84
- ayder_cli-2.1.5/src/ayder_cli/tools/builtins/shell.py +0 -34
- ayder_cli-2.1.5/src/ayder_cli/tools/builtins/shell_definitions.py +0 -31
- ayder_cli-2.1.5/src/ayder_cli/tools/builtins/tasks_definitions.py +0 -48
- ayder_cli-2.1.5/src/ayder_cli/tui/theme_manager.py +0 -163
- ayder_cli-2.1.5/tests/agents/test_agent_tools.py +0 -85
- ayder_cli-2.1.5/tests/agents/test_tool.py +0 -142
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.github/workflows/ci.yml +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.github/workflows/python-package.yml +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.gitignore +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.python-version +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/LICENSE +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/README.md +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/README_AGENT_WORKFLOW.md +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/README_OLLAMA.md +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/cc.png +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/__main__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/callbacks.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/config.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/README.md +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/execution_policy.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/message_contract.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/runtime_factory.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/validation.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli_callbacks.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/console.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/cache_monitor.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/config_migration.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context_manager_factory.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/default_context_manager.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/result.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/logging_config.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/loops/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/loops/chat_loop.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/parser.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/base.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/claude.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/deepseek.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/gemini.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/glm.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/_errors.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/base.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/deepseek.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/generic_native.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/generic_xml.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/matrix.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/minimax.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/qwen3.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/registry.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_inspector.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/openai.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/qwen.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/orchestrator.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/retry.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/services/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/services/interactions.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/themes/claude.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/context.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/context_definitions.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/search.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/search_definitions.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/utils_tools.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/utils_tools_definitions.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/web.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/web_definitions.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/execution.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/hooks.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/normalization.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_api.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_github.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_manager.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_status.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/schemas.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/utils.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/adapter.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/helpers.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/keybindings.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/parser.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/types.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/widgets.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/ui.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/version.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_runner_provider_unavailable.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/application/test_message_contract.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/application/test_runtime_factory.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/client/test_main.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_runtime_wiring.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_validation_path.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_cache_monitor.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_coverage.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_migration.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_provider_logging.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_retry.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_context_manager_factory.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_default_context_manager.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_default_context_manager_should_compact.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager_cache_monitor.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager_max_history.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_parameter_aliasing.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_base.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_chat_loop_hook.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_base.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_deepseek.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_errors.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_fallback.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_generic_native.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_generic_xml.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_matrix.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_minimax.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_provider_integration.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_qwen3.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_registry.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_glm_async.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_inspector.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_native.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml_autoroute.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml_usage.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_orchestrator_capabilities.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_qwen_async.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retry_classifier.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retry_integration.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retrying_provider.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/services/test_boundary.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/services/test_interaction_sink.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_cli_callbacks.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_context.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_env_manager.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_logging_config.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_notes.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_di_injection.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_path_security.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_api.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_github.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_loading.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_manager.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_status.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_result.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_search_codebase.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_utils.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_web.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/__init__.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_agent_list_screen.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_do_clear_coordination.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_follow_mode.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_help_screen.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_input_box.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_keybindings.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_multi_select_screen.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_multiline_input.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_paste.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_pending_compact_consumer.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_pull_delivery.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_status_bar_badges.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_turn_consumer.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_widgets.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_diff_preview.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_plugin_autoenable.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_provider_switch.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_run_tui_startup.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_assistant_sanitization.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_chat_loop.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_agent.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_logging.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_plugin.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_provider.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_temporal_command.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_widgets.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_ui_coverage.py +0 -0
- {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_ui_verbose.py +0 -0
|
@@ -137,8 +137,8 @@ ayder-cli/
|
|
|
137
137
|
│ │
|
|
138
138
|
│ ├── themes/ # TUI themes
|
|
139
139
|
│ │ ├── __init__.py # Theme registry
|
|
140
|
-
│ │ ├── claude.py # Claude theme CSS
|
|
141
|
-
│ │ └──
|
|
140
|
+
│ │ ├── claude.py # Claude theme CSS (default, RGB)
|
|
141
|
+
│ │ └── ayder.py # ayder tokenised layout + ANSI/RGB palette overlay ([ui] palette)
|
|
142
142
|
│ │
|
|
143
143
|
│ ├── parser.py # XML/JSON tool call parser
|
|
144
144
|
│ ├── process_manager.py # Background process management
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ayder-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.6
|
|
4
4
|
Summary: AI agent for any LLMs
|
|
5
5
|
Project-URL: Homepage, https://github.com/ayder/ayder-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/ayder/ayder-cli.git
|
|
@@ -15,13 +15,12 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
16
|
Requires-Python: >=3.12
|
|
17
17
|
Requires-Dist: httpx
|
|
18
|
-
Requires-Dist: libcst>=1.0.0
|
|
19
18
|
Requires-Dist: loguru
|
|
20
19
|
Requires-Dist: ollama>=0.6.2
|
|
21
20
|
Requires-Dist: openai
|
|
22
21
|
Requires-Dist: python-dotenv>=1.0.0
|
|
23
22
|
Requires-Dist: rich>=13.0.0
|
|
24
|
-
Requires-Dist: textual
|
|
23
|
+
Requires-Dist: textual==8.2.7
|
|
25
24
|
Requires-Dist: tiktoken>=0.7.0
|
|
26
25
|
Provides-Extra: all
|
|
27
26
|
Requires-Dist: anthropic; extra == 'all'
|
|
@@ -34,6 +33,8 @@ Provides-Extra: glm
|
|
|
34
33
|
Requires-Dist: zhipuai; extra == 'glm'
|
|
35
34
|
Provides-Extra: google
|
|
36
35
|
Requires-Dist: google-genai; extra == 'google'
|
|
36
|
+
Provides-Extra: libcst
|
|
37
|
+
Requires-Dist: libcst>=1.0.0; extra == 'libcst'
|
|
37
38
|
Provides-Extra: mcp
|
|
38
39
|
Requires-Dist: mcp; extra == 'mcp'
|
|
39
40
|
Provides-Extra: qwen
|
|
@@ -288,7 +288,7 @@ the design rationale.
|
|
|
288
288
|
| `tools/plugin_github.py` | GitHub-sourced plugin fetcher | remote-plugin loader |
|
|
289
289
|
| `tools/builtins/filesystem.py` | File system tool impls | `file_explorer()`, `read_file()`, `file_editor()` |
|
|
290
290
|
| `tools/builtins/search.py` | Search tool impls | `search_codebase()`, `get_project_structure()` |
|
|
291
|
-
| `tools/builtins/shell.py` | Shell execution impl | `
|
|
291
|
+
| `tools/builtins/shell.py` | Shell execution impl | `bash()` |
|
|
292
292
|
| `tools/builtins/context.py` | Session context snapshots | `context` |
|
|
293
293
|
| `tools/builtins/notes.py` | Note-taking tool | `create_note()` |
|
|
294
294
|
| `tools/builtins/tasks.py` | Task-management tools | `list_tasks()`, `show_task()` |
|
|
@@ -300,7 +300,7 @@ the design rationale.
|
|
|
300
300
|
|
|
301
301
|
| Module | Purpose | Key Classes/Functions |
|
|
302
302
|
|--------|---------|----------------------|
|
|
303
|
-
| `process_manager.py` | Background processes | `ProcessManager`, `
|
|
303
|
+
| `process_manager.py` | Background processes | `ProcessManager`, `background_process()` |
|
|
304
304
|
| `prompts.py` | System prompts | `SYSTEM_PROMPT`, `PLANNING_PROMPT_TEMPLATE`, `get_system_prompt()`, `PROJECT_STRUCTURE_MACRO_TEMPLATE` |
|
|
305
305
|
| `parser.py` | XML tool-call parsing | `parse_custom_tool_calls()` |
|
|
306
306
|
|
|
@@ -309,8 +309,8 @@ the design rationale.
|
|
|
309
309
|
| Module | Purpose |
|
|
310
310
|
|--------|---------|
|
|
311
311
|
| `themes/__init__.py` | Theme registry |
|
|
312
|
-
| `themes/claude.py` | Claude theme CSS |
|
|
313
|
-
| `themes/
|
|
312
|
+
| `themes/claude.py` | Claude theme CSS (default, RGB) |
|
|
313
|
+
| `themes/ayder.py` | ayder tokenised layout + ANSI/RGB palettes; `[ui] palette` overlay (terminal passthrough by default) |
|
|
314
314
|
|
|
315
315
|
---
|
|
316
316
|
|
|
@@ -634,7 +634,7 @@ Supports both synchronous tool execution and integrated with asyncio for TUI.
|
|
|
634
634
|
Schema-driven tool definitions with auto-discovery:
|
|
635
635
|
- **Auto-discovery**: `_discover_definitions()` scans all `*_definitions.py` files in `tools/builtins/` at import time — no manual registration
|
|
636
636
|
- **Duplicate detection**: Tracks `(definition, source_module)` pairs; raises `ValueError` with accurate module names if a tool name appears twice
|
|
637
|
-
- **Required-tool validation**: Raises `ImportError` if core tools (`file_explorer`, `read_file`, `file_editor`, `
|
|
637
|
+
- **Required-tool validation**: Raises `ImportError` if core tools (`file_explorer`, `read_file`, `file_editor`, `bash`) are absent
|
|
638
638
|
- **Permissions**: `"r"` (read), `"w"` (write), `"x"` (execute), `"http"` (network)
|
|
639
639
|
- **Safety flags**: `safe_mode_blocked`, `is_terminal` per definition
|
|
640
640
|
- **Path parameters**: Names listed in `path_parameters` are automatically resolved via `ProjectContext`
|
|
@@ -645,10 +645,10 @@ Schema-driven tool definitions with auto-discovery:
|
|
|
645
645
|
16 built-in tools across 9 definition files:
|
|
646
646
|
- Filesystem (3): `file_explorer`, `read_file`, `file_editor`
|
|
647
647
|
- Search (2): `search_codebase`, `get_project_structure`
|
|
648
|
-
- Shell (1): `
|
|
648
|
+
- Shell (1): `bash`
|
|
649
649
|
- Context (1): `context`
|
|
650
650
|
- Notes (1): `create_note`
|
|
651
|
-
- Background
|
|
651
|
+
- Background Process (1): `background_process` (action=start|logs|stop|list|info)
|
|
652
652
|
- Tasks (2): `list_tasks`, `show_task`
|
|
653
653
|
- Environment (1): `manage_environment_vars`
|
|
654
654
|
- Web (1): `fetch_web`
|
|
@@ -81,6 +81,7 @@ editor = "vim"
|
|
|
81
81
|
verbose = false
|
|
82
82
|
prompt = "STANDARD" # MINIMAL | STANDARD | EXTENDED
|
|
83
83
|
max_background_processes = 5 # cap on concurrent background processes (e.g. test runs)
|
|
84
|
+
max_concurrent_agents = 5 # max agents running at once; extra dispatches queue (1-20)
|
|
84
85
|
max_output_tokens = 8192 # orchestrator response cap
|
|
85
86
|
# Max conversation messages kept per turn. 0 = unlimited (default): the context
|
|
86
87
|
# manager's token budget + compaction are the bound, so the model uses its real
|
|
@@ -94,6 +95,27 @@ agent_timeout = 1800 # seconds before a background agent is cancel
|
|
|
94
95
|
# (background), and web fetch (http). See /plugin for the full tag list.
|
|
95
96
|
tool_tags = ["core", "metadata", "background", "http"]
|
|
96
97
|
|
|
98
|
+
[ui]
|
|
99
|
+
# TUI layout (theme) — picks the chrome/layout:
|
|
100
|
+
# "ayder" (default) — linux-console layout (tokenised), respects the terminal
|
|
101
|
+
# by default and can overlay any palette (see below).
|
|
102
|
+
# "ayder-dark" — "ayder" + default ANSI-dark palette.
|
|
103
|
+
# "ayder-light" — "ayder" + default ANSI-light palette (light terminals).
|
|
104
|
+
# "claude" — dark navy aesthetic with explicit RGB colors.
|
|
105
|
+
theme = "ayder"
|
|
106
|
+
#
|
|
107
|
+
# Palette — the colour palette the "ayder" layout is painted with (App.theme).
|
|
108
|
+
# Ignored by the self-contained "claude" theme.
|
|
109
|
+
# "auto" (default) — the layout's own ANSI palette: passthrough that respects
|
|
110
|
+
# your terminal's background and palette on every terminal.
|
|
111
|
+
# "ansi-dark"/"ansi-light" — force the ANSI passthrough palette explicitly.
|
|
112
|
+
# "monokai", "dracula", "nord", "gruvbox", "tokyo-night", … — any Textual theme
|
|
113
|
+
# overlays a fixed RGB palette on the ayder layout. NOTE:
|
|
114
|
+
# these paint their OWN background and therefore do NOT
|
|
115
|
+
# respect the terminal background — an opt-in trade-off.
|
|
116
|
+
# e.g. theme = "ayder" + palette = "monokai" → "ayder-monokai".
|
|
117
|
+
palette = "auto"
|
|
118
|
+
|
|
97
119
|
[logging]
|
|
98
120
|
file_enabled = true
|
|
99
121
|
file_path = ".ayder/log/ayder.log"
|