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.
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 :
- l'option
apiKeydu plugin ; - la variable d'environnement
GREENPT_API_KEY; - le store d'authentification actif d'OpenCode (
auth.json, providergreenpt, entréetype: "api"), c'est-à-dire ce que produit un simpleopencode auth login.
- l'option
- Le solde est lu via une sonde gratuite
HEAD /v1/chat/completions: l'API répond400 Bad Requestavant toute facturation, mais la réponse porte quand même l'en-têtex-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
-
Cloner ce dépôt à l'emplacement de votre choix.
-
Connecter GreenPT à OpenCode :
opencode auth loginChoisir GreenPT dans la liste, puis coller la clé API.
(Alternative : exporter
GREENPT_API_KEYdans votre environnement.) -
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 sourcesrc/index.tsx(OpenCode compile le TSX lui-même). Ne pas pointer vers un bundle : cela embarquerait une seconde copie desolid-jset la section resterait vide. -
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 logina bien enregistré une clégreenpt(ou queGREENPT_API_KEYest définie), et que l'URLfile://detui.jsonpointe 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.