Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""help_text for built-in commands comes from the definition site."""
|
|
from __future__ import annotations
|
|
|
|
from qwenpaw.agents.command_handler import SYSTEM_COMMAND_DESCRIPTIONS
|
|
from qwenpaw.runtime.builtin_commands import (
|
|
_collect_control_specs,
|
|
_collect_conversation_specs,
|
|
)
|
|
|
|
|
|
def test_control_specs_use_handler_description() -> None:
|
|
"""Control help_text is handler.description, not a secondary map."""
|
|
by_name = {spec.name: spec for spec in _collect_control_specs()}
|
|
|
|
assert by_name["model"].help_text == "Show or switch AI model"
|
|
assert by_name["skills"].help_text == (
|
|
"List chat-available skills and expose explicit skill commands"
|
|
)
|
|
# Handlers without description stay non-advertisable.
|
|
assert by_name["stop"].help_text == ""
|
|
assert by_name["approval"].help_text == ""
|
|
|
|
|
|
def test_conversation_specs_use_system_command_descriptions() -> None:
|
|
"""Conversation help_text comes from SYSTEM_COMMAND_DESCRIPTIONS."""
|
|
by_name = {spec.name: spec for spec in _collect_conversation_specs()}
|
|
|
|
assert by_name["clear"].help_text == SYSTEM_COMMAND_DESCRIPTIONS["clear"]
|
|
assert (
|
|
by_name["compact"].help_text == SYSTEM_COMMAND_DESCRIPTIONS["compact"]
|
|
)
|
|
# Non-curated conversation commands remain hidden from autocomplete.
|
|
assert by_name["history"].help_text == ""
|
|
assert by_name["new"].help_text == ""
|