feat(config): add /config TUI with tab-based settings and plugin config framework

- textual-based ConfigApp with General, Plugins, and per-plugin tabs
- GeneralConfig (user_name, assistant_name) + plugin_settings dict added to PyraConfig
- ConfigField dataclass and config_fields() method added to plugin protocol
- /config slash command in chat REPL launches the TUI
- pyra auto-runs setup wizard on first invocation when no config.yaml exists
- CLAUDE.md updated with config_fields() plugin guide and Code Inventory entries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
curo1305
2026-05-18 21:28:19 +02:00
parent 6bb7c77692
commit 1201606187
7 changed files with 291 additions and 4 deletions
+10
View File
@@ -33,6 +33,7 @@ _STATIC_COMMANDS = {
"/exit": "Exit Pyra",
"/clear": "Clear conversation history",
"/memory list": "List memory files",
"/config": "Open configuration TUI",
"/help": "Show available slash commands",
}
@@ -198,6 +199,15 @@ def start_chat() -> None:
_show_memory_list()
continue
if user_input == "/config":
from pyra.config.tui import launch_config_tui
launch_config_tui()
try:
cfg = load_config()
except FileNotFoundError:
pass
continue
if user_input in plugin_slash:
try:
plugin_slash[user_input]()