Aller au contenu

Écrire un connecteur externe

Un connecteur branche un service externe (Notion, Zapier, etc.) à un projet arka-deck via le module connectors-core. Il enregistre les actions disponibles, gère les credentials/OAuth, et expose un journal d’exécution.


AspectAddonConnecteur
Couplage coreConsomme des ports coreConsomme ConnectorRegistry + for-connectors
Surface UIVue dédiée, panneau chat, etc.Vue de configuration + audit-log
AuthentificationLocal-onlyOAuth ou token externe
DonnéesLocalesRéférence externe + cache

L’addon notion-connect est l’implémentation de référence à étudier.


addons/<connector>/
├── manifest.json
└── src/
├── index.ts # register + re-exports
├── manifest.ts # ConnectorManifest TS, re-exporté par index
├── adapters/ # client HTTP, OAuth
├── actions/ # une action = une opération externe
└── use-cases/

  1. Déclarer le ConnectorManifest dans src/manifest.ts (slug, label, actions, OAuth scopes, etc.).
  2. Implémenter les actions : chacune définit son schéma d’entrée/sortie et son handler.
  3. Gérer l’authentification : OAuth state en mémoire avec TTL court, ou token statique chiffré.
  4. Enregistrer auprès du ConnectorRegistry dans la composition root.
  5. Tests : actions individuelles (Zod schemas), flux OAuth (mock state), audit-log.

  • Secrets (tokens, credentials) chiffrés via le port SecretCipher (AES-256-GCM, cf. ADR 0005).
  • OAuth state éphémère (TTL court, à usage unique).
  • Le connecteur n’importe jamais tout le workspace cible : il stocke uniquement des références et les exécutions explicites.


Cette page est un stub. Le tutoriel complet (squelette de connecteur, schémas Zod, audit-log, gestion erreurs) sera rédigé au lot P4 à partir du code de addons/notion-connect/.