feat: créer la crate fractal-ext — Extension trait + EventBus (#2) #76

Merged
charles merged 9 commits from feat/2-fractal-ext into main 2026-04-06 01:42:39 +00:00
Owner

Résumé

Implémentation complète de la crate fractal-ext : backbone d'extensibilité de Fractal+.

Dépend de : PR #70 (workspace Cargo) — à merger en premier.

Changements

  • Extension trait #[async_trait] avec id(), name(), on_init(), on_sync_event(), on_command(), message_decorations()
  • EventBus : dispatch vers toutes les extensions, erreurs isolées via tracing::warn!
  • CommandRegistry : registre dynamique des commandes slash
  • Types exportés : AppContext, EventContext, CommandContext, Command, CommandResult, MessageDecoration
  • Tests unitaires : dispatch multi-extensions, isolation d'erreur, dispatch de commande, registry
  • README dans crates/fractal-ext/

Plan de test

  • cargo test -p fractal-ext — 4 tests passent
  • cargo clippy -p fractal-ext — 0 warnings
  • Une extension en erreur ne bloque pas les suivantes (test broken_extension_does_not_block_others)

Closes #2

## Résumé Implémentation complète de la crate `fractal-ext` : backbone d'extensibilité de Fractal+. > **Dépend de** : PR #70 (workspace Cargo) — à merger en premier. ## Changements - `Extension` trait `#[async_trait]` avec `id()`, `name()`, `on_init()`, `on_sync_event()`, `on_command()`, `message_decorations()` - `EventBus` : dispatch vers toutes les extensions, erreurs isolées via `tracing::warn!` - `CommandRegistry` : registre dynamique des commandes slash - Types exportés : `AppContext`, `EventContext`, `CommandContext`, `Command`, `CommandResult`, `MessageDecoration` - Tests unitaires : dispatch multi-extensions, isolation d'erreur, dispatch de commande, registry - README dans `crates/fractal-ext/` ## Plan de test - [ ] `cargo test -p fractal-ext` — 4 tests passent - [ ] `cargo clippy -p fractal-ext` — 0 warnings - [ ] Une extension en erreur ne bloque pas les suivantes (test `broken_extension_does_not_block_others`) Closes #2
charles deleted branch feat/2-fractal-ext 2026-04-06 01:42:40 +00:00
Sign in to join this conversation.
No description provided.