@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/coreSource : 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 pargetTraceSpanKey(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 lesoutput.childTraceSpansdanschildren(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.