@yarlisai/core
Gemeinsame Primitiven — Umgebungs-Helfer, Logger, Streaming-Typen, Trace-Typen.
Gemeinsame Primitiven — Umgebungs-Helfer, Logger, Streaming-Typen, Trace-Typen.
Installation
npm install @yarlisai/coreQuelle: packages/core ·
npm ·
CHANGELOG
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 vongetTraceSpanKey(frühere Gruppen haben Vorrang).groupIterationBlocks(spans)— gruppiert Schleifen-/Parallel-Iterations-Spans in Iterationscontainer, sortiert nach Startzeit.ensureNestedWorkflowsProcessed(span)— hebtoutput.childTraceSpansinchildrenhoch (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.