trace-port.js 672 Bytes
/**
 * asTracePort —— 把 span 侧适配成 `@drama/llm` `TracePort` 形状(`startSpan(name) → Span`)。
 *
 * `sink` 必注入、原样透传给 `startSpan`;无「可能没有 sink」的守卫分支——
 * 缺 tracePort 的降级由 `@drama/llm` 的 `noopTracePort` 承担,不在本包重复。
 */

import { startSpan } from './span.js'

/**
 * @typedef {import('./span.js').Sink} Sink
 * @typedef {import('@drama/llm').TracePort} TracePort
 */

/**
 * @param {object} deps
 * @param {Sink} deps.sink
 * @returns {TracePort}
 */
export function asTracePort({ sink }) {
  return {
    startSpan(name) {
      return startSpan(name, { sink })
    },
  }
}