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.
Files changed (273) hide show
  1. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/AGENTS.md +2 -2
  2. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/PKG-INFO +4 -3
  3. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/PROJECT_STRUCTURE.md +7 -7
  4. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/config.toml.example +22 -0
  5. ayder_cli-2.2.6/docs/superpowers/plans/2026-06-26-file-editor-improvements.md +771 -0
  6. ayder_cli-2.2.6/docs/superpowers/plans/2026-06-26-session-save-resume.md +1047 -0
  7. ayder_cli-2.2.6/docs/superpowers/specs/2026-06-26-file-editor-improvements-design.md +180 -0
  8. ayder_cli-2.2.6/docs/superpowers/specs/2026-06-26-session-save-resume-design.md +319 -0
  9. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/pyproject.toml +7 -3
  10. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/registry.py +202 -44
  11. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/run.py +5 -1
  12. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/runner.py +45 -4
  13. ayder_cli-2.2.6/src/ayder_cli/agents/tool.py +184 -0
  14. ayder_cli-2.2.6/src/ayder_cli/agents/worktree.py +130 -0
  15. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli.py +70 -1
  16. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli_runner.py +6 -16
  17. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/config.py +31 -1
  18. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context_manager.py +8 -1
  19. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/ollama_context_manager.py +12 -1
  20. ayder_cli-2.2.6/src/ayder_cli/core/session.py +216 -0
  21. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/process_manager.py +220 -27
  22. ayder_cli-2.2.6/src/ayder_cli/prompts.py +398 -0
  23. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/themes/__init__.py +16 -3
  24. ayder_cli-2.2.6/src/ayder_cli/themes/ayder.py +898 -0
  25. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/background_process_tool.py +103 -0
  26. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/filesystem.py +93 -35
  27. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/filesystem_definitions.py +24 -3
  28. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/note_tool.py +158 -0
  29. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/notes.py +115 -4
  30. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/notes_definitions.py +97 -0
  31. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/process_manager_definitions.py +67 -0
  32. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/shell.py +106 -0
  33. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/shell_definitions.py +53 -0
  34. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/task_definitions.py +131 -0
  35. ayder_cli-2.2.6/src/ayder_cli/tools/builtins/task_tool.py +399 -0
  36. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/tasks.py +18 -7
  37. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/definition.py +2 -2
  38. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/registry.py +1 -1
  39. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/__init__.py +32 -10
  40. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/app.py +72 -23
  41. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/commands.py +3 -3
  42. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/screens.py +1 -1
  43. ayder_cli-2.2.6/src/ayder_cli/tui/theme_manager.py +274 -0
  44. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/COVERAGE.md +2 -2
  45. ayder_cli-2.2.6/tests/agents/test_agent_consolidated.py +92 -0
  46. ayder_cli-2.2.6/tests/agents/test_agent_tools.py +83 -0
  47. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_callbacks.py +1 -1
  48. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_config.py +1 -1
  49. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_integration.py +5 -5
  50. ayder_cli-2.2.6/tests/agents/test_queue.py +204 -0
  51. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_registry.py +66 -12
  52. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_run.py +15 -0
  53. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_runner.py +81 -4
  54. ayder_cli-2.2.6/tests/agents/test_tool.py +19 -0
  55. ayder_cli-2.2.6/tests/agents/test_worktree_helpers.py +105 -0
  56. ayder_cli-2.2.6/tests/agents/test_worktree_isolation.py +296 -0
  57. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_execution_policy_parity.py +3 -3
  58. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_v2.py +10 -0
  59. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager.py +29 -0
  60. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_parser.py +11 -11
  61. ayder_cli-2.2.6/tests/core/test_session.py +157 -0
  62. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_chat_loop_tool_truncation.py +24 -3
  63. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_cli.py +51 -0
  64. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_process_manager.py +150 -0
  65. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_tasks.py +1 -1
  66. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_agent_notes.py +1 -1
  67. ayder_cli-2.2.6/tests/tools/test_background_process_tool.py +121 -0
  68. ayder_cli-2.2.6/tests/tools/test_bash_tool.py +183 -0
  69. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_definition_discovery.py +4 -4
  70. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_impl.py +206 -14
  71. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_impl_coverage.py +5 -5
  72. ayder_cli-2.2.6/tests/tools/test_note_tool.py +158 -0
  73. ayder_cli-2.2.6/tests/tools/test_notes_api.py +118 -0
  74. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_registry.py +3 -3
  75. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_registry_coverage.py +1 -1
  76. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_schemas.py +5 -6
  77. ayder_cli-2.2.6/tests/tools/test_task_tool.py +375 -0
  78. ayder_cli-2.2.6/tests/tui/test_resume.py +86 -0
  79. ayder_cli-2.2.6/tests/tui/test_themes.py +450 -0
  80. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_confirm_screen.py +8 -4
  81. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_helpers.py +4 -4
  82. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_ui.py +3 -3
  83. ayder_cli-2.1.5/src/ayder_cli/agents/tool.py +0 -183
  84. ayder_cli-2.1.5/src/ayder_cli/prompts.py +0 -345
  85. ayder_cli-2.1.5/src/ayder_cli/themes/original.py +0 -588
  86. ayder_cli-2.1.5/src/ayder_cli/tools/builtins/notes_definitions.py +0 -39
  87. ayder_cli-2.1.5/src/ayder_cli/tools/builtins/process_manager_definitions.py +0 -84
  88. ayder_cli-2.1.5/src/ayder_cli/tools/builtins/shell.py +0 -34
  89. ayder_cli-2.1.5/src/ayder_cli/tools/builtins/shell_definitions.py +0 -31
  90. ayder_cli-2.1.5/src/ayder_cli/tools/builtins/tasks_definitions.py +0 -48
  91. ayder_cli-2.1.5/src/ayder_cli/tui/theme_manager.py +0 -163
  92. ayder_cli-2.1.5/tests/agents/test_agent_tools.py +0 -85
  93. ayder_cli-2.1.5/tests/agents/test_tool.py +0 -142
  94. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.github/workflows/ci.yml +0 -0
  95. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.github/workflows/python-package.yml +0 -0
  96. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.gitignore +0 -0
  97. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/.python-version +0 -0
  98. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/LICENSE +0 -0
  99. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/README.md +0 -0
  100. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/README_AGENT_WORKFLOW.md +0 -0
  101. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/README_OLLAMA.md +0 -0
  102. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/docs/cc.png +0 -0
  103. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/__init__.py +0 -0
  104. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/__main__.py +0 -0
  105. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/__init__.py +0 -0
  106. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/callbacks.py +0 -0
  107. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/agents/config.py +0 -0
  108. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/README.md +0 -0
  109. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/__init__.py +0 -0
  110. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/execution_policy.py +0 -0
  111. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/message_contract.py +0 -0
  112. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/runtime_factory.py +0 -0
  113. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/application/validation.py +0 -0
  114. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/cli_callbacks.py +0 -0
  115. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/console.py +0 -0
  116. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/cache_monitor.py +0 -0
  117. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/config_migration.py +0 -0
  118. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context.py +0 -0
  119. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/context_manager_factory.py +0 -0
  120. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/default_context_manager.py +0 -0
  121. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/core/result.py +0 -0
  122. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/logging_config.py +0 -0
  123. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/loops/__init__.py +0 -0
  124. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/loops/chat_loop.py +0 -0
  125. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/parser.py +0 -0
  126. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/__init__.py +0 -0
  127. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/base.py +0 -0
  128. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/claude.py +0 -0
  129. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/deepseek.py +0 -0
  130. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/gemini.py +0 -0
  131. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/glm.py +0 -0
  132. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama.py +0 -0
  133. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/__init__.py +0 -0
  134. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/_errors.py +0 -0
  135. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/base.py +0 -0
  136. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/deepseek.py +0 -0
  137. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/generic_native.py +0 -0
  138. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/generic_xml.py +0 -0
  139. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/matrix.py +0 -0
  140. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/minimax.py +0 -0
  141. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/qwen3.py +0 -0
  142. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_drivers/registry.py +0 -0
  143. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/ollama_inspector.py +0 -0
  144. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/openai.py +0 -0
  145. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/impl/qwen.py +0 -0
  146. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/orchestrator.py +0 -0
  147. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/providers/retry.py +0 -0
  148. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/services/__init__.py +0 -0
  149. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/services/interactions.py +0 -0
  150. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/themes/claude.py +0 -0
  151. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/__init__.py +0 -0
  152. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/__init__.py +0 -0
  153. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/context.py +0 -0
  154. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/context_definitions.py +0 -0
  155. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/search.py +0 -0
  156. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/search_definitions.py +0 -0
  157. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/utils_tools.py +0 -0
  158. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/utils_tools_definitions.py +0 -0
  159. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/web.py +0 -0
  160. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/builtins/web_definitions.py +0 -0
  161. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/execution.py +0 -0
  162. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/hooks.py +0 -0
  163. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/normalization.py +0 -0
  164. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_api.py +0 -0
  165. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_github.py +0 -0
  166. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_manager.py +0 -0
  167. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/plugin_status.py +0 -0
  168. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/schemas.py +0 -0
  169. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tools/utils.py +0 -0
  170. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/adapter.py +0 -0
  171. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/helpers.py +0 -0
  172. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/keybindings.py +0 -0
  173. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/parser.py +0 -0
  174. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/types.py +0 -0
  175. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/tui/widgets.py +0 -0
  176. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/ui.py +0 -0
  177. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/src/ayder_cli/version.py +0 -0
  178. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/__init__.py +0 -0
  179. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/__init__.py +0 -0
  180. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/agents/test_runner_provider_unavailable.py +0 -0
  181. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/application/test_message_contract.py +0 -0
  182. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/application/test_runtime_factory.py +0 -0
  183. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/client/test_main.py +0 -0
  184. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/__init__.py +0 -0
  185. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_runtime_wiring.py +0 -0
  186. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/convergence/test_validation_path.py +0 -0
  187. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_cache_monitor.py +0 -0
  188. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config.py +0 -0
  189. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_coverage.py +0 -0
  190. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_migration.py +0 -0
  191. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_provider_logging.py +0 -0
  192. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_config_retry.py +0 -0
  193. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_context_manager_factory.py +0 -0
  194. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_default_context_manager.py +0 -0
  195. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_default_context_manager_should_compact.py +0 -0
  196. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager_cache_monitor.py +0 -0
  197. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_ollama_context_manager_max_history.py +0 -0
  198. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/core/test_parameter_aliasing.py +0 -0
  199. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/__init__.py +0 -0
  200. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_base.py +0 -0
  201. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/loops/test_chat_loop_hook.py +0 -0
  202. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/__init__.py +0 -0
  203. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/__init__.py +0 -0
  204. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_base.py +0 -0
  205. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_deepseek.py +0 -0
  206. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_errors.py +0 -0
  207. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_fallback.py +0 -0
  208. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_generic_native.py +0 -0
  209. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_generic_xml.py +0 -0
  210. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_matrix.py +0 -0
  211. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_minimax.py +0 -0
  212. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_provider_integration.py +0 -0
  213. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_qwen3.py +0 -0
  214. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/ollama_drivers/test_registry.py +0 -0
  215. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_glm_async.py +0 -0
  216. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_inspector.py +0 -0
  217. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_native.py +0 -0
  218. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml.py +0 -0
  219. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml_autoroute.py +0 -0
  220. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_ollama_xml_usage.py +0 -0
  221. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_orchestrator_capabilities.py +0 -0
  222. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_qwen_async.py +0 -0
  223. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retry_classifier.py +0 -0
  224. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retry_integration.py +0 -0
  225. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/providers/test_retrying_provider.py +0 -0
  226. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/services/test_boundary.py +0 -0
  227. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/services/test_interaction_sink.py +0 -0
  228. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_cli_callbacks.py +0 -0
  229. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_context.py +0 -0
  230. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_env_manager.py +0 -0
  231. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_logging_config.py +0 -0
  232. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/test_notes.py +0 -0
  233. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/__init__.py +0 -0
  234. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_di_injection.py +0 -0
  235. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_path_security.py +0 -0
  236. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_api.py +0 -0
  237. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_github.py +0 -0
  238. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_loading.py +0 -0
  239. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_manager.py +0 -0
  240. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_plugin_status.py +0 -0
  241. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_result.py +0 -0
  242. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_search_codebase.py +0 -0
  243. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_utils.py +0 -0
  244. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tools/test_web.py +0 -0
  245. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/__init__.py +0 -0
  246. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_agent_list_screen.py +0 -0
  247. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_do_clear_coordination.py +0 -0
  248. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_follow_mode.py +0 -0
  249. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_help_screen.py +0 -0
  250. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_input_box.py +0 -0
  251. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_keybindings.py +0 -0
  252. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_multi_select_screen.py +0 -0
  253. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_multiline_input.py +0 -0
  254. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_paste.py +0 -0
  255. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_pending_compact_consumer.py +0 -0
  256. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_pull_delivery.py +0 -0
  257. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_status_bar_badges.py +0 -0
  258. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_turn_consumer.py +0 -0
  259. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/tui/test_widgets.py +0 -0
  260. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_diff_preview.py +0 -0
  261. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_plugin_autoenable.py +0 -0
  262. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_provider_switch.py +0 -0
  263. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_run_tui_startup.py +0 -0
  264. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_assistant_sanitization.py +0 -0
  265. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_chat_loop.py +0 -0
  266. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_agent.py +0 -0
  267. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_logging.py +0 -0
  268. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_plugin.py +0 -0
  269. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_commands_provider.py +0 -0
  270. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_temporal_command.py +0 -0
  271. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_tui_widgets.py +0 -0
  272. {ayder_cli-2.1.5 → ayder_cli-2.2.6}/tests/ui/test_ui_coverage.py +0 -0
  273. {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
- │ │ └── original.py # Original theme CSS
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.1.5
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<9.0.0,>=1.0.0
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 | `run_shell_command()` |
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`, `run_background_process()` |
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/original.py` | Original theme CSS |
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`, `run_shell_command`) are absent
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): `run_shell_command`
648
+ - Shell (1): `bash`
649
649
  - Context (1): `context`
650
650
  - Notes (1): `create_note`
651
- - Background Processes (4): `run_background_process`, `get_background_output`, `kill_background_process`, `list_background_processes`
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"