@respan/tracing 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@respan/tracing",
3
3
  "type": "module",
4
- "version": "1.1.4",
4
+ "version": "1.1.5",
5
5
  "description": "TypeScript support for Respan SDK",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -22,11 +22,14 @@
22
22
  "examples:advanced": "yarn build && cd examples && yarn dev",
23
23
  "test:build": "npm run build && npm pack && npm install ./respan-tracing-*.tgz --no-save && tsx tests/test_build.ts"
24
24
  },
25
- "repository": "https://github.com/respan-ai/respan-sdks.git",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/respanai/respan",
28
+ "directory": "javascript-sdks/respan-tracing"
29
+ },
26
30
  "author": "Respan <team@respan.ai>",
27
31
  "license": "Apache-2.0",
28
32
  "dependencies": {
29
- "@respan/respan-sdk": "^1.0.0",
30
33
  "@opentelemetry/api": "^1.9.0",
31
34
  "@opentelemetry/core": "^1.26.0",
32
35
  "@opentelemetry/exporter-trace-otlp-http": "^0.56.0",
@@ -35,6 +38,7 @@
35
38
  "@opentelemetry/sdk-trace-base": "^1.26.0",
36
39
  "@opentelemetry/sdk-trace-node": "^1.26.0",
37
40
  "@opentelemetry/semantic-conventions": "^1.27.0",
41
+ "@respan/respan-sdk": "^1.0.0",
38
42
  "@traceloop/ai-semantic-conventions": "^0.13.0"
39
43
  },
40
44
  "devDependencies": {
@@ -67,6 +71,5 @@
67
71
  "darwin",
68
72
  "linux",
69
73
  "win32"
70
- ],
71
- "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
74
+ ]
72
75
  }
