mcp-use 0.1.20 → 0.3.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/dist/chunk-2HFIPY7C.js +429 -0
- package/dist/chunk-4DEFXVWT.js +680 -0
- package/dist/chunk-JXLQRAW2.js +532 -0
- package/dist/chunk-SHUYVCID.js +6 -0
- package/dist/chunk-YUSC6R6V.js +299 -0
- package/dist/index.cjs +5762 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3767 -22
- package/dist/langfuse-YA2S23SM.js +13 -0
- package/dist/src/agents/remote.d.ts.map +1 -1
- package/dist/src/agents/utils/ai_sdk.d.ts.map +1 -1
- package/dist/src/auth/browser-provider.d.ts +52 -0
- package/dist/src/auth/browser-provider.d.ts.map +1 -0
- package/dist/src/auth/callback.d.ts +6 -0
- package/dist/src/auth/callback.d.ts.map +1 -0
- package/dist/src/auth/index.d.ts +7 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/types.d.ts +18 -0
- package/dist/src/auth/types.d.ts.map +1 -0
- package/dist/src/browser.cjs +323 -0
- package/dist/src/browser.d.ts +8 -0
- package/dist/src/browser.d.ts.map +1 -0
- package/dist/src/browser.js +9 -0
- package/dist/src/client/base.d.ts +32 -0
- package/dist/src/client/base.d.ts.map +1 -0
- package/dist/src/client.d.ts +19 -16
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/logging.d.ts +1 -1
- package/dist/src/logging.d.ts.map +1 -1
- package/dist/src/oauth-helper.d.ts +125 -0
- package/dist/src/oauth-helper.d.ts.map +1 -0
- package/dist/src/react/index.cjs +986 -0
- package/dist/src/react/index.d.ts +9 -0
- package/dist/src/react/index.d.ts.map +1 -0
- package/dist/src/react/index.js +11 -0
- package/dist/src/react/types.d.ts +139 -0
- package/dist/src/react/types.d.ts.map +1 -0
- package/dist/src/react/useMcp.d.ts +3 -0
- package/dist/src/react/useMcp.d.ts.map +1 -0
- package/dist/src/server/index.cjs +566 -0
- package/dist/src/server/index.d.ts +3 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +9 -0
- package/dist/src/server/logging.d.ts +16 -0
- package/dist/src/server/logging.d.ts.map +1 -0
- package/dist/src/server/mcp-server.d.ts +282 -0
- package/dist/src/server/mcp-server.d.ts.map +1 -0
- package/dist/src/server/types.d.ts +47 -0
- package/dist/src/server/types.d.ts.map +1 -0
- package/dist/src/utils/assert.d.ts +8 -0
- package/dist/src/utils/assert.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +72 -40
- package/dist/examples/add_server_tool.d.ts +0 -8
- package/dist/examples/add_server_tool.d.ts.map +0 -1
- package/dist/examples/add_server_tool.js +0 -79
- package/dist/examples/ai_sdk_example.d.ts +0 -23
- package/dist/examples/ai_sdk_example.d.ts.map +0 -1
- package/dist/examples/ai_sdk_example.js +0 -213
- package/dist/examples/airbnb_use.d.ts +0 -10
- package/dist/examples/airbnb_use.d.ts.map +0 -1
- package/dist/examples/airbnb_use.js +0 -43
- package/dist/examples/blender_use.d.ts +0 -15
- package/dist/examples/blender_use.d.ts.map +0 -1
- package/dist/examples/blender_use.js +0 -39
- package/dist/examples/browser_use.d.ts +0 -10
- package/dist/examples/browser_use.d.ts.map +0 -1
- package/dist/examples/browser_use.js +0 -46
- package/dist/examples/chat_example.d.ts +0 -10
- package/dist/examples/chat_example.d.ts.map +0 -1
- package/dist/examples/chat_example.js +0 -86
- package/dist/examples/filesystem_use.d.ts +0 -11
- package/dist/examples/filesystem_use.d.ts.map +0 -1
- package/dist/examples/filesystem_use.js +0 -43
- package/dist/examples/http_example.d.ts +0 -18
- package/dist/examples/http_example.d.ts.map +0 -1
- package/dist/examples/http_example.js +0 -37
- package/dist/examples/mcp_everything.d.ts +0 -6
- package/dist/examples/mcp_everything.d.ts.map +0 -1
- package/dist/examples/mcp_everything.js +0 -25
- package/dist/examples/multi_server_example.d.ts +0 -10
- package/dist/examples/multi_server_example.d.ts.map +0 -1
- package/dist/examples/multi_server_example.js +0 -51
- package/dist/examples/observability.d.ts +0 -6
- package/dist/examples/observability.d.ts.map +0 -1
- package/dist/examples/observability.js +0 -50
- package/dist/examples/stream_example.d.ts +0 -12
- package/dist/examples/stream_example.d.ts.map +0 -1
- package/dist/examples/stream_example.js +0 -198
- package/dist/examples/structured_output.d.ts +0 -9
- package/dist/examples/structured_output.d.ts.map +0 -1
- package/dist/examples/structured_output.js +0 -95
- package/dist/src/adapters/base.js +0 -124
- package/dist/src/adapters/index.js +0 -2
- package/dist/src/adapters/langchain_adapter.js +0 -49
- package/dist/src/agents/base.js +0 -9
- package/dist/src/agents/index.js +0 -3
- package/dist/src/agents/mcp_agent.js +0 -1002
- package/dist/src/agents/prompts/system_prompt_builder.js +0 -40
- package/dist/src/agents/prompts/templates.js +0 -39
- package/dist/src/agents/remote.js +0 -264
- package/dist/src/agents/utils/ai_sdk.js +0 -62
- package/dist/src/agents/utils/index.js +0 -1
- package/dist/src/client.js +0 -133
- package/dist/src/config.js +0 -34
- package/dist/src/connectors/base.js +0 -143
- package/dist/src/connectors/http.js +0 -150
- package/dist/src/connectors/index.js +0 -4
- package/dist/src/connectors/stdio.js +0 -68
- package/dist/src/connectors/websocket.js +0 -157
- package/dist/src/logging.js +0 -217
- package/dist/src/managers/index.js +0 -2
- package/dist/src/managers/server_manager.js +0 -106
- package/dist/src/managers/tools/acquire_active_mcp_server.js +0 -17
- package/dist/src/managers/tools/add_server_from_config.js +0 -40
- package/dist/src/managers/tools/base.js +0 -17
- package/dist/src/managers/tools/connect_mcp_server.js +0 -46
- package/dist/src/managers/tools/index.js +0 -5
- package/dist/src/managers/tools/list_mcp_servers.js +0 -33
- package/dist/src/managers/tools/release_mcp_server_connection.js +0 -19
- package/dist/src/observability/index.js +0 -12
- package/dist/src/observability/langfuse.js +0 -211
- package/dist/src/observability/manager.js +0 -199
- package/dist/src/observability/types.js +0 -4
- package/dist/src/session.js +0 -23
- package/dist/src/task_managers/base.js +0 -127
- package/dist/src/task_managers/index.js +0 -5
- package/dist/src/task_managers/sse.js +0 -43
- package/dist/src/task_managers/stdio.js +0 -51
- package/dist/src/task_managers/streamable_http.js +0 -50
- package/dist/src/task_managers/websocket.js +0 -67
- package/dist/src/telemetry/events.js +0 -44
- package/dist/src/telemetry/index.js +0 -8
- package/dist/src/telemetry/telemetry.js +0 -324
- package/dist/src/telemetry/utils.js +0 -39
- package/dist/tests/ai_sdk_compatibility.test.js +0 -214
- package/dist/tests/stream_events.test.js +0 -307
- package/dist/tests/stream_events_simple.test.js +0 -179
- package/dist/vitest.config.js +0 -21
@@ -0,0 +1,429 @@
|
|
1
|
+
import {
|
2
|
+
__name
|
3
|
+
} from "./chunk-SHUYVCID.js";
|
4
|
+
|
5
|
+
// src/observability/langfuse.ts
|
6
|
+
import { config } from "dotenv";
|
7
|
+
|
8
|
+
// src/logging.ts
|
9
|
+
import { createLogger, format, transports } from "winston";
|
10
|
+
async function getNodeModules() {
|
11
|
+
if (typeof process !== "undefined" && process.platform) {
|
12
|
+
try {
|
13
|
+
const fs = await import("fs");
|
14
|
+
const path = await import("path");
|
15
|
+
return { fs: fs.default, path: path.default };
|
16
|
+
} catch {
|
17
|
+
return { fs: null, path: null };
|
18
|
+
}
|
19
|
+
}
|
20
|
+
return { fs: null, path: null };
|
21
|
+
}
|
22
|
+
__name(getNodeModules, "getNodeModules");
|
23
|
+
var { combine, timestamp, label, printf, colorize, splat } = format;
|
24
|
+
var DEFAULT_LOGGER_NAME = "mcp-use";
|
25
|
+
function isNodeJSEnvironment() {
|
26
|
+
try {
|
27
|
+
if (typeof navigator !== "undefined" && navigator.userAgent?.includes("Cloudflare-Workers")) {
|
28
|
+
return false;
|
29
|
+
}
|
30
|
+
if (typeof globalThis.EdgeRuntime !== "undefined" || typeof globalThis.Deno !== "undefined") {
|
31
|
+
return false;
|
32
|
+
}
|
33
|
+
const hasNodeGlobals = typeof process !== "undefined" && typeof process.platform !== "undefined" && typeof __dirname !== "undefined";
|
34
|
+
const hasNodeModules = typeof createLogger === "function";
|
35
|
+
return hasNodeGlobals && hasNodeModules;
|
36
|
+
} catch {
|
37
|
+
return false;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
__name(isNodeJSEnvironment, "isNodeJSEnvironment");
|
41
|
+
var SimpleConsoleLogger = class {
|
42
|
+
static {
|
43
|
+
__name(this, "SimpleConsoleLogger");
|
44
|
+
}
|
45
|
+
_level;
|
46
|
+
name;
|
47
|
+
constructor(name = DEFAULT_LOGGER_NAME, level = "info") {
|
48
|
+
this.name = name;
|
49
|
+
this._level = level;
|
50
|
+
}
|
51
|
+
shouldLog(level) {
|
52
|
+
const levels = ["error", "warn", "info", "http", "verbose", "debug", "silly"];
|
53
|
+
const currentIndex = levels.indexOf(this._level);
|
54
|
+
const messageIndex = levels.indexOf(level);
|
55
|
+
return messageIndex <= currentIndex;
|
56
|
+
}
|
57
|
+
formatMessage(level, message) {
|
58
|
+
const timestamp2 = (/* @__PURE__ */ new Date()).toLocaleTimeString("en-US", { hour12: false });
|
59
|
+
return `${timestamp2} [${this.name}] ${level}: ${message}`;
|
60
|
+
}
|
61
|
+
error(message) {
|
62
|
+
if (this.shouldLog("error")) {
|
63
|
+
console.error(this.formatMessage("error", message));
|
64
|
+
}
|
65
|
+
}
|
66
|
+
warn(message) {
|
67
|
+
if (this.shouldLog("warn")) {
|
68
|
+
console.warn(this.formatMessage("warn", message));
|
69
|
+
}
|
70
|
+
}
|
71
|
+
info(message) {
|
72
|
+
if (this.shouldLog("info")) {
|
73
|
+
console.info(this.formatMessage("info", message));
|
74
|
+
}
|
75
|
+
}
|
76
|
+
debug(message) {
|
77
|
+
if (this.shouldLog("debug")) {
|
78
|
+
console.debug(this.formatMessage("debug", message));
|
79
|
+
}
|
80
|
+
}
|
81
|
+
http(message) {
|
82
|
+
if (this.shouldLog("http")) {
|
83
|
+
console.log(this.formatMessage("http", message));
|
84
|
+
}
|
85
|
+
}
|
86
|
+
verbose(message) {
|
87
|
+
if (this.shouldLog("verbose")) {
|
88
|
+
console.log(this.formatMessage("verbose", message));
|
89
|
+
}
|
90
|
+
}
|
91
|
+
silly(message) {
|
92
|
+
if (this.shouldLog("silly")) {
|
93
|
+
console.log(this.formatMessage("silly", message));
|
94
|
+
}
|
95
|
+
}
|
96
|
+
// Make it compatible with Winston interface
|
97
|
+
get level() {
|
98
|
+
return this._level;
|
99
|
+
}
|
100
|
+
set level(newLevel) {
|
101
|
+
this._level = newLevel;
|
102
|
+
}
|
103
|
+
};
|
104
|
+
function resolveLevel(env) {
|
105
|
+
const envValue = typeof process !== "undefined" && process.env ? env : void 0;
|
106
|
+
switch (envValue?.trim()) {
|
107
|
+
case "2":
|
108
|
+
return "debug";
|
109
|
+
case "1":
|
110
|
+
return "info";
|
111
|
+
default:
|
112
|
+
return "info";
|
113
|
+
}
|
114
|
+
}
|
115
|
+
__name(resolveLevel, "resolveLevel");
|
116
|
+
var minimalFormatter = printf(({ level, message, label: label2, timestamp: timestamp2 }) => {
|
117
|
+
return `${timestamp2} [${label2}] ${level}: ${message}`;
|
118
|
+
});
|
119
|
+
var detailedFormatter = printf(({ level, message, label: label2, timestamp: timestamp2 }) => {
|
120
|
+
return `${timestamp2} [${label2}] ${level.toUpperCase()}: ${message}`;
|
121
|
+
});
|
122
|
+
var emojiFormatter = printf(({ level, message, label: label2, timestamp: timestamp2 }) => {
|
123
|
+
return `${timestamp2} [${label2}] ${level.toUpperCase()}: ${message}`;
|
124
|
+
});
|
125
|
+
var Logger = class {
|
126
|
+
static {
|
127
|
+
__name(this, "Logger");
|
128
|
+
}
|
129
|
+
static instances = {};
|
130
|
+
static simpleInstances = {};
|
131
|
+
static currentFormat = "minimal";
|
132
|
+
static get(name = DEFAULT_LOGGER_NAME) {
|
133
|
+
if (!isNodeJSEnvironment()) {
|
134
|
+
if (!this.simpleInstances[name]) {
|
135
|
+
const debugEnv = typeof process !== "undefined" && process.env?.DEBUG || void 0;
|
136
|
+
this.simpleInstances[name] = new SimpleConsoleLogger(name, resolveLevel(debugEnv));
|
137
|
+
}
|
138
|
+
return this.simpleInstances[name];
|
139
|
+
}
|
140
|
+
if (!this.instances[name]) {
|
141
|
+
this.instances[name] = createLogger({
|
142
|
+
level: resolveLevel(process.env.DEBUG),
|
143
|
+
format: combine(
|
144
|
+
colorize(),
|
145
|
+
splat(),
|
146
|
+
label({ label: name }),
|
147
|
+
timestamp({ format: "HH:mm:ss" }),
|
148
|
+
this.getFormatter()
|
149
|
+
),
|
150
|
+
transports: []
|
151
|
+
});
|
152
|
+
}
|
153
|
+
return this.instances[name];
|
154
|
+
}
|
155
|
+
static getFormatter() {
|
156
|
+
switch (this.currentFormat) {
|
157
|
+
case "minimal":
|
158
|
+
return minimalFormatter;
|
159
|
+
case "detailed":
|
160
|
+
return detailedFormatter;
|
161
|
+
case "emoji":
|
162
|
+
return emojiFormatter;
|
163
|
+
default:
|
164
|
+
return minimalFormatter;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
static async configure(options = {}) {
|
168
|
+
const { level, console: console2 = true, file, format: format2 = "minimal" } = options;
|
169
|
+
const debugEnv = typeof process !== "undefined" && process.env?.DEBUG || void 0;
|
170
|
+
const resolvedLevel = level ?? resolveLevel(debugEnv);
|
171
|
+
this.currentFormat = format2;
|
172
|
+
const root = this.get();
|
173
|
+
root.level = resolvedLevel;
|
174
|
+
const winstonRoot = root;
|
175
|
+
if (!isNodeJSEnvironment()) {
|
176
|
+
Object.values(this.simpleInstances).forEach((logger2) => {
|
177
|
+
logger2.level = resolvedLevel;
|
178
|
+
});
|
179
|
+
return;
|
180
|
+
}
|
181
|
+
winstonRoot.clear();
|
182
|
+
if (console2) {
|
183
|
+
winstonRoot.add(new transports.Console());
|
184
|
+
}
|
185
|
+
if (file) {
|
186
|
+
const { fs: nodeFs, path: nodePath } = await getNodeModules();
|
187
|
+
if (nodeFs && nodePath) {
|
188
|
+
const dir = nodePath.dirname(nodePath.resolve(file));
|
189
|
+
if (!nodeFs.existsSync(dir)) {
|
190
|
+
nodeFs.mkdirSync(dir, { recursive: true });
|
191
|
+
}
|
192
|
+
winstonRoot.add(new transports.File({ filename: file }));
|
193
|
+
}
|
194
|
+
}
|
195
|
+
Object.values(this.instances).forEach((logger2) => {
|
196
|
+
if (logger2 && "format" in logger2) {
|
197
|
+
logger2.level = resolvedLevel;
|
198
|
+
logger2.format = combine(
|
199
|
+
colorize(),
|
200
|
+
splat(),
|
201
|
+
label({ label: DEFAULT_LOGGER_NAME }),
|
202
|
+
timestamp({ format: "HH:mm:ss" }),
|
203
|
+
this.getFormatter()
|
204
|
+
);
|
205
|
+
}
|
206
|
+
});
|
207
|
+
}
|
208
|
+
static setDebug(enabled) {
|
209
|
+
let level;
|
210
|
+
if (enabled === 2 || enabled === true)
|
211
|
+
level = "debug";
|
212
|
+
else if (enabled === 1)
|
213
|
+
level = "info";
|
214
|
+
else level = "info";
|
215
|
+
Object.values(this.simpleInstances).forEach((logger2) => {
|
216
|
+
logger2.level = level;
|
217
|
+
});
|
218
|
+
Object.values(this.instances).forEach((logger2) => {
|
219
|
+
if (logger2) {
|
220
|
+
logger2.level = level;
|
221
|
+
}
|
222
|
+
});
|
223
|
+
if (typeof process !== "undefined" && process.env) {
|
224
|
+
process.env.DEBUG = enabled ? enabled === true ? "2" : String(enabled) : "0";
|
225
|
+
}
|
226
|
+
}
|
227
|
+
static setFormat(format2) {
|
228
|
+
this.currentFormat = format2;
|
229
|
+
this.configure({ format: format2 });
|
230
|
+
}
|
231
|
+
};
|
232
|
+
if (isNodeJSEnvironment()) {
|
233
|
+
Logger.configure();
|
234
|
+
} else {
|
235
|
+
Logger.configure({ console: true });
|
236
|
+
}
|
237
|
+
var logger = Logger.get();
|
238
|
+
|
239
|
+
// src/observability/langfuse.ts
|
240
|
+
config();
|
241
|
+
var langfuseDisabled = process.env.MCP_USE_LANGFUSE?.toLowerCase() === "false";
|
242
|
+
var langfuseState = {
|
243
|
+
handler: null,
|
244
|
+
client: null,
|
245
|
+
initPromise: null
|
246
|
+
};
|
247
|
+
async function initializeLangfuse(agentId, metadata, metadataProvider, tagsProvider) {
|
248
|
+
try {
|
249
|
+
const langfuseModule = await import("langfuse-langchain").catch(() => null);
|
250
|
+
if (!langfuseModule) {
|
251
|
+
logger.debug("Langfuse package not installed - tracing disabled. Install with: npm install langfuse-langchain");
|
252
|
+
return;
|
253
|
+
}
|
254
|
+
const { CallbackHandler } = langfuseModule;
|
255
|
+
class LoggingCallbackHandler extends CallbackHandler {
|
256
|
+
static {
|
257
|
+
__name(this, "LoggingCallbackHandler");
|
258
|
+
}
|
259
|
+
agentId;
|
260
|
+
metadata;
|
261
|
+
metadataProvider;
|
262
|
+
tagsProvider;
|
263
|
+
verbose;
|
264
|
+
constructor(config3, agentId2, metadata2, metadataProvider2, tagsProvider2) {
|
265
|
+
super(config3);
|
266
|
+
this.agentId = agentId2;
|
267
|
+
this.metadata = metadata2;
|
268
|
+
this.metadataProvider = metadataProvider2;
|
269
|
+
this.tagsProvider = tagsProvider2;
|
270
|
+
this.verbose = config3?.verbose ?? false;
|
271
|
+
}
|
272
|
+
// Override to add custom metadata to traces
|
273
|
+
async handleChainStart(chain, inputs, runId, parentRunId, tags, metadata2, name, kwargs) {
|
274
|
+
logger.debug("Langfuse: Chain start intercepted");
|
275
|
+
const customTags = this.getCustomTags();
|
276
|
+
const metadataToAdd = this.getMetadata();
|
277
|
+
const enhancedTags = [...tags || [], ...customTags];
|
278
|
+
const enhancedMetadata = { ...metadata2 || {}, ...metadataToAdd };
|
279
|
+
if (this.verbose) {
|
280
|
+
logger.debug(`Langfuse: Chain start with custom tags: ${JSON.stringify(enhancedTags)}`);
|
281
|
+
logger.debug(`Langfuse: Chain start with metadata: ${JSON.stringify(enhancedMetadata)}`);
|
282
|
+
}
|
283
|
+
return super.handleChainStart(chain, inputs, runId, parentRunId, enhancedTags, enhancedMetadata, name, kwargs);
|
284
|
+
}
|
285
|
+
// Get custom tags based on environment and agent configuration
|
286
|
+
getCustomTags() {
|
287
|
+
const tags = [];
|
288
|
+
const env = this.getEnvironmentTag();
|
289
|
+
if (env) {
|
290
|
+
tags.push(`env:${env}`);
|
291
|
+
}
|
292
|
+
if (this.agentId) {
|
293
|
+
tags.push(`agent_id:${this.agentId}`);
|
294
|
+
}
|
295
|
+
if (this.tagsProvider) {
|
296
|
+
const providerTags = this.tagsProvider();
|
297
|
+
if (providerTags && providerTags.length > 0) {
|
298
|
+
tags.push(...providerTags);
|
299
|
+
}
|
300
|
+
}
|
301
|
+
return tags;
|
302
|
+
}
|
303
|
+
// Get metadata
|
304
|
+
getMetadata() {
|
305
|
+
const metadata2 = {};
|
306
|
+
const env = this.getEnvironmentTag();
|
307
|
+
if (env) {
|
308
|
+
metadata2.env = env;
|
309
|
+
}
|
310
|
+
if (this.agentId) {
|
311
|
+
metadata2.agent_id = this.agentId;
|
312
|
+
}
|
313
|
+
if (this.metadata) {
|
314
|
+
Object.assign(metadata2, this.metadata);
|
315
|
+
}
|
316
|
+
if (this.metadataProvider) {
|
317
|
+
const dynamicMetadata = this.metadataProvider();
|
318
|
+
if (dynamicMetadata) {
|
319
|
+
Object.assign(metadata2, dynamicMetadata);
|
320
|
+
}
|
321
|
+
}
|
322
|
+
return metadata2;
|
323
|
+
}
|
324
|
+
// Determine environment tag based on MCP_USE_AGENT_ENV
|
325
|
+
getEnvironmentTag() {
|
326
|
+
const agentEnv = process.env.MCP_USE_AGENT_ENV;
|
327
|
+
if (!agentEnv) {
|
328
|
+
return "unknown";
|
329
|
+
}
|
330
|
+
const envLower = agentEnv.toLowerCase();
|
331
|
+
if (envLower === "local" || envLower === "development") {
|
332
|
+
return "local";
|
333
|
+
} else if (envLower === "production" || envLower === "prod") {
|
334
|
+
return "production";
|
335
|
+
} else if (envLower === "staging" || envLower === "stage") {
|
336
|
+
return "staging";
|
337
|
+
} else if (envLower === "hosted" || envLower === "cloud") {
|
338
|
+
return "hosted";
|
339
|
+
}
|
340
|
+
return envLower.replace(/[^a-z0-9_-]/g, "_");
|
341
|
+
}
|
342
|
+
async handleLLMStart(...args) {
|
343
|
+
logger.debug("Langfuse: LLM start intercepted");
|
344
|
+
if (this.verbose) {
|
345
|
+
logger.debug(`Langfuse: LLM start args: ${JSON.stringify(args)}`);
|
346
|
+
}
|
347
|
+
return super.handleLLMStart(...args);
|
348
|
+
}
|
349
|
+
async handleToolStart(...args) {
|
350
|
+
logger.debug("Langfuse: Tool start intercepted");
|
351
|
+
if (this.verbose) {
|
352
|
+
logger.debug(`Langfuse: Tool start args: ${JSON.stringify(args)}`);
|
353
|
+
}
|
354
|
+
return super.handleToolStart(...args);
|
355
|
+
}
|
356
|
+
async handleRetrieverStart(...args) {
|
357
|
+
logger.debug("Langfuse: Retriever start intercepted");
|
358
|
+
if (this.verbose) {
|
359
|
+
logger.debug(`Langfuse: Retriever start args: ${JSON.stringify(args)}`);
|
360
|
+
}
|
361
|
+
return super.handleRetrieverStart(...args);
|
362
|
+
}
|
363
|
+
async handleAgentAction(...args) {
|
364
|
+
logger.debug("Langfuse: Agent action intercepted");
|
365
|
+
if (this.verbose) {
|
366
|
+
logger.debug(`Langfuse: Agent action args: ${JSON.stringify(args)}`);
|
367
|
+
}
|
368
|
+
return super.handleAgentAction(...args);
|
369
|
+
}
|
370
|
+
async handleAgentEnd(...args) {
|
371
|
+
logger.debug("Langfuse: Agent end intercepted");
|
372
|
+
if (this.verbose) {
|
373
|
+
logger.debug(`Langfuse: Agent end args: ${JSON.stringify(args)}`);
|
374
|
+
}
|
375
|
+
return super.handleAgentEnd(...args);
|
376
|
+
}
|
377
|
+
}
|
378
|
+
const config2 = {
|
379
|
+
publicKey: process.env.LANGFUSE_PUBLIC_KEY,
|
380
|
+
secretKey: process.env.LANGFUSE_SECRET_KEY,
|
381
|
+
baseUrl: process.env.LANGFUSE_HOST || process.env.LANGFUSE_BASEURL || "https://cloud.langfuse.com",
|
382
|
+
flushAt: Number.parseInt(process.env.LANGFUSE_FLUSH_AT || "15"),
|
383
|
+
flushInterval: Number.parseInt(process.env.LANGFUSE_FLUSH_INTERVAL || "10000"),
|
384
|
+
release: process.env.LANGFUSE_RELEASE,
|
385
|
+
requestTimeout: Number.parseInt(process.env.LANGFUSE_REQUEST_TIMEOUT || "10000"),
|
386
|
+
enabled: process.env.LANGFUSE_ENABLED !== "false"
|
387
|
+
};
|
388
|
+
langfuseState.handler = new LoggingCallbackHandler(config2, agentId, metadata, metadataProvider, tagsProvider);
|
389
|
+
logger.debug("Langfuse observability initialized successfully with logging enabled");
|
390
|
+
try {
|
391
|
+
const langfuseCore = await import("langfuse").catch(() => null);
|
392
|
+
if (langfuseCore) {
|
393
|
+
const { Langfuse } = langfuseCore;
|
394
|
+
langfuseState.client = new Langfuse({
|
395
|
+
publicKey: process.env.LANGFUSE_PUBLIC_KEY,
|
396
|
+
secretKey: process.env.LANGFUSE_SECRET_KEY,
|
397
|
+
baseUrl: process.env.LANGFUSE_HOST || "https://cloud.langfuse.com"
|
398
|
+
});
|
399
|
+
logger.debug("Langfuse client initialized");
|
400
|
+
}
|
401
|
+
} catch (error) {
|
402
|
+
logger.debug(`Langfuse client initialization failed: ${error}`);
|
403
|
+
}
|
404
|
+
} catch (error) {
|
405
|
+
logger.debug(`Langfuse initialization error: ${error}`);
|
406
|
+
}
|
407
|
+
}
|
408
|
+
__name(initializeLangfuse, "initializeLangfuse");
|
409
|
+
if (langfuseDisabled) {
|
410
|
+
logger.debug("Langfuse tracing disabled via MCP_USE_LANGFUSE environment variable");
|
411
|
+
} else if (!process.env.LANGFUSE_PUBLIC_KEY || !process.env.LANGFUSE_SECRET_KEY) {
|
412
|
+
logger.debug(
|
413
|
+
"Langfuse API keys not found - tracing disabled. Set LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY to enable"
|
414
|
+
);
|
415
|
+
} else {
|
416
|
+
langfuseState.initPromise = initializeLangfuse();
|
417
|
+
}
|
418
|
+
var langfuseHandler = /* @__PURE__ */ __name(() => langfuseState.handler, "langfuseHandler");
|
419
|
+
var langfuseClient = /* @__PURE__ */ __name(() => langfuseState.client, "langfuseClient");
|
420
|
+
var langfuseInitPromise = /* @__PURE__ */ __name(() => langfuseState.initPromise, "langfuseInitPromise");
|
421
|
+
|
422
|
+
export {
|
423
|
+
Logger,
|
424
|
+
logger,
|
425
|
+
initializeLangfuse,
|
426
|
+
langfuseHandler,
|
427
|
+
langfuseClient,
|
428
|
+
langfuseInitPromise
|
429
|
+
};
|