v1.2.0
·
132 commits
to develop
since this release
Le moteur de workflow décide désormais réellement ce qui tourne, les skills
deviennent un standard partagé entre harnesses, et la surface HTTP du backend
cesse de renvoyer ses exceptions à l'appelant.
✨ Workflows déclaratifs
- Le moteur exécute les phases qu'il déclare, au lieu de seulement les élaguer —
workflows/<nom>/workflow.yamlrésout un build contre le niveau d'effort choisi, les capacités du provider et les fichiers touchés. Activé par défaut (WORKPILOT_WORKFLOW_ENGINE=0pour revenir au pipeline précédent). - Le profil résolu est visible avant le build, dans le modal de tâche (
WorkflowProfileCard) : les phases élaguées apparaissent à leur position déclarée avec leur motif, et un décompte par niveau répond à « qu'est-ce qu'un cran de plus m'apporterait ». - Une phase demandant
subagent-per-taskchez un provider sans sous-agents dégrade explicitement en séquentiel avec reset de contexte, et la dégradation est lue à l'exécution plutôt que supposée. - Un
hard_gaten'est jamais élagué par l'effort ; une phase déterministe non plus, puisqu'elle ne coûte aucun appel API.
✨ Skills, sous-agents et boucle d'apprentissage
- Skills au standard Agent Skills —
.agents/skills/<nom>/SKILL.mdest la source lue en production, quel que soit le LLM ; les miroirs par harness sont générés, etpnpm run skills:checkéchoue sur toute dérive. - Une seule lecture de frontmatter (
skills_registry.frontmatter) : le dépôt en portait quatre, dont trois tronquaient toute description finissant par une phrase entre guillemets. - Registre unique de sous-agents (
agents/subagents/) : défauts de phase, overlays langage et spécialistes de PR. mem-search— récupération progressive en trois paliers sur les traces de build et les patterns : l'index tient dans ~100 tokens et ne lit jamais le corps d'un enregistrement pour le lister.- hermes-agent est supporté sans rien dupliquer : il lit le même
.agents/skills/, et les skills qu'il rédige arrivent comme candidats sousskills/_proposed/— jamais adoptés automatiquement, faute de signal de vérification externe.
🔒 Sécurité
- Les 141 alertes de code scanning traitées. 132 étaient deux erreurs répétées une fois par module d'API, désormais corrigées à la source dans
core/api_safety.py:safe_errormappe une exception vers une chaîne fixe par type,validated_dirnormalise et confine un chemin fourni par l'appelant. return {"success": False, "error": str(e)}renvoyait à l'appelant des chemins résolus, des erreurs de driver et parfois des secrets — 99 sites corrigés.- Le middleware d'auth du mode serveur ne distingue plus token expiré, malformé ou mal signé pour un appelant non authentifié.
- Parsing XML durci (
defusedxml) :coverage.xmlet le XML JUnit sont lus dans le dépôt en cours de build, donc contrôlés par un tiers. - Fuite de secret en clair dans un log, ReDoS polynomial sur le parseur de licences, et sanitisation d'URL incomplète : corrigés.
- Toutes les alertes Dependabot ouvertes closes (esbuild
GHSA-g7r4-m6w7-qqqr, @babel/coreGHSA-4x5r-pxfx-6jf8). - Mode serveur fail-closed, endpoints de credentials verrouillés, IDOR d'annulation de run et révocation de session corrigés, Electron patché, interpolation shell supprimée.
🐛 Corrections
GET /api/workflow-profile/répondait à personne : un autofix CodeQL avait confinéproject_dirau dépôt WorkPilot, alors que WorkPilot construit les projets des autres. Dix tests rouges et un panneau de tâche vide.- Les libellés du menu latéral portaient des emoji qui ne s'affichaient pas.
bump-version.jsréécrivait les manifestes entiers en espaces alors que le dépôt indente en tabulations — une montée de version de deux lignes produisait un diff de 530 lignes.- Assistant de configuration : projet introuvable et avance automatique.
- BOMs UTF-8 et un fichier UTF-16 nettoyés ; hooks husky réparés ;
aiohttpdéclaré.
🛠️ Qualité
- CodeQL ne scanne plus C# : les 3 seuls fichiers
.csdu dépôt sont des extraits de documentation livrés par un skill, sans projet ni restore — l'analyse stagnait à 22 % d'appels résolus et la configuration restait en warning permanent. - Les templates Angular qu'un formateur avait rendus incompilables sont restaurés et sortis de l'extension
.ts, qu'ils n'auraient jamais dû porter. - Actions tierces épinglées sur des SHA de commit ; Dependabot npm repointé sur la racine du workspace, où vit réellement le lockfile pnpm.
Full Changelog: https://github.com/krovomi/WorkPilot-AI/blob/main/CHANGELOG.md
VirusTotal scan results will be added automatically after release.