@@ -1,46 +0,0 @@
1
- /**
2
- * Batch API result logging utilities.
3
- *
4
- * Logs OpenAI Batch API results as individual chat completion spans
5
- * injected into the OTEL pipeline.
6
- */
7
- export interface BatchRequest {
8
- custom_id: string;
9
- body?: {
10
- messages?: any[];
11
- model?: string;
12
- [key: string]: any;
13
- };
14
- [key: string]: any;
15
- }
16
- export interface BatchResult {
17
- custom_id: string;
18
- response?: {
19
- status_code?: number;
20
- body?: {
21
- choices?: Array<{
22
- message?: any;
23
- [key: string]: any;
24
- }>;
25
- usage?: {
26
- prompt_tokens?: number;
27
- completion_tokens?: number;
28
- };
29
- model?: string;
30
- created?: number;
31
- [key: string]: any;
32
- };
33
- [key: string]: any;
34
- };
35
- [key: string]: any;
36
- }
37
- /**
38
- * Log OpenAI Batch API results as individual chat completion spans.
39
- *
40
- * Trace linking (in priority order):
41
- * 1. OTEL context — when called inside a `withTask` / `withWorkflow`,
42
- * auto-links to the active trace.
43
- * 2. Explicit `traceId` — for async batches where results arrive later.
44
- * 3. Auto-generated — creates a new standalone trace.
45
- */
46
- export declare function logBatchResults(requests: BatchRequest[], results: BatchResult[], traceId?: string): void;
@@ -1,107 +0,0 @@
1
- /**
2
- * Batch API result logging utilities.
3
- *
4
- * Logs OpenAI Batch API results as individual chat completion spans
5
- * injected into the OTEL pipeline.
6
- */
7
- import { SpanAttributes } from "@traceloop/ai-semantic-conventions";
8
- import { RespanSpanAttributes } from "@respan/respan-sdk";
9
- import { buildReadableSpan, injectSpan, ensureSpanId } from "./spanFactory.js";
10
- import { getClient } from "./client.js";
11
- /**
12
- * Log OpenAI Batch API results as individual chat completion spans.
13
- *
14
- * Trace linking (in priority order):
15
- * 1. OTEL context — when called inside a `withTask` / `withWorkflow`,
16
- * auto-links to the active trace.
17
- * 2. Explicit `traceId` — for async batches where results arrive later.
18
- * 3. Auto-generated — creates a new standalone trace.
19
- */
20
- export function logBatchResults(requests, results, traceId) {
21
- const client = getClient();
22
- // Resolve trace context: OTEL > explicit > auto-generated.
23
- let otelTraceId = client.getCurrentTraceId();
24
- let otelSpanId = client.getCurrentSpanId();
25
- if (otelTraceId && /^0+$/.test(otelTraceId))
26
- otelTraceId = undefined;
27
- if (otelSpanId && /^0+$/.test(otelSpanId))
28
- otelSpanId = undefined;
29
- const resolvedTraceId = otelTraceId ?? traceId ?? undefined;
30
- const parentSpanId = otelSpanId ?? undefined;
31
- // Index requests by custom_id
32
- const requestsById = new Map();
33
- for (const req of requests) {
34
- requestsById.set(req.custom_id, req.body ?? {});
35
- }
36
- // When no OTEL context, create a grouping span so completions are nested
37
- let groupSpanId;
38
- if (!otelSpanId) {
39
- groupSpanId = ensureSpanId();
40
- }
41
- const completionTimestamps = [];
42
- for (const result of results) {
43
- const customId = result.custom_id ?? "";
44
- const response = result.response ?? {};
45
- const body = response.body ?? {};
46
- const statusCode = response.status_code ?? 200;
47
- const original = requestsById.get(customId) ?? {};
48
- const messages = original.messages ?? [];
49
- const choices = body.choices ?? [{}];
50
- const output = choices[0]?.message ?? {};
51
- const usage = body.usage ?? {};
52
- // Extract timestamp
53
- const created = body.created;
54
- let endTimeIso;
55
- if (created) {
56
- const ts = new Date(created * 1000);
57
- endTimeIso = ts.toISOString();
58
- completionTimestamps.push(ts);
59
- }
60
- const model = body.model ?? original.model ?? "";
61
- const span = buildReadableSpan({
62
- name: `batch:${customId}`,
63
- traceId: resolvedTraceId,
64
- parentId: groupSpanId ?? parentSpanId,
65
- endTimeIso,
66
- attributes: {
67
- "llm.request.type": "chat",
68
- "gen_ai.request.model": model,
69
- "gen_ai.usage.prompt_tokens": usage.prompt_tokens ?? 0,
70
- "gen_ai.usage.completion_tokens": usage.completion_tokens ?? 0,
71
- [SpanAttributes.TRACELOOP_ENTITY_INPUT]: JSON.stringify(messages),
72
- [SpanAttributes.TRACELOOP_ENTITY_OUTPUT]: JSON.stringify(output),
73
- [SpanAttributes.TRACELOOP_ENTITY_PATH]: "batch_results",
74
- [SpanAttributes.TRACELOOP_SPAN_KIND]: "task",
75
- [RespanSpanAttributes.RESPAN_LOG_TYPE]: "chat",
76
- },
77
- statusCode,
78
- });
79
- injectSpan(span);
80
- }
81
- // Create the grouping "batch_results" task span (when no OTEL context)
82
- if (groupSpanId) {
83
- let earliestIso;
84
- let latestIso;
85
- if (completionTimestamps.length > 0) {
86
- completionTimestamps.sort((a, b) => a.getTime() - b.getTime());
87
- earliestIso = completionTimestamps[0].toISOString();
88
- latestIso =
89
- completionTimestamps[completionTimestamps.length - 1].toISOString();
90
- }
91
- const parentSpan = buildReadableSpan({
92
- name: "batch_results.task",
93
- traceId: resolvedTraceId,
94
- spanId: groupSpanId,
95
- startTimeIso: earliestIso,
96
- endTimeIso: latestIso,
97
- attributes: {
98
- [SpanAttributes.TRACELOOP_SPAN_KIND]: "task",
99
- [SpanAttributes.TRACELOOP_ENTITY_NAME]: "batch_results",
100
- [SpanAttributes.TRACELOOP_ENTITY_PATH]: "",
101
- [RespanSpanAttributes.RESPAN_LOG_TYPE]: "task",
102
- },
103
- });
104
- injectSpan(parentSpan);
105
- }
106
- }
107
- //# sourceMappingURL=batchLogging.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batchLogging.js","sourceRoot":"","sources":["../../src/utils/batchLogging.ts"],"names":[],"mappings":"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"}