OrbitWake Connectors

GitHub

Le connecteur GitHub est le premier connecteur réellement câblé dans le runtime OrbitWake actuel. Il combine une installation GitHub App, une autorisation OAuth utilisateur, une portée de dépôts, des actions de lecture, des écritures soumises à approbation et un merge classé sensible.

Disponibilité actuelle

GitHub n’est enregistré dans le runtime que lorsqu’une connexion valide existe pour l’utilisateur courant. Sans connexion, les tools GitHub ne sont pas exposés.

Dans Settings → Connectors, l’interface affiche l’un des états suivants : Checking, Connected ou Not connected.

Lorsqu’il est connecté, OrbitWake affiche les dépôts autorisés visibles par l’installation GitHub ainsi que la dernière activité runtime disponible.

Connecter GitHub

Le bouton Connect GitHub démarre un flux en deux parties :

ÉtapeCe qui se passe
1. Installation GitHub AppOrbitWake crée un state temporaire puis redirige vers la page d’installation de l’application GitHub.
2. Callback installationOrbitWake vérifie le state et récupère l’installation_id.
3. OAuth utilisateurUn second state est créé puis l’utilisateur est redirigé vers l’autorisation OAuth GitHub.
4. Échange du codeLe code OAuth est échangé contre un credential utilisateur.
5. Vérification installationOrbitWake vérifie que l’utilisateur OAuth peut réellement accéder à l’installation GitHub sélectionnée.
6. SauvegardeLa connexion est enregistrée dans le workspace OrbitWake.

Protection du flux de connexion

Les états d’installation et d’OAuth sont stockés dans des cookies httpOnly, sameSite=lax et sécurisés en production.

Ils expirent après 10 minutes et sont consommés une seule fois. Leur comparaison utilise une vérification temporellement sûre.

Les valeurs sont chiffrées avant stockage dans le cookie. Un state absent, incorrect ou déjà consommé invalide le callback.

Stockage des credentials

OrbitWake conserve l’ID d’installation, le token d’accès et, lorsqu’ils existent, les informations de refresh dans une enveloppe chiffrée.

Le chiffrement serveur utilise AES-256-GCM avec des données associées liées au workspace et à l’utilisateur. Le modèle n’a pas besoin de recevoir ces credentials pour exécuter une action du connecteur.

Lors du chargement de la connexion, OrbitWake valide le credential avant de créer le client GitHub runtime.

Expiration et refresh

Si un token possède une date d’expiration et qu’il lui reste plus de 60 secondes, OrbitWake le réutilise.

Lorsque l’expiration approche, le runtime tente un refresh si un refresh token valide existe. Le credential rafraîchi est ensuite resauvegardé.

Si l’autorisation a expiré et qu’aucun refresh valide n’est disponible, la connexion doit être effectuée de nouveau.

Dépôts autorisés

La liste des dépôts provient de l’installation GitHub associée à l’utilisateur. Le client récupère jusqu’à 100 dépôts par page et parcourt actuellement au maximum 10 pages.

OrbitWake applique ensuite sa propre portée github.repositories. La connexion créée actuellement utilise *, ce qui signifie que la portée OrbitWake accepte les dépôts rendus disponibles par l’installation GitHub.

L’interface Settings affiche jusqu’à 20 dépôts dans la liste visuelle, avec le nom complet, la visibilité et la branche par défaut lorsqu’elles sont disponibles.

Le bouton Manage repositories ouvre la gestion des installations GitHub afin de modifier les dépôts exposés par GitHub.

Actions de lecture

ActionComportement
github.list_repositoriesListe les dépôts accessibles à l’installation et autorisés par la portée OrbitWake.
github.search_codeRecherche du code dans un dépôt autorisé. La requête retourne actuellement jusqu’à 20 résultats.
github.read_fileLit un fichier sur une branche, un tag ou un commit optionnel. Le contenu doit être fourni par GitHub sous forme base64 puis est décodé en UTF-8.
github.list_branchesListe jusqu’à 100 branches d’un dépôt autorisé.
github.list_pull_requestsListe jusqu’à 50 PR selon l’état demandé : open, closed ou all.
github.list_issuesListe jusqu’à 50 issues selon l’état demandé.

Les actions de lecture utilisent la permission read, autorisée par défaut dans la politique Connectors actuelle.

Actions d’écriture

Les écritures utilisent la permission write. La politique par défaut est ask : l’action attend donc une approbation avant d’être exécutée.

ActionEffet
github.create_branchLit la référence d’une branche de base puis crée une nouvelle référence refs/heads/....
github.create_fileCrée un fichier UTF-8 via GitHub Contents API et crée le commit correspondant.
github.update_fileRemplace un fichier UTF-8 et crée un commit. Le SHA courant du fichier est requis.
github.create_issueCrée une issue avec titre et corps optionnel.
github.create_pull_requestOuvre une PR entre une branche source et une branche cible, avec support du mode draft.

