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.
Files changed (236) hide show
  1. ayder_cli-2.0.0/CHANGELOG.md +14 -0
  2. ayder_cli-1.8.3/README.md → ayder_cli-2.0.0/PKG-INFO +73 -12
  3. ayder_cli-1.8.3/PKG-INFO → ayder_cli-2.0.0/README.md +33 -41
  4. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/config.toml.example +7 -6
  5. ayder_cli-2.0.0/docs/superpowers/plans/2026-06-02-optional-provider-deps.md +879 -0
  6. ayder_cli-2.0.0/docs/superpowers/specs/2026-06-02-optional-provider-deps-design.md +271 -0
  7. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/pyproject.toml +12 -3
  8. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli_runner.py +4 -0
  9. ayder_cli-2.0.0/src/ayder_cli/console.py +26 -0
  10. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/config.py +13 -3
  11. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context.py +0 -22
  12. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/default_context_manager.py +0 -26
  13. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/__init__.py +2 -1
  14. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/base.py +28 -2
  15. ayder_cli-2.0.0/src/ayder_cli/providers/orchestrator.py +116 -0
  16. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/tasks.py +0 -24
  17. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/registry.py +1 -6
  18. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/__init__.py +9 -3
  19. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/adapter.py +0 -7
  20. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/commands.py +12 -15
  21. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/widgets.py +60 -66
  22. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/COVERAGE.md +6 -0
  23. ayder_cli-2.0.0/tests/agents/test_runner_provider_unavailable.py +31 -0
  24. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_execution_policy_parity.py +47 -90
  25. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_validation_path.py +41 -86
  26. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_cache_monitor.py +0 -1
  27. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_v2.py +24 -0
  28. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_context_manager_factory.py +0 -1
  29. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_default_context_manager.py +0 -1
  30. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_inspector.py +0 -2
  31. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_native.py +0 -1
  32. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml.py +0 -11
  33. ayder_cli-2.0.0/tests/providers/test_orchestrator_capabilities.py +131 -0
  34. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retry_integration.py +0 -1
  35. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/services/test_interaction_sink.py +0 -2
  36. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_loading.py +0 -1
  37. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_multi_select_screen.py +0 -1
  38. ayder_cli-2.0.0/tests/tui/test_paste.py +131 -0
  39. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_diff_preview.py +0 -2
  40. ayder_cli-2.0.0/tests/ui/test_provider_switch.py +32 -0
  41. ayder_cli-2.0.0/tests/ui/test_run_tui_startup.py +21 -0
  42. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_provider.py +4 -4
  43. ayder_cli-1.8.3/src/ayder_cli/console.py +0 -69
  44. ayder_cli-1.8.3/src/ayder_cli/providers/orchestrator.py +0 -46
  45. ayder_cli-1.8.3/tests/manual_test_verbose.py +0 -111
  46. ayder_cli-1.8.3/tests/tui/test_paste.py +0 -69
  47. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.github/workflows/ci.yml +0 -0
  48. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.github/workflows/python-package.yml +0 -0
  49. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.gitignore +0 -0
  50. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/.python-version +0 -0
  51. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/AGENTS.md +0 -0
  52. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/LICENSE +0 -0
  53. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/PROJECT_STRUCTURE.md +0 -0
  54. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/README_OLLAMA.md +0 -0
  55. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/docs/cc.png +0 -0
  56. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/__init__.py +0 -0
  57. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/__main__.py +0 -0
  58. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/__init__.py +0 -0
  59. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/callbacks.py +0 -0
  60. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/config.py +0 -0
  61. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/registry.py +0 -0
  62. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/runner.py +0 -0
  63. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/summary.py +0 -0
  64. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/agents/tool.py +0 -0
  65. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/README.md +0 -0
  66. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/__init__.py +0 -0
  67. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/execution_policy.py +0 -0
  68. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/message_contract.py +0 -0
  69. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/runtime_factory.py +0 -0
  70. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/application/validation.py +0 -0
  71. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli.py +0 -0
  72. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/cli_callbacks.py +0 -0
  73. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/cache_monitor.py +0 -0
  74. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/config_migration.py +0 -0
  75. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context_manager.py +0 -0
  76. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/context_manager_factory.py +0 -0
  77. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/ollama_context_manager.py +0 -0
  78. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/core/result.py +0 -0
  79. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/logging_config.py +0 -0
  80. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/loops/__init__.py +0 -0
  81. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/loops/chat_loop.py +0 -0
  82. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/parser.py +0 -0
  83. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/process_manager.py +0 -0
  84. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/prompts.py +0 -0
  85. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/claude.py +0 -0
  86. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/deepseek.py +0 -0
  87. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/gemini.py +0 -0
  88. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/glm.py +0 -0
  89. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama.py +0 -0
  90. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/__init__.py +0 -0
  91. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/_errors.py +0 -0
  92. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/base.py +0 -0
  93. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/deepseek.py +0 -0
  94. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/generic_native.py +0 -0
  95. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/generic_xml.py +0 -0
  96. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/matrix.py +0 -0
  97. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/minimax.py +0 -0
  98. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/qwen3.py +0 -0
  99. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_drivers/registry.py +0 -0
  100. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/ollama_inspector.py +0 -0
  101. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/openai.py +0 -0
  102. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/impl/qwen.py +0 -0
  103. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/providers/retry.py +0 -0
  104. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/services/__init__.py +0 -0
  105. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/services/interactions.py +0 -0
  106. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/__init__.py +0 -0
  107. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/claude.py +0 -0
  108. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/themes/original.py +0 -0
  109. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/__init__.py +0 -0
  110. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/__init__.py +0 -0
  111. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/context.py +0 -0
  112. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/context_definitions.py +0 -0
  113. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/filesystem.py +0 -0
  114. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/filesystem_definitions.py +0 -0
  115. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/notes.py +0 -0
  116. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/notes_definitions.py +0 -0
  117. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/process_manager_definitions.py +0 -0
  118. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/search.py +0 -0
  119. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/search_definitions.py +0 -0
  120. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/shell.py +0 -0
  121. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/shell_definitions.py +0 -0
  122. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/tasks_definitions.py +0 -0
  123. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/utils_tools.py +0 -0
  124. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/utils_tools_definitions.py +0 -0
  125. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/web.py +0 -0
  126. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/builtins/web_definitions.py +0 -0
  127. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/definition.py +0 -0
  128. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/execution.py +0 -0
  129. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/hooks.py +0 -0
  130. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/normalization.py +0 -0
  131. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_api.py +0 -0
  132. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_github.py +0 -0
  133. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/plugin_manager.py +0 -0
  134. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/schemas.py +0 -0
  135. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tools/utils.py +0 -0
  136. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/app.py +0 -0
  137. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/helpers.py +0 -0
  138. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/keybindings.py +0 -0
  139. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/parser.py +0 -0
  140. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/screens.py +0 -0
  141. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/theme_manager.py +0 -0
  142. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/tui/types.py +0 -0
  143. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/ui.py +0 -0
  144. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/src/ayder_cli/version.py +0 -0
  145. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/__init__.py +0 -0
  146. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/__init__.py +0 -0
  147. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_callbacks.py +0 -0
  148. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_config.py +0 -0
  149. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_integration.py +0 -0
  150. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_registry.py +0 -0
  151. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_runner.py +0 -0
  152. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_summary.py +0 -0
  153. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/agents/test_tool.py +0 -0
  154. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/application/test_message_contract.py +0 -0
  155. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/application/test_runtime_factory.py +0 -0
  156. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/client/test_main.py +0 -0
  157. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/__init__.py +0 -0
  158. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/convergence/test_runtime_wiring.py +0 -0
  159. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config.py +0 -0
  160. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_coverage.py +0 -0
  161. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_migration.py +0 -0
  162. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_config_retry.py +0 -0
  163. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_default_context_manager_should_compact.py +0 -0
  164. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager.py +0 -0
  165. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager_cache_monitor.py +0 -0
  166. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_ollama_context_manager_max_history.py +0 -0
  167. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_parameter_aliasing.py +0 -0
  168. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/core/test_parser.py +0 -0
  169. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/__init__.py +0 -0
  170. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_base.py +0 -0
  171. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_chat_loop_hook.py +0 -0
  172. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/loops/test_chat_loop_tool_truncation.py +0 -0
  173. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/__init__.py +0 -0
  174. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/__init__.py +0 -0
  175. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_base.py +0 -0
  176. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_deepseek.py +0 -0
  177. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_errors.py +0 -0
  178. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_fallback.py +0 -0
  179. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_generic_native.py +0 -0
  180. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_generic_xml.py +0 -0
  181. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_matrix.py +0 -0
  182. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_minimax.py +0 -0
  183. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_provider_integration.py +0 -0
  184. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_qwen3.py +0 -0
  185. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/ollama_drivers/test_registry.py +0 -0
  186. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_glm_async.py +0 -0
  187. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml_autoroute.py +0 -0
  188. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_ollama_xml_usage.py +0 -0
  189. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_qwen_async.py +0 -0
  190. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retry_classifier.py +0 -0
  191. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/providers/test_retrying_provider.py +0 -0
  192. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/services/test_boundary.py +0 -0
  193. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_cli.py +0 -0
  194. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_cli_callbacks.py +0 -0
  195. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_context.py +0 -0
  196. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_env_manager.py +0 -0
  197. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_logging_config.py +0 -0
  198. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_notes.py +0 -0
  199. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_process_manager.py +0 -0
  200. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/test_tasks.py +0 -0
  201. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/__init__.py +0 -0
  202. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_definition_discovery.py +0 -0
  203. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_di_injection.py +0 -0
  204. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_impl.py +0 -0
  205. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_impl_coverage.py +0 -0
  206. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_path_security.py +0 -0
  207. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_api.py +0 -0
  208. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_github.py +0 -0
  209. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_plugin_manager.py +0 -0
  210. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_registry.py +0 -0
  211. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_registry_coverage.py +0 -0
  212. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_result.py +0 -0
  213. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_schemas.py +0 -0
  214. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_search_codebase.py +0 -0
  215. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_utils.py +0 -0
  216. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tools/test_web.py +0 -0
  217. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/__init__.py +0 -0
  218. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_agent_list_screen.py +0 -0
  219. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_do_clear_coordination.py +0 -0
  220. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_follow_mode.py +0 -0
  221. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_help_screen.py +0 -0
  222. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_keybindings.py +0 -0
  223. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_multiline_input.py +0 -0
  224. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_pending_compact_consumer.py +0 -0
  225. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/tui/test_widgets.py +0 -0
  226. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_confirm_screen.py +0 -0
  227. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_assistant_sanitization.py +0 -0
  228. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_chat_loop.py +0 -0
  229. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_agent.py +0 -0
  230. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_commands_logging.py +0 -0
  231. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_helpers.py +0 -0
  232. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_temporal_command.py +0 -0
  233. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_tui_widgets.py +0 -0
  234. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_ui.py +0 -0
  235. {ayder_cli-1.8.3 → ayder_cli-2.0.0}/tests/ui/test_ui_coverage.py +0 -0
  236. {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
  ![ayder](docs/cc.png)
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, Anthropic, Google, and Ollama SDKs all ship with ayder-cli, so every provider works out of the box. The terminal UI is built on Rich and Textual.
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 tool. If you don't have uv in your path, get it from
45
- [Astral uv](https://docs.astral.sh/uv/#highlights)
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
- # or install from PyPI
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 (Anthropic, OpenAI, Gemini)
138
+ ### Cloud providers
81
139
 
82
- The Anthropic, OpenAI, and Google SDKs ship with ayder-cli no extra installs.
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, gemini
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
  ![ayder](docs/cc.png)
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, Anthropic, Google, and Ollama SDKs all ship with ayder-cli, so every provider works out of the box. The terminal UI is built on Rich and Textual.
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 tool. If you don't have uv in your path, get it from
74
- [Astral uv](https://docs.astral.sh/uv/#highlights)
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
- # or install from PyPI
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 (Anthropic, OpenAI, Gemini)
98
+ ### Cloud providers
110
99
 
111
- The Anthropic, OpenAI, and Google SDKs ship with ayder-cli no extra installs.
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, gemini
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