@introspection-sdk/introspection-node 0.4.2 → 0.4.4
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/.turbo/turbo-build.log +1 -1
- package/dist/client.d.ts +42 -132
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +67 -366
- package/dist/client.js.map +1 -0
- package/dist/converters/claude.d.ts +4 -0
- package/dist/converters/claude.d.ts.map +1 -1
- package/dist/converters/claude.js +7 -0
- package/dist/converters/claude.js.map +1 -0
- package/dist/converters/gemini.d.ts +90 -0
- package/dist/converters/gemini.d.ts.map +1 -0
- package/dist/converters/gemini.js +171 -0
- package/dist/converters/gemini.js.map +1 -0
- package/dist/converters/index.d.ts +1 -1
- package/dist/converters/index.d.ts.map +1 -1
- package/dist/converters/index.js +2 -1
- package/dist/converters/index.js.map +1 -0
- package/dist/converters/openai.js +1 -0
- package/dist/converters/openai.js.map +1 -0
- package/dist/converters/openinference.js +1 -0
- package/dist/converters/openinference.js.map +1 -0
- package/dist/converters/vercel.d.ts.map +1 -1
- package/dist/converters/vercel.js +31 -3
- package/dist/converters/vercel.js.map +1 -0
- package/dist/http.d.ts +36 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +145 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +24 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -32
- package/dist/index.js.map +1 -0
- package/dist/{anthropic.d.ts → otel/anthropic.d.ts} +23 -13
- package/dist/otel/anthropic.d.ts.map +1 -0
- package/dist/{anthropic.js → otel/anthropic.js} +132 -40
- package/dist/otel/anthropic.js.map +1 -0
- package/dist/{claude-hooks.d.ts → otel/claude-hooks.d.ts} +19 -1
- package/dist/otel/claude-hooks.d.ts.map +1 -0
- package/dist/{claude-hooks.js → otel/claude-hooks.js} +94 -20
- package/dist/otel/claude-hooks.js.map +1 -0
- package/dist/otel/claude-wrapper.d.ts.map +1 -0
- package/dist/{claude-wrapper.js → otel/claude-wrapper.js} +2 -1
- package/dist/otel/claude-wrapper.js.map +1 -0
- package/dist/otel/gemini.d.ts +56 -0
- package/dist/otel/gemini.d.ts.map +1 -0
- package/dist/otel/gemini.js +348 -0
- package/dist/otel/gemini.js.map +1 -0
- package/dist/otel/index.d.ts +32 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +41 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/otel/init.d.ts +126 -0
- package/dist/otel/init.d.ts.map +1 -0
- package/dist/otel/init.js +259 -0
- package/dist/otel/init.js.map +1 -0
- package/dist/otel/integrations/anthropic.d.ts +10 -0
- package/dist/otel/integrations/anthropic.d.ts.map +1 -0
- package/dist/otel/integrations/anthropic.js +22 -0
- package/dist/otel/integrations/anthropic.js.map +1 -0
- package/dist/otel/integrations/base.d.ts +83 -0
- package/dist/otel/integrations/base.d.ts.map +1 -0
- package/dist/otel/integrations/base.js +23 -0
- package/dist/otel/integrations/base.js.map +1 -0
- package/dist/otel/integrations/claude-agent.d.ts +13 -0
- package/dist/otel/integrations/claude-agent.d.ts.map +1 -0
- package/dist/otel/integrations/claude-agent.js +27 -0
- package/dist/otel/integrations/claude-agent.js.map +1 -0
- package/dist/otel/integrations/gemini.d.ts +11 -0
- package/dist/otel/integrations/gemini.d.ts.map +1 -0
- package/dist/otel/integrations/gemini.js +21 -0
- package/dist/otel/integrations/gemini.js.map +1 -0
- package/dist/otel/integrations/index.d.ts +39 -0
- package/dist/otel/integrations/index.d.ts.map +1 -0
- package/dist/otel/integrations/index.js +131 -0
- package/dist/otel/integrations/index.js.map +1 -0
- package/dist/otel/integrations/langchain.d.ts +16 -0
- package/dist/otel/integrations/langchain.d.ts.map +1 -0
- package/dist/otel/integrations/langchain.js +41 -0
- package/dist/otel/integrations/langchain.js.map +1 -0
- package/dist/otel/integrations/mastra.d.ts +14 -0
- package/dist/otel/integrations/mastra.d.ts.map +1 -0
- package/dist/otel/integrations/mastra.js +27 -0
- package/dist/otel/integrations/mastra.js.map +1 -0
- package/dist/otel/integrations/openai-agents.d.ts +11 -0
- package/dist/otel/integrations/openai-agents.d.ts.map +1 -0
- package/dist/otel/integrations/openai-agents.js +25 -0
- package/dist/otel/integrations/openai-agents.js.map +1 -0
- package/dist/otel/integrations/pi.d.ts +12 -0
- package/dist/otel/integrations/pi.d.ts.map +1 -0
- package/dist/otel/integrations/pi.js +20 -0
- package/dist/otel/integrations/pi.js.map +1 -0
- package/dist/otel/integrations/vercel.d.ts +15 -0
- package/dist/otel/integrations/vercel.d.ts.map +1 -0
- package/dist/otel/integrations/vercel.js +20 -0
- package/dist/otel/integrations/vercel.js.map +1 -0
- package/dist/{langchain-handler.d.ts → otel/langchain-handler.d.ts} +10 -1
- package/dist/otel/langchain-handler.d.ts.map +1 -0
- package/dist/{langchain-handler.js → otel/langchain-handler.js} +43 -6
- package/dist/otel/langchain-handler.js.map +1 -0
- package/dist/otel/logs.d.ts +82 -0
- package/dist/otel/logs.d.ts.map +1 -0
- package/dist/otel/logs.js +271 -0
- package/dist/otel/logs.js.map +1 -0
- package/dist/{mastra-exporter.d.ts → otel/mastra-exporter.d.ts} +3 -1
- package/dist/otel/mastra-exporter.d.ts.map +1 -0
- package/dist/{mastra-exporter.js → otel/mastra-exporter.js} +71 -17
- package/dist/otel/mastra-exporter.js.map +1 -0
- package/dist/otel/pi.d.ts +59 -0
- package/dist/otel/pi.d.ts.map +1 -0
- package/dist/otel/pi.js +67 -0
- package/dist/otel/pi.js.map +1 -0
- package/dist/otel/register.d.ts +8 -0
- package/dist/otel/register.d.ts.map +1 -0
- package/dist/otel/register.js +48 -0
- package/dist/otel/register.js.map +1 -0
- package/dist/otel/setup.d.ts +52 -0
- package/dist/otel/setup.d.ts.map +1 -0
- package/dist/otel/setup.js +146 -0
- package/dist/otel/setup.js.map +1 -0
- package/dist/{span-processor.d.ts → otel/span-processor.d.ts} +1 -1
- package/dist/otel/span-processor.d.ts.map +1 -0
- package/dist/{span-processor.js → otel/span-processor.js} +11 -5
- package/dist/otel/span-processor.js.map +1 -0
- package/dist/{tracing-processor.d.ts → otel/tracing-processor.d.ts} +4 -1
- package/dist/otel/tracing-processor.d.ts.map +1 -0
- package/dist/{tracing-processor.js → otel/tracing-processor.js} +64 -14
- package/dist/otel/tracing-processor.js.map +1 -0
- package/dist/resources/experiments.d.ts +31 -0
- package/dist/resources/experiments.d.ts.map +1 -0
- package/dist/resources/experiments.js +133 -0
- package/dist/resources/experiments.js.map +1 -0
- package/dist/resources/recipes.d.ts +22 -0
- package/dist/resources/recipes.d.ts.map +1 -0
- package/dist/resources/recipes.js +61 -0
- package/dist/resources/recipes.js.map +1 -0
- package/dist/resources/runtimes.d.ts +76 -0
- package/dist/resources/runtimes.d.ts.map +1 -0
- package/dist/resources/runtimes.js +179 -0
- package/dist/resources/runtimes.js.map +1 -0
- package/dist/runner-resources/files.d.ts +35 -0
- package/dist/runner-resources/files.d.ts.map +1 -0
- package/dist/runner-resources/files.js +131 -0
- package/dist/runner-resources/files.js.map +1 -0
- package/dist/runner-resources/tasks.d.ts +39 -0
- package/dist/runner-resources/tasks.d.ts.map +1 -0
- package/dist/runner-resources/tasks.js +129 -0
- package/dist/runner-resources/tasks.js.map +1 -0
- package/dist/runner.d.ts +80 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +159 -0
- package/dist/runner.js.map +1 -0
- package/dist/streaming.d.ts +8 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +67 -0
- package/dist/streaming.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +13 -4
- package/dist/utils.js.map +1 -0
- package/dist/version.js +1 -0
- package/dist/version.js.map +1 -0
- package/package.json +91 -22
- package/src/client.ts +76 -473
- package/src/converters/claude.ts +10 -0
- package/src/converters/gemini.ts +243 -0
- package/src/converters/index.ts +13 -7
- package/src/converters/vercel.ts +41 -3
- package/src/http.ts +163 -0
- package/src/index.ts +110 -75
- package/src/{anthropic.ts → otel/anthropic.ts} +206 -54
- package/src/{claude-hooks.ts → otel/claude-hooks.ts} +119 -20
- package/src/{claude-wrapper.ts → otel/claude-wrapper.ts} +1 -1
- package/src/otel/gemini.ts +491 -0
- package/src/otel/index.ts +121 -0
- package/src/otel/init.ts +411 -0
- package/src/otel/integrations/anthropic.ts +26 -0
- package/src/otel/integrations/base.ts +95 -0
- package/src/otel/integrations/claude-agent.ts +32 -0
- package/src/otel/integrations/gemini.ts +25 -0
- package/src/otel/integrations/index.ts +151 -0
- package/src/otel/integrations/langchain.ts +45 -0
- package/src/otel/integrations/mastra.ts +30 -0
- package/src/otel/integrations/openai-agents.ts +31 -0
- package/src/otel/integrations/pi.ts +24 -0
- package/src/otel/integrations/vercel.ts +24 -0
- package/src/{langchain-handler.ts → otel/langchain-handler.ts} +53 -6
- package/src/otel/logs.ts +394 -0
- package/src/{mastra-exporter.ts → otel/mastra-exporter.ts} +83 -22
- package/src/otel/pi.ts +88 -0
- package/src/otel/register.ts +50 -0
- package/src/otel/setup.ts +215 -0
- package/src/{span-processor.ts → otel/span-processor.ts} +11 -6
- package/src/{tracing-processor.ts → otel/tracing-processor.ts} +94 -19
- package/src/resources/experiments.ts +170 -0
- package/src/resources/recipes.ts +73 -0
- package/src/resources/runtimes.ts +231 -0
- package/src/runner-resources/files.ts +163 -0
- package/src/runner-resources/tasks.ts +156 -0
- package/src/runner.ts +194 -0
- package/src/streaming.ts +57 -0
- package/src/utils.ts +12 -5
- package/dist/ai-sdk-integration.d.ts +0 -123
- package/dist/ai-sdk-integration.d.ts.map +0 -1
- package/dist/ai-sdk-integration.js +0 -475
- package/dist/anthropic.d.ts.map +0 -1
- package/dist/claude-hooks.d.ts.map +0 -1
- package/dist/claude-wrapper.d.ts.map +0 -1
- package/dist/converters/ai-sdk.d.ts +0 -65
- package/dist/converters/ai-sdk.d.ts.map +0 -1
- package/dist/converters/ai-sdk.js +0 -261
- package/dist/langchain-handler.d.ts.map +0 -1
- package/dist/mastra-exporter.d.ts.map +0 -1
- package/dist/span-processor.d.ts.map +0 -1
- package/dist/tracing-processor.d.ts.map +0 -1
- package/src/ai-sdk-integration.ts +0 -691
- package/src/converters/ai-sdk.ts +0 -323
- /package/dist/{claude-wrapper.d.ts → otel/claude-wrapper.d.ts} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration discovery + setup loader for `introspection.init()`.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python SDK's registry: built-in integrations are resolved
|
|
5
|
+
* lazily (a missing framework just skips its shim), `setupOnce` runs at most
|
|
6
|
+
* once per identifier per process, and an integration may `deactivate` others.
|
|
7
|
+
*/
|
|
8
|
+
import { logger } from "../../utils.js";
|
|
9
|
+
import { DidNotEnable, } from "./base.js";
|
|
10
|
+
export { DidNotEnable };
|
|
11
|
+
/**
|
|
12
|
+
* Built-in integrations, loaded lazily. Each thunk dynamically imports an
|
|
13
|
+
* integration module; that module imports its framework at the top level, so
|
|
14
|
+
* if the framework is not installed the import rejects and the integration is
|
|
15
|
+
* skipped. Order matters only for `deactivates` resolution (handled below).
|
|
16
|
+
*/
|
|
17
|
+
const BUILTIN_INTEGRATIONS = [
|
|
18
|
+
() => import("./anthropic.js"),
|
|
19
|
+
() => import("./gemini.js"),
|
|
20
|
+
() => import("./openai-agents.js"),
|
|
21
|
+
() => import("./vercel.js"),
|
|
22
|
+
() => import("./claude-agent.js"),
|
|
23
|
+
() => import("./langchain.js"),
|
|
24
|
+
() => import("./mastra.js"),
|
|
25
|
+
() => import("./pi.js"),
|
|
26
|
+
];
|
|
27
|
+
const installed = new Set();
|
|
28
|
+
// Teardown callbacks returned by integration setupOnce (e.g. uninstrument a
|
|
29
|
+
// prototype patch), run by teardownIntegrations() on shutdown.
|
|
30
|
+
const teardowns = [];
|
|
31
|
+
/**
|
|
32
|
+
* Distinguish "framework package not installed" (expected — skip quietly) from
|
|
33
|
+
* a real error inside an installed integration (a bug we shouldn't hide).
|
|
34
|
+
*/
|
|
35
|
+
export function isModuleNotFound(e) {
|
|
36
|
+
const code = e?.code;
|
|
37
|
+
if (code === "ERR_MODULE_NOT_FOUND" || code === "MODULE_NOT_FOUND") {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
41
|
+
return /Cannot find (module|package)|Failed to resolve/i.test(msg);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return the built-in integrations whose framework is importable.
|
|
45
|
+
*
|
|
46
|
+
* Each module's top-level framework import determines availability: a missing
|
|
47
|
+
* package makes the dynamic import reject, which we log at debug and skip. Any
|
|
48
|
+
* OTHER failure (a real error inside an installed integration) is surfaced at
|
|
49
|
+
* warn level rather than silently swallowed — it's a bug, not an absent peer.
|
|
50
|
+
*/
|
|
51
|
+
export async function discoverIntegrations() {
|
|
52
|
+
const found = [];
|
|
53
|
+
for (const load of BUILTIN_INTEGRATIONS) {
|
|
54
|
+
try {
|
|
55
|
+
const mod = await load();
|
|
56
|
+
if (mod.default)
|
|
57
|
+
found.push(mod.default);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
if (isModuleNotFound(e)) {
|
|
61
|
+
logger.debug(`Skipping integration (framework not installed): ${String(e)}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
logger.warn(`Integration failed to load with an unexpected error (skipping): ${String(e)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return found;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Run each integration's `setupOnce` once, honouring `deactivates`.
|
|
72
|
+
*
|
|
73
|
+
* @returns the set of identifiers installed so far this process.
|
|
74
|
+
*/
|
|
75
|
+
export function setupIntegrations(integrations, ctx) {
|
|
76
|
+
// First-wins de-dupe by identifier.
|
|
77
|
+
const byId = new Map();
|
|
78
|
+
for (const integration of integrations) {
|
|
79
|
+
if (!byId.has(integration.identifier)) {
|
|
80
|
+
byId.set(integration.identifier, integration);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const disabled = new Set();
|
|
84
|
+
for (const integration of byId.values()) {
|
|
85
|
+
for (const id of integration.deactivates ?? [])
|
|
86
|
+
disabled.add(id);
|
|
87
|
+
}
|
|
88
|
+
for (const [identifier, integration] of byId) {
|
|
89
|
+
if (disabled.has(identifier)) {
|
|
90
|
+
logger.debug(`Skipping ${identifier} (deactivated by another integration)`);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (installed.has(identifier))
|
|
94
|
+
continue;
|
|
95
|
+
try {
|
|
96
|
+
const teardown = integration.setupOnce(ctx);
|
|
97
|
+
if (typeof teardown === "function")
|
|
98
|
+
teardowns.push(teardown);
|
|
99
|
+
installed.add(identifier);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
if (e instanceof DidNotEnable) {
|
|
103
|
+
logger.debug(`Could not enable ${identifier}: ${e.message}`);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
throw e;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return new Set(installed);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Run every integration teardown and clear the run-once guard, so the next
|
|
113
|
+
* `setupIntegrations()` (e.g. after `introspection.shutdown()` + a fresh
|
|
114
|
+
* `init()`) re-installs against the rebuilt provider instead of being skipped.
|
|
115
|
+
*/
|
|
116
|
+
export function teardownIntegrations() {
|
|
117
|
+
for (const teardown of teardowns.splice(0)) {
|
|
118
|
+
try {
|
|
119
|
+
teardown();
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
logger.debug(`Error tearing down integration: ${String(e)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
installed.clear();
|
|
126
|
+
}
|
|
127
|
+
/** Clear the run-once guard (running teardowns). Test-only utility. */
|
|
128
|
+
export function resetInstalledForTests() {
|
|
129
|
+
teardownIntegrations();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/otel/integrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangChain / LangGraph integration.
|
|
3
|
+
*
|
|
4
|
+
* The callback handler is attached per-invoke (`chain.invoke(input, { callbacks
|
|
5
|
+
* })`), so this integration builds the handler — pre-bound to the `init()`
|
|
6
|
+
* token — and publishes it via `introspection.getLangchainHandler()`.
|
|
7
|
+
*
|
|
8
|
+
* Deactivates the Anthropic integration: when LangChain drives the Anthropic
|
|
9
|
+
* model, the handler already traces the call, so the prototype-level Anthropic
|
|
10
|
+
* patch would double-trace it.
|
|
11
|
+
*/
|
|
12
|
+
import "@langchain/core/callbacks/base";
|
|
13
|
+
import type { Integration } from "./base.js";
|
|
14
|
+
declare const integration: Integration;
|
|
15
|
+
export default integration;
|
|
16
|
+
//# sourceMappingURL=langchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../../src/otel/integrations/langchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,EAAE,WAwBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangChain / LangGraph integration.
|
|
3
|
+
*
|
|
4
|
+
* The callback handler is attached per-invoke (`chain.invoke(input, { callbacks
|
|
5
|
+
* })`), so this integration builds the handler — pre-bound to the `init()`
|
|
6
|
+
* token — and publishes it via `introspection.getLangchainHandler()`.
|
|
7
|
+
*
|
|
8
|
+
* Deactivates the Anthropic integration: when LangChain drives the Anthropic
|
|
9
|
+
* model, the handler already traces the call, so the prototype-level Anthropic
|
|
10
|
+
* patch would double-trace it.
|
|
11
|
+
*/
|
|
12
|
+
// Presence gate.
|
|
13
|
+
import "@langchain/core/callbacks/base";
|
|
14
|
+
import { IntrospectionCallbackHandler } from "../langchain-handler.js";
|
|
15
|
+
const integration = {
|
|
16
|
+
identifier: "langchain",
|
|
17
|
+
// Intentional, and matches the Python SDK: when @langchain/core is present,
|
|
18
|
+
// auto-discovery skips the always-on raw-Anthropic prototype patch so a
|
|
19
|
+
// LangChain → ChatAnthropic call isn't traced twice (once by LangChain's
|
|
20
|
+
// callback handler, once by the raw `messages.create` patch).
|
|
21
|
+
//
|
|
22
|
+
// Trade-off (by design): if an app has BOTH @langchain/core installed AND
|
|
23
|
+
// makes raw `@anthropic-ai/sdk` calls outside LangChain, those raw calls
|
|
24
|
+
// won't be auto-traced. To trace them, instrument explicitly with
|
|
25
|
+
// `new AnthropicInstrumentor().instrumentClass(...)`, or call
|
|
26
|
+
// `init({ autoDiscover: false, integrations: [anthropicIntegration] })`.
|
|
27
|
+
deactivates: ["anthropic"],
|
|
28
|
+
setupOnce({ token, serviceName, baseUrl, advanced, handles }) {
|
|
29
|
+
handles.langchainHandler = new IntrospectionCallbackHandler({
|
|
30
|
+
token,
|
|
31
|
+
serviceName,
|
|
32
|
+
baseUrl,
|
|
33
|
+
additionalHeaders: advanced?.additionalHeaders,
|
|
34
|
+
advanced: advanced?.spanExporter
|
|
35
|
+
? { spanExporter: advanced.spanExporter }
|
|
36
|
+
: undefined,
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
export default integration;
|
|
41
|
+
//# sourceMappingURL=langchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../../src/otel/integrations/langchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iBAAiB;AACjB,OAAO,gCAAgC,CAAC;AAExC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAGvE,MAAM,WAAW,GAAgB;IAC/B,UAAU,EAAE,WAAW;IACvB,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,8DAA8D;IAC9D,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,kEAAkE;IAClE,8DAA8D;IAC9D,yEAAyE;IACzE,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC1D,OAAO,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CAAC;YAC1D,KAAK;YACL,WAAW;YACX,OAAO;YACP,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;YAC9C,QAAQ,EAAE,QAAQ,EAAE,YAAY;gBAC9B,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBACzC,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastra integration.
|
|
3
|
+
*
|
|
4
|
+
* The Mastra exporter is wired into Mastra's `observability.configs` rather
|
|
5
|
+
* than globally, so this integration builds the exporter — pre-bound to the
|
|
6
|
+
* `init()` token — and publishes it via `introspection.getMastraExporter()`.
|
|
7
|
+
*
|
|
8
|
+
* Importing `../mastra-exporter.js` (which requires `@mastra/observability`)
|
|
9
|
+
* is the presence gate: a missing Mastra makes discovery skip this shim.
|
|
10
|
+
*/
|
|
11
|
+
import type { Integration } from "./base.js";
|
|
12
|
+
declare const integration: Integration;
|
|
13
|
+
export default integration;
|
|
14
|
+
//# sourceMappingURL=mastra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mastra.d.ts","sourceRoot":"","sources":["../../../src/otel/integrations/mastra.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,EAAE,WAalB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastra integration.
|
|
3
|
+
*
|
|
4
|
+
* The Mastra exporter is wired into Mastra's `observability.configs` rather
|
|
5
|
+
* than globally, so this integration builds the exporter — pre-bound to the
|
|
6
|
+
* `init()` token — and publishes it via `introspection.getMastraExporter()`.
|
|
7
|
+
*
|
|
8
|
+
* Importing `../mastra-exporter.js` (which requires `@mastra/observability`)
|
|
9
|
+
* is the presence gate: a missing Mastra makes discovery skip this shim.
|
|
10
|
+
*/
|
|
11
|
+
import { IntrospectionMastraExporter } from "../mastra-exporter.js";
|
|
12
|
+
const integration = {
|
|
13
|
+
identifier: "mastra",
|
|
14
|
+
setupOnce({ token, baseUrl, advanced, handles }) {
|
|
15
|
+
handles.mastraExporter = new IntrospectionMastraExporter({
|
|
16
|
+
token,
|
|
17
|
+
baseUrl,
|
|
18
|
+
additionalHeaders: advanced?.additionalHeaders,
|
|
19
|
+
debug: advanced?.debug,
|
|
20
|
+
advanced: advanced?.spanExporter
|
|
21
|
+
? { spanExporter: advanced.spanExporter }
|
|
22
|
+
: undefined,
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export default integration;
|
|
27
|
+
//# sourceMappingURL=mastra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mastra.js","sourceRoot":"","sources":["../../../src/otel/integrations/mastra.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,WAAW,GAAgB;IAC/B,UAAU,EAAE,QAAQ;IACpB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC7C,OAAO,CAAC,cAAc,GAAG,IAAI,2BAA2B,CAAC;YACvD,KAAK;YACL,OAAO;YACP,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;YAC9C,KAAK,EAAE,QAAQ,EAAE,KAAK;YACtB,QAAQ,EAAE,QAAQ,EAAE,YAAY;gBAC9B,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBACzC,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Agents SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* Registers an {@link IntrospectionTracingProcessor} with the Agents SDK's
|
|
5
|
+
* global trace pipeline. `addTraceProcessor` appends, preserving any processors
|
|
6
|
+
* other integrations (e.g. a vendor exporter) already registered.
|
|
7
|
+
*/
|
|
8
|
+
import type { Integration } from "./base.js";
|
|
9
|
+
declare const integration: Integration;
|
|
10
|
+
export default integration;
|
|
11
|
+
//# sourceMappingURL=openai-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-agents.d.ts","sourceRoot":"","sources":["../../../src/otel/integrations/openai-agents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,EAAE,WAelB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Agents SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* Registers an {@link IntrospectionTracingProcessor} with the Agents SDK's
|
|
5
|
+
* global trace pipeline. `addTraceProcessor` appends, preserving any processors
|
|
6
|
+
* other integrations (e.g. a vendor exporter) already registered.
|
|
7
|
+
*/
|
|
8
|
+
import { addTraceProcessor } from "@openai/agents";
|
|
9
|
+
import { IntrospectionTracingProcessor } from "../tracing-processor.js";
|
|
10
|
+
const integration = {
|
|
11
|
+
identifier: "openai_agents",
|
|
12
|
+
setupOnce({ token, serviceName, baseUrl, advanced }) {
|
|
13
|
+
addTraceProcessor(new IntrospectionTracingProcessor({
|
|
14
|
+
token,
|
|
15
|
+
serviceName,
|
|
16
|
+
baseUrl,
|
|
17
|
+
additionalHeaders: advanced?.additionalHeaders,
|
|
18
|
+
advanced: advanced?.spanExporter
|
|
19
|
+
? { spanExporter: advanced.spanExporter }
|
|
20
|
+
: undefined,
|
|
21
|
+
}));
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export default integration;
|
|
25
|
+
//# sourceMappingURL=openai-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-agents.js","sourceRoot":"","sources":["../../../src/otel/integrations/openai-agents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAGxE,MAAM,WAAW,GAAgB;IAC/B,UAAU,EAAE,eAAe;IAC3B,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;QACjD,iBAAiB,CACf,IAAI,6BAA6B,CAAC;YAChC,KAAK;YACL,WAAW;YACX,OAAO;YACP,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;YAC9C,QAAQ,EAAE,QAAQ,EAAE,YAAY;gBAC9B,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBACzC,CAAC,CAAC,SAAS;SACd,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi Agent SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* The Pi instrumentor wraps a specific `Agent` instance, so this integration
|
|
5
|
+
* builds the instrumentor — bound to the shared provider's global tracer — and
|
|
6
|
+
* publishes it via `introspection.instrumentPi(agent, meta)`.
|
|
7
|
+
*/
|
|
8
|
+
import "@mariozechner/pi-agent-core";
|
|
9
|
+
import type { Integration } from "./base.js";
|
|
10
|
+
declare const integration: Integration;
|
|
11
|
+
export default integration;
|
|
12
|
+
//# sourceMappingURL=pi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/otel/integrations/pi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,EAAE,WAOlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi Agent SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* The Pi instrumentor wraps a specific `Agent` instance, so this integration
|
|
5
|
+
* builds the instrumentor — bound to the shared provider's global tracer — and
|
|
6
|
+
* publishes it via `introspection.instrumentPi(agent, meta)`.
|
|
7
|
+
*/
|
|
8
|
+
// Presence gate.
|
|
9
|
+
import "@mariozechner/pi-agent-core";
|
|
10
|
+
import { IntrospectionPiInstrumentor } from "../pi.js";
|
|
11
|
+
const integration = {
|
|
12
|
+
identifier: "pi",
|
|
13
|
+
setupOnce({ handles }) {
|
|
14
|
+
// The instrumentor emits onto the global tracer, which `init()` has just
|
|
15
|
+
// registered with the shared IntrospectionSpanProcessor.
|
|
16
|
+
handles.piInstrumentor = new IntrospectionPiInstrumentor();
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export default integration;
|
|
20
|
+
//# sourceMappingURL=pi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/otel/integrations/pi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iBAAiB;AACjB,OAAO,6BAA6B,CAAC;AAErC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,WAAW,GAAgB;IAC/B,UAAU,EAAE,IAAI;IAChB,SAAS,CAAC,EAAE,OAAO,EAAE;QACnB,yEAAyE;QACzE,yDAAyD;QACzD,OAAO,CAAC,cAAc,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAC7D,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* The AI SDK emits `ai.*` / `gen_ai.*` attributes natively via OTel when
|
|
5
|
+
* `experimental_telemetry` is enabled. The shared provider already carries an
|
|
6
|
+
* {@link IntrospectionSpanProcessor}, which converts those `ai.*` attributes to
|
|
7
|
+
* canonical `gen_ai.*` semconv at span end — so there is nothing to patch here.
|
|
8
|
+
* This integration exists so auto-discovery reports the AI SDK as detected and
|
|
9
|
+
* (via its top-level import) is skipped when `ai` is not installed.
|
|
10
|
+
*/
|
|
11
|
+
import "ai";
|
|
12
|
+
import type { Integration } from "./base.js";
|
|
13
|
+
declare const integration: Integration;
|
|
14
|
+
export default integration;
|
|
15
|
+
//# sourceMappingURL=vercel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/otel/integrations/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,IAAI,CAAC;AAEZ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,EAAE,WAKlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* The AI SDK emits `ai.*` / `gen_ai.*` attributes natively via OTel when
|
|
5
|
+
* `experimental_telemetry` is enabled. The shared provider already carries an
|
|
6
|
+
* {@link IntrospectionSpanProcessor}, which converts those `ai.*` attributes to
|
|
7
|
+
* canonical `gen_ai.*` semconv at span end — so there is nothing to patch here.
|
|
8
|
+
* This integration exists so auto-discovery reports the AI SDK as detected and
|
|
9
|
+
* (via its top-level import) is skipped when `ai` is not installed.
|
|
10
|
+
*/
|
|
11
|
+
// Presence gate: a missing `ai` package makes this module's import reject.
|
|
12
|
+
import "ai";
|
|
13
|
+
const integration = {
|
|
14
|
+
identifier: "vercel",
|
|
15
|
+
setupOnce() {
|
|
16
|
+
// No-op: the shared IntrospectionSpanProcessor converts AI SDK spans.
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export default integration;
|
|
20
|
+
//# sourceMappingURL=vercel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../src/otel/integrations/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,2EAA2E;AAC3E,OAAO,IAAI,CAAC;AAIZ,MAAM,WAAW,GAAgB;IAC/B,UAAU,EAAE,QAAQ;IACpB,SAAS;QACP,sEAAsE;IACxE,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -44,7 +44,7 @@ export interface LangChainHandlerAdvancedOptions {
|
|
|
44
44
|
export interface IntrospectionCallbackHandlerOptions {
|
|
45
45
|
/** Authentication token (env: INTROSPECTION_TOKEN). */
|
|
46
46
|
token?: string;
|
|
47
|
-
/** Base URL for the API (env:
|
|
47
|
+
/** Base URL for the API (env: INTROSPECTION_BASE_OTEL_URL). */
|
|
48
48
|
baseUrl?: string;
|
|
49
49
|
/** Service name for telemetry (env: INTROSPECTION_SERVICE_NAME). */
|
|
50
50
|
serviceName?: string;
|
|
@@ -96,6 +96,15 @@ export declare class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
96
96
|
/** Walk up the span tree to find the first non-wrapper span name. */
|
|
97
97
|
private _findAgentName;
|
|
98
98
|
private _getConversationId;
|
|
99
|
+
/**
|
|
100
|
+
* Read a single value from the active OTel baggage. Returns undefined when
|
|
101
|
+
* no propagator is installed or the key is absent.
|
|
102
|
+
*
|
|
103
|
+
* Used so callers can scope LangChain calls with
|
|
104
|
+
* `IntrospectionClient.withAgent()` / `.withConversation()` /
|
|
105
|
+
* `.withGenAi()` without threading metadata through every invoke().
|
|
106
|
+
*/
|
|
107
|
+
private _readBaggage;
|
|
99
108
|
private _convertMessages;
|
|
100
109
|
private _mapRole;
|
|
101
110
|
private _extractContent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-handler.d.ts","sourceRoot":"","sources":["../../src/otel/langchain-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
29
|
-
import { context as otelContext, ROOT_CONTEXT, SpanStatusCode, trace as otelTrace, } from "@opentelemetry/api";
|
|
29
|
+
import { context as otelContext, propagation, ROOT_CONTEXT, SpanStatusCode, trace as otelTrace, } from "@opentelemetry/api";
|
|
30
30
|
import { BasicTracerProvider, BatchSpanProcessor, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-base";
|
|
31
31
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
32
32
|
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
33
33
|
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
|
|
34
34
|
import { randomUUID } from "crypto";
|
|
35
|
-
import { logger, withOtlpHttpsProxy } from "
|
|
36
|
-
import { VERSION } from "
|
|
35
|
+
import { logger, withOtlpHttpsProxy } from "../utils.js";
|
|
36
|
+
import { VERSION } from "../version.js";
|
|
37
37
|
// ---------------------------------------------------------------------------
|
|
38
38
|
// Handler
|
|
39
39
|
// ---------------------------------------------------------------------------
|
|
@@ -82,7 +82,7 @@ export class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
82
82
|
throw new Error("INTROSPECTION_TOKEN is required");
|
|
83
83
|
}
|
|
84
84
|
const baseUrl = options.baseUrl ||
|
|
85
|
-
process.env.
|
|
85
|
+
process.env.INTROSPECTION_BASE_OTEL_URL ||
|
|
86
86
|
"https://otel.introspection.dev";
|
|
87
87
|
const endpoint = baseUrl.endsWith("/v1/traces")
|
|
88
88
|
? baseUrl
|
|
@@ -156,11 +156,17 @@ export class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
156
156
|
if (parentRunId) {
|
|
157
157
|
this._spanParents.set(runId, parentRunId);
|
|
158
158
|
}
|
|
159
|
-
//
|
|
160
|
-
|
|
159
|
+
// Baggage wins so per-call agent identity (e.g. via withAgent())
|
|
160
|
+
// overrides the parent-span-name walk used as a default.
|
|
161
|
+
const baggageAgentName = this._readBaggage("gen_ai.agent.name");
|
|
162
|
+
const agentName = baggageAgentName || this._findAgentName(parentRunId);
|
|
161
163
|
if (agentName) {
|
|
162
164
|
span.setAttribute("gen_ai.agent.name", agentName);
|
|
163
165
|
}
|
|
166
|
+
const baggageAgentId = this._readBaggage("gen_ai.agent.id");
|
|
167
|
+
if (baggageAgentId) {
|
|
168
|
+
span.setAttribute("gen_ai.agent.id", baggageAgentId);
|
|
169
|
+
}
|
|
164
170
|
return span;
|
|
165
171
|
}
|
|
166
172
|
// -------------------------------------------------------------------------
|
|
@@ -285,6 +291,21 @@ export class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
285
291
|
if (typeof outputTokens === "number") {
|
|
286
292
|
otelSpan.setAttribute("gen_ai.usage.output_tokens", outputTokens);
|
|
287
293
|
}
|
|
294
|
+
// Flat field (legacy format) or nested cache_creation object (Claude 4+).
|
|
295
|
+
const cacheCreationObj = tokenUsage["cache_creation"];
|
|
296
|
+
const cacheWriteTokens = tokenUsage["cache_creation_input_tokens"] ||
|
|
297
|
+
tokenUsage["cacheCreationInputTokens"] ||
|
|
298
|
+
(cacheCreationObj?.["ephemeral_5m_input_tokens"] || 0) +
|
|
299
|
+
(cacheCreationObj?.["ephemeral_1h_input_tokens"] || 0) ||
|
|
300
|
+
undefined;
|
|
301
|
+
if (typeof cacheWriteTokens === "number") {
|
|
302
|
+
otelSpan.setAttribute("gen_ai.usage.cache_creation.input_tokens", cacheWriteTokens);
|
|
303
|
+
}
|
|
304
|
+
const cacheReadTokens = tokenUsage["cache_read_input_tokens"] ||
|
|
305
|
+
tokenUsage["cacheReadInputTokens"];
|
|
306
|
+
if (typeof cacheReadTokens === "number") {
|
|
307
|
+
otelSpan.setAttribute("gen_ai.usage.cache_read.input_tokens", cacheReadTokens);
|
|
308
|
+
}
|
|
288
309
|
}
|
|
289
310
|
const model = usage?.["model"] || usage?.["model_name"];
|
|
290
311
|
if (typeof model === "string") {
|
|
@@ -437,8 +458,23 @@ export class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
437
458
|
if (threadId !== undefined && threadId !== null) {
|
|
438
459
|
return String(threadId);
|
|
439
460
|
}
|
|
461
|
+
const baggageConvId = this._readBaggage("gen_ai.conversation.id");
|
|
462
|
+
if (baggageConvId)
|
|
463
|
+
return baggageConvId;
|
|
440
464
|
return this._conversationId;
|
|
441
465
|
}
|
|
466
|
+
/**
|
|
467
|
+
* Read a single value from the active OTel baggage. Returns undefined when
|
|
468
|
+
* no propagator is installed or the key is absent.
|
|
469
|
+
*
|
|
470
|
+
* Used so callers can scope LangChain calls with
|
|
471
|
+
* `IntrospectionClient.withAgent()` / `.withConversation()` /
|
|
472
|
+
* `.withGenAi()` without threading metadata through every invoke().
|
|
473
|
+
*/
|
|
474
|
+
_readBaggage(key) {
|
|
475
|
+
const baggage = propagation.getBaggage(otelContext.active());
|
|
476
|
+
return baggage?.getEntry(key)?.value;
|
|
477
|
+
}
|
|
442
478
|
_convertMessages(messages) {
|
|
443
479
|
const inputMessages = [];
|
|
444
480
|
const systemInstructions = [];
|
|
@@ -516,3 +552,4 @@ export class IntrospectionCallbackHandler extends BaseCallbackHandler {
|
|
|
516
552
|
return String(content || "");
|
|
517
553
|
}
|
|
518
554
|
}
|
|
555
|
+
//# sourceMappingURL=langchain-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-handler.js","sourceRoot":"","sources":["../../src/otel/langchain-handler.ts"],"names":[],"mappings":"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"}
|