Aller au contenu
English

HarnessToolOptions

import type { HarnessToolOptions } from "@elie-laloum/outpost";
  • nameRequis
    string
    Nom d’outil unique de 1 à 64 lettres, chiffres, tirets bas ou tirets, présenté au modèle.
  • descriptionRequis
    string
    Explication non vide que le modèle lit pour décider quand et comment appeler l’outil.
  • inputRequis
    Readonly<Record<string, unknown>> | StandardJsonSchema<Input>
    Schéma d’entrée : un objet JSON Schema contrôlé par le sous-ensemble intégré (type, properties, required, additionalProperties, items, enum, const et bornes de longueur, de valeur et de nombre d’éléments), ou un Standard Schema qui exporte du JSON Schema, comme Zod 4. Les autres mots-clés sont refusés à la définition.
  • readOnlyOptionnel
    boolean | undefined
    Marque un outil sans effet de bord, false par défaut. Les appels en lecture seule peuvent s’exécuter en parallèle, et les tours de réparation d’une réponse ne gardent que les outils en lecture seule.
  • resourcesOptionnel
    ((input: Input) => ToolResources) | undefined
    Décrit les chemins et la commande d’une entrée validée pour que les règles de permission puissent les comparer. Un outil sans cette fonction n’est comparé que par son nom.
  • executeRequis
    (input: Input, context: HarnessToolContext) => ToolOutput | Promise<ToolOutput>
    Exécute l’appel avec l’entrée validée et son contexte, et renvoie du texte ou { content, isError }. Une exception est traitée selon toolExecution.onError ; les résultats de plus de 100000 caractères sont coupés avant d’atteindre le modèle.
export interface HarnessToolOptions<Input> {
  readonly name: string;
  readonly description: string;
  readonly input: StandardJsonSchema<Input> | JsonSchema;
  readonly readOnly?: boolean;
  resources?(input: Input): ToolResources;
  execute(
    input: Input,
    context: HarnessToolContext,
  ): ToolOutput | Promise<ToolOutput>;
}