@uselemma/tracing 0.3.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 -84
- 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 +8 -3
- package/dist/trace-runner.d.ts.map +1 -1
- package/dist/trace-runner.js +25 -8
- package/dist/trace-runner.js.map +1 -1
- package/dist/tracer.d.ts +11 -13
- package/dist/tracer.d.ts.map +1 -1
- package/dist/tracer.js +46 -57
- 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,113 +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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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();
|
|
32
|
+
|
|
33
|
+
// Later, retrieve spans
|
|
34
|
+
const allSpans = memoryExporter.getSpans();
|
|
35
|
+
const spansAsDicts = memoryExporter.getSpansAsDicts();
|
|
36
|
+
const traceSpans = memoryExporter.getSpansByTraceId("your-trace-id");
|
|
43
37
|
|
|
44
|
-
//
|
|
45
|
-
|
|
46
|
-
console.log(traceData.trace_id);
|
|
47
|
-
console.log(traceData.spans);
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
tracer.addEvent("event-name", { data: "value" });
|
|
60
|
-
```
|
|
52
|
+
### CandidatePromptManager
|
|
53
|
+
|
|
54
|
+
Manages prompt template overrides using AsyncLocalStorage for context-local state. Useful for A/B testing or evaluating different prompt variations.
|
|
61
55
|
|
|
62
|
-
|
|
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
|
-
|
|
91
|
+
## Example: Dual Processor Setup
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
- `SpanType.NODE` - For node operations
|
|
91
|
-
- `SpanType.TOOL` - For tool operations
|
|
93
|
+
Use `MemorySpanExporter` alongside other exporters to both send traces to your backend and capture them locally:
|
|
92
94
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
+
});
|
|
105
109
|
|
|
106
|
-
|
|
110
|
+
sdk.start();
|
|
107
111
|
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
// In your application code
|
|
113
|
+
import { memoryExporter } from "./instrumentation";
|
|
110
114
|
|
|
111
|
-
|
|
115
|
+
function myTracedFunction() {
|
|
116
|
+
// ... your code ...
|
|
112
117
|
|
|
113
|
-
|
|
114
|
-
|
|
118
|
+
// Access spans programmatically
|
|
119
|
+
const allSpans = memoryExporter.getSpansAsDicts();
|
|
120
|
+
const myTrace = memoryExporter.getSpansByTraceId(currentTraceId);
|
|
121
|
+
}
|
|
122
|
+
```
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
## License
|
|
117
125
|
|
|
118
|
-
|
|
119
|
-
- `getSpansAsDicts(): SpanDict[]` - Get all stored spans as dictionaries
|
|
120
|
-
- `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
|
@@ -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
|
@@ -45,19 +45,31 @@ class TraceRunner {
|
|
|
45
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.
|
|
@@ -69,9 +81,14 @@ class TraceRunner {
|
|
|
69
81
|
if (this._alreadyRecorded) {
|
|
70
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
94
|
throw new Error("trace_id could not be captured. Ensure spans are created within the context.");
|
|
@@ -79,7 +96,7 @@ class TraceRunner {
|
|
|
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;
|
|
@@ -22,7 +21,6 @@ export declare class Tracer {
|
|
|
22
21
|
private readonly _provider;
|
|
23
22
|
private readonly _currentPromptSpan;
|
|
24
23
|
private readonly _llmStartTime;
|
|
25
|
-
private readonly _traceId;
|
|
26
24
|
constructor(serviceName: string, exporter?: SpanExporter, candidatePromptManager?: CandidatePromptManager);
|
|
27
25
|
/**
|
|
28
26
|
* Wraps a function to trace it as a span.
|
|
@@ -118,7 +116,7 @@ export declare class Tracer {
|
|
|
118
116
|
*/
|
|
119
117
|
addEvent(eventName: string, attributes?: Record<string, string | number | boolean>): void;
|
|
120
118
|
/**
|
|
121
|
-
* Get the trace_id from the current
|
|
119
|
+
* Get the trace_id from the current active span.
|
|
122
120
|
*
|
|
123
121
|
* @returns trace_id as a 32-character hexadecimal string, or undefined if not available
|
|
124
122
|
*/
|
|
@@ -132,23 +130,23 @@ export declare class Tracer {
|
|
|
132
130
|
*/
|
|
133
131
|
forceFlush(): Promise<void>;
|
|
134
132
|
/**
|
|
135
|
-
* Get
|
|
133
|
+
* Get the candidate prompt manager instance.
|
|
136
134
|
*
|
|
137
|
-
* @returns
|
|
135
|
+
* @returns The CandidatePromptManager instance used by this tracer
|
|
138
136
|
*/
|
|
139
|
-
|
|
137
|
+
getCandidatePromptManager(): CandidatePromptManager;
|
|
140
138
|
/**
|
|
141
|
-
* Get
|
|
139
|
+
* Get the memory exporter instance.
|
|
140
|
+
* This is used internally by TraceRunner to access collected spans.
|
|
142
141
|
*
|
|
143
|
-
* @returns
|
|
142
|
+
* @returns The MemorySpanExporter instance
|
|
144
143
|
*/
|
|
145
|
-
|
|
144
|
+
getMemoryExporter(): MemorySpanExporter;
|
|
146
145
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* @returns The CandidatePromptManager instance used by this tracer
|
|
146
|
+
* Clear all spans from memory exporter.
|
|
147
|
+
* Useful for cleaning up between test runs.
|
|
150
148
|
*/
|
|
151
|
-
|
|
149
|
+
clearSpans(): void;
|
|
152
150
|
}
|
|
153
151
|
export {};
|
|
154
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
|
*/
|
|
@@ -30,12 +33,11 @@ class Tracer {
|
|
|
30
33
|
_provider;
|
|
31
34
|
_currentPromptSpan;
|
|
32
35
|
_llmStartTime;
|
|
33
|
-
_traceId;
|
|
34
36
|
constructor(serviceName, exporter, candidatePromptManager) {
|
|
35
37
|
const resource = resources_1.Resource.default().merge(new resources_1.Resource({
|
|
36
38
|
"service.name": serviceName,
|
|
37
39
|
}));
|
|
38
|
-
//
|
|
40
|
+
// Always create a memory exporter for TraceRunner to use
|
|
39
41
|
this._memoryExporter = new exporter_1.MemorySpanExporter();
|
|
40
42
|
// Prepare span processors
|
|
41
43
|
const spanProcessors = [
|
|
@@ -44,19 +46,29 @@ class Tracer {
|
|
|
44
46
|
if (exporter) {
|
|
45
47
|
spanProcessors.push(new sdk_trace_base_1.SimpleSpanProcessor(exporter));
|
|
46
48
|
}
|
|
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
|
+
}
|
|
47
56
|
// Create provider with span processors
|
|
48
57
|
this._provider = new sdk_trace_base_1.BasicTracerProvider({
|
|
49
58
|
resource,
|
|
50
59
|
spanProcessors,
|
|
51
60
|
});
|
|
52
|
-
// Register provider globally
|
|
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)
|
|
53
64
|
this._provider.register();
|
|
54
|
-
|
|
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);
|
|
55
68
|
this._cpm = candidatePromptManager ?? new candidate_prompt_manager_1.CandidatePromptManager();
|
|
56
69
|
// Context-local state for prompt spans and timing
|
|
57
70
|
this._currentPromptSpan = new node_async_hooks_1.AsyncLocalStorage();
|
|
58
71
|
this._llmStartTime = new node_async_hooks_1.AsyncLocalStorage();
|
|
59
|
-
this._traceId = new node_async_hooks_1.AsyncLocalStorage();
|
|
60
72
|
}
|
|
61
73
|
/**
|
|
62
74
|
* Wraps a function to trace it as a span.
|
|
@@ -67,18 +79,10 @@ class Tracer {
|
|
|
67
79
|
*/
|
|
68
80
|
wrap(spanType, func) {
|
|
69
81
|
const wrapped = ((...args) => {
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
if (spanContext.traceFlags !== undefined) {
|
|
75
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
76
|
-
// Store trace ID in async context for later retrieval
|
|
77
|
-
const currentStore = this._traceId.getStore();
|
|
78
|
-
if (!currentStore) {
|
|
79
|
-
this._traceId.enterWith({ traceId });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
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);
|
|
82
86
|
span.setAttribute("span.type", spanType);
|
|
83
87
|
span.setAttribute("function.name", func.name);
|
|
84
88
|
// Add input metadata for agent spans
|
|
@@ -158,18 +162,9 @@ class Tracer {
|
|
|
158
162
|
* @returns Promise that resolves to the rendered prompt
|
|
159
163
|
*/
|
|
160
164
|
async prompt(promptName, promptTemplate, inputVars) {
|
|
161
|
-
const
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
const spanContext = span.spanContext();
|
|
165
|
-
if (spanContext.traceFlags !== undefined) {
|
|
166
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
167
|
-
// Store trace ID in async context for later retrieval
|
|
168
|
-
const currentStore = this._traceId.getStore();
|
|
169
|
-
if (!currentStore) {
|
|
170
|
-
this._traceId.enterWith({ traceId });
|
|
171
|
-
}
|
|
172
|
-
}
|
|
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);
|
|
173
168
|
span.setAttribute("span.type", "prompt");
|
|
174
169
|
span.setAttribute("prompt.name", promptName);
|
|
175
170
|
span.setAttribute("prompt.template", promptTemplate);
|
|
@@ -210,18 +205,9 @@ class Tracer {
|
|
|
210
205
|
* @returns Object with renderedPrompt and end() method
|
|
211
206
|
*/
|
|
212
207
|
startPrompt(promptName, promptTemplate, inputVars) {
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
const spanContext = span.spanContext();
|
|
217
|
-
if (spanContext.traceFlags !== undefined) {
|
|
218
|
-
const traceId = this._formatTraceId(spanContext.traceId);
|
|
219
|
-
// Store trace ID in async context for later retrieval
|
|
220
|
-
const currentStore = this._traceId.getStore();
|
|
221
|
-
if (!currentStore) {
|
|
222
|
-
this._traceId.enterWith({ traceId });
|
|
223
|
-
}
|
|
224
|
-
}
|
|
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);
|
|
225
211
|
span.setAttribute("span.type", "prompt");
|
|
226
212
|
span.setAttribute("prompt.name", promptName);
|
|
227
213
|
span.setAttribute("prompt.template", promptTemplate);
|
|
@@ -339,13 +325,16 @@ class Tracer {
|
|
|
339
325
|
}
|
|
340
326
|
}
|
|
341
327
|
/**
|
|
342
|
-
* Get the trace_id from the current
|
|
328
|
+
* Get the trace_id from the current active span.
|
|
343
329
|
*
|
|
344
330
|
* @returns trace_id as a 32-character hexadecimal string, or undefined if not available
|
|
345
331
|
*/
|
|
346
332
|
getTraceId() {
|
|
347
|
-
const
|
|
348
|
-
|
|
333
|
+
const span = this.getCurrentSpan();
|
|
334
|
+
if (span) {
|
|
335
|
+
return this._formatTraceId(span.spanContext().traceId);
|
|
336
|
+
}
|
|
337
|
+
return undefined;
|
|
349
338
|
}
|
|
350
339
|
/**
|
|
351
340
|
* Helper to format trace ID as 32-character hex string.
|
|
@@ -361,28 +350,28 @@ class Tracer {
|
|
|
361
350
|
await this._provider.forceFlush();
|
|
362
351
|
}
|
|
363
352
|
/**
|
|
364
|
-
* Get
|
|
353
|
+
* Get the candidate prompt manager instance.
|
|
365
354
|
*
|
|
366
|
-
* @returns
|
|
355
|
+
* @returns The CandidatePromptManager instance used by this tracer
|
|
367
356
|
*/
|
|
368
|
-
|
|
369
|
-
return this.
|
|
357
|
+
getCandidatePromptManager() {
|
|
358
|
+
return this._cpm;
|
|
370
359
|
}
|
|
371
360
|
/**
|
|
372
|
-
* Get
|
|
361
|
+
* Get the memory exporter instance.
|
|
362
|
+
* This is used internally by TraceRunner to access collected spans.
|
|
373
363
|
*
|
|
374
|
-
* @returns
|
|
364
|
+
* @returns The MemorySpanExporter instance
|
|
375
365
|
*/
|
|
376
|
-
|
|
377
|
-
return this._memoryExporter
|
|
366
|
+
getMemoryExporter() {
|
|
367
|
+
return this._memoryExporter;
|
|
378
368
|
}
|
|
379
369
|
/**
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
* @returns The CandidatePromptManager instance used by this tracer
|
|
370
|
+
* Clear all spans from memory exporter.
|
|
371
|
+
* Useful for cleaning up between test runs.
|
|
383
372
|
*/
|
|
384
|
-
|
|
385
|
-
|
|
373
|
+
clearSpans() {
|
|
374
|
+
this._memoryExporter.clear();
|
|
386
375
|
}
|
|
387
376
|
}
|
|
388
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": {
|