Skip to main content
Parité avec le SDK Python : mêmes méthodes (en camelCase côté options), mêmes erreurs typées, même bloc <haki_memory> généré — zéro dépendance runtime (fetch natif Node ≥ 18).

Installation

HakiClient

Promise<HealthResponse>
Promise<CaptureResponse>
events: EventInput[].
Promise<ContextResponse>
Promise<TraceResponse>
Promise<TimelineResponse>
Promise<ConsolidateResponse>
Promise<ForgetResponse>
Promise<FeedbackResponse>
Promise<ResolveConflictResponse>
Promise<KeyCreatedResponse>
Promise<KeyListResponse>
Promise<KeyRevokedResponse>
Le format sur le fil reste snake_case (contrat B.1 et schémas de routes) : les types exportés (EventInput, CaptureResponse, ContextResponse…) exposent des champs comme project_id, source_event_ids, trace_id tels quels — seules les options des méthodes du client sont en camelCase (projectId, subjectId…).

Erreurs typées

Mêmes sémantiques que côté Python : HakiConnectionError (réseau), HakiApiError (statusCode, errorType, field, payload).

Les deux hooks agent (haki/runtime)

buildPromptContext produit un texte identique au SDK Python (même instruction fixe, même format - predicate: value (valid from ...; sources: ...)). captureTurn(client, { subjectId, projectId, userMsg, assistantMsg, orgId?, agentId?, threadId?, kind? }) écrit un événement conversation.turn avec idempotency_key: "turn-" + randomUUID().

CLI haki-ts

command
Teste /health, écrit ~/.haki/config.json.
command
Scénario minuté complet, sortie 0/1.
command
Santé de l’API.
Le fichier de config (~/.haki/config.json, {api_url, api_key}) est le même que celui du CLI Python : les deux CLI sont interchangeables sur une même machine.

Exemple runnable

sdk/typescript/examples/basic-agent.mjs dans le dépôt — un agent minimal complet utilisant HakiClient, buildPromptContext et captureTurn.