MyBotBoxMyBotBox

@yarlisai/core

Gemeinsame Primitiven — Umgebungs-Helfer, Logger, Streaming-Typen, Trace-Typen.

Gemeinsame Primitiven — Umgebungs-Helfer, Logger, Streaming-Typen, Trace-Typen.

Installation

npm install @yarlisai/core

Warum

@yarlisai/core folgt dem Port/Adapter-Vertrag: Konsumenten hängen von einem Port (Interface SomeProvider) ab und instanziieren zur Laufzeit einen Adapter. Der Wechsel eines Anbieters erfordert lediglich eine einzeilige Konfigurationsänderung.

Verwendung

Das README des Pakets enthält einen vollständigen Schnellstart. mybotbox-platform selbst ist der Referenz-Konsument — apps/sat/lib/core/ (oder ein ähnlich benanntes Modul) zeigt, wie jede Aufrufstelle den Port anstelle eines Anbieter-SDKs direkt verwendet.

Trace-Span-Transformationen

Der Unterpfad @yarlisai/core/trace liefert die portablen Ausführungs-Trace-Primitiven: die Typen TraceSpan / ToolCall sowie die reinen Span-Baum-Transformationen, die einen Trace vor der Anzeige oder Speicherung normalisieren. Jede Transformation operiert ausschließlich auf TraceSpan-Bäumen — ohne Executor- oder App-Importe — sodass jede Laufzeitumgebung, die Trace-Spans erzeugt, dieselbe Pipeline wiederverwenden kann.

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) — entfernt synthetische Workflow-Wrapper rekursiv und normalisiert verschachtelte Kind-Workflow-Spans.
  • mergeTraceSpanChildren(...groups) — führt Span-Gruppen zusammen und dedupliziert sie anhand von getTraceSpanKey (frühere Gruppen haben Vorrang).
  • groupIterationBlocks(spans) — gruppiert Schleifen-/Parallel-Iterations-Spans in Iterationscontainer, sortiert nach Startzeit.
  • ensureNestedWorkflowsProcessed(span) — hebt output.childTraceSpans in children hoch (dedupliziert) und entfernt sie aus der Ausgabe-Payload.
  • isSyntheticWorkflowWrapper(span) / getTraceSpanKey(span) / stripCustomToolPrefix(name) — die kleinen Prädikate, aus denen die Pipeline aufgebaut ist.

Die Abbildung eines konkreten Ausführungsergebnisses auf Spans verbleibt auf der Produktseite: In MyBotBox hält apps/sat/lib/logs/execution/trace-spans/trace-spans.ts die Funktion buildTraceSpans(result) (sie kennt die Executor-BlockLogs und das Prädikat isWorkflowBlockType) und kombiniert diese Transformationen.

Siehe auch