mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-22 11:41:56 +08:00
* feat: add tracing modules * Initial commit * fix: problem * fix: update trace web * fix: trace view * fix: trace view * fix: fix some problem * fix: knowledge and mcp trace * feat: save trace to user home dir * feat: open trace with electron browser window * fix: root trace outputs * feat: trace internationalization and add trace icon * feat: add trace title * feat: update * package.json添加windows运行script * feat: update window title * fix: mcp trace param * fix: error show * fix: listTool result * fix: merge error * feat: add stream usage and response * feat: change trace stream * fix: change stream adapter * fix: span detail show problem * fix: process show by time * fix: stream outputs * fix: merge problem * fix: stream outputs * fix: output text * fix: EDAS support text * fix: change trace footer style * fix: topicId is loaded multiple times * fix: span reload problem & attribute with cache * fix: refresh optimization * Change Powered by text. * resolve upstream conflicts * fix: build-time type exception * fix: exceptions not used when building * fix: recend no trace * fix: resend trace list * fix: delete temporary files * feat: trace for resend * fix: trace for resend message with edit * fix: directory structure and construction method of mcp-trace * fix: change CRLF to LF * fix: add function call outputs * Revert "fix: change CRLF to LF" * fix: reorganize multi-model display * fix: append model trace binding topic * fix: some problems * fix: code optimization * fix: delete async * fix: UI optimization * fix: sort import --------- Co-authored-by: 崔顺发 <csf01409784@alibaba-inc.com> Co-authored-by: 管鑫荣 <gxr01409783@alibaba-inc.com>
27 lines
937 B
TypeScript
27 lines
937 B
TypeScript
import { SpanKind, SpanStatusCode } from '@opentelemetry/api'
|
|
import { ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
|
|
|
import { SpanEntity } from '../types/config'
|
|
|
|
/**
|
|
* convert ReadableSpan to SpanEntity
|
|
* @param span ReadableSpan
|
|
* @returns SpanEntity
|
|
*/
|
|
export function convertSpanToSpanEntity(span: ReadableSpan): SpanEntity {
|
|
return {
|
|
id: span.spanContext().spanId,
|
|
traceId: span.spanContext().traceId,
|
|
parentId: span.parentSpanContext?.spanId || '',
|
|
name: span.name,
|
|
startTime: span.startTime[0] * 1e3 + Math.floor(span.startTime[1] / 1e6), // 转为毫秒
|
|
endTime: span.endTime ? span.endTime[0] * 1e3 + Math.floor(span.endTime[1] / 1e6) : undefined, // 转为毫秒
|
|
attributes: { ...span.attributes },
|
|
status: SpanStatusCode[span.status.code],
|
|
events: span.events,
|
|
kind: SpanKind[span.kind],
|
|
links: span.links,
|
|
modelName: span.attributes?.modelName
|
|
} as SpanEntity
|
|
}
|