@insightfactory.ai/insightfactory-databricks-langgraph-tracer 1.0.0 → 1.0.1-dev.18
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/CHANGELOG.md +49 -1
- package/README.md +149 -77
- package/dist/active-span.d.ts +42 -0
- package/dist/active-span.d.ts.map +1 -0
- package/dist/active-span.js +115 -0
- package/dist/active-span.js.map +1 -0
- package/dist/databricks-tracer.d.ts +9 -1
- package/dist/databricks-tracer.d.ts.map +1 -1
- package/dist/databricks-tracer.js +17 -0
- package/dist/databricks-tracer.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -20,6 +20,53 @@ prerelease from this section.
|
|
|
20
20
|
|
|
21
21
|
## [Unreleased]
|
|
22
22
|
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- `getActiveTracingSpan()` and `withTracingContext()`, so a span created outside the
|
|
26
|
+
tracer joins the running graph's trace instead of opening its own root trace
|
|
27
|
+
(#52, #55).
|
|
28
|
+
A helper traced with MLflow's `startSpan` or `withSpan` previously produced one
|
|
29
|
+
extra root trace per call, carrying none of the root tags, session metadata or cost
|
|
30
|
+
rollup. Use `getActiveTracingSpan()` as the `parent` of a `startSpan` call, or wrap
|
|
31
|
+
`withSpan` and `trace` code in `withTracingContext()`, which read the active context
|
|
32
|
+
and ignore a `parent` option. The Python package does this ambiently; Node has no
|
|
33
|
+
equivalent, because LangChain runs callbacks inside `asyncLocalStorage.run(undefined,
|
|
34
|
+
…)` and a store entered there cannot reach the node body.
|
|
35
|
+
The same context fallback works in reverse and costs something: a graph invoked
|
|
36
|
+
from inside a `withSpan` block nests into that block's trace, so the graph's root
|
|
37
|
+
tags, session metadata and cost rollup are written there, and two graphs under one
|
|
38
|
+
block overwrite each other's session id and cost figures. Issue #56 tracks making
|
|
39
|
+
the rollup additive. The Python package creates its root span without consulting
|
|
40
|
+
the context, so it does not nest this way.
|
|
41
|
+
- `getSpanForRun(runId)` on `DatabricksLangGraphTracer`, the low-level route the two
|
|
42
|
+
helpers above use to read a single span without the run map becoming public state.
|
|
43
|
+
Application code should call `getActiveTracingSpan()`, which resolves the running
|
|
44
|
+
node's id for you.
|
|
45
|
+
- `@opentelemetry/api` as a direct dependency. It was already present transitively and
|
|
46
|
+
is now imported directly by `withTracingContext`.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- The tracer now awaits its own callbacks instead of leaving them on LangChain's
|
|
51
|
+
background queue. A node's span is therefore recorded before the node body runs.
|
|
52
|
+
Without it a parallel branch could reach `getActiveTracingSpan()` before its own
|
|
53
|
+
run had been recorded, and its spans fell out of the graph trace. It also moves
|
|
54
|
+
the tracer's per-run work onto the graph's critical path, ahead of each node body,
|
|
55
|
+
rather than alongside it on the queue. That work is in-memory only, so the cost is
|
|
56
|
+
the ordering rather than the duration. This tracer's own callbacks are awaited
|
|
57
|
+
whatever `LANGCHAIN_CALLBACKS_BACKGROUND` is set to; other handlers still follow
|
|
58
|
+
that variable.
|
|
59
|
+
|
|
60
|
+
## [1.0.1] - 2026-09-03
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- Rewrote the README that npm renders in plainer prose. Commands, code samples
|
|
65
|
+
and configuration tables are unchanged, so there is no behaviour or packaging
|
|
66
|
+
change.
|
|
67
|
+
- Corrected the truncation placeholder example, which showed a trailing ellipsis
|
|
68
|
+
in `preview`. The tracer stores a plain slice of the original string.
|
|
69
|
+
|
|
23
70
|
## [1.0.0] - 2026-09-02
|
|
24
71
|
### Changed
|
|
25
72
|
- Renamed the npm package from `@insightfactory-ai/databricks-langgraph-tracer` to
|
|
@@ -162,7 +209,8 @@ reserved by the repo's immutable-releases policy and cannot be created. Restore
|
|
|
162
209
|
typescript-vX.Y.Z tag links if the names are ever reclaimed. 0.5.0's tag is
|
|
163
210
|
created out-of-band (its bump predates the release workflow); 0.5.1+ tags are
|
|
164
211
|
minted by release.yml on push to main. -->
|
|
165
|
-
[Unreleased]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v1.0.
|
|
212
|
+
[Unreleased]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v1.0.1...HEAD
|
|
213
|
+
[1.0.1]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v1.0.0...typescript-v1.0.1
|
|
166
214
|
[1.0.0]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v0.6.2...typescript-v1.0.0
|
|
167
215
|
[0.6.2]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v0.6.1...typescript-v0.6.2
|
|
168
216
|
[0.6.1]: https://github.com/insightfactory-ai/if_s_langraph_mlflow_tracer/compare/typescript-v0.6.0...typescript-v0.6.1
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @insightfactory.ai/insightfactory-databricks-langgraph-tracer
|
|
2
2
|
|
|
3
|
-
LangGraph tracer for Databricks MLflow
|
|
3
|
+
LangGraph tracer for Databricks MLflow, in TypeScript. It uses a custom `@mlflow/core`
|
|
4
4
|
`BaseTracer` to write trace fields, token usage, and a cost rollup on the live trace before
|
|
5
5
|
the root span ends.
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ yarn add @insightfactory.ai/insightfactory-databricks-langgraph-tracer
|
|
|
13
13
|
# or: npm install @insightfactory.ai/insightfactory-databricks-langgraph-tracer
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
ESM-only. Install the runtime peer dependencies alongside it: `@langchain/core
|
|
16
|
+
ESM-only. Install the runtime peer dependencies alongside it: `@langchain/core` and
|
|
17
17
|
`@mlflow/core`.
|
|
18
18
|
|
|
19
19
|
## Quickstart
|
|
@@ -33,40 +33,38 @@ await graph.invoke(state, { callbacks: getTracingCallbacks() });
|
|
|
33
33
|
|
|
34
34
|
## Configuration
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Environment variables are read first. `InitOptions` override the matching variable.
|
|
37
37
|
|
|
38
38
|
| Setting | Env var | Notes |
|
|
39
39
|
|---------|---------|-------|
|
|
40
|
-
| Tracking URI | `MLFLOW_TRACKING_URI` | `databricks` or `databricks://<profile
|
|
41
|
-
| Experiment | `MLFLOW_EXPERIMENT_ID` |
|
|
42
|
-
| Source tag |
|
|
43
|
-
| Multimodal refs |
|
|
44
|
-
| Text cap | `DATABRICKS_TRACING_MAX_STRING_CHARS` |
|
|
45
|
-
| Disable | `TESTING`
|
|
46
|
-
|
|
47
|
-
Missing required config
|
|
48
|
-
explicitly for local
|
|
49
|
-
same configuration
|
|
50
|
-
|
|
51
|
-
### Multimodal inputs (image
|
|
52
|
-
|
|
53
|
-
Chat-model spans record their inputs as
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
The inline base64 of each such part is
|
|
58
|
-
before recording and
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
image was loaded from, so it can be re-fetched at runtime — pass a
|
|
69
|
-
`contentRefResolver`:
|
|
40
|
+
| Tracking URI | `MLFLOW_TRACKING_URI` | `databricks` or `databricks://<profile>`. Required. |
|
|
41
|
+
| Experiment | `MLFLOW_EXPERIMENT_ID` | By id only. Required. |
|
|
42
|
+
| Source tag | none | `source` option, default `langgraph` |
|
|
43
|
+
| Multimodal refs | none | Inline image, PDF and file bytes become a reference. `contentRefResolver` chooses it. See below. |
|
|
44
|
+
| Text cap | `DATABRICKS_TRACING_MAX_STRING_CHARS` | Opt-in. `maxStringChars` truncates long plain-text span content. See below. |
|
|
45
|
+
| Disable | `TESTING` or `BUILDING` set to `true`, or `enabled: false` | Turns the tracer into a no-op. This is the only path that does not throw. |
|
|
46
|
+
|
|
47
|
+
Missing required config throws `DatabricksTracingConfigurationError` at startup. Disable the
|
|
48
|
+
tracer explicitly for local and dev runs. `initDatabricksTracing` is idempotent. Repeat calls
|
|
49
|
+
return the same configuration.
|
|
50
|
+
|
|
51
|
+
### Multimodal inputs (image, PDF, file)
|
|
52
|
+
|
|
53
|
+
Chat-model spans record their inputs as structured messages, so the multimodal content
|
|
54
|
+
parts a graph sends to the model survive: OpenAI and LangChain `image_url`, OpenAI `file`,
|
|
55
|
+
and Anthropic `image` and `document`.
|
|
56
|
+
|
|
57
|
+
The inline base64 of each such part is never stored in the trace. The tracer removes it
|
|
58
|
+
before recording and replaces it with a small reference, so the Unity Catalog trace tables
|
|
59
|
+
stay readable. Multi-MB data URIs used to push large invoice traces past the SQL inline read
|
|
60
|
+
limit. A remote `http(s)://` image URL is already a small reference, so this step keeps it
|
|
61
|
+
verbatim. The text cap below, if enabled, still truncates any string over its threshold,
|
|
62
|
+
URLs included. The transform runs on a copy of the inputs, so the live message sent to the
|
|
63
|
+
model is untouched and prompt caching is unaffected.
|
|
64
|
+
|
|
65
|
+
By default a part becomes a `{ type: ..., _omitted: true, bytes: N }` placeholder. To store
|
|
66
|
+
a meaningful reference instead, such as the Unity Catalog volume path the image was loaded
|
|
67
|
+
from so it can be re-fetched later, pass a `contentRefResolver`:
|
|
70
68
|
|
|
71
69
|
```ts
|
|
72
70
|
import {
|
|
@@ -75,7 +73,7 @@ import {
|
|
|
75
73
|
} from "@insightfactory.ai/insightfactory-databricks-langgraph-tracer";
|
|
76
74
|
|
|
77
75
|
const imageRef = (part: Record<string, unknown>, ctx: ContentPartContext) => {
|
|
78
|
-
// ctx.metadata is the run metadata
|
|
76
|
+
// ctx.metadata is the run metadata. Pass per-run data (e.g. a source volume
|
|
79
77
|
// path) via the invoke config's `metadata`, which propagates to the LLM run.
|
|
80
78
|
const path = ctx.metadata.encoded_images_path;
|
|
81
79
|
return typeof path === "string"
|
|
@@ -86,65 +84,139 @@ const imageRef = (part: Record<string, unknown>, ctx: ContentPartContext) => {
|
|
|
86
84
|
initDatabricksTracing({ experimentId: "...", contentRefResolver: imageRef });
|
|
87
85
|
```
|
|
88
86
|
|
|
89
|
-
The
|
|
90
|
-
`ContentPartContext
|
|
91
|
-
|
|
92
|
-
and the run `metadata`. Return an object to store as the
|
|
93
|
-
`undefined`
|
|
94
|
-
`new DatabricksLangGraphTracer({ contentRefResolver })` for per-graph wiring.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
the part's own payload echoed back under
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
87
|
+
The tracer calls the resolver once per multimodal part with the part and a
|
|
88
|
+
`ContentPartContext`. The context carries `index`, the part's position in the message
|
|
89
|
+
content array, which for a one-image-per-page invoice is the page number. It also carries
|
|
90
|
+
`bytes`, the inline payload length, and the run `metadata`. Return an object to store as the
|
|
91
|
+
reference, or `undefined` or `null` for the default placeholder.
|
|
92
|
+
`new DatabricksLangGraphTracer({ contentRefResolver })` also accepts it for per-graph wiring.
|
|
93
|
+
|
|
94
|
+
No inline image bytes ever reach the trace. If a resolver result re-introduces an inline
|
|
95
|
+
payload anywhere in the returned object, whether a `data:` URI, a recognized base64 content
|
|
96
|
+
part, or the part's own payload echoed back under another key, the tracer rejects it and
|
|
97
|
+
uses the placeholder. Beyond that, keep the reference small. The library strips inline
|
|
98
|
+
payloads but does not otherwise bound what a resolver returns, so a fabricated large string
|
|
99
|
+
under a custom key is the caller's problem. `ctx.metadata` is a shallow copy of the run
|
|
100
|
+
metadata, so setting top-level keys in the resolver cannot corrupt run state. Its nested
|
|
101
|
+
values are shared, so don't mutate those.
|
|
102
|
+
|
|
103
|
+
### Spans from outside the tracer
|
|
104
|
+
|
|
105
|
+
A helper traced with MLflow's own `startSpan` or `withSpan` starts a span through the
|
|
106
|
+
OpenTelemetry active context rather than through LangChain's callbacks. Called from a
|
|
107
|
+
graph node it opens its own root trace, carrying none of the root tags, session
|
|
108
|
+
metadata or cost rollup this tracer writes.
|
|
109
|
+
|
|
110
|
+
Two exports close that gap. Which one to use depends on how the traced code starts
|
|
111
|
+
its span.
|
|
112
|
+
|
|
113
|
+
`getActiveTracingSpan()` returns the span of the node currently running, to pass as
|
|
114
|
+
`parent`:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
import { startSpan, SpanType } from "@mlflow/core";
|
|
118
|
+
import { getActiveTracingSpan } from "@insightfactory.ai/insightfactory-databricks-langgraph-tracer";
|
|
119
|
+
|
|
120
|
+
const span = startSpan({
|
|
121
|
+
name: "lakebase.executeQuery",
|
|
122
|
+
spanType: SpanType.TOOL,
|
|
123
|
+
parent: getActiveTracingSpan(),
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`withTracingContext(fn)` makes that span the active one for the duration of `fn`.
|
|
128
|
+
Reach for it when the traced code already uses `withSpan` or the `trace` decorator,
|
|
129
|
+
which read the active context and ignore a `parent` option:
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
import { withSpan, SpanType } from "@mlflow/core";
|
|
133
|
+
import { withTracingContext } from "@insightfactory.ai/insightfactory-databricks-langgraph-tracer";
|
|
134
|
+
|
|
135
|
+
await withTracingContext(() =>
|
|
136
|
+
withSpan(async () => runQuery(sql), {
|
|
137
|
+
name: "lakebase.executeQuery",
|
|
138
|
+
spanType: SpanType.TOOL,
|
|
139
|
+
}),
|
|
140
|
+
);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Spans started anywhere inside `fn`, at any depth, join the graph's trace, and the
|
|
144
|
+
context is scoped to the call so nothing leaks afterwards. Outside a traced run, or
|
|
145
|
+
with no tracer attached, both helpers are inert: `getActiveTracingSpan()` returns
|
|
146
|
+
`undefined` and `withTracingContext` runs the function unchanged.
|
|
147
|
+
|
|
148
|
+
An `undefined` parent is not the same as "no parent". `startSpan` falls back to the
|
|
149
|
+
active OpenTelemetry context, so inside an enclosing `withSpan` block a span with no
|
|
150
|
+
parent joins that block's trace rather than starting its own.
|
|
151
|
+
|
|
152
|
+
Naming the parent at the call site is the difference from the Python package, which
|
|
153
|
+
does this ambiently. Node cannot. MLflow resolves a parent from an
|
|
154
|
+
`AsyncLocalStorage`-backed context, and LangChain runs every callback inside
|
|
155
|
+
`asyncLocalStorage.run(undefined, …)`, so a store entered from a callback cannot
|
|
156
|
+
reach the node body that follows it.
|
|
157
|
+
|
|
158
|
+
That fallback also means a graph invoked from inside a `withSpan` block nests into it
|
|
159
|
+
here, which the Python package does not do: its root span is created without
|
|
160
|
+
consulting the context. That is the one behavioural difference between the two, as
|
|
161
|
+
opposed to the API difference above.
|
|
162
|
+
|
|
163
|
+
Nesting like that has a cost. The graph's root run writes its tags, session metadata
|
|
164
|
+
and cost rollup onto the trace its root span belongs to, which when nested is the
|
|
165
|
+
caller's trace. Two graphs under one `withSpan` block therefore share one set of root
|
|
166
|
+
fields: the second graph's session id replaces the first graph's, and its cost rollup
|
|
167
|
+
overwrites rather than sums. Issue #56 tracks making the rollup additive. To keep the
|
|
168
|
+
fields per graph today, invoke each graph outside the enclosing span and pass
|
|
169
|
+
`getActiveTracingSpan()` as the parent of the spans you want inside it.
|
|
170
|
+
|
|
171
|
+
Spans recorded this way come from MLflow, not from this tracer, so neither the text
|
|
172
|
+
cap below nor the multimodal reference substitution applies to them.
|
|
173
|
+
|
|
174
|
+
The tracer awaits its own callbacks rather than leaving them on LangChain's
|
|
175
|
+
background queue, so a node's span exists by the time the node body runs. Without
|
|
176
|
+
that, a parallel branch can reach `getActiveTracingSpan()` before its own run has
|
|
177
|
+
been recorded.
|
|
105
178
|
|
|
106
179
|
### Capping large text
|
|
107
180
|
|
|
108
|
-
Multimodal externalization handles inline
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
181
|
+
Multimodal externalization handles inline bytes, but large plain text can also push a trace
|
|
182
|
+
past the SQL inline read limit. A classification vocabulary or an aggregated result set
|
|
183
|
+
threaded through every fan-out span's inputs and outputs is enough. Set `maxStringChars`,
|
|
184
|
+
or `DATABRICKS_TRACING_MAX_STRING_CHARS`, to truncate it:
|
|
112
185
|
|
|
113
186
|
```ts
|
|
114
187
|
initDatabricksTracing({ experimentId: "...", maxStringChars: 50_000 });
|
|
115
188
|
```
|
|
116
189
|
|
|
117
|
-
When set, any string
|
|
118
|
-
|
|
190
|
+
When set, any string value longer than the threshold in a span's inputs or outputs is
|
|
191
|
+
replaced with a placeholder:
|
|
119
192
|
|
|
120
193
|
```json
|
|
121
|
-
{ "_truncated": true, "chars": 812345, "bytes": 812345, "preview": "first 256 chars
|
|
194
|
+
{ "_truncated": true, "chars": 812345, "bytes": 812345, "preview": "<the first 256 chars>" }
|
|
122
195
|
```
|
|
123
196
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
This is a
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
CJK/emoji-heavy content size the cap below `limit / 4`. The placeholder's `bytes`
|
|
197
|
+
The cap is off by default. Generic truncation costs debuggability, so you choose the
|
|
198
|
+
threshold. It caps string values only, never keys or structural fields, and runs on a copy,
|
|
199
|
+
so the live messages are untouched. `new DatabricksLangGraphTracer({ maxStringChars })` also
|
|
200
|
+
accepts it for per-graph wiring.
|
|
201
|
+
|
|
202
|
+
This is a separate knob from the multimodal handling above. `contentRefResolver` chooses
|
|
203
|
+
references for inline image, PDF and file bytes. `maxStringChars` caps arbitrary text and
|
|
204
|
+
never truncates a resolver's reference. Because it is generic, it also truncates any other
|
|
205
|
+
string over the threshold, including a remote `http(s)://` image URL the multimodal step
|
|
206
|
+
keeps verbatim, so set the threshold well above your reference and URL lengths. It is a
|
|
207
|
+
per-leaf limit, not a per-trace byte budget. Enough sub-threshold leaves can still sum past
|
|
208
|
+
the limit, so for the heaviest spans also record less. Pass ids or references through node
|
|
209
|
+
state rather than full payloads.
|
|
210
|
+
|
|
211
|
+
The threshold counts characters. This package counts UTF-16 units and the Python package
|
|
212
|
+
counts code points, so the two can differ on non-BMP text. The inline limit is in bytes, and
|
|
213
|
+
multibyte text can be up to four times larger in bytes than in characters, so for CJK or
|
|
214
|
+
emoji-heavy content size the cap below a quarter of the limit. The placeholder's `bytes`
|
|
143
215
|
field always reports the exact UTF-8 size of the original.
|
|
144
216
|
|
|
145
217
|
## Development
|
|
146
218
|
|
|
147
|
-
Built and tested with
|
|
219
|
+
Built and tested with Yarn 4:
|
|
148
220
|
|
|
149
221
|
```bash
|
|
150
222
|
cd typescript
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { LiveSpan } from "@mlflow/core";
|
|
2
|
+
/**
|
|
3
|
+
* The tracer span for the LangChain run currently executing, if there is one.
|
|
4
|
+
*
|
|
5
|
+
* Pass it as `parent` to `startSpan` / `withSpan` so the span joins the graph's
|
|
6
|
+
* trace instead of starting its own. Returns `undefined` outside a traced run, when
|
|
7
|
+
* no {@link DatabricksLangGraphTracer} is attached, or when tracing is disabled, so
|
|
8
|
+
* a call site can use it unconditionally.
|
|
9
|
+
*
|
|
10
|
+
* Only the innermost run is consulted. If that run has no span, which `onRunCreate`
|
|
11
|
+
* allows by warning and continuing, this returns `undefined` rather than walking up
|
|
12
|
+
* to the nearest ancestor that has one. LangChain's manager exposes no parent chain
|
|
13
|
+
* to walk, and the result matches the behaviour without this helper.
|
|
14
|
+
*
|
|
15
|
+
* An `undefined` parent is not the same as "no parent": MLflow's `startSpan` falls
|
|
16
|
+
* back to the active OpenTelemetry context, so inside a `withSpan` block the span
|
|
17
|
+
* joins that block's trace.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getActiveTracingSpan(): LiveSpan | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Run `fn` with the current node as the active OpenTelemetry span.
|
|
22
|
+
*
|
|
23
|
+
* This is the closest equivalent to the Python package's ambient propagation, and
|
|
24
|
+
* the one to reach for when the traced code already uses `withSpan` or the `trace`
|
|
25
|
+
* decorator. Those resolve their parent from the active context and ignore any
|
|
26
|
+
* `parent` option, so naming the parent explicitly does not help them.
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* await withTracingContext(() =>
|
|
30
|
+
* withSpan(async () => runQuery(sql), {
|
|
31
|
+
* name: "lakebase.executeQuery",
|
|
32
|
+
* spanType: SpanType.TOOL,
|
|
33
|
+
* }),
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Spans started anywhere inside `fn`, at any depth, join the graph's trace. The
|
|
38
|
+
* context is scoped to the call, so nothing leaks once `fn` returns. Outside a
|
|
39
|
+
* traced run, or with no tracer attached, `fn` runs unchanged.
|
|
40
|
+
*/
|
|
41
|
+
export declare function withTracingContext<T>(fn: () => T): T;
|
|
42
|
+
//# sourceMappingURL=active-span.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-span.d.ts","sourceRoot":"","sources":["../src/active-span.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAoC7C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,GAAG,SAAS,CAsB3D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAkBpD"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nesting spans that this tracer did not create (issue #52, TypeScript side).
|
|
3
|
+
*
|
|
4
|
+
* The Python package publishes each live span into MLflow's context, so an
|
|
5
|
+
* `@mlflow.trace`-decorated helper called from a graph node nests under that node
|
|
6
|
+
* instead of opening its own root trace. Node cannot do the same thing. MLflow's
|
|
7
|
+
* `startSpan` / `withSpan` resolve a parent from the OpenTelemetry active context,
|
|
8
|
+
* which is backed by an `AsyncLocalStorage`, and LangChain runs every callback
|
|
9
|
+
* inside `asyncLocalStorage.run(undefined, …)` (see `consumeCallback` in
|
|
10
|
+
* `@langchain/core`). A store entered there cannot reach the node body that follows,
|
|
11
|
+
* because an async resource cannot mutate its ancestor's store. `enterWith` from
|
|
12
|
+
* inside `onRunCreate` was measured to leave `getCurrentActiveSpan()` null in the
|
|
13
|
+
* node, so ambient propagation is not available on this runtime.
|
|
14
|
+
*
|
|
15
|
+
* What is available is the reverse lookup. LangChain's own storage *does* carry the
|
|
16
|
+
* running config into the node body, and that config names the current run and the
|
|
17
|
+
* handlers attached to it. Resolving the tracer's span for that run gives the same
|
|
18
|
+
* outcome as the Python fix at the cost of naming the parent at the call site:
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { withSpan } from "@mlflow/core";
|
|
22
|
+
* import { getActiveTracingSpan } from "@insightfactory.ai/insightfactory-databricks-langgraph-tracer";
|
|
23
|
+
*
|
|
24
|
+
* await withSpan(async () => runQuery(sql), {
|
|
25
|
+
* name: "lakebase.executeQuery",
|
|
26
|
+
* spanType: SpanType.TOOL,
|
|
27
|
+
* parent: getActiveTracingSpan(),
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import { context, trace } from "@opentelemetry/api";
|
|
32
|
+
import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
|
|
33
|
+
/**
|
|
34
|
+
* The tracer span for the LangChain run currently executing, if there is one.
|
|
35
|
+
*
|
|
36
|
+
* Pass it as `parent` to `startSpan` / `withSpan` so the span joins the graph's
|
|
37
|
+
* trace instead of starting its own. Returns `undefined` outside a traced run, when
|
|
38
|
+
* no {@link DatabricksLangGraphTracer} is attached, or when tracing is disabled, so
|
|
39
|
+
* a call site can use it unconditionally.
|
|
40
|
+
*
|
|
41
|
+
* Only the innermost run is consulted. If that run has no span, which `onRunCreate`
|
|
42
|
+
* allows by warning and continuing, this returns `undefined` rather than walking up
|
|
43
|
+
* to the nearest ancestor that has one. LangChain's manager exposes no parent chain
|
|
44
|
+
* to walk, and the result matches the behaviour without this helper.
|
|
45
|
+
*
|
|
46
|
+
* An `undefined` parent is not the same as "no parent": MLflow's `startSpan` falls
|
|
47
|
+
* back to the active OpenTelemetry context, so inside a `withSpan` block the span
|
|
48
|
+
* joins that block's trace.
|
|
49
|
+
*/
|
|
50
|
+
export function getActiveTracingSpan() {
|
|
51
|
+
try {
|
|
52
|
+
const config = AsyncLocalStorageProviderSingleton.getRunnableConfig();
|
|
53
|
+
const manager = config?.callbacks;
|
|
54
|
+
const runId = manager?._parentRunId;
|
|
55
|
+
if (!runId)
|
|
56
|
+
return undefined;
|
|
57
|
+
const handlers = [
|
|
58
|
+
...(manager.handlers ?? []),
|
|
59
|
+
...(manager.inheritableHandlers ?? []),
|
|
60
|
+
];
|
|
61
|
+
for (const handler of handlers) {
|
|
62
|
+
const span = handler.getSpanForRun?.(runId);
|
|
63
|
+
if (span)
|
|
64
|
+
return span;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Never throw into a consumer's node body over a tracing convenience.
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Run `fn` with the current node as the active OpenTelemetry span.
|
|
75
|
+
*
|
|
76
|
+
* This is the closest equivalent to the Python package's ambient propagation, and
|
|
77
|
+
* the one to reach for when the traced code already uses `withSpan` or the `trace`
|
|
78
|
+
* decorator. Those resolve their parent from the active context and ignore any
|
|
79
|
+
* `parent` option, so naming the parent explicitly does not help them.
|
|
80
|
+
*
|
|
81
|
+
* ```ts
|
|
82
|
+
* await withTracingContext(() =>
|
|
83
|
+
* withSpan(async () => runQuery(sql), {
|
|
84
|
+
* name: "lakebase.executeQuery",
|
|
85
|
+
* spanType: SpanType.TOOL,
|
|
86
|
+
* }),
|
|
87
|
+
* );
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* Spans started anywhere inside `fn`, at any depth, join the graph's trace. The
|
|
91
|
+
* context is scoped to the call, so nothing leaks once `fn` returns. Outside a
|
|
92
|
+
* traced run, or with no tracer attached, `fn` runs unchanged.
|
|
93
|
+
*/
|
|
94
|
+
export function withTracingContext(fn) {
|
|
95
|
+
// Only the setup is guarded, and `fn` is invoked once, outside the guard. Calling
|
|
96
|
+
// it inside would double-invoke a synchronous `fn` that throws: `context.with`
|
|
97
|
+
// runs `fn` synchronously and `AsyncLocalStorage.run` propagates the throw, which
|
|
98
|
+
// the guard would catch and then retry, repeating whatever side effect ran first.
|
|
99
|
+
// A rejected promise is a return value rather than a throw, so an async `fn` was
|
|
100
|
+
// never exposed to that, which is what would have kept it hidden.
|
|
101
|
+
let scoped;
|
|
102
|
+
try {
|
|
103
|
+
const otelSpan = getActiveTracingSpan()?._span;
|
|
104
|
+
if (otelSpan)
|
|
105
|
+
scoped = trace.setSpan(context.active(), otelSpan);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// A renamed MLflow internal or a moved LangChain one degrades to the previous
|
|
109
|
+
// behaviour, a span that opens its own trace, rather than throwing into a
|
|
110
|
+
// consumer's node body.
|
|
111
|
+
scoped = undefined;
|
|
112
|
+
}
|
|
113
|
+
return scoped ? context.with(scoped, fn) : fn();
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=active-span.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-span.js","sourceRoot":"","sources":["../src/active-span.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAmChF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kCAAkC,CAAC,iBAAiB,EAEtD,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,EAAE,SAA4C,CAAC;QACrE,MAAM,KAAK,GAAG,OAAO,EAAE,YAAY,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;SACvC,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAI,OAAsB,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAI,EAAW;IAC/C,kFAAkF;IAClF,+EAA+E;IAC/E,kFAAkF;IAClF,kFAAkF;IAClF,iFAAiF;IACjF,kEAAkE;IAClE,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAI,oBAAoB,EAAgC,EAAE,KAAK,CAAC;QAC9E,IAAI,QAAQ;YAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,0EAA0E;QAC1E,wBAAwB;QACxB,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* executed inside `withSpan`). {@link BaseTracer} invokes `persistRun` only for
|
|
31
31
|
* root runs; every run (root included) is closed from `onRunUpdate`.
|
|
32
32
|
*/
|
|
33
|
-
import { SpanType } from "@mlflow/core";
|
|
33
|
+
import { SpanType, type LiveSpan } from "@mlflow/core";
|
|
34
34
|
import { BaseTracer, type Run } from "@langchain/core/tracers/base";
|
|
35
35
|
import { type TokenUsage } from "./cost.js";
|
|
36
36
|
/** Maps LangChain `run_type` strings to MLflow {@link SpanType} (default CHAIN). */
|
|
@@ -165,6 +165,14 @@ export declare class DatabricksLangGraphTracer extends BaseTracer {
|
|
|
165
165
|
*/
|
|
166
166
|
maxStringChars?: number;
|
|
167
167
|
});
|
|
168
|
+
/**
|
|
169
|
+
* The live span recorded for `runId`, or `undefined` once the run has ended.
|
|
170
|
+
*
|
|
171
|
+
* Read by {@link getActiveTracingSpan} so a span created outside this tracer can
|
|
172
|
+
* name the running node as its parent. Exposed rather than made public state: the
|
|
173
|
+
* map itself stays private so nothing outside can add to or evict from it.
|
|
174
|
+
*/
|
|
175
|
+
getSpanForRun(runId: string): LiveSpan | undefined;
|
|
168
176
|
onRunCreate(run: Run): Promise<void>;
|
|
169
177
|
onRunUpdate(run: Run): Promise<void>;
|
|
170
178
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databricks-tracer.d.ts","sourceRoot":"","sources":["../src/databricks-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAGL,QAAQ,
|
|
1
|
+
{"version":3,"file":"databricks-tracer.d.ts","sourceRoot":"","sources":["../src/databricks-tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -515,6 +515,23 @@ export class DatabricksLangGraphTracer extends BaseTracer {
|
|
|
515
515
|
: qualifyDeploymentName;
|
|
516
516
|
this.contentRefResolver = options.contentRefResolver;
|
|
517
517
|
this.maxStringChars = resolveMaxStringChars(options.maxStringChars);
|
|
518
|
+
// LangChain defaults callbacks to a background queue, so `onRunCreate` can still
|
|
519
|
+
// be pending when the node body runs. Measured on a two-branch fan-out: the
|
|
520
|
+
// second branch found no span for its own run and its foreign spans fell out of
|
|
521
|
+
// the trace. Awaiting the handler closes that race, and is the counterpart of
|
|
522
|
+
// `run_inline` in the Python package. The handler only manipulates in-memory span
|
|
523
|
+
// state, so the cost is the ordering, not the work.
|
|
524
|
+
this.awaitHandlers = true;
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* The live span recorded for `runId`, or `undefined` once the run has ended.
|
|
528
|
+
*
|
|
529
|
+
* Read by {@link getActiveTracingSpan} so a span created outside this tracer can
|
|
530
|
+
* name the running node as its parent. Exposed rather than made public state: the
|
|
531
|
+
* map itself stays private so nothing outside can add to or evict from it.
|
|
532
|
+
*/
|
|
533
|
+
getSpanForRun(runId) {
|
|
534
|
+
return this.spanMap.get(runId);
|
|
518
535
|
}
|
|
519
536
|
async onRunCreate(run) {
|
|
520
537
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databricks-tracer.js","sourceRoot":"","sources":["../src/databricks-tracer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"databricks-tracer.js","sourceRoot":"","sources":["../src/databricks-tracer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ export declare function getTracingCallbacks(): BaseCallbackHandler[];
|
|
|
59
59
|
export declare function _resetTracingForTests(): void;
|
|
60
60
|
export { type ContentPartContext, type ContentRefResolver, DatabricksLangGraphTracer, } from "./databricks-tracer.js";
|
|
61
61
|
export { DatabricksTracingConfigurationError } from "./errors.js";
|
|
62
|
+
export { getActiveTracingSpan, withTracingContext } from "./active-span.js";
|
|
62
63
|
export { parseUcDestinationPath, resolveUcDestination, UC_DESTINATION_TAG, UC_TABLE_HEADER, type UcDestination, } from "./uc-export.js";
|
|
63
64
|
export { calculateLLMCost, qualifyDeploymentName, resolvePricingKey, getPricingProvider, spanCostPayload, type LLMCost, type TokenUsage, } from "./cost.js";
|
|
64
65
|
export { TraceTagKey, TraceMetadataKey, SpanAttrKey } from "./generated-keys.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAkCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,WAAgB,GAAG,oBAAoB,CAkErF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,mBAAmB,EAAE,CAG3D;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAkCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,WAAgB,GAAG,oBAAoB,CAkErF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,mBAAmB,EAAE,CAG3D;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -124,6 +124,7 @@ export function _resetTracingForTests() {
|
|
|
124
124
|
}
|
|
125
125
|
export { DatabricksLangGraphTracer, } from "./databricks-tracer.js";
|
|
126
126
|
export { DatabricksTracingConfigurationError } from "./errors.js";
|
|
127
|
+
export { getActiveTracingSpan, withTracingContext } from "./active-span.js";
|
|
127
128
|
export { parseUcDestinationPath, resolveUcDestination, UC_DESTINATION_TAG, UC_TABLE_HEADER, } from "./uc-export.js";
|
|
128
129
|
export { calculateLLMCost, qualifyDeploymentName, resolvePricingKey, getPricingProvider, spanCostPayload, } from "./cost.js";
|
|
129
130
|
export { TraceTagKey, TraceMetadataKey, SpanAttrKey } from "./generated-keys.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@insightfactory.ai/insightfactory-databricks-langgraph-tracer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1-dev.18",
|
|
4
4
|
"description": "LangGraph tracing for Databricks MLflow (TypeScript)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "yarn@4.12.0",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"pricing:update": "tsx scripts/update-pricing.ts"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
+
"@opentelemetry/api": "^1.9.0",
|
|
51
52
|
"@opentelemetry/otlp-transformer": "^0.205.0",
|
|
52
53
|
"@opentelemetry/sdk-trace-base": "^2.1.0"
|
|
53
54
|
},
|