Skip to main content

Installation

Dans le dépôt Haki, le SDK est une dépendance éditable locale (pyproject.toml, [tool.uv.sources]) : uv sync à la racine l’installe automatiquement, avec l’API elle-même. Utilisé hors du dépôt (votre propre projet) :

HakiClient — synchrone (httpx)

Sync par défaut : les principaux consommateurs sont des scripts et des hooks d’agent. transport est injectable pour les tests (httpx.ASGITransport(app=app)).
dict
GET /health.
dict
POST /v1/capture. events : liste de dicts au format EventIn.
dict
POST /v1/context{packet, token_count, trace_id}.
dict
GET /v1/inspect/{trace_id} (scope obligatoire).
dict
GET /v1/timeline.
dict
POST /v1/consolidate{processed}.
dict
POST /v1/forget.
dict
POST /v1/feedback.
dict
POST /v1/conflicts/{id}/resolve.
dict
POST /v1/keys — la clé en clair n’apparaît qu’ici.
dict
GET /v1/keys (masqué).
dict
DELETE /v1/keys/{key_id}.
AsyncHakiClient expose exactement les mêmes méthodes, await-ables (httpx.AsyncClient sous le capot).

Erreurs typées

HakiError
L’API est injoignable (réseau, timeout, DNS…).
HakiError
L’API a répondu avec {"error": {...}}. Porte status_code, error_type, field, payload — voir la liste des types d’erreur.

Les deux hooks agent (haki.runtime)

Un bloc délimité <haki_memory>...</haki_memory> avec une instruction fixe (« appliquez ces faits, notamment la langue de réponse, citez la source »), un point par fait (predicate: value (valid from ...; sources: ...)), puis les épisodes datés, puis les warnings préfixés !. Packet vide (aucun fait, aucun épisode) → chaîne vide. Texte identique entre le SDK Python et le SDK TypeScript.
capture_turn(client, subject_id, project_id, user_msg, assistant_msg, *, org_id="org_default", agent_id=None, thread_id=None, kind="conversation.turn") écrit un événement payload.messages = [{role: user, content}, {role: assistant, content}] avec un idempotency_key unique par appel (f"turn-{uuid4()}").

Gateway (haki.gateway)

Retourne un httpx.Client/httpx.AsyncClient préconfiguré avec Authorization et les en-têtes X-Haki-* — voir la référence Gateway pour le contrat complet.

CLI haki

command
Teste /health, écrit ~/.haki/config.json.
command
Scénario minuté complet : capture → consolidate → nouveau thread → context rappelle le fait. Sortie 0/1. Tente un bootstrap de clé si aucune n’est configurée.
command
Santé de l’API + latence.
command
command
command
command
Packaging Cursor MCP — voir Cursor.
command
Packaging Cursor Hooks — voir Cursor.
command
Internes : invoqués par Cursor lui-même (.cursor/hooks.json), jamais à la main.