@openplait/adapter-tempo 0.1.0-alpha.0

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.
@@ -0,0 +1,278 @@
1
+ import { TEMPO_TRACE_FIELDS } from "./datasets.js";
2
+ const DEFAULT_SEARCH_FIELDS = [
3
+ { name: "trace.id", source: "trace.id", type: "trace" },
4
+ { name: "timestamp", source: "timestamp", type: "time" },
5
+ { name: "duration", source: "duration", type: "duration", unit: "ms" },
6
+ { name: "root.service.name", source: "root.service.name", type: "string" },
7
+ { name: "root.span.name", source: "root.span.name", type: "string" },
8
+ { name: "matched.spans", source: "matched.spans", type: "number" },
9
+ ];
10
+ function finiteNumber(value) {
11
+ const parsed = typeof value === "number" ? value : typeof value === "string" ? Number(value) : Number.NaN;
12
+ return Number.isFinite(parsed) ? parsed : null;
13
+ }
14
+ function nanos(value) {
15
+ if (typeof value === "bigint")
16
+ return value;
17
+ if (typeof value === "string" && /^\d+$/.test(value)) {
18
+ try {
19
+ return BigInt(value);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ if (typeof value === "number" && Number.isFinite(value))
26
+ return BigInt(Math.trunc(value));
27
+ return null;
28
+ }
29
+ function nanosToIso(value) {
30
+ const nanoseconds = nanos(value);
31
+ if (nanoseconds === null)
32
+ return null;
33
+ const date = new Date(Number(nanoseconds / 1000000n));
34
+ return Number.isNaN(date.getTime()) ? null : date.toISOString();
35
+ }
36
+ /** OTLP/JSON protobuf encodes byte IDs as base64; Tempo search uses hex. */
37
+ export function normalizeTempoId(value) {
38
+ if (typeof value !== "string")
39
+ return null;
40
+ const id = value.trim();
41
+ if (!id)
42
+ return null;
43
+ if (/^[0-9a-fA-F]+$/.test(id) && (id.length === 16 || id.length === 32))
44
+ return id.toLowerCase();
45
+ try {
46
+ const bytes = Buffer.from(id, "base64");
47
+ if (bytes.length === 8 || bytes.length === 16)
48
+ return bytes.toString("hex");
49
+ }
50
+ catch {
51
+ // Preserve an unknown representation so callers can still display it.
52
+ }
53
+ return id;
54
+ }
55
+ function matchedSpans(trace) {
56
+ const sets = trace.spanSets ?? (trace.spanSet ? [trace.spanSet] : []);
57
+ if (!sets.length)
58
+ return null;
59
+ return sets.reduce((total, set) => total + (finiteNumber(set.matched) ?? set.spans?.length ?? 0), 0);
60
+ }
61
+ function summaryValue(trace, source) {
62
+ if (source === "matched.spans")
63
+ return matchedSpans(trace);
64
+ const resultKey = TEMPO_TRACE_FIELDS[source]?.resultKey;
65
+ if (!resultKey)
66
+ return null;
67
+ const value = trace[resultKey];
68
+ if (source === "timestamp")
69
+ return nanosToIso(value);
70
+ if (source === "duration")
71
+ return finiteNumber(value);
72
+ return value ?? null;
73
+ }
74
+ function dataField(field, values) {
75
+ return {
76
+ name: field.name,
77
+ type: field.type,
78
+ values,
79
+ ...(field.unit === undefined ? {} : { unit: field.unit }),
80
+ };
81
+ }
82
+ export function normalizeTempoSearchResponse(response, options) {
83
+ const traces = Array.isArray(response.traces) ? response.traces : [];
84
+ const fields = options.fields?.length ? options.fields : DEFAULT_SEARCH_FIELDS;
85
+ const inspected = finiteNumber(response.metrics?.inspectedTraces);
86
+ return {
87
+ frames: [
88
+ {
89
+ name: options.frameName,
90
+ length: traces.length,
91
+ fields: fields.map((field) => dataField(field, traces.map((trace) => summaryValue(trace, field.source ?? field.name)))),
92
+ },
93
+ ],
94
+ metadata: {
95
+ datasource: "tempo",
96
+ adapterVersion: options.adapterVersion,
97
+ executionTimeMs: options.executionTimeMs,
98
+ ...(inspected === null ? {} : { rowsRead: inspected }),
99
+ rowsReturned: traces.length,
100
+ cache: "bypass",
101
+ warnings: [],
102
+ },
103
+ };
104
+ }
105
+ function anyValue(value) {
106
+ if (typeof value !== "object" || value === null)
107
+ return value;
108
+ const item = value;
109
+ for (const key of ["stringValue", "boolValue", "intValue", "doubleValue", "bytesValue"]) {
110
+ if (key in item)
111
+ return item[key];
112
+ }
113
+ if (Array.isArray(item.arrayValue))
114
+ return item.arrayValue.map(anyValue);
115
+ const array = item.arrayValue?.values;
116
+ if (Array.isArray(array))
117
+ return array.map(anyValue);
118
+ const entries = item.kvlistValue?.values;
119
+ if (Array.isArray(entries))
120
+ return Object.fromEntries(entries.filter((entry) => entry.key).map((entry) => [entry.key, anyValue(entry.value)]));
121
+ return item;
122
+ }
123
+ function attributes(value) {
124
+ if (!Array.isArray(value))
125
+ return {};
126
+ return Object.fromEntries(value
127
+ .filter((item) => typeof item === "object" && item !== null && typeof item.key === "string")
128
+ .map((item) => [item.key, anyValue(item.value)]));
129
+ }
130
+ function statusCode(value) {
131
+ if (typeof value === "string")
132
+ return value.replace(/^STATUS_CODE_/, "").toLowerCase();
133
+ return { 0: "unset", 1: "ok", 2: "error" }[Number(value)] ?? null;
134
+ }
135
+ function spanKind(value) {
136
+ if (typeof value === "string")
137
+ return value.replace(/^SPAN_KIND_/, "").toLowerCase();
138
+ return { 0: "unspecified", 1: "internal", 2: "server", 3: "client", 4: "producer", 5: "consumer" }[Number(value)] ?? null;
139
+ }
140
+ function spanRows(response) {
141
+ const resourceSpans = Array.isArray(response.resourceSpans)
142
+ ? response.resourceSpans
143
+ : Array.isArray(response.batches)
144
+ ? response.batches
145
+ : [];
146
+ const rows = [];
147
+ for (const rawResource of resourceSpans) {
148
+ const resource = rawResource;
149
+ const resourceAttributes = attributes(resource.resource?.attributes);
150
+ const scopes = (resource.scopeSpans ?? resource.instrumentationLibrarySpans);
151
+ if (!Array.isArray(scopes))
152
+ continue;
153
+ for (const rawScope of scopes) {
154
+ const spans = rawScope.spans;
155
+ if (!Array.isArray(spans))
156
+ continue;
157
+ for (const rawSpan of spans) {
158
+ if (typeof rawSpan !== "object" || rawSpan === null)
159
+ continue;
160
+ const span = rawSpan;
161
+ const start = nanos(span.startTimeUnixNano);
162
+ const end = nanos(span.endTimeUnixNano);
163
+ rows.push({
164
+ timestamp: nanosToIso(span.startTimeUnixNano),
165
+ duration: start === null || end === null
166
+ ? null
167
+ : Math.max(0, Number(end - start) / 1_000_000),
168
+ "trace.id": normalizeTempoId(span.traceId),
169
+ "span.id": normalizeTempoId(span.spanId),
170
+ "span.parent_id": normalizeTempoId(span.parentSpanId),
171
+ "span.name": span.name ?? null,
172
+ "span.kind": spanKind(span.kind),
173
+ "status.code": statusCode(span.status?.code),
174
+ "status.message": span.status?.message ?? null,
175
+ "service.name": resourceAttributes["service.name"] ?? null,
176
+ "resource.attributes": resourceAttributes,
177
+ "span.attributes": attributes(span.attributes),
178
+ events: Array.isArray(span.events) ? span.events : [],
179
+ });
180
+ }
181
+ }
182
+ }
183
+ return rows;
184
+ }
185
+ const TRACE_DETAIL_FIELDS = [
186
+ { name: "timestamp", type: "time" },
187
+ { name: "duration", type: "duration", unit: "ms" },
188
+ { name: "trace.id", type: "trace" },
189
+ { name: "span.id", type: "string" },
190
+ { name: "span.parent_id", type: "string" },
191
+ { name: "span.name", type: "string" },
192
+ { name: "span.kind", type: "string" },
193
+ { name: "status.code", type: "string" },
194
+ { name: "status.message", type: "string" },
195
+ { name: "service.name", type: "string" },
196
+ { name: "resource.attributes", type: "json" },
197
+ { name: "span.attributes", type: "json" },
198
+ { name: "events", type: "json" },
199
+ ];
200
+ export function normalizeTempoTraceResponse(response, options) {
201
+ const rows = spanRows(response);
202
+ return {
203
+ frames: [{
204
+ name: options.frameName,
205
+ length: rows.length,
206
+ fields: TRACE_DETAIL_FIELDS.map((field) => ({
207
+ name: field.name,
208
+ type: field.type,
209
+ values: rows.map((row) => row[field.name]),
210
+ ...(field.unit === undefined ? {} : { unit: field.unit }),
211
+ })),
212
+ }],
213
+ metadata: {
214
+ datasource: "tempo",
215
+ adapterVersion: options.adapterVersion,
216
+ executionTimeMs: options.executionTimeMs,
217
+ rowsReturned: rows.length,
218
+ cache: "bypass",
219
+ warnings: [],
220
+ },
221
+ };
222
+ }
223
+ function metricLabelValue(value) {
224
+ if (typeof value === "string")
225
+ return value;
226
+ if (typeof value !== "object" || value === null)
227
+ return "";
228
+ const wrapped = value;
229
+ return String(wrapped.stringValue ?? wrapped.string_value ?? "");
230
+ }
231
+ /** Normalize Prometheus-like TraceQL metric series into one row per sample. */
232
+ export function normalizeTempoMetricsResponse(response, options) {
233
+ const rows = [];
234
+ for (const series of response.series ?? []) {
235
+ const labels = Object.fromEntries((series.labels ?? [])
236
+ .filter((label) => typeof label.key === "string")
237
+ .map((label) => [label.key, metricLabelValue(label.value)]));
238
+ if (Array.isArray(series.samples)) {
239
+ for (const sample of series.samples) {
240
+ const milliseconds = finiteNumber(sample.timestampMs ?? sample.timestamp_ms);
241
+ rows.push({
242
+ timestamp: milliseconds === null ? null : new Date(milliseconds).toISOString(),
243
+ value: finiteNumber(sample.value),
244
+ labels,
245
+ });
246
+ }
247
+ }
248
+ else if (Array.isArray(series.values)) {
249
+ for (const [seconds, value] of series.values) {
250
+ rows.push({
251
+ timestamp: Number.isFinite(seconds) ? new Date(seconds * 1_000).toISOString() : null,
252
+ value: finiteNumber(value),
253
+ labels,
254
+ });
255
+ }
256
+ }
257
+ }
258
+ return {
259
+ frames: [{
260
+ name: options.frameName,
261
+ length: rows.length,
262
+ fields: [
263
+ { name: "timestamp", type: "time", values: rows.map((row) => row.timestamp) },
264
+ { name: "value", type: "number", values: rows.map((row) => row.value) },
265
+ { name: "labels", type: "json", values: rows.map((row) => row.labels) },
266
+ ],
267
+ }],
268
+ metadata: {
269
+ datasource: "tempo",
270
+ adapterVersion: options.adapterVersion,
271
+ executionTimeMs: options.executionTimeMs,
272
+ rowsReturned: rows.length,
273
+ cache: "bypass",
274
+ warnings: [],
275
+ },
276
+ };
277
+ }
278
+ //# sourceMappingURL=normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/normalization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ParameterMap, ScalarValue } from "@openplait/core";
2
+ export declare function resolveParameterValue(value: ScalarValue | ScalarValue[], queryParameters: ParameterMap, variables: ParameterMap | undefined, path: string, seen?: ReadonlySet<string>): ScalarValue | ScalarValue[];
3
+ //# sourceMappingURL=parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKjE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,EAClC,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,YAAY,GAAG,SAAS,EACnC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GACpC,WAAW,GAAG,WAAW,EAAE,CAgB7B"}
@@ -0,0 +1,22 @@
1
+ import { AdapterError } from "@openplait/adapter-sdk";
2
+ const PARAMETER_REFERENCE = /^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/;
3
+ export function resolveParameterValue(value, queryParameters, variables, path, seen = new Set()) {
4
+ if (typeof value !== "string")
5
+ return value;
6
+ const match = PARAMETER_REFERENCE.exec(value);
7
+ const name = match?.[1];
8
+ if (!name)
9
+ return value;
10
+ if (seen.has(name)) {
11
+ throw new AdapterError("INVALID_PARAMETER", `Parameter '${name}' contains a circular reference.`, { path });
12
+ }
13
+ const resolved = queryParameters[name] ?? variables?.[name];
14
+ if (resolved === undefined) {
15
+ throw new AdapterError("INVALID_PARAMETER", `Parameter '${name}' has not been resolved.`, {
16
+ path,
17
+ details: { parameter: name },
18
+ });
19
+ }
20
+ return resolveParameterValue(resolved, queryParameters, variables, path, new Set([...seen, name]));
21
+ }
22
+ //# sourceMappingURL=parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/parameters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAE/D,MAAM,UAAU,qBAAqB,CACnC,KAAkC,EAClC,eAA6B,EAC7B,SAAmC,EACnC,IAAY,EACZ,OAA4B,IAAI,GAAG,EAAE;IAErC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,cAAc,IAAI,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,cAAc,IAAI,0BAA0B,EAAE;YACxF,IAAI;YACJ,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC"}
@@ -0,0 +1,126 @@
1
+ import type { DataFieldType, TimeRange } from "@openplait/core";
2
+ import type { CompiledField } from "@openplait/adapter-sdk";
3
+ export type TempoAttributeScope = "resource" | "span" | "event" | "link";
4
+ export interface TempoAttributeField {
5
+ scope: TempoAttributeScope;
6
+ attribute: string;
7
+ type?: Exclude<DataFieldType, "time" | "duration" | "trace" | "json">;
8
+ }
9
+ export interface TempoAdapterConfig {
10
+ url: string;
11
+ /** Static headers for proxies and managed Tempo services. */
12
+ httpHeaders?: Record<string, string>;
13
+ tenantId?: string;
14
+ username?: string;
15
+ password?: string;
16
+ bearerToken?: string;
17
+ requestTimeoutMs?: number;
18
+ queryTimeoutMs?: number;
19
+ maxResultRows?: number;
20
+ maxSpansPerSpanSet?: number;
21
+ maxTimeRangeMs?: number;
22
+ allowNativeQueries?: boolean;
23
+ /** Tempo version reported by `/api/status/buildinfo`, when already known. */
24
+ tempoVersion?: string;
25
+ /** Override the version-derived experimental `most_recent` query hint. */
26
+ enableMostRecent?: boolean;
27
+ /** Override the version-derived TraceQL metrics capability. */
28
+ enableTraceqlMetrics?: boolean;
29
+ /** Override use of the v2 tag and tag-value discovery endpoints. */
30
+ enableTagSearchV2?: boolean;
31
+ /** Additional canonical field names that may be used in semantic filters. */
32
+ attributeFields?: Record<string, TempoAttributeField>;
33
+ }
34
+ export interface TempoServerCapabilities {
35
+ version?: string;
36
+ features: {
37
+ traceql: boolean | null;
38
+ mostRecent: boolean | null;
39
+ traceqlMetrics: boolean | null;
40
+ tagSearchV2: boolean | null;
41
+ };
42
+ limits: {
43
+ maxResultRows?: number;
44
+ maxTimeRangeMs?: number;
45
+ maxSpansPerSpanSet?: number;
46
+ };
47
+ }
48
+ export interface TempoAdapterOptions {
49
+ fetch?: typeof fetch;
50
+ now?: () => number;
51
+ }
52
+ export interface TempoCompiledRequest {
53
+ endpoint: "search";
54
+ traceql: string;
55
+ start: number;
56
+ end: number;
57
+ limit: number;
58
+ spansPerSpanSet: number;
59
+ }
60
+ export interface TempoNativeOptions {
61
+ timeRange: Omit<TimeRange, "field">;
62
+ limit?: number;
63
+ spansPerSpanSet?: number;
64
+ }
65
+ export interface TempoTraceRange {
66
+ from: string | number;
67
+ to: string | number;
68
+ }
69
+ export interface TempoMetricsRange extends TempoTraceRange {
70
+ query: string;
71
+ /** Tempo/Go duration, for example `30s`, `5m`, or `1h`. */
72
+ step: string;
73
+ exemplars?: number;
74
+ }
75
+ export interface TempoMetricsSample {
76
+ timestampMs?: string | number;
77
+ timestamp_ms?: string | number;
78
+ value?: string | number;
79
+ }
80
+ export interface TempoMetricsSeries {
81
+ labels?: Array<{
82
+ key?: string;
83
+ value?: string | {
84
+ stringValue?: string;
85
+ string_value?: string;
86
+ };
87
+ }>;
88
+ samples?: TempoMetricsSample[];
89
+ values?: [number, number][];
90
+ }
91
+ export interface TempoMetricsResponse {
92
+ series?: TempoMetricsSeries[];
93
+ [key: string]: unknown;
94
+ }
95
+ export interface TempoSearchTrace {
96
+ traceID?: string;
97
+ rootServiceName?: string;
98
+ rootTraceName?: string;
99
+ startTimeUnixNano?: string | number;
100
+ durationMs?: number;
101
+ spanSet?: TempoSpanSet;
102
+ spanSets?: TempoSpanSet[];
103
+ [key: string]: unknown;
104
+ }
105
+ export interface TempoSpanSet {
106
+ matched?: number;
107
+ spans?: Array<Record<string, unknown>>;
108
+ [key: string]: unknown;
109
+ }
110
+ export interface TempoSearchResponse {
111
+ traces?: TempoSearchTrace[];
112
+ metrics?: Record<string, unknown>;
113
+ [key: string]: unknown;
114
+ }
115
+ export interface TempoTraceResponse {
116
+ resourceSpans?: Array<Record<string, unknown>>;
117
+ batches?: Array<Record<string, unknown>>;
118
+ [key: string]: unknown;
119
+ }
120
+ export interface TempoNormalizationOptions {
121
+ frameName: string;
122
+ adapterVersion: string;
123
+ executionTimeMs: number;
124
+ fields?: CompiledField[];
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@openplait/adapter-tempo",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "Grafana Tempo datasource adapter for OpenPlait trace queries.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "files": [
8
+ "dist/src",
9
+ "README.md",
10
+ "LICENSE"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/src/index.d.ts",
15
+ "import": "./dist/src/index.js"
16
+ }
17
+ },
18
+ "scripts": {
19
+ "build": "tsc -p tsconfig.build.json",
20
+ "prebuild": "npm run build --workspace @openplait/adapter-sdk",
21
+ "prepack": "npm run build",
22
+ "pretest": "npm run build --workspace @openplait/adapter-sdk",
23
+ "test": "vitest run",
24
+ "pretypecheck": "npm run build --workspace @openplait/adapter-sdk",
25
+ "typecheck": "tsc -p tsconfig.json --noEmit"
26
+ },
27
+ "engines": {
28
+ "node": ">=20.19"
29
+ },
30
+ "dependencies": {
31
+ "@openplait/adapter-sdk": "0.1.0-alpha.0",
32
+ "@openplait/core": "0.1.0-alpha.0"
33
+ },
34
+ "devDependencies": {
35
+ "typescript": "^5.9.0",
36
+ "vitest": "^3.2.0"
37
+ },
38
+ "license": "Apache-2.0",
39
+ "author": "OpenLIT",
40
+ "homepage": "https://github.com/openlit/openplait#readme",
41
+ "bugs": {
42
+ "url": "https://github.com/openlit/openplait/issues"
43
+ },
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/openlit/openplait.git",
47
+ "directory": "typescript/packages/adapter-tempo"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public",
51
+ "registry": "https://registry.npmjs.org/"
52
+ },
53
+ "keywords": [
54
+ "openplait",
55
+ "openlit",
56
+ "opentelemetry",
57
+ "observability",
58
+ "datasource",
59
+ "adapter",
60
+ "promql",
61
+ "traceql",
62
+ "logql",
63
+ "adapter tempo"
64
+ ]
65
+ }