feat: menu + — Compétences-skills « Gérer » + « Parcourir » — phase 2/8 (v7.52.0)
- Sous-menu « Compétences-skills » : 11 skills builtin + skills enregistrés,
libellés affichés « Deep research » (/research) et « Skill-creator »
(/create-new-skill) via FD_SKILL_ALIAS (slugs intacts) ; le clic épingle le
skill au contexte, même chemin que la palette /.
- « Gérer les compétences » : section du menu + formulaire intégré (nom,
description, prompt) — création, édition, suppression (chip épinglé nettoyé),
export JSON téléchargé, import fichier avec overwrite (pas de doublon).
- « Parcourir les compétences » : section galerie filtrable (nom/description/
slug), installation en 1 clic (installGallerySkill réutilisé).
- PATCH /api/agent/skills/{skill_id} créé : édition partielle, whitelist de
colonnes, 400/401/404/409. OpenAPI régénéré : 515 chemins, version 7.52.0.
- En-tête ← + titre de section dans le menu (navigation à 3 niveaux).
- Fix : épingler un skill enregistré n'efface plus le message déjà tapé
(_pinDbSkill ne vide le composer que s'il est vide).
- Tests : tests/test_v752_skills_menu.py (7) + test_v751 adapté. Suite
complète 1280 verts (-n auto), ruff 0, eslint 0 problème.
This commit is contained in:
@@ -97,14 +97,15 @@ def test_agent_panel_renders_plus_menu(client):
|
||||
|
||||
|
||||
def test_plus_menu_sections_and_disabled_states():
|
||||
"""Les 6 sections du menu + existent ; les sections pas encore livrées sont
|
||||
désactivées (le menu ne promet rien que le code ne fait)."""
|
||||
"""Les 6 sections du menu + existent ; seules les sections déjà livrées sont
|
||||
actives (le menu ne promet rien que le code ne fait)."""
|
||||
src = JS_PATH.read_text(encoding="utf-8")
|
||||
root = src.split("var FD_PLUS_MENU = [", 1)[1].split("];", 1)[0]
|
||||
for key in ("'files'", "'skills'", "'connectors'", "'canvases'", "'plugins'", "'memory'"):
|
||||
assert f"key:{key}" in root, key
|
||||
assert root.count("disabled:true") == 5 # tout sauf « fichiers/répertoires »
|
||||
assert "action:'files'" in root
|
||||
assert "action:'files'" in root and "action:'skills'" in root
|
||||
# phases 1 + 2 livrées → il reste 4 sections « bientôt »
|
||||
assert root.count("disabled:true") == 4
|
||||
|
||||
files = src.split("var FD_PLUS_FILES = [", 1)[1].split("];", 1)[0]
|
||||
assert "action:'search'" in files and "action:'browse'" in files
|
||||
|
||||
Reference in New Issue
Block a user