core/cli: Click slash registry with awaitlet bridge

Register REPL slash commands as a Click Group (params, UsageError, help).
Dispatch via awaitlet.async_def so sync command bodies can awaitlet()
async memory/confirm work. Completer and /help derive from the registry.
This commit is contained in:
2026-07-15 13:03:55 +08:00
parent 9d05988245
commit 5b0c9be90b
8 changed files with 604 additions and 489 deletions
+5 -4
View File
@@ -3,10 +3,10 @@ from __future__ import annotations
import tomlkit
from plyngent.cli.readline_setup import (
SLASH_COMMANDS,
build_completer,
filter_prefix,
history_path,
slash_commands,
)
from plyngent.cli.state import ReplState
from plyngent.config.models import ModelConfig, OpenAICompatibleProvider, OpenAIProvider
@@ -76,10 +76,11 @@ def test_completer_commands(tmp_path: object, monkeypatch: object) -> None:
break
found.append(item)
index += 1
names = slash_commands()
assert "/help" in found
assert "/stream" in SLASH_COMMANDS
assert "/verbose" in SLASH_COMMANDS
assert set(found) <= set(SLASH_COMMANDS)
assert "/stream" in names
assert "/verbose" in names
assert set(found) <= set(names)
def test_bind_tab_complete_runs() -> None: