@mcpmesh/sdk 0.9.3 → 0.9.5

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.
@@ -24,6 +24,8 @@
24
24
  import { z } from "zod";
25
25
  import { createDebug } from "./debug.js";
26
26
  import { ProviderHandlerRegistry, makeSchemaStrict } from "./provider-handlers/index.js";
27
+ import { generateTraceId, generateSpanId, publishTraceSpan } from "./tracing.js";
28
+ import { runWithTraceContext } from "./proxy.js";
27
29
  const debug = createDebug("llm-provider");
28
30
  // ============================================================================
29
31
  // Vendor Extraction
@@ -257,254 +259,306 @@ export function llmProvider(config) {
257
259
  * Process a chat request using Vercel AI SDK.
258
260
  */
259
261
  const execute = async (args) => {
260
- try {
261
- const { request } = args;
262
- const startTime = Date.now();
263
- debug(`Processing chat request: messages=${request.messages.length}, tools=${request.tools?.length ?? 0}`);
264
- debug(`Received model_params keys: ${JSON.stringify(Object.keys(request.model_params ?? {}))}`);
265
- // Determine effective model (check for consumer override)
266
- let effectiveModel = model;
267
- const modelParams = { ...(request.model_params ?? {}) };
268
- if (modelParams.model && typeof modelParams.model === "string") {
269
- const overrideModel = modelParams.model;
270
- delete modelParams.model; // Remove to avoid duplication
271
- // Validate vendor compatibility
272
- const overrideVendor = extractVendorFromModel(overrideModel);
273
- if (overrideVendor && overrideVendor !== vendor) {
274
- // Vendor mismatch - log warning and fall back to provider's model
275
- debug(`Model override '${overrideModel}' ignored - vendor mismatch ` +
276
- `(override vendor: '${overrideVendor}', provider vendor: '${vendor}'). ` +
277
- `Using provider's default model: '${model}'`);
278
- }
279
- else {
280
- // Vendor matches or can't be determined - use override
281
- effectiveModel = overrideModel;
282
- debug(`Using model override '${effectiveModel}' (requested by consumer)`);
283
- }
284
- }
285
- // Issue #459: Extract output_schema for structured output via generateObject()
286
- const outputSchema = modelParams.output_schema;
287
- const outputTypeName = modelParams.output_type_name;
288
- delete modelParams.output_schema;
289
- delete modelParams.output_type_name;
290
- // Build OutputSchema object for handler (prompt formatting) - generateObject uses it directly
291
- const outputSchemaObj = outputSchema ? {
292
- schema: outputSchema,
293
- name: outputTypeName ?? "Response",
294
- } : null;
295
- if (outputSchemaObj) {
296
- debug(`Received output_schema for structured output: ${outputSchemaObj.name}`);
262
+ // Extract trace context from arguments (injected by upstream consumer)
263
+ let incomingTraceId = null;
264
+ let incomingParentSpan = null;
265
+ if (args && typeof args === "object") {
266
+ const argsObj = args;
267
+ if (typeof argsObj._trace_id === "string") {
268
+ incomingTraceId = argsObj._trace_id;
297
269
  }
298
- const effectiveModelName = extractModelName(effectiveModel);
299
- // Load provider if not cached
300
- if (!providerLoadAttempted) {
301
- providerLoadAttempted = true;
302
- cachedProvider = await loadProvider(vendor);
270
+ if (typeof argsObj._parent_span === "string") {
271
+ incomingParentSpan = argsObj._parent_span;
303
272
  }
304
- if (!cachedProvider) {
305
- throw new Error(`Vercel AI SDK provider for '${vendor}' not available. ` +
306
- `Install: npm install ${VENDOR_PROVIDERS[vendor] ?? `@ai-sdk/${vendor}`}`);
307
- }
308
- // Create the model instance
309
- const aiModel = cachedProvider(effectiveModelName);
310
- // Get vendor-specific handler for optimizations
311
- const handler = ProviderHandlerRegistry.getHandler(vendor);
312
- debug(`Using provider handler: ${handler.constructor.name} for vendor: ${vendor}`);
313
- // Determine output mode early (needed for system prompt formatting)
314
- // When tools are present, we can't use generateObject() (it doesn't support tools),
315
- // so we must fall back to "hint" mode to add JSON instructions to the system prompt.
316
- // This ensures the LLM knows to return structured JSON even when using generateText().
317
- const hasTools = request.tools && request.tools.length > 0;
318
- let outputMode = handler.determineOutputMode(outputSchemaObj);
319
- if (outputMode === "strict" && hasTools && outputSchemaObj) {
320
- debug(`Forcing hint mode: tools present (${request.tools?.length}), can't use generateObject`);
321
- outputMode = "hint";
322
- }
323
- debug(`Output mode for system prompt: ${outputMode}`);
324
- // Format system prompt with vendor-specific instructions (JSON format, tool rules, etc.)
325
- // This is critical for structured output - handlers add JSON instructions in "hint" mode
326
- // and brief notes in "strict" mode. Without this, LLMs may return plain text.
327
- const formattedMessages = request.messages.map(msg => {
328
- if (msg.role === "system" && msg.content) {
329
- const formattedContent = handler.formatSystemPrompt(msg.content, request.tools ?? null, // ToolSchema[] format (OpenAI function calling)
330
- outputSchemaObj, outputMode);
331
- debug(`Formatted system prompt (${outputMode} mode): ${formattedContent.substring(0, 200)}...`);
332
- return { ...msg, content: formattedContent };
333
- }
334
- return msg;
335
- });
336
- // Import generateText from ai package
337
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
338
- const aiModule = await import("ai");
339
- const generateText = aiModule.generateText;
340
- // Convert tools to Vercel AI SDK format using the tool() helper
341
- // Import jsonSchema and tool from ai package for proper schema handling
342
- const { jsonSchema, tool: aiTool } = aiModule;
343
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
344
- let vercelTools;
345
- if (request.tools && request.tools.length > 0) {
346
- vercelTools = {};
347
- for (const tool of request.tools) {
348
- // Get the raw schema parameters
349
- const rawSchema = tool.function.parameters ?? { type: "object", properties: {} };
350
- // Clean up schema for AI SDK compatibility:
351
- // - Remove $schema field (not needed for API calls)
352
- // - Ensure type: "object" is present (required by Anthropic API)
353
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
354
- const { $schema, ...schemaWithoutMeta } = rawSchema;
355
- const cleanSchema = {
356
- type: "object", // Ensure type is always present
357
- ...schemaWithoutMeta,
358
- };
359
- debug(`Tool '${tool.function.name}' cleanSchema: ${JSON.stringify(cleanSchema, null, 2)}`);
360
- // Use AI SDK's tool() helper with jsonSchema() for proper schema handling
361
- vercelTools[tool.function.name] = aiTool({
362
- description: tool.function.description ?? "",
363
- inputSchema: jsonSchema(cleanSchema),
364
- // No execute - we're in provider mode, consumer handles execution
273
+ }
274
+ // Set up trace context
275
+ const traceId = incomingTraceId ?? generateTraceId();
276
+ const spanId = generateSpanId();
277
+ const parentSpanId = incomingParentSpan ?? null;
278
+ const traceContext = { traceId, parentSpanId: spanId };
279
+ const traceStartTime = Date.now() / 1000;
280
+ let traceSuccess = true;
281
+ let traceError = null;
282
+ try {
283
+ return await runWithTraceContext(traceContext, async () => {
284
+ try {
285
+ const { request } = args;
286
+ const startTime = Date.now();
287
+ debug(`Processing chat request: messages=${request.messages.length}, tools=${request.tools?.length ?? 0}`);
288
+ debug(`Received model_params keys: ${JSON.stringify(Object.keys(request.model_params ?? {}))}`);
289
+ // Determine effective model (check for consumer override)
290
+ let effectiveModel = model;
291
+ const modelParams = { ...(request.model_params ?? {}) };
292
+ if (modelParams.model && typeof modelParams.model === "string") {
293
+ const overrideModel = modelParams.model;
294
+ delete modelParams.model; // Remove to avoid duplication
295
+ // Validate vendor compatibility
296
+ const overrideVendor = extractVendorFromModel(overrideModel);
297
+ if (overrideVendor && overrideVendor !== vendor) {
298
+ // Vendor mismatch - log warning and fall back to provider's model
299
+ debug(`Model override '${overrideModel}' ignored - vendor mismatch ` +
300
+ `(override vendor: '${overrideVendor}', provider vendor: '${vendor}'). ` +
301
+ `Using provider's default model: '${model}'`);
302
+ }
303
+ else {
304
+ // Vendor matches or can't be determined - use override
305
+ effectiveModel = overrideModel;
306
+ debug(`Using model override '${effectiveModel}' (requested by consumer)`);
307
+ }
308
+ }
309
+ // Issue #459: Extract output_schema for structured output via generateObject()
310
+ const outputSchema = modelParams.output_schema;
311
+ const outputTypeName = modelParams.output_type_name;
312
+ delete modelParams.output_schema;
313
+ delete modelParams.output_type_name;
314
+ // Build OutputSchema object for handler (prompt formatting) - generateObject uses it directly
315
+ const outputSchemaObj = outputSchema ? {
316
+ schema: outputSchema,
317
+ name: outputTypeName ?? "Response",
318
+ } : null;
319
+ if (outputSchemaObj) {
320
+ debug(`Received output_schema for structured output: ${outputSchemaObj.name}`);
321
+ }
322
+ const effectiveModelName = extractModelName(effectiveModel);
323
+ // Load provider if not cached
324
+ if (!providerLoadAttempted) {
325
+ providerLoadAttempted = true;
326
+ cachedProvider = await loadProvider(vendor);
327
+ }
328
+ if (!cachedProvider) {
329
+ throw new Error(`Vercel AI SDK provider for '${vendor}' not available. ` +
330
+ `Install: npm install ${VENDOR_PROVIDERS[vendor] ?? `@ai-sdk/${vendor}`}`);
331
+ }
332
+ // Create the model instance
333
+ const aiModel = cachedProvider(effectiveModelName);
334
+ // Get vendor-specific handler for optimizations
335
+ const handler = ProviderHandlerRegistry.getHandler(vendor);
336
+ debug(`Using provider handler: ${handler.constructor.name} for vendor: ${vendor}`);
337
+ // Determine output mode early (needed for system prompt formatting)
338
+ // When tools are present, we can't use generateObject() (it doesn't support tools),
339
+ // so we must fall back to "hint" mode to add JSON instructions to the system prompt.
340
+ // This ensures the LLM knows to return structured JSON even when using generateText().
341
+ const hasTools = request.tools && request.tools.length > 0;
342
+ let outputMode = handler.determineOutputMode(outputSchemaObj);
343
+ if (outputMode === "strict" && hasTools && outputSchemaObj) {
344
+ debug(`Forcing hint mode: tools present (${request.tools?.length}), can't use generateObject`);
345
+ outputMode = "hint";
346
+ }
347
+ debug(`Output mode for system prompt: ${outputMode}`);
348
+ // Format system prompt with vendor-specific instructions (JSON format, tool rules, etc.)
349
+ // This is critical for structured output - handlers add JSON instructions in "hint" mode
350
+ // and brief notes in "strict" mode. Without this, LLMs may return plain text.
351
+ const formattedMessages = request.messages.map(msg => {
352
+ if (msg.role === "system" && msg.content) {
353
+ const formattedContent = handler.formatSystemPrompt(msg.content, request.tools ?? null, // ToolSchema[] format (OpenAI function calling)
354
+ outputSchemaObj, outputMode);
355
+ debug(`Formatted system prompt (${outputMode} mode): ${formattedContent.substring(0, 200)}...`);
356
+ return { ...msg, content: formattedContent };
357
+ }
358
+ return msg;
365
359
  });
366
- debug(`Tool '${tool.function.name}' vercelTool created with aiTool() helper`);
360
+ // Import generateText from ai package
361
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
+ const aiModule = await import("ai");
363
+ const generateText = aiModule.generateText;
364
+ // Convert tools to Vercel AI SDK format using the tool() helper
365
+ // Import jsonSchema and tool from ai package for proper schema handling
366
+ const { jsonSchema, tool: aiTool } = aiModule;
367
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
368
+ let vercelTools;
369
+ if (request.tools && request.tools.length > 0) {
370
+ vercelTools = {};
371
+ for (const tool of request.tools) {
372
+ // Get the raw schema parameters
373
+ const rawSchema = tool.function.parameters ?? { type: "object", properties: {} };
374
+ // Clean up schema for AI SDK compatibility:
375
+ // - Remove $schema field (not needed for API calls)
376
+ // - Ensure type: "object" is present (required by Anthropic API)
377
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
378
+ const { $schema, ...schemaWithoutMeta } = rawSchema;
379
+ const cleanSchema = {
380
+ type: "object", // Ensure type is always present
381
+ ...schemaWithoutMeta,
382
+ };
383
+ debug(`Tool '${tool.function.name}' cleanSchema: ${JSON.stringify(cleanSchema, null, 2)}`);
384
+ // Use AI SDK's tool() helper with jsonSchema() for proper schema handling
385
+ vercelTools[tool.function.name] = aiTool({
386
+ description: tool.function.description ?? "",
387
+ inputSchema: jsonSchema(cleanSchema),
388
+ // No execute - we're in provider mode, consumer handles execution
389
+ });
390
+ debug(`Tool '${tool.function.name}' vercelTool created with aiTool() helper`);
391
+ }
392
+ }
393
+ // Apply vendor-specific request preparation (e.g., Claude prompt caching)
394
+ // The handler may transform messages or add vendor-specific options
395
+ // Use formattedMessages which have the system prompt already formatted by the handler
396
+ const preparedRequest = handler.prepareRequest(formattedMessages, null, // tools handled separately for Vercel AI SDK
397
+ outputSchemaObj, // Pass output schema for additional vendor-specific options
398
+ {
399
+ outputMode, // Pass output mode determined earlier
400
+ temperature: temperature ?? modelParams.temperature,
401
+ maxOutputTokens: maxTokens ?? modelParams.max_tokens,
402
+ topP: topP ?? modelParams.top_p,
403
+ });
404
+ // Build request options - use explicit object construction to avoid spread type issues
405
+ const convertedMessages = convertToVercelMessages(preparedRequest.messages);
406
+ debug(`Messages to AI SDK: ${JSON.stringify(convertedMessages, null, 2)}`);
407
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
408
+ const requestOptions = {
409
+ model: aiModel,
410
+ messages: convertedMessages,
411
+ };
412
+ // Add tools if present
413
+ if (vercelTools && Object.keys(vercelTools).length > 0) {
414
+ requestOptions.tools = vercelTools;
415
+ }
416
+ // Apply default config values
417
+ if (maxTokens) {
418
+ requestOptions.maxOutputTokens = maxTokens;
419
+ }
420
+ if (temperature !== undefined) {
421
+ requestOptions.temperature = temperature;
422
+ }
423
+ if (topP !== undefined) {
424
+ requestOptions.topP = topP;
425
+ }
426
+ // Apply model_params overrides (take precedence)
427
+ if (modelParams.max_tokens) {
428
+ requestOptions.maxOutputTokens = modelParams.max_tokens;
429
+ }
430
+ if (modelParams.temperature !== undefined) {
431
+ requestOptions.temperature = modelParams.temperature;
432
+ }
433
+ if (modelParams.top_p !== undefined) {
434
+ requestOptions.topP = modelParams.top_p;
435
+ }
436
+ debug(`Calling Vercel AI SDK: model=${effectiveModelName}`);
437
+ // Issue #459: Use generateObject for structured output based on handler's output mode
438
+ // - "strict" mode: Use generateObject() for native structured output (OpenAI/Gemini)
439
+ // - "hint" mode: Use generateText() with prompt-based JSON instructions (Claude)
440
+ // - "text" mode: Use generateText() for plain text output
441
+ // NOTE: generateObject() doesn't support tools in Vercel AI SDK, so when tools are
442
+ // present we must use generateText(). The handler's formatSystemPrompt() adds JSON
443
+ // instructions to ensure the LLM returns structured output even via generateText().
444
+ // outputMode was determined earlier (before formatSystemPrompt call)
445
+ const useStructuredOutput = outputMode === "strict" && outputSchema && !vercelTools;
446
+ debug(`Output mode: ${outputMode}, useStructuredOutput: ${useStructuredOutput}`);
447
+ let response;
448
+ let latencyMs;
449
+ let resultUsage;
450
+ if (useStructuredOutput) {
451
+ // Use generateObject for structured output
452
+ debug(`Using generateObject for structured output: ${outputTypeName}`);
453
+ const generateObject = aiModule.generateObject;
454
+ // Import jsonSchema helper to wrap JSON Schema for generateObject
455
+ const { jsonSchema } = aiModule;
456
+ // Clean up schema - remove $schema and other meta fields
457
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
458
+ const { $schema, title, ...cleanSchema } = outputSchema;
459
+ // Apply strict constraints recursively to all nested objects
460
+ // This adds additionalProperties: false and required fields at all levels
461
+ // Required for OpenAI/Gemini structured output, and enables future Claude support
462
+ const strictSchema = makeSchemaStrict(cleanSchema, { addAllRequired: true });
463
+ const objectResult = await generateObject({
464
+ model: aiModel,
465
+ messages: convertedMessages,
466
+ schema: jsonSchema(strictSchema),
467
+ schemaName: outputTypeName,
468
+ maxOutputTokens: requestOptions.maxOutputTokens,
469
+ temperature: requestOptions.temperature,
470
+ topP: requestOptions.topP,
471
+ });
472
+ latencyMs = Date.now() - startTime;
473
+ debug(`generateObject response received: ` +
474
+ `finishReason=${objectResult.finishReason}, ` +
475
+ `latency=${latencyMs}ms`);
476
+ // Build response with structured object as JSON string content
477
+ response = {
478
+ role: "assistant",
479
+ content: JSON.stringify(objectResult.object),
480
+ };
481
+ resultUsage = objectResult.usage;
482
+ }
483
+ else {
484
+ // Use generateText for regular text or tool-calling scenarios
485
+ const result = await generateText(requestOptions);
486
+ latencyMs = Date.now() - startTime;
487
+ debug(`LLM response received: ` +
488
+ `finishReason=${result.finishReason}, ` +
489
+ `toolCalls=${result.toolCalls?.length ?? 0}, ` +
490
+ `latency=${latencyMs}ms`);
491
+ // Build response
492
+ response = {
493
+ role: "assistant",
494
+ content: result.text ?? "",
495
+ };
496
+ // Include tool_calls if present (critical for agentic loop!)
497
+ if (result.toolCalls && result.toolCalls.length > 0) {
498
+ response.tool_calls = convertToolCalls(result.toolCalls);
499
+ }
500
+ resultUsage = result.usage;
501
+ }
502
+ // Include usage metadata for cost tracking (shared for both paths)
503
+ if (resultUsage) {
504
+ response._mesh_usage = {
505
+ prompt_tokens: resultUsage.inputTokens ?? 0,
506
+ completion_tokens: resultUsage.outputTokens ?? 0,
507
+ model: effectiveModel,
508
+ };
509
+ }
510
+ debug(`LLM provider processed request ` +
511
+ `(model=${effectiveModel}, messages=${request.messages.length}, ` +
512
+ `structured=${useStructuredOutput}, tool_calls=${response.tool_calls?.length ?? 0})`);
513
+ // Return JSON-stringified response
514
+ // The consumer (MeshDelegatedProvider.complete) expects content.text to be
515
+ // a JSON string that it can parse to get the MeshLlmResponse object.
516
+ // FastMCP wraps this in { content: [{ type: "text", text: <return_value> }] }
517
+ return JSON.stringify(response);
367
518
  }
368
- }
369
- // Apply vendor-specific request preparation (e.g., Claude prompt caching)
370
- // The handler may transform messages or add vendor-specific options
371
- // Use formattedMessages which have the system prompt already formatted by the handler
372
- const preparedRequest = handler.prepareRequest(formattedMessages, null, // tools handled separately for Vercel AI SDK
373
- outputSchemaObj, // Pass output schema for additional vendor-specific options
374
- {
375
- outputMode, // Pass output mode determined earlier
376
- temperature: temperature ?? modelParams.temperature,
377
- maxOutputTokens: maxTokens ?? modelParams.max_tokens,
378
- topP: topP ?? modelParams.top_p,
379
- });
380
- // Build request options - use explicit object construction to avoid spread type issues
381
- const convertedMessages = convertToVercelMessages(preparedRequest.messages);
382
- debug(`Messages to AI SDK: ${JSON.stringify(convertedMessages, null, 2)}`);
383
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
384
- const requestOptions = {
385
- model: aiModel,
386
- messages: convertedMessages,
387
- };
388
- // Add tools if present
389
- if (vercelTools && Object.keys(vercelTools).length > 0) {
390
- requestOptions.tools = vercelTools;
391
- }
392
- // Apply default config values
393
- if (maxTokens) {
394
- requestOptions.maxOutputTokens = maxTokens;
395
- }
396
- if (temperature !== undefined) {
397
- requestOptions.temperature = temperature;
398
- }
399
- if (topP !== undefined) {
400
- requestOptions.topP = topP;
401
- }
402
- // Apply model_params overrides (take precedence)
403
- if (modelParams.max_tokens) {
404
- requestOptions.maxOutputTokens = modelParams.max_tokens;
405
- }
406
- if (modelParams.temperature !== undefined) {
407
- requestOptions.temperature = modelParams.temperature;
408
- }
409
- if (modelParams.top_p !== undefined) {
410
- requestOptions.topP = modelParams.top_p;
411
- }
412
- debug(`Calling Vercel AI SDK: model=${effectiveModelName}`);
413
- // Issue #459: Use generateObject for structured output based on handler's output mode
414
- // - "strict" mode: Use generateObject() for native structured output (OpenAI/Gemini)
415
- // - "hint" mode: Use generateText() with prompt-based JSON instructions (Claude)
416
- // - "text" mode: Use generateText() for plain text output
417
- // NOTE: generateObject() doesn't support tools in Vercel AI SDK, so when tools are
418
- // present we must use generateText(). The handler's formatSystemPrompt() adds JSON
419
- // instructions to ensure the LLM returns structured output even via generateText().
420
- // outputMode was determined earlier (before formatSystemPrompt call)
421
- const useStructuredOutput = outputMode === "strict" && outputSchema && !vercelTools;
422
- debug(`Output mode: ${outputMode}, useStructuredOutput: ${useStructuredOutput}`);
423
- let response;
424
- let latencyMs;
425
- let resultUsage;
426
- if (useStructuredOutput) {
427
- // Use generateObject for structured output
428
- debug(`Using generateObject for structured output: ${outputTypeName}`);
429
- const generateObject = aiModule.generateObject;
430
- // Import jsonSchema helper to wrap JSON Schema for generateObject
431
- const { jsonSchema } = aiModule;
432
- // Clean up schema - remove $schema and other meta fields
433
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
434
- const { $schema, title, ...cleanSchema } = outputSchema;
435
- // Apply strict constraints recursively to all nested objects
436
- // This adds additionalProperties: false and required fields at all levels
437
- // Required for OpenAI/Gemini structured output, and enables future Claude support
438
- const strictSchema = makeSchemaStrict(cleanSchema, { addAllRequired: true });
439
- const objectResult = await generateObject({
440
- model: aiModel,
441
- messages: convertedMessages,
442
- schema: jsonSchema(strictSchema),
443
- schemaName: outputTypeName,
444
- maxOutputTokens: requestOptions.maxOutputTokens,
445
- temperature: requestOptions.temperature,
446
- topP: requestOptions.topP,
447
- });
448
- latencyMs = Date.now() - startTime;
449
- debug(`generateObject response received: ` +
450
- `finishReason=${objectResult.finishReason}, ` +
451
- `latency=${latencyMs}ms`);
452
- // Build response with structured object as JSON string content
453
- response = {
454
- role: "assistant",
455
- content: JSON.stringify(objectResult.object),
456
- };
457
- resultUsage = objectResult.usage;
458
- }
459
- else {
460
- // Use generateText for regular text or tool-calling scenarios
461
- const result = await generateText(requestOptions);
462
- latencyMs = Date.now() - startTime;
463
- debug(`LLM response received: ` +
464
- `finishReason=${result.finishReason}, ` +
465
- `toolCalls=${result.toolCalls?.length ?? 0}, ` +
466
- `latency=${latencyMs}ms`);
467
- // Build response
468
- response = {
469
- role: "assistant",
470
- content: result.text ?? "",
471
- };
472
- // Include tool_calls if present (critical for agentic loop!)
473
- if (result.toolCalls && result.toolCalls.length > 0) {
474
- response.tool_calls = convertToolCalls(result.toolCalls);
519
+ catch (err) {
520
+ console.error("[llm-provider] execute error:", err);
521
+ if (err instanceof Error) {
522
+ console.error("[llm-provider] stack:", err.stack);
523
+ }
524
+ throw err;
475
525
  }
476
- resultUsage = result.usage;
477
- }
478
- // Include usage metadata for cost tracking (shared for both paths)
479
- if (resultUsage) {
480
- response._mesh_usage = {
481
- prompt_tokens: resultUsage.inputTokens ?? 0,
482
- completion_tokens: resultUsage.outputTokens ?? 0,
483
- model: effectiveModel,
484
- };
485
- }
486
- debug(`LLM provider processed request ` +
487
- `(model=${effectiveModel}, messages=${request.messages.length}, ` +
488
- `structured=${useStructuredOutput}, tool_calls=${response.tool_calls?.length ?? 0})`);
489
- // Return JSON-stringified response
490
- // The consumer (MeshDelegatedProvider.complete) expects content.text to be
491
- // a JSON string that it can parse to get the MeshLlmResponse object.
492
- // FastMCP wraps this in { content: [{ type: "text", text: <return_value> }] }
493
- return JSON.stringify(response);
526
+ });
494
527
  }
495
528
  catch (err) {
496
- console.error("[llm-provider] execute error:", err);
497
- if (err instanceof Error) {
498
- console.error("[llm-provider] stack:", err.stack);
499
- }
529
+ traceSuccess = false;
530
+ traceError = err instanceof Error ? err.message : String(err);
500
531
  throw err;
501
532
  }
533
+ finally {
534
+ const traceEndTime = Date.now() / 1000;
535
+ const traceDurationMs = (traceEndTime - traceStartTime) * 1000;
536
+ publishTraceSpan({
537
+ traceId,
538
+ spanId,
539
+ parentSpan: parentSpanId,
540
+ functionName: name,
541
+ startTime: traceStartTime,
542
+ endTime: traceEndTime,
543
+ durationMs: traceDurationMs,
544
+ success: traceSuccess,
545
+ error: traceError,
546
+ resultType: "string",
547
+ argsCount: 0,
548
+ kwargsCount: typeof args === "object" ? Object.keys(args).length : 0,
549
+ dependencies: [],
550
+ injectedDependencies: 0,
551
+ meshPositions: [],
552
+ }).catch(() => { });
553
+ }
502
554
  };
503
555
  // Build the tool definition
504
556
  const toolDef = {
505
557
  name,
506
558
  description,
507
- parameters: MeshLlmRequestSchema,
559
+ // Use passthrough() to allow trace context fields (_trace_id, _parent_span)
560
+ // to pass through Zod validation without being stripped
561
+ parameters: MeshLlmRequestSchema.passthrough(),
508
562
  execute,
509
563
  // Attach mesh metadata for registration
510
564
  _meshMeta: {
@@ -1 +1 @@
1
- {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"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"}