MyBotBoxMyBotBox

@yarlisai/core

Primitives partagées — helpers d'environnement, logger, types de streaming, types de trace.

Primitives partagées — helpers d'environnement, logger, types de streaming, types de trace.

Installation

npm install @yarlisai/core

Source : packages/core · npm · CHANGELOG

Pourquoi

@yarlisai/core suit le contrat port/adaptateur : les consommateurs dépendent d'un port (interface SomeProvider) et instancient un adaptateur à l'exécution. Changer de fournisseur ne nécessite qu'une modification de configuration sur une seule ligne.

Utilisation

Le README du package inclut un guide de démarrage rapide complet. mybotbox-platform lui-même est le consommateur de référence — apps/sat/lib/core/ (ou un module portant un nom similaire) illustre comment chaque point d'appel utilise le port plutôt qu'un SDK fournisseur directement.

Transformations des spans de trace

Le sous-chemin @yarlisai/core/trace fournit les primitives de trace d'exécution portables : les types TraceSpan / ToolCall ainsi que les transformations pures d'arbre de spans qui normalisent une trace avant son affichage ou son stockage. Chaque transformation opère exclusivement sur des arbres TraceSpan — sans imports d'exécuteur ni d'application — de sorte que tout runtime produisant des spans de trace peut réutiliser le même pipeline.

import {
  ensureNestedWorkflowsProcessed,
  flattenWorkflowChildren,
  getTraceSpanKey,
  groupIterationBlocks,
  isSyntheticWorkflowWrapper,
  mergeTraceSpanChildren,
  stripCustomToolPrefix,
  type TraceSpan,
} from '@yarlisai/core/trace'

// Unwrap synthetic "Workflow Execution" wrappers from child-workflow traces
const children = flattenWorkflowChildren(childTraceSpans)

// Merge child groups, deduped by span identity (id, or name + time range)
const merged = mergeTraceSpanChildren(existingChildren, children)

// Fold "<name> (iteration <n>)" spans into loop/parallel iteration containers
const rootSpans = groupIterationBlocks(merged)
  • flattenWorkflowChildren(spans) — déroule récursivement les wrappers de workflow synthétiques et normalise les spans de workflows enfants imbriqués.
  • mergeTraceSpanChildren(...groups) — fusionne des groupes de spans en dédupliquant par getTraceSpanKey (les groupes antérieurs ont la priorité).
  • groupIterationBlocks(spans) — regroupe les spans d'itération boucle/parallèle dans des conteneurs par itération, triés par heure de début.
  • ensureNestedWorkflowsProcessed(span) — remonte les output.childTraceSpans dans children (dédupliqués) et les supprime du payload de sortie.
  • isSyntheticWorkflowWrapper(span) / getTraceSpanKey(span) / stripCustomToolPrefix(name) — les petits prédicats à partir desquels le pipeline est construit.

La conversion d'un résultat d'exécution concret en spans reste côté produit : dans MyBotBox, apps/sat/lib/logs/execution/trace-spans/trace-spans.ts héberge buildTraceSpans(result) (qui connaît les BlockLogs de l'exécuteur et le prédicat isWorkflowBlockType) et compose ces transformations.

Voir aussi