### Étape 2 : donner la clé à ton ordinateur (Terminal)

export OPENROUTER_API_KEY=sk-or-...


### Étape 3 : installer le skill dans Claude Code (Terminal, 2 commandes)

claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai


### Étape 3, variante : dans un autre agent (Codex, Cursor…)

npx skills add typesafe-ai/skills --skill typesafe-ai


### Étape 3 : appeler le skill dans Claude Code

/typesafe:typesafe-ai


### Étape 4 : la consigne de départ recommandée par TypeSafe (traduite)

Utilise le skill TypeSafe. Regarde mon projet et dis-moi où un appel à Jev rendrait les choses plus rapides ou moins chères. Pose-moi des questions avant de construire.


### Test de branchement par OpenRouter (chemin 2)

curl https://openrouter.ai/api/alpha/decisions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<'EOF'
  {
    "model": "typesafe/jev-1.13",
    "state": "Bonjour, je n'arrive pas à payer ma facture depuis trois jours, le lien de paiement ne marche pas. C'est urgent.",
    "questions": {
      "service": {
        "type": "choice",
        "instructions": "Quel service doit traiter ce message ?",
        "criteria": {
          "facturation": "Paiement, facture, remboursement",
          "technique": "Bug, site, connexion",
          "commercial": "Prix, devis, nouvelle commande",
          "autre": "Rien de tout cela"
        }
      },
      "urgent": {
        "type": "noul",
        "instructions": "Le client exprime une urgence."
      }
    }
  }
EOF


### Installer le kit Python

pip install typesafe-sdk


### Installer le kit JavaScript

npm install @typesafe-ai/sdk


### Exemple en Python

from typesafe_sdk import Choice, Noul, TypeSafeClient

client = TypeSafeClient()
reponse = client.system_one(
    state="Bonjour, je n'arrive pas à payer ma facture depuis trois jours. C'est urgent.",
    questions={
        "service": Choice(
            instructions="Quel service doit traiter ce message ?",
            criteria={
                "facturation": "Paiement, facture, remboursement",
                "technique": "Bug, site, connexion",
                "commercial": "Prix, devis, nouvelle commande",
                "autre": "Rien de tout cela",
            },
        ),
        "urgent": Noul(instructions="Le client exprime une urgence."),
    },
)
print(reponse.answers["service"].choice, reponse.answers["service"].confidence)
print(reponse.answers["urgent"].noul)


### Variante : le kit TypeSafe qui passe par OpenRouter

import os
from typesafe_sdk import TypeSafeClient

client = TypeSafeClient(
    api_key=os.environ["OPENROUTER_API_KEY"],
    base_url="https://openrouter.ai/api",
)


### Donner ta clé de la passerelle à ton ordinateur (Terminal)

export AI_GATEWAY_API_KEY=ta_cle_de_passerelle


### Installer la bibliothèque

npm install ai@latest


### Contenu du fichier decision.mts

import { experimental_decide as decide } from 'ai';

const resultat = await decide({
  model: 'typesafe-ai/jev',
  state: "Bonjour, je n'arrive pas à payer ma facture depuis trois jours. C'est urgent.",
  questions: {
    urgent: { type: 'boolean', instructions: 'Le client exprime une urgence.' },
  },
});

console.log(JSON.stringify(resultat.answers, null, 2));


### Lancer le test

node decision.mts
