Files
opencode-greenpt-usage/README.md
Stéphan Sainléger c44187f613 new: [opencode-greenpt-usage] add GreenPT credit balance plugin
Show the remaining GreenPT API credit balance in the OpenCode TUI
sidebar. The key is resolved from the ``apiKey`` option, the
``GREENPT_API_KEY`` environment variable, or the active OpenCode
``auth.json`` (provider ``greenpt``); the section is hidden when no key
is present, so the plugin stays portable across machines and profiles.

The balance is read from the ``x-credits-remaining`` header returned by
a free ``HEAD /v1/chat/completions`` probe (HTTP 400 before any credit
is consumed), which avoids a billable call per refresh. Tests cover the
credential resolution, the header parsing and the live API.

Distribute via git clone; there is no npm publish.
2026-09-29 21:54:23 +02:00

4.0 KiB

opencode-greenpt-usage

Plugin TUI OpenCode qui affiche dans la barre latérale le solde de crédits API GreenPT restant.

▼ GreenPT
Solde              5.31 €   maj 21:35

Fonctionnement

  • La clé API est résolue dans cet ordre :
    1. l'option apiKey du plugin ;
    2. la variable d'environnement GREENPT_API_KEY ;
    3. le store d'authentification actif d'OpenCode (auth.json, provider greenpt, entrée type: "api"), c'est-à-dire ce que produit un simple opencode auth login.
  • Le solde est lu via une sonde gratuite HEAD /v1/chat/completions : l'API répond 400 Bad Request avant toute facturation, mais la réponse porte quand même l'en-tête x-credits-remaining. Aucun crédit n'est consommé et aucune génération n'est lancée.
  • La section est masquée tant qu'aucune clé GreenPT n'est détectée.
  • Rafraîchissement : au démarrage, à la fin d'une session, à la reconnexion du serveur, par minuteur (300 s par défaut) et à la demande via la commande greenpt.refresh.

Aucune dépendance à un profil ou à une commande locale : le plugin se base uniquement sur la présence d'une clé.

Prérequis

  • OpenCode >= 1.18.0 (système de plugins TUI).
  • Un compte GreenPT et une clé API.

Installation

  1. Cloner ce dépôt à l'emplacement de votre choix.

  2. Connecter GreenPT à OpenCode :

    opencode auth login
    

    Choisir GreenPT dans la liste, puis coller la clé API.

    (Alternative : exporter GREENPT_API_KEY dans votre environnement.)

  3. Enregistrer le plugin dans ~/.config/opencode/tui.json, en renseignant le chemin absolu vers votre clone :

    {
      "$schema": "https://opencode.ai/tui.json",
      "plugin": [
        ["file:///CHEMIN/ABSOLU/VERS/opencode-greenpt-usage/src/index.tsx", { "order": 700 }]
      ]
    }
    

    Utiliser une URL file:// pointant vers le fichier source src/index.tsx (OpenCode compile le TSX lui-même). Ne pas pointer vers un bundle : cela embarquerait une seconde copie de solid-js et la section resterait vide.

  4. Quitter complètement OpenCode et le relancer (les plugins ne sont pas rechargés à chaud).

Configuration

Toutes les options sont facultatives et se placent dans l'entrée du plugin de tui.json :

Option Type Défaut Description
apiKey string résolu automatiquement Clé GreenPT explicite.
baseUrl string https://api.greenpt.ai/v1 URL de base de l'API GreenPT.
refreshInterval number 300 Intervalle de rafraîchissement en secondes (0 = aucun).
order number 700 Position de la section dans la barre latérale.
showWhenUnavailable boolean false Afficher un indice quand aucune clé GreenPT n'existe.
unit string € Unité affichée après le montant.

Dépannage

  • La section n'apparaît pas : vérifier que opencode auth login a bien enregistré une clé greenpt (ou que GREENPT_API_KEY est définie), et que l'URL file:// de tui.json pointe vers le bon chemin.
  • « clé GreenPT invalide » : la clé API a été refusée (HTTP 401).
  • « solde indisponible » : GreenPT n'a pas renvoyé l'en-tête de solde ; réessayer plus tard.

Développement

npm install
npm test                 # tests unitaires
npm run typecheck        # vérification de types
GREENPT_API_KEY=... npm run test:integration   # test contre l'API réelle

Licence

AGPL-3.0-or-later. Voir LICENSE.