axiom-agent-created-orgs

Par axiomhq · skills

Provisionnez une organisation Axiom temporaire via un seul appel API non authentifié, stockez son token à usage unique en lieu sûr et transmettez l'URL de réclamation à l'utilisateur. À utiliser lorsqu'un agent a besoin d'une organisation Axiom et que l'utilisateur n'en a aucune configurée, ou qu'il en demande une nouvelle ou jetable.

npx skills add https://github.com/axiomhq/skills --skill axiom-agent-created-orgs

axiom-agent-created-orgs

POST https://api.axiom.co/v2/orgs/provision crée une véritable organisation Axiom et retourne un token API avec accès complet. L'organisation est supprimée après 24 heures sauf si un humain ouvre son URL de claim.

Avant le provisioning

  • Utilise un déploiement existant depuis ~/.axiom.toml s'il convient à la tâche.
  • Provisionne au maximum une organisation par tâche. Les agents peuvent créer au maximum 3 organisations par jour.
  • Informe l'utilisateur que l'organisation est temporaire et doit être claimée pour persister.

Provisionner et stocker le token

Le token et l'URL de claim sont retournés une seule fois et ne peuvent jamais être récupérés à nouveau. Sauvegarde-les avant de faire quoi que ce soit d'autre, et ne jamais afficher le token, afficher la réponse brute, ou committer l'une ou l'autre valeur.

Exécute ceci comme une seule commande pour que la réponse ne touche qu'un fichier temp privé :

umask 077
resp=$(mktemp)
code=$(curl -sS -o "$resp" -w '%{http_code}' -X POST https://api.axiom.co/v2/orgs/provision \
  -H 'Content-Type: application/json' -d '{"name": "<short-task-name>"}')
if [[ "$code" == 200 ]]; then
  jq -r '"\n[deployments.\(.id)]\nurl = \"https://api.axiom.co\"\ntoken = \"\(.token)\"\norg_id = \"\(.id)\"\nclaim_url = \"\(.claimUrl)\"\nexpires_at = \"\(.expiresAt)\""' \
    "$resp" >> ~/.axiom.toml && chmod 600 ~/.axiom.toml &&
    jq '{id, name, defaultEdgeDeployment, expiresAt}' "$resp" && rm -f "$resp"
else
  echo "provision failed: HTTP $code" >&2; cat "$resp" >&2; rm -f "$resp"
fi
  • Les champs du body sont optionnels ; {} est valide. name par défaut est Agent Org <hex>.
  • Omets edgeDeployment sauf si l'utilisateur en demande un ; la valeur par défaut est US East 1 (AWS).
  • 429 Too Many Requests signifie que la limite quotidienne est atteinte. Réessaye plus tard avec backoff ; ne boucle jamais.
  • Si l'ajout à ~/.axiom.toml échoue, la réponse reste dans $resp. Récupère le token avant de le supprimer.

Utiliser l'organisation

L'ID de l'organisation est le nom du déploiement, donc les autres skills Axiom fonctionnent comme prévu :

skills/axiom-alerting/scripts/axiom-api <org-id> GET /datasets

Pour les appels directs, envoie Authorization: Bearer <token> et X-Axiom-Org-Id: <org-id>. Lis le token depuis ~/.axiom.toml dans une variable ; ne le colle jamais dans les commandes ou la sortie. L'organisation se comporte comme n'importe quelle organisation Axiom : créer des datasets, ingérer, interroger, et construire des dashboards et des monitors.

Transmettre l'URL de claim

Le claiming nécessite un humain connecté à Axiom ; il n'y a pas d'API pour cela. Essaye d'ouvrir l'URL de claim dans le navigateur de l'utilisateur, et affiche-la avec la date limite :

url=$(awk -F'"' -v d="[deployments.<org-id>]" '$0==d{f=1;next} /^\[/{f=0} f&&/^claim_url/{print $2}' ~/.axiom.toml)
{ open "$url" || { [[ -n "${DISPLAY:-}${WAYLAND_DISPLAY:-}" ]] && xdg-open "$url"; }; } >/dev/null 2>&1 && echo "opened claim URL in browser" || echo "no browser available"
awk -v d="[deployments.<org-id>]" '$0==d{f=1;next} /^\[/{f=0} f&&/^(claim_url|expires_at)/' ~/.axiom.toml

Affiche toujours l'URL de claim une fois dans ta réponse aussi : sur une machine distante le navigateur peut s'ouvrir là où l'utilisateur ne peut pas le voir. Dis à l'utilisateur :

  • Quiconque ouvre le lien peut prendre la propriété. Ne le partage pas au-delà de l'utilisateur.
  • Non claimée, l'organisation et toutes ses données, dashboards, monitors, et le token sont définitivement supprimés à expires_at (24 heures après le provisioning).
  • Le claiming conserve tout ce que l'agent a construit, rend l'organisation permanente sur le plan Personnel, et maintient le token fonctionnel. Le lien est à usage unique.

Limites jusqu'au claim

  • 10 GB d'ingest et 1 GB-heure de compute de requête sur les 24 heures.
  • Peu de datasets : la création d'un 4e dataset a échoué avec dataset license limit exceeded lors des tests (non documenté). Mets les données connexes dans un dataset.
  • Les monitors et notifiers peuvent être créés, mais les notifications ne sont pas livrées.
  • Le claiming élève ceci aux limites complètes du plan Personnel et active les notifiers.

Si le token est perdu, l'organisation est inaccessible via l'API jusqu'à ce qu'un humain la claim et crée un nouveau token.

Docs : https://axiom.co/docs/console/intelligence/agent-created-orgs

Skills similaires