MCPcopy Create free account
hub / github.com/TanStack/ai / createLocalCaptureTracer

Function createLocalCaptureTracer

testing/e2e/src/routes/api.otel-media.ts:28–103  ·  view source on GitHub ↗

* Single-request in-memory tracer (mirrors `api.otel-usage.ts`). Everything * happens inside one POST, so spans collect into a local array returned in the * response body.

()

Source from the content-addressed store, hash-verified

26 * response body.
27 */
28function createLocalCaptureTracer(): {
29 tracer: Tracer
30 spans: Array<CapturedSpan>
31} {
32 const spans: Array<CapturedSpan> = []
33 let spanSeq = 0
34 const tracer: Tracer = {
35 startSpan(name, options = {}, _ctx?: Context): Span {
36 const id = `span-${spanSeq++}`
37 const attributes: Record<string, AttributeValue> = {}
38 for (const [k, v] of Object.entries(options.attributes ?? {})) {
39 if (v !== undefined) attributes[k] = v
40 }
41 const captured: CapturedSpan = {
42 name,
43 kind: options.kind,
44 attributes,
45 status: { code: 0 },
46 ended: false,
47 }
48 spans.push(captured)
49 const span: Span = {
50 spanContext(): SpanContext {
51 return { traceId: 'otel-media-trace', spanId: id, traceFlags: 1 }
52 },
53 setAttribute(key, value) {
54 captured.attributes[key] = value
55 return span
56 },
57 setAttributes(next) {
58 for (const [k, v] of Object.entries(next)) {
59 captured.attributes[k] = v as AttributeValue
60 }
61 return span
62 },
63 addEvent() {
64 return span
65 },
66 addLink() {
67 return span
68 },
69 addLinks() {
70 return span
71 },
72 setStatus(status) {
73 captured.status = status
74 return span
75 },
76 updateName(next) {
77 captured.name = next
78 return span
79 },
80 end() {
81 captured.ended = true
82 },
83 isRecording() {
84 return !captured.ended
85 },

Callers 1

api.otel-media.tsFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected