@yarlisai/core
共有プリミティブ — 環境変数ヘルパー、ロガー、ストリーミング型、トレース型。
共有プリミティブ — 環境変数ヘルパー、ロガー、ストリーミング型、トレース型。
インストール
npm install @yarlisai/coreソース: packages/core ·
npm ·
CHANGELOG
概要
@yarlisai/core は ポート/アダプターの規約 に従っています。コンシューマーはポート(SomeProvider インターフェース)に依存し、実行時にアダプターをインスタンス化します。ベンダーの切り替えは設定を1行変えるだけで完了します。
使い方
このパッケージの README には完全なクイックスタートが含まれています。mybotbox-platform 自体がリファレンスコンシューマーであり、apps/sat/lib/core/(または同様の名前のモジュール)に、各コールサイトがベンダーSDKを直接使わずにポートを使用する方法が示されています。
トレーススパン変換
@yarlisai/core/trace サブパスには、ポータブルな実行トレースプリミティブが含まれています。具体的には TraceSpan / ToolCall 型と、表示またはストレージの前にトレースを正規化する純粋なスパンツリー変換関数です。すべての変換は TraceSpan ツリーのみを対象として動作し、エグゼキューターやアプリのインポートは一切行いません。そのため、トレーススパンを生成するあらゆるランタイムが同じパイプラインを再利用できます。
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)— 合成ワークフローラッパーを再帰的にアンラップし、ネストされた子ワークフロースパンを正規化します。mergeTraceSpanChildren(...groups)—getTraceSpanKeyによる重複排除でスパングループをマージします(先のグループが優先されます)。groupIterationBlocks(spans)— ループ/並列イテレーションスパンをイテレーションごとのコンテナにグループ化し、開始時刻でソートします。ensureNestedWorkflowsProcessed(span)—output.childTraceSpansをchildrenに(重複排除しつつ)巻き上げ、出力ペイロードから削除します。isSyntheticWorkflowWrapper(span)/getTraceSpanKey(span)/stripCustomToolPrefix(name)— パイプラインを構成する小さな述語関数です。
具体的な実行結果をスパンにマッピングする処理はプロダクト側に残ります。MyBotBox では、apps/sat/lib/logs/execution/trace-spans/trace-spans.ts が buildTraceSpans(result) を管理しており(エグゼキューターの BlockLog と isWorkflowBlockType 述語を認識しています)、これらの変換を組み合わせています。