@uselemma/tracing 0.2.0 → 0.5.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.
- package/README.md +90 -83
- package/dist/exporter.d.ts +3 -3
- package/dist/exporter.d.ts.map +1 -1
- package/dist/exporter.js +6 -3
- package/dist/exporter.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -1
- package/dist/memory-exporter.d.ts +43 -0
- package/dist/memory-exporter.d.ts.map +1 -0
- package/dist/memory-exporter.js +87 -0
- package/dist/memory-exporter.js.map +1 -0
- package/dist/trace-runner.d.ts +9 -4
- package/dist/trace-runner.d.ts.map +1 -1
- package/dist/trace-runner.js +30 -13
- package/dist/trace-runner.js.map +1 -1
- package/dist/tracer.d.ts +14 -9
- package/dist/tracer.d.ts.map +1 -1
- package/dist/tracer.js +58 -59
- package/dist/tracer.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @uselemma/tracing
|
|
2
2
|
|
|
3
|
-
OpenTelemetry-based tracing
|
|
3
|
+
Utilities for OpenTelemetry-based tracing and prompt management.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -8,112 +8,119 @@ OpenTelemetry-based tracing module for Lemma.
|
|
|
8
8
|
npm install @uselemma/tracing
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Components
|
|
12
12
|
|
|
13
|
-
###
|
|
13
|
+
### MemorySpanExporter
|
|
14
|
+
|
|
15
|
+
A custom OpenTelemetry span exporter that stores spans in memory for programmatic access. Useful for testing, debugging, or capturing trace data for custom processing.
|
|
16
|
+
|
|
17
|
+
#### Usage
|
|
14
18
|
|
|
15
19
|
```typescript
|
|
16
|
-
import {
|
|
20
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
21
|
+
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
22
|
+
import { MemorySpanExporter } from "@uselemma/tracing";
|
|
17
23
|
|
|
18
|
-
// Create
|
|
19
|
-
const
|
|
24
|
+
// Create and configure the exporter
|
|
25
|
+
const memoryExporter = new MemorySpanExporter();
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"prompt-name": "override template here",
|
|
27
|
+
const sdk = new NodeSDK({
|
|
28
|
+
spanProcessors: [new SimpleSpanProcessor(memoryExporter)],
|
|
24
29
|
});
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
await traceRunner.run(async () => {
|
|
28
|
-
// Your code here
|
|
29
|
-
const renderedPrompt = await tracer.prompt(
|
|
30
|
-
"prompt-name",
|
|
31
|
-
"Hello {{ name }}!",
|
|
32
|
-
{ name: "World" }
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
// ... use renderedPrompt ...
|
|
36
|
-
|
|
37
|
-
tracer.addLlmOutput("LLM response", "gpt-4", {
|
|
38
|
-
prompt_tokens: 100,
|
|
39
|
-
completion_tokens: 50,
|
|
40
|
-
total_tokens: 150,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
31
|
+
sdk.start();
|
|
43
32
|
|
|
44
|
-
//
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
// Later, retrieve spans
|
|
34
|
+
const allSpans = memoryExporter.getSpans();
|
|
35
|
+
const spansAsDicts = memoryExporter.getSpansAsDicts();
|
|
36
|
+
const traceSpans = memoryExporter.getSpansByTraceId("your-trace-id");
|
|
37
|
+
|
|
38
|
+
// Clear memory when needed
|
|
39
|
+
memoryExporter.clear();
|
|
48
40
|
```
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
#### Methods
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
- **`getSpans(): ReadableSpan[]`** - Get all stored spans as OpenTelemetry ReadableSpan objects
|
|
45
|
+
- **`getSpansAsDicts(): SpanDict[]`** - Get all stored spans as formatted dictionaries
|
|
46
|
+
- **`getSpansByTraceId(traceId: string): SpanDict[]`** - Get all spans for a specific trace ID
|
|
47
|
+
- **`clear(): void`** - Clear all stored spans from memory
|
|
48
|
+
- **`export(spans: ReadableSpan[]): Promise<{ code: ExportResultCode }>`** - Export spans (called automatically by OpenTelemetry)
|
|
49
|
+
- **`shutdown(): Promise<void>`** - Shutdown the exporter
|
|
50
|
+
- **`forceFlush(): Promise<void>`** - Force flush pending spans
|
|
55
51
|
|
|
56
|
-
|
|
57
|
-
const span = tracer.getCurrentSpan();
|
|
58
|
-
tracer.addMetadata("key", "value");
|
|
59
|
-
tracer.addEvent("event-name", { data: "value" });
|
|
60
|
-
```
|
|
52
|
+
### CandidatePromptManager
|
|
61
53
|
|
|
62
|
-
|
|
54
|
+
Manages prompt template overrides using AsyncLocalStorage for context-local state. Useful for A/B testing or evaluating different prompt variations.
|
|
55
|
+
|
|
56
|
+
#### Usage
|
|
63
57
|
|
|
64
58
|
```typescript
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
59
|
+
import { CandidatePromptManager } from "@uselemma/tracing";
|
|
60
|
+
|
|
61
|
+
const promptManager = new CandidatePromptManager();
|
|
62
|
+
|
|
63
|
+
// Run code with prompt overrides
|
|
64
|
+
await promptManager.run(
|
|
65
|
+
{
|
|
66
|
+
greeting: "Hello {{ name }}, welcome!",
|
|
67
|
+
farewell: "Goodbye {{ name }}!",
|
|
68
|
+
},
|
|
69
|
+
async () => {
|
|
70
|
+
// Within this context, candidate prompts will be used
|
|
71
|
+
const [template, wasOverridden] = promptManager.getEffectiveTemplate(
|
|
72
|
+
"greeting",
|
|
73
|
+
"Hi {{ name }}" // default template
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
console.log(template); // "Hello {{ name }}, welcome!"
|
|
77
|
+
console.log(wasOverridden); // true
|
|
78
|
+
}
|
|
70
79
|
);
|
|
71
|
-
// ... use renderedPrompt ...
|
|
72
|
-
tracer.addLlmOutput(result.content);
|
|
73
|
-
|
|
74
|
-
// Method 2: Using startPrompt() (returns context object)
|
|
75
|
-
const promptCtx = tracer.startPrompt("translation", "Translate: {{ text }}", {
|
|
76
|
-
text: "Hello",
|
|
77
|
-
});
|
|
78
|
-
// ... use promptCtx.renderedPrompt ...
|
|
79
|
-
tracer.addLlmOutput(result.content);
|
|
80
|
-
promptCtx.end(); // Manually end span
|
|
81
80
|
```
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
#### Methods
|
|
84
83
|
|
|
85
|
-
|
|
84
|
+
- **`run<T>(candidatePrompts: Record<string, string> | null, callback: () => Promise<T> | T): Promise<T>`**
|
|
85
|
+
Run a callback with candidate prompts set in the async context
|
|
86
|
+
- **`getEffectiveTemplate(promptName: string, defaultTemplate: string): [string, boolean]`**
|
|
87
|
+
Get the effective template, applying candidate override if present. Returns `[template, wasOverridden]`
|
|
88
|
+
- **`annotateSpan(span: { setAttribute: (key: string, value: unknown) => void }): void`**
|
|
89
|
+
Annotate an OpenTelemetry span with candidate prompt metadata
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
- `SpanType.AGENT` - For agent operations
|
|
89
|
-
- `SpanType.NODE` - For node operations
|
|
90
|
-
- `SpanType.TOOL` - For tool operations
|
|
91
|
+
## Example: Dual Processor Setup
|
|
91
92
|
|
|
92
|
-
|
|
93
|
+
Use `MemorySpanExporter` alongside other exporters to both send traces to your backend and capture them locally:
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
95
|
+
```typescript
|
|
96
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
97
|
+
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
98
|
+
import { MemorySpanExporter } from "@uselemma/tracing";
|
|
99
|
+
import { OtherSpanProcessor } from "your-backend";
|
|
100
|
+
|
|
101
|
+
export const memoryExporter = new MemorySpanExporter();
|
|
102
|
+
|
|
103
|
+
const sdk = new NodeSDK({
|
|
104
|
+
spanProcessors: [
|
|
105
|
+
new OtherSpanProcessor(), // Send to your backend
|
|
106
|
+
new SimpleSpanProcessor(memoryExporter), // Store in memory for local access
|
|
107
|
+
],
|
|
108
|
+
});
|
|
104
109
|
|
|
105
|
-
|
|
110
|
+
sdk.start();
|
|
106
111
|
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
// In your application code
|
|
113
|
+
import { memoryExporter } from "./instrumentation";
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
function myTracedFunction() {
|
|
116
|
+
// ... your code ...
|
|
111
117
|
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
// Access spans programmatically
|
|
119
|
+
const allSpans = memoryExporter.getSpansAsDicts();
|
|
120
|
+
const myTrace = memoryExporter.getSpansByTraceId(currentTraceId);
|
|
121
|
+
}
|
|
122
|
+
```
|
|
114
123
|
|
|
115
|
-
|
|
124
|
+
## License
|
|
116
125
|
|
|
117
|
-
|
|
118
|
-
- `getSpansAsDicts(): SpanDict[]` - Get all stored spans as dictionaries
|
|
119
|
-
- `clear(): void` - Clear stored spans
|
|
126
|
+
MIT
|
package/dist/exporter.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export interface SpanDict {
|
|
|
7
7
|
parent_span_id: string | null;
|
|
8
8
|
name: string;
|
|
9
9
|
kind: string;
|
|
10
|
-
start_time_ns:
|
|
11
|
-
end_time_ns:
|
|
10
|
+
start_time_ns: string;
|
|
11
|
+
end_time_ns: string | null;
|
|
12
12
|
duration_ms: number | null;
|
|
13
13
|
attributes: Record<string, unknown>;
|
|
14
14
|
status: {
|
|
@@ -17,7 +17,7 @@ export interface SpanDict {
|
|
|
17
17
|
} | null;
|
|
18
18
|
events: Array<{
|
|
19
19
|
name: string;
|
|
20
|
-
timestamp_ns:
|
|
20
|
+
timestamp_ns: string;
|
|
21
21
|
attributes: Record<string, unknown>;
|
|
22
22
|
}>;
|
|
23
23
|
resource: Record<string, unknown>;
|
package/dist/exporter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAKlE,QAAQ,IAAI,YAAY,EAAE;IAI1B,eAAe,IAAI,QAAQ,EAAE;IAI7B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAKlE,QAAQ,IAAI,YAAY,EAAE;IAI1B,eAAe,IAAI,QAAQ,EAAE;IAI7B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAkDnB,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
package/dist/exporter.js
CHANGED
|
@@ -39,9 +39,11 @@ class MemorySpanExporter {
|
|
|
39
39
|
parent_span_id: parentSpanId,
|
|
40
40
|
name: span.name,
|
|
41
41
|
kind: span.kind.toString(),
|
|
42
|
-
start_time_ns: BigInt(span.startTime[0]) * 1000000000n +
|
|
42
|
+
start_time_ns: (BigInt(span.startTime[0]) * 1000000000n +
|
|
43
|
+
BigInt(span.startTime[1])).toString(),
|
|
43
44
|
end_time_ns: span.endTime
|
|
44
|
-
? BigInt(span.endTime[0]) * 1000000000n +
|
|
45
|
+
? (BigInt(span.endTime[0]) * 1000000000n +
|
|
46
|
+
BigInt(span.endTime[1])).toString()
|
|
45
47
|
: null,
|
|
46
48
|
duration_ms: span.endTime
|
|
47
49
|
? (span.endTime[0] - span.startTime[0]) * 1000 +
|
|
@@ -56,7 +58,8 @@ class MemorySpanExporter {
|
|
|
56
58
|
: null,
|
|
57
59
|
events: (span.events || []).map((event) => ({
|
|
58
60
|
name: event.name,
|
|
59
|
-
timestamp_ns: BigInt(event.time[0]) * 1000000000n +
|
|
61
|
+
timestamp_ns: (BigInt(event.time[0]) * 1000000000n +
|
|
62
|
+
BigInt(event.time[1])).toString(),
|
|
60
63
|
attributes: event.attributes ? { ...event.attributes } : {},
|
|
61
64
|
})),
|
|
62
65
|
resource: span.resource?.attributes
|
package/dist/exporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AA0BvD;;GAEG;AACH,MAAa,kBAAkB;IACZ,MAAM,GAAmB,EAAE,CAAC;IAE7C,MAAM,CAAC,KAAqB;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,cAAc,CAAC,OAAe;QACpC,6CAA6C;QAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,4CAA4C;QAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,WAAW,CAAC,IAAkB;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;YACpC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,YAAY;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1B,aAAa,
|
|
1
|
+
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { CandidatePromptManager } from
|
|
2
|
-
export { MemorySpanExporter, type SpanDict } from
|
|
3
|
-
export { TraceRunner, type TraceData } from './trace-runner';
|
|
4
|
-
export { SpanType, Tracer } from './tracer';
|
|
1
|
+
export { CandidatePromptManager } from "./candidate-prompt-manager";
|
|
2
|
+
export { MemorySpanExporter, type SpanDict } from "./memory-exporter";
|
|
5
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MemorySpanExporter = exports.CandidatePromptManager = void 0;
|
|
4
4
|
var candidate_prompt_manager_1 = require("./candidate-prompt-manager");
|
|
5
5
|
Object.defineProperty(exports, "CandidatePromptManager", { enumerable: true, get: function () { return candidate_prompt_manager_1.CandidatePromptManager; } });
|
|
6
|
-
var
|
|
7
|
-
Object.defineProperty(exports, "MemorySpanExporter", { enumerable: true, get: function () { return
|
|
8
|
-
var trace_runner_1 = require("./trace-runner");
|
|
9
|
-
Object.defineProperty(exports, "TraceRunner", { enumerable: true, get: function () { return trace_runner_1.TraceRunner; } });
|
|
10
|
-
var tracer_1 = require("./tracer");
|
|
11
|
-
Object.defineProperty(exports, "SpanType", { enumerable: true, get: function () { return tracer_1.SpanType; } });
|
|
12
|
-
Object.defineProperty(exports, "Tracer", { enumerable: true, get: function () { return tracer_1.Tracer; } });
|
|
6
|
+
var memory_exporter_1 = require("./memory-exporter");
|
|
7
|
+
Object.defineProperty(exports, "MemorySpanExporter", { enumerable: true, get: function () { return memory_exporter_1.MemorySpanExporter; } });
|
|
13
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,qDAAsE;AAA7D,qHAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ExportResultCode } from "@opentelemetry/core";
|
|
2
|
+
import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
3
|
+
export interface SpanDict {
|
|
4
|
+
timestamp: string;
|
|
5
|
+
trace_id: string;
|
|
6
|
+
span_id: string;
|
|
7
|
+
parent_span_id: string | null;
|
|
8
|
+
name: string;
|
|
9
|
+
kind: string;
|
|
10
|
+
start_time_ns: string;
|
|
11
|
+
end_time_ns: string | null;
|
|
12
|
+
duration_ms: number | null;
|
|
13
|
+
attributes: Record<string, unknown>;
|
|
14
|
+
status: {
|
|
15
|
+
status_code: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
} | null;
|
|
18
|
+
events: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
timestamp_ns: string;
|
|
21
|
+
attributes: Record<string, unknown>;
|
|
22
|
+
}>;
|
|
23
|
+
resource: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Span exporter that stores spans in memory for retrieval.
|
|
27
|
+
*/
|
|
28
|
+
export declare class MemorySpanExporter implements SpanExporter {
|
|
29
|
+
private readonly _spans;
|
|
30
|
+
export(spans: ReadableSpan[]): Promise<{
|
|
31
|
+
code: ExportResultCode;
|
|
32
|
+
}>;
|
|
33
|
+
getSpans(): ReadableSpan[];
|
|
34
|
+
getSpansAsDicts(): SpanDict[];
|
|
35
|
+
getSpansByTraceId(traceId: string): SpanDict[];
|
|
36
|
+
private _formatTraceId;
|
|
37
|
+
private _formatSpanId;
|
|
38
|
+
private _spanToDict;
|
|
39
|
+
clear(): void;
|
|
40
|
+
shutdown(): Promise<void>;
|
|
41
|
+
forceFlush(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=memory-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-exporter.d.ts","sourceRoot":"","sources":["../src/memory-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAKlE,QAAQ,IAAI,YAAY,EAAE;IAI1B,eAAe,IAAI,QAAQ,EAAE;IAI7B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;IAO9C,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAkDnB,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemorySpanExporter = void 0;
|
|
4
|
+
const core_1 = require("@opentelemetry/core");
|
|
5
|
+
/**
|
|
6
|
+
* Span exporter that stores spans in memory for retrieval.
|
|
7
|
+
*/
|
|
8
|
+
class MemorySpanExporter {
|
|
9
|
+
_spans = [];
|
|
10
|
+
export(spans) {
|
|
11
|
+
this._spans.push(...spans);
|
|
12
|
+
return Promise.resolve({ code: core_1.ExportResultCode.SUCCESS });
|
|
13
|
+
}
|
|
14
|
+
getSpans() {
|
|
15
|
+
return [...this._spans];
|
|
16
|
+
}
|
|
17
|
+
getSpansAsDicts() {
|
|
18
|
+
return this._spans.map((span) => this._spanToDict(span));
|
|
19
|
+
}
|
|
20
|
+
getSpansByTraceId(traceId) {
|
|
21
|
+
const formattedTraceId = this._formatTraceId(traceId);
|
|
22
|
+
return this._spans
|
|
23
|
+
.map((span) => this._spanToDict(span))
|
|
24
|
+
.filter((span) => span.trace_id === formattedTraceId);
|
|
25
|
+
}
|
|
26
|
+
_formatTraceId(traceId) {
|
|
27
|
+
// Ensure trace ID is 32-character hex string
|
|
28
|
+
return traceId.padStart(32, "0").slice(0, 32);
|
|
29
|
+
}
|
|
30
|
+
_formatSpanId(spanId) {
|
|
31
|
+
// Ensure span ID is 16-character hex string
|
|
32
|
+
return spanId.padStart(16, "0").slice(0, 16);
|
|
33
|
+
}
|
|
34
|
+
_spanToDict(span) {
|
|
35
|
+
const spanCtx = span.spanContext();
|
|
36
|
+
const traceId = this._formatTraceId(spanCtx.traceId);
|
|
37
|
+
const spanId = this._formatSpanId(spanCtx.spanId);
|
|
38
|
+
const parentSpanId = span.parentSpanContext
|
|
39
|
+
? this._formatSpanId(span.parentSpanContext.spanId)
|
|
40
|
+
: null;
|
|
41
|
+
return {
|
|
42
|
+
timestamp: new Date().toISOString(),
|
|
43
|
+
trace_id: traceId,
|
|
44
|
+
span_id: spanId,
|
|
45
|
+
parent_span_id: parentSpanId,
|
|
46
|
+
name: span.name,
|
|
47
|
+
kind: span.kind.toString(),
|
|
48
|
+
start_time_ns: (BigInt(span.startTime[0]) * 1000000000n +
|
|
49
|
+
BigInt(span.startTime[1])).toString(),
|
|
50
|
+
end_time_ns: span.endTime
|
|
51
|
+
? (BigInt(span.endTime[0]) * 1000000000n +
|
|
52
|
+
BigInt(span.endTime[1])).toString()
|
|
53
|
+
: null,
|
|
54
|
+
duration_ms: span.endTime
|
|
55
|
+
? (span.endTime[0] - span.startTime[0]) * 1000 +
|
|
56
|
+
(span.endTime[1] - span.startTime[1]) / 1_000_000
|
|
57
|
+
: null,
|
|
58
|
+
attributes: span.attributes ? { ...span.attributes } : {},
|
|
59
|
+
status: span.status
|
|
60
|
+
? {
|
|
61
|
+
status_code: span.status.code.toString(),
|
|
62
|
+
description: span.status.message,
|
|
63
|
+
}
|
|
64
|
+
: null,
|
|
65
|
+
events: (span.events || []).map((event) => ({
|
|
66
|
+
name: event.name,
|
|
67
|
+
timestamp_ns: (BigInt(event.time[0]) * 1000000000n +
|
|
68
|
+
BigInt(event.time[1])).toString(),
|
|
69
|
+
attributes: event.attributes ? { ...event.attributes } : {},
|
|
70
|
+
})),
|
|
71
|
+
resource: span.resource?.attributes
|
|
72
|
+
? { ...span.resource.attributes }
|
|
73
|
+
: {},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
clear() {
|
|
77
|
+
this._spans.length = 0;
|
|
78
|
+
}
|
|
79
|
+
shutdown() {
|
|
80
|
+
return Promise.resolve();
|
|
81
|
+
}
|
|
82
|
+
forceFlush() {
|
|
83
|
+
return Promise.resolve();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.MemorySpanExporter = MemorySpanExporter;
|
|
87
|
+
//# sourceMappingURL=memory-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-exporter.js","sourceRoot":"","sources":["../src/memory-exporter.ts"],"names":[],"mappings":"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"}
|
package/dist/trace-runner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Tracer } from
|
|
1
|
+
import type { Tracer } from "./tracer";
|
|
2
2
|
export interface TraceData {
|
|
3
3
|
trace_id: string;
|
|
4
4
|
spans: Array<{
|
|
@@ -8,8 +8,8 @@ export interface TraceData {
|
|
|
8
8
|
parent_span_id: string | null;
|
|
9
9
|
name: string;
|
|
10
10
|
kind: string;
|
|
11
|
-
start_time_ns:
|
|
12
|
-
end_time_ns:
|
|
11
|
+
start_time_ns: string;
|
|
12
|
+
end_time_ns: string | null;
|
|
13
13
|
duration_ms: number | null;
|
|
14
14
|
attributes: Record<string, unknown>;
|
|
15
15
|
status: {
|
|
@@ -18,7 +18,7 @@ export interface TraceData {
|
|
|
18
18
|
} | null;
|
|
19
19
|
events: Array<{
|
|
20
20
|
name: string;
|
|
21
|
-
timestamp_ns:
|
|
21
|
+
timestamp_ns: string;
|
|
22
22
|
attributes: Record<string, unknown>;
|
|
23
23
|
}>;
|
|
24
24
|
resource: Record<string, unknown>;
|
|
@@ -56,6 +56,11 @@ export declare class TraceRunner {
|
|
|
56
56
|
* @returns Result of the callback
|
|
57
57
|
*/
|
|
58
58
|
run<T>(callback: () => Promise<T> | T): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Set the trace_id manually. This can be called after run() to explicitly set the trace.
|
|
61
|
+
* Normally not needed as record() will auto-detect from spans.
|
|
62
|
+
*/
|
|
63
|
+
setTraceId(traceId: string): void;
|
|
59
64
|
/**
|
|
60
65
|
* Export all spans and return the full trace with all child spans.
|
|
61
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-runner.d.ts","sourceRoot":"","sources":["../src/trace-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-runner.d.ts","sourceRoot":"","sources":["../src/trace-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,EAAE;YACN,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,GAAG,IAAI,CAAC;QACT,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC,CAAC;QACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAWlD;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA4BxD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;CAyCnC"}
|
package/dist/trace-runner.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TraceRunner = void 0;
|
|
4
|
-
const candidate_prompt_manager_1 = require("./candidate-prompt-manager");
|
|
5
4
|
/**
|
|
6
5
|
* Wrapper around Tracer that manages candidate prompts and tracks trace_id.
|
|
7
6
|
*
|
|
@@ -25,7 +24,8 @@ class TraceRunner {
|
|
|
25
24
|
_alreadyRecorded = false;
|
|
26
25
|
constructor(tracer, candidatePrompts) {
|
|
27
26
|
this._tracer = tracer;
|
|
28
|
-
|
|
27
|
+
// Use the tracer's CandidatePromptManager to ensure shared context
|
|
28
|
+
this._cpm = tracer.getCandidatePromptManager();
|
|
29
29
|
this._candidatePrompts = candidatePrompts ?? null;
|
|
30
30
|
this._traceId = undefined;
|
|
31
31
|
this._contextEntered = false;
|
|
@@ -42,22 +42,34 @@ class TraceRunner {
|
|
|
42
42
|
*/
|
|
43
43
|
async run(callback) {
|
|
44
44
|
if (this._alreadyRecorded) {
|
|
45
|
-
throw new Error(
|
|
45
|
+
throw new Error("Cannot enter context after record() has been called");
|
|
46
46
|
}
|
|
47
47
|
// Set up candidate prompts context
|
|
48
|
-
|
|
48
|
+
const result = await this._cpm.run(this._candidatePrompts, async () => {
|
|
49
49
|
this._contextEntered = true;
|
|
50
50
|
try {
|
|
51
|
-
|
|
52
|
-
// Capture trace_id from tracer after execution completes
|
|
53
|
-
this._traceId = this._tracer.getTraceId();
|
|
54
|
-
return result;
|
|
51
|
+
return await callback();
|
|
55
52
|
}
|
|
56
53
|
finally {
|
|
57
54
|
// Reset state when context exits
|
|
58
55
|
this._contextEntered = false;
|
|
59
56
|
}
|
|
60
57
|
});
|
|
58
|
+
// Capture trace_id from the most recent span after execution
|
|
59
|
+
await this._tracer.forceFlush();
|
|
60
|
+
const spans = this._tracer.getMemoryExporter().getSpansAsDicts();
|
|
61
|
+
if (spans.length > 0 && this._traceId === undefined) {
|
|
62
|
+
// Get trace_id from the most recently created span
|
|
63
|
+
this._traceId = spans[spans.length - 1].trace_id;
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set the trace_id manually. This can be called after run() to explicitly set the trace.
|
|
69
|
+
* Normally not needed as record() will auto-detect from spans.
|
|
70
|
+
*/
|
|
71
|
+
setTraceId(traceId) {
|
|
72
|
+
this._traceId = traceId;
|
|
61
73
|
}
|
|
62
74
|
/**
|
|
63
75
|
* Export all spans and return the full trace with all child spans.
|
|
@@ -67,19 +79,24 @@ class TraceRunner {
|
|
|
67
79
|
*/
|
|
68
80
|
async record() {
|
|
69
81
|
if (this._alreadyRecorded) {
|
|
70
|
-
throw new Error(
|
|
82
|
+
throw new Error("record() can only be called once per TraceRunner instance");
|
|
71
83
|
}
|
|
72
|
-
// Capture trace_id
|
|
84
|
+
// Capture trace_id if we haven't yet
|
|
73
85
|
if (this._traceId === undefined) {
|
|
74
|
-
|
|
86
|
+
// Try to get from any span in the exporter
|
|
87
|
+
const allSpans = this._tracer.getMemoryExporter().getSpansAsDicts();
|
|
88
|
+
if (allSpans.length > 0) {
|
|
89
|
+
// Get the most recent span's trace_id
|
|
90
|
+
this._traceId = allSpans[allSpans.length - 1].trace_id;
|
|
91
|
+
}
|
|
75
92
|
}
|
|
76
93
|
if (this._traceId === undefined) {
|
|
77
|
-
throw new Error(
|
|
94
|
+
throw new Error("trace_id could not be captured. Ensure spans are created within the context.");
|
|
78
95
|
}
|
|
79
96
|
// Force flush all pending spans
|
|
80
97
|
await this._tracer.forceFlush();
|
|
81
98
|
// Get all spans for this trace
|
|
82
|
-
const allSpans = this._tracer.getSpansAsDicts();
|
|
99
|
+
const allSpans = this._tracer.getMemoryExporter().getSpansAsDicts();
|
|
83
100
|
// Filter spans to only include those matching the trace_id
|
|
84
101
|
const traceSpans = allSpans.filter((span) => span.trace_id === this._traceId);
|
|
85
102
|
this._alreadyRecorded = true;
|
package/dist/trace-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-runner.js","sourceRoot":"","sources":["../src/trace-runner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"trace-runner.js","sourceRoot":"","sources":["../src/trace-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/tracer.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type Span } from "@opentelemetry/api";
|
|
2
2
|
import type { SpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
3
|
-
import { ReadableSpan } from "@opentelemetry/sdk-trace-base";
|
|
4
3
|
import { CandidatePromptManager } from "./candidate-prompt-manager";
|
|
5
4
|
import { MemorySpanExporter } from "./exporter";
|
|
6
5
|
type AnyFunction<TArgs extends unknown[] = unknown[], TReturn = unknown> = (...args: TArgs) => TReturn;
|
|
@@ -19,9 +18,9 @@ export declare class Tracer {
|
|
|
19
18
|
private readonly _tracer;
|
|
20
19
|
private readonly _cpm;
|
|
21
20
|
private readonly _memoryExporter;
|
|
21
|
+
private readonly _provider;
|
|
22
22
|
private readonly _currentPromptSpan;
|
|
23
23
|
private readonly _llmStartTime;
|
|
24
|
-
private readonly _traceId;
|
|
25
24
|
constructor(serviceName: string, exporter?: SpanExporter, candidatePromptManager?: CandidatePromptManager);
|
|
26
25
|
/**
|
|
27
26
|
* Wraps a function to trace it as a span.
|
|
@@ -117,7 +116,7 @@ export declare class Tracer {
|
|
|
117
116
|
*/
|
|
118
117
|
addEvent(eventName: string, attributes?: Record<string, string | number | boolean>): void;
|
|
119
118
|
/**
|
|
120
|
-
* Get the trace_id from the current
|
|
119
|
+
* Get the trace_id from the current active span.
|
|
121
120
|
*
|
|
122
121
|
* @returns trace_id as a 32-character hexadecimal string, or undefined if not available
|
|
123
122
|
*/
|
|
@@ -131,17 +130,23 @@ export declare class Tracer {
|
|
|
131
130
|
*/
|
|
132
131
|
forceFlush(): Promise<void>;
|
|
133
132
|
/**
|
|
134
|
-
* Get
|
|
133
|
+
* Get the candidate prompt manager instance.
|
|
135
134
|
*
|
|
136
|
-
* @returns
|
|
135
|
+
* @returns The CandidatePromptManager instance used by this tracer
|
|
137
136
|
*/
|
|
138
|
-
|
|
137
|
+
getCandidatePromptManager(): CandidatePromptManager;
|
|
139
138
|
/**
|
|
140
|
-
* Get
|
|
139
|
+
* Get the memory exporter instance.
|
|
140
|
+
* This is used internally by TraceRunner to access collected spans.
|
|
141
141
|
*
|
|
142
|
-
* @returns
|
|
142
|
+
* @returns The MemorySpanExporter instance
|
|
143
143
|
*/
|
|
144
|
-
|
|
144
|
+
getMemoryExporter(): MemorySpanExporter;
|
|
145
|
+
/**
|
|
146
|
+
* Clear all spans from memory exporter.
|
|
147
|
+
* Useful for cleaning up between test runs.
|
|
148
|
+
*/
|
|
149
|
+
clearSpans(): void;
|
|
145
150
|
}
|
|
146
151
|
export {};
|
|
147
152
|
//# sourceMappingURL=tracer.d.ts.map
|
package/dist/tracer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,IAAI,EAAyB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,IAAI,EAAyB,MAAM,oBAAoB,CAAC;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAQlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKhD,KAAK,WAAW,CAAC,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAAI,CACzE,GAAG,IAAI,EAAE,KAAK,KACX,OAAO,CAAC;AAEb;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAC9E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6C;gBAGzE,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,YAAY,EACvB,sBAAsB,CAAC,EAAE,sBAAsB;IAgDjD;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACnC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAChC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IAsE9B;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAsClB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CACT,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,IAAI,CAAC;QACX,GAAG,EAAE,MAAM,IAAI,CAAC;KACjB;IAuCD;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI;IAqCP;;;;OAIG;IACH,cAAc,IAAI,IAAI,GAAG,SAAS;IAKlC;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAkB9C;;;;;;;;OAQG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,IAAI;IAOP;;;;OAIG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAQhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;OAIG;IACH,yBAAyB,IAAI,sBAAsB;IAInD;;;;;OAKG;IACH,iBAAiB,IAAI,kBAAkB;IAIvC;;;OAGG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|
package/dist/tracer.js
CHANGED
|
@@ -5,12 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Tracer = exports.SpanType = void 0;
|
|
7
7
|
const api_1 = require("@opentelemetry/api");
|
|
8
|
+
const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
|
|
8
9
|
const resources_1 = require("@opentelemetry/resources");
|
|
9
10
|
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
10
11
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
11
12
|
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
12
13
|
const candidate_prompt_manager_1 = require("./candidate-prompt-manager");
|
|
13
14
|
const exporter_1 = require("./exporter");
|
|
15
|
+
// Track if global context manager has been initialized
|
|
16
|
+
let globalContextManagerInitialized = false;
|
|
14
17
|
/**
|
|
15
18
|
* Span type for tracing different kinds of operations.
|
|
16
19
|
*/
|
|
@@ -27,31 +30,45 @@ class Tracer {
|
|
|
27
30
|
_tracer;
|
|
28
31
|
_cpm;
|
|
29
32
|
_memoryExporter;
|
|
33
|
+
_provider;
|
|
30
34
|
_currentPromptSpan;
|
|
31
35
|
_llmStartTime;
|
|
32
|
-
_traceId;
|
|
33
36
|
constructor(serviceName, exporter, candidatePromptManager) {
|
|
34
37
|
const resource = resources_1.Resource.default().merge(new resources_1.Resource({
|
|
35
38
|
"service.name": serviceName,
|
|
36
39
|
}));
|
|
37
|
-
//
|
|
40
|
+
// Always create a memory exporter for TraceRunner to use
|
|
38
41
|
this._memoryExporter = new exporter_1.MemorySpanExporter();
|
|
39
42
|
// Prepare span processors
|
|
40
|
-
const spanProcessors = [
|
|
43
|
+
const spanProcessors = [
|
|
44
|
+
new sdk_trace_base_1.SimpleSpanProcessor(this._memoryExporter),
|
|
45
|
+
];
|
|
41
46
|
if (exporter) {
|
|
42
|
-
spanProcessors.push(new sdk_trace_base_1.
|
|
47
|
+
spanProcessors.push(new sdk_trace_base_1.SimpleSpanProcessor(exporter));
|
|
43
48
|
}
|
|
44
|
-
|
|
49
|
+
// Set up context manager for async context propagation (only once globally)
|
|
50
|
+
if (!globalContextManagerInitialized) {
|
|
51
|
+
const contextManager = new context_async_hooks_1.AsyncLocalStorageContextManager();
|
|
52
|
+
contextManager.enable();
|
|
53
|
+
api_1.context.setGlobalContextManager(contextManager);
|
|
54
|
+
globalContextManagerInitialized = true;
|
|
55
|
+
}
|
|
56
|
+
// Create provider with span processors
|
|
57
|
+
this._provider = new sdk_trace_base_1.BasicTracerProvider({
|
|
45
58
|
resource,
|
|
46
59
|
spanProcessors,
|
|
47
60
|
});
|
|
48
|
-
|
|
49
|
-
|
|
61
|
+
// Register provider globally (this will overwrite any previous registration,
|
|
62
|
+
// but we use the provider's getTracer method directly to ensure spans go to
|
|
63
|
+
// this provider's processors)
|
|
64
|
+
this._provider.register();
|
|
65
|
+
// Use the provider's getTracer method directly to ensure spans are processed
|
|
66
|
+
// by this provider's span processors (including this tracer's memory exporter)
|
|
67
|
+
this._tracer = this._provider.getTracer(serviceName);
|
|
50
68
|
this._cpm = candidatePromptManager ?? new candidate_prompt_manager_1.CandidatePromptManager();
|
|
51
69
|
// Context-local state for prompt spans and timing
|
|
52
70
|
this._currentPromptSpan = new node_async_hooks_1.AsyncLocalStorage();
|
|
53
71
|
this._llmStartTime = new node_async_hooks_1.AsyncLocalStorage();
|
|
54
|
-
this._traceId = new node_async_hooks_1.AsyncLocalStorage();
|
|
55
72
|
}
|
|
56
73
|
/**
|
|
57
74
|
* Wraps a function to trace it as a span.
|
|
@@ -62,18 +79,10 @@ class Tracer {
|
|
|
62
79
|
*/
|
|
63
80
|
wrap(spanType, func) {
|
|
64
81
|
const wrapped = ((...args) => {
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
if (spanContext.traceFlags !== undefined) {
|
|
70
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
71
|
-
// Store trace ID in async context for later retrieval
|
|
72
|
-
const currentStore = this._traceId.getStore();
|
|
73
|
-
if (!currentStore) {
|
|
74
|
-
this._traceId.enterWith({ traceId });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
82
|
+
// Capture the current context so the span inherits the parent's trace_id
|
|
83
|
+
const currentContext = api_1.context.active();
|
|
84
|
+
const span = this._tracer.startSpan(func.name, undefined, currentContext);
|
|
85
|
+
const activeContext = api_1.trace.setSpan(currentContext, span);
|
|
77
86
|
span.setAttribute("span.type", spanType);
|
|
78
87
|
span.setAttribute("function.name", func.name);
|
|
79
88
|
// Add input metadata for agent spans
|
|
@@ -153,18 +162,9 @@ class Tracer {
|
|
|
153
162
|
* @returns Promise that resolves to the rendered prompt
|
|
154
163
|
*/
|
|
155
164
|
async prompt(promptName, promptTemplate, inputVars) {
|
|
156
|
-
const
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
const spanContext = span.spanContext();
|
|
160
|
-
if (spanContext.traceFlags !== undefined) {
|
|
161
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
162
|
-
// Store trace ID in async context for later retrieval
|
|
163
|
-
const currentStore = this._traceId.getStore();
|
|
164
|
-
if (!currentStore) {
|
|
165
|
-
this._traceId.enterWith({ traceId });
|
|
166
|
-
}
|
|
167
|
-
}
|
|
165
|
+
const currentContext = api_1.context.active();
|
|
166
|
+
const span = this._tracer.startSpan(promptName, undefined, currentContext);
|
|
167
|
+
const activeContext = api_1.trace.setSpan(currentContext, span);
|
|
168
168
|
span.setAttribute("span.type", "prompt");
|
|
169
169
|
span.setAttribute("prompt.name", promptName);
|
|
170
170
|
span.setAttribute("prompt.template", promptTemplate);
|
|
@@ -205,18 +205,9 @@ class Tracer {
|
|
|
205
205
|
* @returns Object with renderedPrompt and end() method
|
|
206
206
|
*/
|
|
207
207
|
startPrompt(promptName, promptTemplate, inputVars) {
|
|
208
|
-
const
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
const spanContext = span.spanContext();
|
|
212
|
-
if (spanContext.traceFlags !== undefined) {
|
|
213
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
214
|
-
// Store trace ID in async context for later retrieval
|
|
215
|
-
const currentStore = this._traceId.getStore();
|
|
216
|
-
if (!currentStore) {
|
|
217
|
-
this._traceId.enterWith({ traceId });
|
|
218
|
-
}
|
|
219
|
-
}
|
|
208
|
+
const currentContext = api_1.context.active();
|
|
209
|
+
const span = this._tracer.startSpan(promptName, undefined, currentContext);
|
|
210
|
+
const activeContext = api_1.trace.setSpan(currentContext, span);
|
|
220
211
|
span.setAttribute("span.type", "prompt");
|
|
221
212
|
span.setAttribute("prompt.name", promptName);
|
|
222
213
|
span.setAttribute("prompt.template", promptTemplate);
|
|
@@ -334,13 +325,16 @@ class Tracer {
|
|
|
334
325
|
}
|
|
335
326
|
}
|
|
336
327
|
/**
|
|
337
|
-
* Get the trace_id from the current
|
|
328
|
+
* Get the trace_id from the current active span.
|
|
338
329
|
*
|
|
339
330
|
* @returns trace_id as a 32-character hexadecimal string, or undefined if not available
|
|
340
331
|
*/
|
|
341
332
|
getTraceId() {
|
|
342
|
-
const
|
|
343
|
-
|
|
333
|
+
const span = this.getCurrentSpan();
|
|
334
|
+
if (span) {
|
|
335
|
+
return this._formatTraceId(span.spanContext().traceId);
|
|
336
|
+
}
|
|
337
|
+
return undefined;
|
|
344
338
|
}
|
|
345
339
|
/**
|
|
346
340
|
* Helper to format trace ID as 32-character hex string.
|
|
@@ -353,26 +347,31 @@ class Tracer {
|
|
|
353
347
|
* Force flush all pending spans.
|
|
354
348
|
*/
|
|
355
349
|
async forceFlush() {
|
|
356
|
-
|
|
357
|
-
if ("forceFlush" in provider) {
|
|
358
|
-
await provider.forceFlush();
|
|
359
|
-
}
|
|
350
|
+
await this._provider.forceFlush();
|
|
360
351
|
}
|
|
361
352
|
/**
|
|
362
|
-
* Get
|
|
353
|
+
* Get the candidate prompt manager instance.
|
|
363
354
|
*
|
|
364
|
-
* @returns
|
|
355
|
+
* @returns The CandidatePromptManager instance used by this tracer
|
|
365
356
|
*/
|
|
366
|
-
|
|
367
|
-
return this.
|
|
357
|
+
getCandidatePromptManager() {
|
|
358
|
+
return this._cpm;
|
|
368
359
|
}
|
|
369
360
|
/**
|
|
370
|
-
* Get
|
|
361
|
+
* Get the memory exporter instance.
|
|
362
|
+
* This is used internally by TraceRunner to access collected spans.
|
|
371
363
|
*
|
|
372
|
-
* @returns
|
|
364
|
+
* @returns The MemorySpanExporter instance
|
|
365
|
+
*/
|
|
366
|
+
getMemoryExporter() {
|
|
367
|
+
return this._memoryExporter;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Clear all spans from memory exporter.
|
|
371
|
+
* Useful for cleaning up between test runs.
|
|
373
372
|
*/
|
|
374
|
-
|
|
375
|
-
|
|
373
|
+
clearSpans() {
|
|
374
|
+
this._memoryExporter.clear();
|
|
376
375
|
}
|
|
377
376
|
}
|
|
378
377
|
exports.Tracer = Tracer;
|
package/dist/tracer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+E;AAC/E,wDAAoD;AAEpD,
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uselemma/tracing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "OpenTelemetry-based tracing module for Lemma",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Lemma",
|
|
@@ -32,9 +32,10 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@opentelemetry/api": "^1.9.0",
|
|
35
|
+
"@opentelemetry/context-async-hooks": "^2.2.0",
|
|
35
36
|
"@opentelemetry/core": "^2.2.0",
|
|
36
|
-
"@opentelemetry/resources": "^
|
|
37
|
-
"@opentelemetry/sdk-trace-base": "^
|
|
37
|
+
"@opentelemetry/resources": "^2.2.0",
|
|
38
|
+
"@opentelemetry/sdk-trace-base": "^2.2.0",
|
|
38
39
|
"nunjucks": "^3.2.4"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|