Création et mise à jour de fichiers

Les actions create_file et update_file travaillent directement avec l’API Contents de GitHub. Elles ne reproduisent pas un workflow local git add → git commit → git push.

Une écriture réussie crée directement un commit distant dans le dépôt GitHub ciblé.

Pour une mise à jour, le SHA courant du fichier est obligatoire. Si le fichier a changé depuis la dernière lecture, GitHub peut refuser l’écriture au lieu d’écraser silencieusement un état plus récent.

Choisir explicitement la brancheLe champ de branche est optionnel au niveau de l’action technique. Dans un workflow contrôlé, spécifiez toujours la branche cible afin d’éviter une écriture involontaire sur la branche par défaut.

Pull requests

OrbitWake peut ouvrir une PR avec un titre, une branche source, une branche cible, un corps optionnel et un indicateur draft.

La création de PR est une action write et reste donc soumise à approbation par défaut.

L’ouverture d’une PR ne remplace pas les protections GitHub : reviews, checks CI, règles de branche et validations configurées sur le dépôt continuent de s’appliquer côté GitHub.

Merge de pull request

github.merge_pull_request est classée sensitive. Avec la politique par défaut, elle nécessite une approbation explicite.

L’action actuelle cible une PR par son numéro et appelle l’endpoint de merge GitHub sans imposer un merge method personnalisé dans cette implémentation.

Le merge doit rester la dernière étape après revue du contenu et validation des checks exigés par le dépôt.

Approbations exactes

Une approbation est liée au connecteur, au nom de l’action et au hash des paramètres exacts. Modifier le dépôt, la branche, le fichier, le contenu ou le numéro de PR produit une autre entrée et invalide l’approbation précédente pour cette nouvelle opération.

Une approbation expire après 10 minutes et ne peut être consommée qu’une fois.

État de la connexion

La surface de statut vérifie le runtime de l’utilisateur puis exécute github.list_repositories. Elle retourne notamment l’état connecté, les dépôts disponibles et l’activité générée pendant cette vérification.

Si la connexion existe mais que la lecture GitHub échoue, l’interface peut rester marquée comme connectée tout en affichant une erreur. Si le credential est invalide ou le runtime ne peut plus charger la connexion, le statut peut demander une reconnexion.

Déconnecter GitHub

Le bouton Disconnect supprime le compte connecteur GitHub enregistré dans le workspace OrbitWake de l’utilisateur.

Cette opération retire les credentials et empêche le runtime OrbitWake d’enregistrer le connecteur GitHub pour cet utilisateur.

Elle ne doit pas être confondue avec la suppression de l’installation GitHub App depuis les paramètres GitHub. La gestion de l’installation elle-même reste côté GitHub.

Erreurs de connexion courantes

ÉtatCause typique
not_configuredConfiguration serveur GitHub App manquante au démarrage du flux.
invalid_install_stateState d’installation absent, expiré ou incorrect.
missing_installationGitHub n’a pas renvoyé un installation ID valide.
oauth_not_configuredLa phase OAuth n’a pas pu être initialisée.
authorization_deniedL’utilisateur a refusé l’autorisation OAuth.
missing_codeLe callback OAuth ne contient pas de code.
invalid_oauth_stateState OAuth absent, expiré, consommé ou incorrect.
installation_not_authorizedLe token utilisateur ne permet pas d’accéder à l’installation sélectionnée.
oauth_failedL’échange OAuth, la vérification ou la sauvegarde a échoué.

Limites actuelles

Le connecteur actuel ne fournit pas un client Git complet : pas de clone local, staging, rebase, cherry-pick, stash, tags ou résolution visuelle de conflits.

read_file est destiné aux fichiers renvoyés avec un encodage GitHub base64 et décodables en UTF-8 ; un répertoire n’est pas accepté comme fichier.

Les listes de branches, PR et issues utilisent actuellement une seule page de résultats. La liste des dépôts parcourt au maximum 10 pages de 100 dépôts.

La gestion fine des dépôts exposés se fait aujourd’hui principalement via l’installation GitHub ; la connexion OrbitWake créée par défaut stocke une portée github.repositories = ["*"].

Workflow recommandé

ÉtapeAction
1Connecter GitHub et vérifier les dépôts autorisés.
2Lire la branche et les fichiers concernés avant toute modification.
3Créer une branche dédiée.
4Créer ou mettre à jour les fichiers après approbation.
5Ouvrir une pull request.
6Vérifier la revue et les checks GitHub.
7Approuver le merge sensible uniquement lorsque la PR est prête.

Étapes suivantes

Les pages Services Google et Intégrations externes seront publiées lorsqu’un runtime vérifiable sera réellement disponible pour ces fournisseurs. Elles ne sont pas documentées comme actives aujourd’hui.

PrécédentConnectors — Vue d’ensembleÀ venirServices Google