@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.
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +19 -6
- package/dist/agent.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/llm-agent.d.ts.map +1 -1
- package/dist/llm-agent.js +223 -124
- package/dist/llm-agent.js.map +1 -1
- package/dist/llm-provider.d.ts +1 -1
- package/dist/llm-provider.d.ts.map +1 -1
- package/dist/llm-provider.js +288 -234
- package/dist/llm-provider.js.map +1 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +106 -36
- package/dist/llm.js.map +1 -1
- package/dist/proxy.d.ts +8 -0
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +26 -0
- package/dist/proxy.js.map +1 -1
- package/dist/route.d.ts.map +1 -1
- package/dist/route.js +24 -6
- package/dist/route.js.map +1 -1
- package/dist/tracing.d.ts +1 -0
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +12 -0
- package/dist/tracing.js.map +1 -1
- package/package.json +2 -2
package/dist/llm-provider.js
CHANGED
|
@@ -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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
-
|
|
299
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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
|
-
|
|
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
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
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
|
-
|
|
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
|
-
|
|
497
|
-
|
|
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
|
-
|
|
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: {
|
package/dist/llm-provider.js.map
CHANGED
|
@@ -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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"}
|