feat: v6.6.0 — Agent phase 5 : API publique agent (/api/v2/agents, run synchrone JSON) + marketplace skills (export/import portable + galerie de 6 presets, palette / du panneau) + webhooks agent.run.started/failed · 764 tests verts
This commit is contained in:
@@ -1,5 +1,48 @@
|
||||
# Changelog - FlowDeck
|
||||
|
||||
## v6.6.0 (2026-09-24) — Agent phase 5 : API publique agent & skill marketplace
|
||||
|
||||
> Dernière phase du plan agent en 5 phases (« Plateforme ») : l'agent devient
|
||||
> pilotable par des intégrations tierces via `/api/v2`, et les skills deviennent
|
||||
> partageables (export/import portable + galerie de presets installables).
|
||||
|
||||
### Added
|
||||
|
||||
- **API publique agent** — `app/routers/api_v2_agent.py` (15 routes, Bearer + scopes `read`/`write`,
|
||||
rate limit par token, idempotence, `api_audit_log`) :
|
||||
- `GET/POST /api/v2/agents`, `GET/PUT/DELETE /api/v2/agents/{id}`
|
||||
- `GET/POST /api/v2/agents/conversations`, `GET/DELETE .../{id}`, `GET .../{id}/actions`
|
||||
- `POST /api/v2/agents/conversations/{id}/run` — **run synchrone JSON** (le flux SSE reste interne) :
|
||||
`{status, final, error, reasoning[], actions[], events[], duration_ms}` (500 si `failed`)
|
||||
- `POST /api/v2/agents/{id}/trigger` — déclenchement externe d'un agent custom
|
||||
- propriété des conversations vérifiée par `user_id` → `404` pour un token tiers
|
||||
- **Marketplace de skills** — `app/services/skill_gallery.py` (source unique pour l'interne et le v2) :
|
||||
- `GET /api/v2/skills/{id}/export` → document portable `{format: "flowdeck-skill", version: 1, skill{…}}`
|
||||
(aucun id/workspace/auteur local) ; `POST /api/v2/skills/import` (`409` sur collision, `overwrite: true` pour écraser)
|
||||
- `GET /api/v2/skills/gallery` + `POST /api/v2/skills/gallery/{slug}/install` — **6 presets** :
|
||||
rapport hebdo, CR de réunion, base CRM, OKR, analyse repo Gitea, résumé de document
|
||||
- `GET/POST/DELETE /api/v2/skills`, `GET /api/v2/skills/{id}`, `POST /api/v2/skills/{id}/apply`
|
||||
- routes jumelles session : `GET /api/agent/skills/gallery`, `POST .../gallery/{slug}/install`,
|
||||
`POST /api/agent/skills/import`, `GET /api/agent/skills/{id}/export`, `DELETE /api/agent/skills/{id}`
|
||||
(le CRUD skills n'avait **aucune** suppression)
|
||||
- **UI** : section « Galerie » dans la palette `/` du panneau agent → installation + épinglage du chip
|
||||
- **Webhooks de cycle de vie agent** — `agent.run.started` et `agent.run.failed` émis (seul
|
||||
`agent.run.finished` l'était) via `_fire_agent_webhook()` ; les 3 sont déjà au catalogue → abonnement `agent.*`
|
||||
|
||||
### Changed
|
||||
|
||||
- **Docs** — `docs/API_GUIDE_V6.md` : nouveau §2.4 (tables d'endpoints + règles agent) ; nom d'événement
|
||||
corrigé `agent.run.completed` → `agent.run.finished` ; `ROADMAP.md` : 5 phases agent toutes cochées + section v6.6.0
|
||||
- **OpenAPI** — `docs/openapi-v2.json` régénéré : **427 chemins** (was 402), `info.version = 6.6.0`
|
||||
- **Version** — 6.6.0 (`VERSION` + `app/main.py`)
|
||||
|
||||
### Tests
|
||||
|
||||
- `tests/test_v66_agent_api.py` : **15 tests** (auth/scopes, CRUD agents, idempotence, run synchrone,
|
||||
ownership 404, trigger, export/import/validation, galerie + validité des outils des presets,
|
||||
routes internes, cycle de vie webhooks started→finished et started→failed)
|
||||
- `pytest -n auto` → **764 passed, 0 skipped** · `ruff check app tests` OK · `eslint static/js` 0 problème
|
||||
|
||||
## v6.5.1 (2026-09-24) — Tests webhooks_v2 complets + roadmap rattrapée
|
||||
|
||||
> Les 7 tests d'intégration Webhooks v2 (stubs `@pytest.mark.skip` depuis
|
||||
|
||||
Reference in New Issue
Block a user