@llumiverse/drivers 0.23.0 → 0.24.0-dev.202601221707

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.
Files changed (78) hide show
  1. package/README.md +141 -218
  2. package/lib/cjs/azure/azure_foundry.js +46 -2
  3. package/lib/cjs/azure/azure_foundry.js.map +1 -1
  4. package/lib/cjs/bedrock/index.js +236 -16
  5. package/lib/cjs/bedrock/index.js.map +1 -1
  6. package/lib/cjs/groq/index.js +115 -85
  7. package/lib/cjs/groq/index.js.map +1 -1
  8. package/lib/cjs/index.js +1 -0
  9. package/lib/cjs/index.js.map +1 -1
  10. package/lib/cjs/openai/index.js +310 -114
  11. package/lib/cjs/openai/index.js.map +1 -1
  12. package/lib/cjs/openai/openai_compatible.js +62 -0
  13. package/lib/cjs/openai/openai_compatible.js.map +1 -0
  14. package/lib/cjs/openai/openai_format.js +32 -39
  15. package/lib/cjs/openai/openai_format.js.map +1 -1
  16. package/lib/cjs/vertexai/index.js +165 -0
  17. package/lib/cjs/vertexai/index.js.map +1 -1
  18. package/lib/cjs/vertexai/models/claude.js +201 -3
  19. package/lib/cjs/vertexai/models/claude.js.map +1 -1
  20. package/lib/cjs/vertexai/models/gemini.js +59 -20
  21. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  22. package/lib/cjs/xai/index.js +10 -16
  23. package/lib/cjs/xai/index.js.map +1 -1
  24. package/lib/esm/azure/azure_foundry.js +46 -2
  25. package/lib/esm/azure/azure_foundry.js.map +1 -1
  26. package/lib/esm/bedrock/index.js +236 -17
  27. package/lib/esm/bedrock/index.js.map +1 -1
  28. package/lib/esm/groq/index.js +115 -85
  29. package/lib/esm/groq/index.js.map +1 -1
  30. package/lib/esm/index.js +1 -0
  31. package/lib/esm/index.js.map +1 -1
  32. package/lib/esm/openai/index.js +311 -115
  33. package/lib/esm/openai/index.js.map +1 -1
  34. package/lib/esm/openai/openai_compatible.js +55 -0
  35. package/lib/esm/openai/openai_compatible.js.map +1 -0
  36. package/lib/esm/openai/openai_format.js +32 -39
  37. package/lib/esm/openai/openai_format.js.map +1 -1
  38. package/lib/esm/vertexai/index.js +166 -1
  39. package/lib/esm/vertexai/index.js.map +1 -1
  40. package/lib/esm/vertexai/models/claude.js +199 -3
  41. package/lib/esm/vertexai/models/claude.js.map +1 -1
  42. package/lib/esm/vertexai/models/gemini.js +60 -21
  43. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  44. package/lib/esm/xai/index.js +10 -16
  45. package/lib/esm/xai/index.js.map +1 -1
  46. package/lib/types/azure/azure_foundry.d.ts +7 -5
  47. package/lib/types/azure/azure_foundry.d.ts.map +1 -1
  48. package/lib/types/bedrock/index.d.ts +21 -1
  49. package/lib/types/bedrock/index.d.ts.map +1 -1
  50. package/lib/types/groq/index.d.ts.map +1 -1
  51. package/lib/types/index.d.ts +1 -0
  52. package/lib/types/index.d.ts.map +1 -1
  53. package/lib/types/openai/index.d.ts +13 -7
  54. package/lib/types/openai/index.d.ts.map +1 -1
  55. package/lib/types/openai/openai_compatible.d.ts +26 -0
  56. package/lib/types/openai/openai_compatible.d.ts.map +1 -0
  57. package/lib/types/openai/openai_format.d.ts +4 -2
  58. package/lib/types/openai/openai_format.d.ts.map +1 -1
  59. package/lib/types/vertexai/index.d.ts +15 -0
  60. package/lib/types/vertexai/index.d.ts.map +1 -1
  61. package/lib/types/vertexai/models/claude.d.ts +20 -0
  62. package/lib/types/vertexai/models/claude.d.ts.map +1 -1
  63. package/lib/types/vertexai/models/gemini.d.ts +1 -1
  64. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  65. package/lib/types/xai/index.d.ts +2 -3
  66. package/lib/types/xai/index.d.ts.map +1 -1
  67. package/package.json +12 -12
  68. package/src/azure/azure_foundry.ts +56 -7
  69. package/src/bedrock/index.ts +297 -26
  70. package/src/groq/index.ts +120 -94
  71. package/src/index.ts +1 -0
  72. package/src/openai/index.ts +363 -136
  73. package/src/openai/openai_compatible.ts +74 -0
  74. package/src/openai/openai_format.ts +44 -54
  75. package/src/vertexai/index.ts +205 -0
  76. package/src/vertexai/models/claude.ts +233 -3
  77. package/src/vertexai/models/gemini.ts +78 -27
  78. package/src/xai/index.ts +10 -17
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.xAIDriver = void 0;
7
+ const core_1 = require("@llumiverse/core");
7
8
  const openai_format_js_1 = require("../openai/openai_format.js");
8
9
  const api_fetch_client_1 = require("@vertesia/api-fetch-client");
9
10
  const openai_1 = __importDefault(require("openai"));
10
11
  const index_js_1 = require("../openai/index.js");
11
12
  class xAIDriver extends index_js_1.BaseOpenAIDriver {
12
13
  service;
13
- provider;
14
+ provider = core_1.Providers.xai;
14
15
  xai_service;
15
16
  DEFAULT_ENDPOINT = "https://api.x.ai/v1";
16
17
  constructor(opts) {
@@ -23,7 +24,6 @@ class xAIDriver extends index_js_1.BaseOpenAIDriver {
23
24
  baseURL: opts.endpoint ?? this.DEFAULT_ENDPOINT,
24
25
  });
25
26
  this.xai_service = new api_fetch_client_1.FetchClient(opts.endpoint ?? this.DEFAULT_ENDPOINT).withAuthCallback(async () => `Bearer ${opts.apiKey}`);
26
- this.provider = "xai";
27
27
  //this.formatPrompt = this._formatPrompt; //TODO: fix xai prompt formatting
28
28
  }
29
29
  async _formatPrompt(segments, opts) {
@@ -35,17 +35,9 @@ class xAIDriver extends index_js_1.BaseOpenAIDriver {
35
35
  const p = await (0, openai_format_js_1.formatOpenAILikeMultimodalPrompt)(segments, { ...options, ...opts });
36
36
  return p;
37
37
  }
38
- extractDataFromResponse(_options, result) {
39
- return {
40
- result: result.choices[0].message.content ? [{ type: "text", value: result.choices[0].message.content }] : [],
41
- finish_reason: result.choices[0].finish_reason,
42
- token_usage: {
43
- prompt: result.usage?.prompt_tokens,
44
- result: result.usage?.completion_tokens,
45
- total: result.usage?.total_tokens,
46
- }
47
- };
48
- }
38
+ // Note: We intentionally do NOT override extractDataFromResponse here.
39
+ // The base class implementation properly handles tool_calls extraction.
40
+ // xAI's API is OpenAI-compatible and returns tool_calls in the same format.
49
41
  async listModels() {
50
42
  const [lm, em] = await Promise.all([
51
43
  this.xai_service.get("/language-models"),
@@ -58,10 +50,12 @@ class xAIDriver extends index_js_1.BaseOpenAIDriver {
58
50
  return {
59
51
  id: model.id,
60
52
  provider: this.provider,
61
- name: model.object,
62
- description: model.object,
53
+ name: model.id,
54
+ description: `${model.id} by ${model.owned_by}`,
63
55
  is_multimodal: model.input_modalities.length > 1,
64
- tags: [...model.input_modalities.map(m => `ì:${m}`), ...model.output_modalities.map(m => `ì:${m}`)],
56
+ input_modalities: model.input_modalities,
57
+ output_modalities: model.output_modalities,
58
+ tags: [...model.input_modalities.map(m => `i:${m}`), ...model.output_modalities.map(m => `o:${m}`)],
65
59
  };
66
60
  });
67
61
  return models;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/xai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/xai/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAmG;AACnG,iEAA4G;AAC5G,iEAAyD;AACzD,oDAA4B;AAC5B,iDAAsD;AAUtD,MAAa,SAAU,SAAQ,2BAAgB;IAE3C,OAAO,CAAS;IACP,QAAQ,GAAG,gBAAS,CAAC,GAAG,CAAC;IAClC,WAAW,CAAc;IACzB,gBAAgB,GAAG,qBAAqB,CAAC;IAEzC,YAAY,IAAsB;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAM,CAAC;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB;SAClD,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,8BAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjI,2EAA2E;IAC/E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAyB,EAAE,IAAmB;QAE9D,MAAM,OAAO,GAAiC;YAC1C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,oBAAoB,EAAE,KAAK;SAC9B,CAAA;QAED,MAAM,CAAC,GAAG,MAAM,IAAA,mDAAgC,EAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAyD,CAAC;QAE5I,OAAO,CAAC,CAAC;IAEb,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,4EAA4E;IAE5E,KAAK,CAAC,UAAU;QACZ,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC;SAC5C,CAAyC,CAAC;QAG3C,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACpD,OAAO;gBACH,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,KAAK,CAAC,EAAE;gBACd,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,QAAQ,EAAE;gBAC/C,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBAChD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACpF,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAElB,CAAC;CAGJ;AArED,8BAqEC"}
@@ -74,10 +74,12 @@ export class AzureFoundryDriver extends AbstractDriver {
74
74
  }
75
75
  else {
76
76
  // Use the chat completions client from the inference operations
77
+ // Convert ResponseInputItem[] to ChatRequestMessage[] for non-OpenAI inference
78
+ const messages = convertToInferenceMessages(prompt);
77
79
  const chatClient = this.service.inference.chatCompletions({ apiVersion: this.INFERENCE_API_VERSION });
78
80
  response = await chatClient.post({
79
81
  body: {
80
- messages: prompt,
82
+ messages,
81
83
  max_tokens: model_options?.max_tokens,
82
84
  model: deploymentName,
83
85
  stream: true,
@@ -107,10 +109,12 @@ export class AzureFoundryDriver extends AbstractDriver {
107
109
  return stream;
108
110
  }
109
111
  else {
112
+ // Convert ResponseInputItem[] to ChatRequestMessage[] for non-OpenAI inference
113
+ const messages = convertToInferenceMessages(prompt);
110
114
  const chatClient = this.service.inference.chatCompletions({ apiVersion: this.INFERENCE_API_VERSION });
111
115
  const response = await chatClient.post({
112
116
  body: {
113
- messages: prompt,
117
+ messages,
114
118
  max_tokens: model_options?.max_tokens,
115
119
  model: deploymentName,
116
120
  stream: true,
@@ -379,4 +383,44 @@ export function parseAzureFoundryModelId(compositeId) {
379
383
  export function isCompositeModelId(modelId) {
380
384
  return modelId.includes('::');
381
385
  }
386
+ /**
387
+ * Convert ResponseInputItem[] to ChatRequestMessage[] for Azure AI Inference API
388
+ */
389
+ function convertToInferenceMessages(items) {
390
+ const messages = [];
391
+ for (const item of items) {
392
+ // Handle EasyInputMessage (has role and content)
393
+ if ('role' in item && 'content' in item) {
394
+ const msg = item;
395
+ let content;
396
+ if (typeof msg.content === 'string') {
397
+ content = msg.content;
398
+ }
399
+ else if (Array.isArray(msg.content)) {
400
+ // Extract text from content array
401
+ content = msg.content
402
+ .filter((part) => part.type === 'input_text')
403
+ .map(part => part.text)
404
+ .join('\n');
405
+ }
406
+ else {
407
+ content = '';
408
+ }
409
+ messages.push({
410
+ role: msg.role,
411
+ content
412
+ });
413
+ }
414
+ // Handle function_call_output
415
+ else if ('type' in item && item.type === 'function_call_output') {
416
+ const output = item;
417
+ messages.push({
418
+ role: 'tool',
419
+ content: typeof output.output === 'string' ? output.output : JSON.stringify(output.output),
420
+ tool_call_id: output.call_id,
421
+ });
422
+ }
423
+ }
424
+ return messages;
425
+ }
382
426
  //# sourceMappingURL=azure_foundry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure_foundry.js","sourceRoot":"","sources":["../../../src/azure/azure_foundry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"azure_foundry.js","sourceRoot":"","sources":["../../../src/azure/azure_foundry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Bedrock, CreateModelCustomizationJobCommand, GetModelCustomizationJobCommand, ModelCustomizationJobStatus, ModelModality, StopModelCustomizationJobCommand } from "@aws-sdk/client-bedrock";
2
2
  import { BedrockRuntime } from "@aws-sdk/client-bedrock-runtime";
3
3
  import { S3Client } from "@aws-sdk/client-s3";
4
- import { AbstractDriver, TrainingJobStatus, getMaxTokensLimitBedrock, modelModalitiesToArray, getModelCapabilities } from "@llumiverse/core";
4
+ import { AbstractDriver, getMaxTokensLimitBedrock, getModelCapabilities, modelModalitiesToArray, stripBinaryFromConversation, truncateLargeTextInConversation, deserializeBinaryFromStorage, getConversationMeta, incrementConversationTurn, TrainingJobStatus } from "@llumiverse/core";
5
5
  import { transformAsyncIterator } from "@llumiverse/core/async";
6
6
  import { formatNovaPrompt } from "@llumiverse/core/formatters";
7
7
  import { LRUCache } from "mnemonist";
@@ -285,6 +285,76 @@ export class BedrockDriver extends AbstractDriver {
285
285
  }
286
286
  return canStream;
287
287
  }
288
+ /**
289
+ * Build conversation context after streaming completion.
290
+ * Reconstructs the assistant message from accumulated results and applies stripping.
291
+ */
292
+ buildStreamingConversation(prompt, result, toolUse, options) {
293
+ // Only handle ConverseRequest prompts (not NovaMessagesPrompt or TwelvelabsPegasusRequest)
294
+ if (options.model.includes("canvas") || options.model.includes("twelvelabs.pegasus")) {
295
+ return undefined;
296
+ }
297
+ const conversePrompt = prompt;
298
+ const completionResults = result;
299
+ // Convert accumulated results to text content for assistant message
300
+ const textContent = completionResults
301
+ .map(r => {
302
+ switch (r.type) {
303
+ case 'text':
304
+ return r.value;
305
+ case 'json':
306
+ return typeof r.value === 'string' ? r.value : JSON.stringify(r.value);
307
+ case 'image':
308
+ // Skip images in conversation - they're in the result
309
+ return '';
310
+ default:
311
+ return String(r.value || '');
312
+ }
313
+ })
314
+ .join('');
315
+ // Deserialize any base64-encoded binary data back to Uint8Array
316
+ const incomingConversation = deserializeBinaryFromStorage(options.conversation);
317
+ // Start with the conversation from options combined with the prompt
318
+ let conversation = updateConversation(incomingConversation, conversePrompt);
319
+ // Build assistant message content
320
+ const messageContent = [];
321
+ if (textContent) {
322
+ messageContent.push({ text: textContent });
323
+ }
324
+ // Add tool use blocks if present
325
+ if (toolUse && toolUse.length > 0) {
326
+ for (const tool of toolUse) {
327
+ messageContent.push({
328
+ toolUse: {
329
+ toolUseId: tool.id,
330
+ name: tool.tool_name,
331
+ input: tool.tool_input,
332
+ }
333
+ });
334
+ }
335
+ }
336
+ // Add assistant message
337
+ const assistantMessage = {
338
+ messages: [{
339
+ content: messageContent.length > 0 ? messageContent : [{ text: '' }],
340
+ role: "assistant"
341
+ }],
342
+ modelId: conversePrompt.modelId,
343
+ };
344
+ conversation = updateConversation(conversation, assistantMessage);
345
+ // Increment turn counter
346
+ conversation = incrementConversationTurn(conversation);
347
+ // Apply stripping based on options
348
+ const currentTurn = getConversationMeta(conversation).turnNumber;
349
+ const stripOptions = {
350
+ keepForTurns: options.stripImagesAfterTurns ?? Infinity,
351
+ currentTurn,
352
+ textMaxTokens: options.stripTextMaxTokens
353
+ };
354
+ let processedConversation = stripBinaryFromConversation(conversation, stripOptions);
355
+ processedConversation = truncateLargeTextInConversation(processedConversation, stripOptions);
356
+ return processedConversation;
357
+ }
288
358
  async requestTextCompletion(prompt, options) {
289
359
  // Handle Twelvelabs Pegasus models
290
360
  if (options.model.includes("twelvelabs.pegasus")) {
@@ -292,7 +362,9 @@ export class BedrockDriver extends AbstractDriver {
292
362
  }
293
363
  // Handle other Bedrock models that use Converse API
294
364
  const conversePrompt = prompt;
295
- let conversation = updateConversation(options.conversation, conversePrompt);
365
+ // Deserialize any base64-encoded binary data back to Uint8Array before API call
366
+ const incomingConversation = deserializeBinaryFromStorage(options.conversation);
367
+ let conversation = updateConversation(incomingConversation, conversePrompt);
296
368
  const payload = this.preparePayload(conversation, options);
297
369
  const executor = this.getExecutor();
298
370
  const res = await executor.converse({
@@ -302,6 +374,8 @@ export class BedrockDriver extends AbstractDriver {
302
374
  messages: [res.output?.message ?? { content: [{ text: "" }], role: "assistant" }],
303
375
  modelId: conversePrompt.modelId,
304
376
  });
377
+ // Increment turn counter for deferred stripping
378
+ conversation = incrementConversationTurn(conversation);
305
379
  let tool_use = undefined;
306
380
  //Get tool requests, we check tool use regardless of finish reason, as you can hit length and still get a valid response.
307
381
  tool_use = res.output?.message?.content?.reduce((tools, c) => {
@@ -318,10 +392,20 @@ export class BedrockDriver extends AbstractDriver {
318
392
  if (tool_use && tool_use.length == 0) {
319
393
  tool_use = undefined;
320
394
  }
395
+ // Strip/serialize binary data based on options.stripImagesAfterTurns
396
+ const currentTurn = getConversationMeta(conversation).turnNumber;
397
+ const stripOptions = {
398
+ keepForTurns: options.stripImagesAfterTurns ?? Infinity,
399
+ currentTurn,
400
+ textMaxTokens: options.stripTextMaxTokens
401
+ };
402
+ let processedConversation = stripBinaryFromConversation(conversation, stripOptions);
403
+ // Truncate large text content if configured
404
+ processedConversation = truncateLargeTextInConversation(processedConversation, stripOptions);
321
405
  const completion = {
322
406
  ...this.getExtractedExecution(res, conversePrompt, options),
323
407
  original_response: options.include_original_response ? res : undefined,
324
- conversation: conversation,
408
+ conversation: processedConversation,
325
409
  tool_use: tool_use,
326
410
  };
327
411
  return completion;
@@ -410,7 +494,11 @@ export class BedrockDriver extends AbstractDriver {
410
494
  }
411
495
  // Handle other Bedrock models that use Converse API
412
496
  const conversePrompt = prompt;
413
- const payload = this.preparePayload(conversePrompt, options);
497
+ // Include conversation history (same as non-streaming)
498
+ // Deserialize any base64-encoded binary data back to Uint8Array before API call
499
+ const incomingConversation = deserializeBinaryFromStorage(options.conversation);
500
+ const conversation = updateConversation(incomingConversation, conversePrompt);
501
+ const payload = this.preparePayload(conversation, options);
414
502
  const executor = this.getExecutor();
415
503
  return executor.converseStream({
416
504
  ...payload,
@@ -556,21 +644,32 @@ export class BedrockDriver extends AbstractDriver {
556
644
  if (supportsJSONPrefill && options.result_schema && !tool_defs) {
557
645
  prompt.messages = converseJSONprefill(prompt.messages);
558
646
  }
647
+ // Clean undefined values from additionalField since AWS Bedrock requires valid JSON
648
+ // and will throw an exception for unrecognized parameters
649
+ const cleanedAdditionalFields = removeUndefinedValues(additionalField);
650
+ const cleanedModelOptions = removeUndefinedValues({
651
+ maxTokens: model_options.max_tokens,
652
+ temperature: model_options.temperature,
653
+ topP: model_options.top_p,
654
+ stopSequences: model_options.stop_sequence,
655
+ });
656
+ //Construct the final request payload
657
+ // We only add fields that are defined to avoid AWS errors
559
658
  const request = {
560
- messages: prompt.messages,
561
- system: prompt.system,
562
659
  modelId: options.model,
563
- inferenceConfig: {
564
- maxTokens: model_options.max_tokens,
565
- temperature: model_options.temperature,
566
- topP: model_options.top_p,
567
- stopSequences: model_options.stop_sequence,
568
- },
569
- additionalModelRequestFields: {
570
- ...additionalField,
571
- }
572
660
  };
573
- //Only add tools if they are defined and not empty
661
+ if (prompt.messages) {
662
+ request.messages = prompt.messages;
663
+ }
664
+ if (prompt.system) {
665
+ request.system = prompt.system;
666
+ }
667
+ if (Object.keys(cleanedModelOptions).length > 0) {
668
+ request.inferenceConfig = cleanedModelOptions;
669
+ }
670
+ if (Object.keys(cleanedAdditionalFields).length > 0) {
671
+ request.additionalModelRequestFields = cleanedAdditionalFields;
672
+ }
574
673
  if (tool_defs?.length) {
575
674
  request.toolConfig = {
576
675
  tools: tool_defs,
@@ -878,6 +977,13 @@ export class BedrockDriver extends AbstractDriver {
878
977
  token_count: undefined
879
978
  };
880
979
  }
980
+ /**
981
+ * Cleanup AWS SDK clients when the driver is evicted from the cache.
982
+ */
983
+ destroy() {
984
+ this._executor?.destroy();
985
+ this._service?.destroy();
986
+ }
881
987
  }
882
988
  function jobInfo(job, jobId) {
883
989
  const jobStatus = job.status;
@@ -919,6 +1025,32 @@ function getToolDefinition(tool) {
919
1025
  }
920
1026
  };
921
1027
  }
1028
+ /**
1029
+ * Recursively removes undefined values from an object.
1030
+ * AWS Bedrock's additionalModelRequestFields must be valid JSON, and undefined is not valid JSON.
1031
+ * Any unrecognized parameters will cause an exception.
1032
+ */
1033
+ function removeUndefinedValues(obj) {
1034
+ if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
1035
+ return obj;
1036
+ }
1037
+ const cleaned = {};
1038
+ for (const [key, value] of Object.entries(obj)) {
1039
+ if (value !== undefined) {
1040
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
1041
+ const cleanedNested = removeUndefinedValues(value);
1042
+ // Only include nested objects if they have properties after cleaning
1043
+ if (Object.keys(cleanedNested).length > 0) {
1044
+ cleaned[key] = cleanedNested;
1045
+ }
1046
+ }
1047
+ else {
1048
+ cleaned[key] = value;
1049
+ }
1050
+ }
1051
+ }
1052
+ return cleaned;
1053
+ }
922
1054
  /**
923
1055
  * Update the conversation messages
924
1056
  * @param prompt
@@ -928,12 +1060,99 @@ function getToolDefinition(tool) {
928
1060
  function updateConversation(conversation, prompt) {
929
1061
  const combinedMessages = [...(conversation?.messages || []), ...(prompt.messages || [])];
930
1062
  const combinedSystem = prompt.system || conversation?.system;
1063
+ // Fix orphaned toolUse blocks before returning
1064
+ const fixedMessages = fixOrphanedToolUse(combinedMessages);
931
1065
  return {
932
1066
  modelId: prompt?.modelId || conversation?.modelId,
933
- messages: combinedMessages.length > 0 ? combinedMessages : [],
1067
+ messages: fixedMessages.length > 0 ? fixedMessages : [],
934
1068
  system: combinedSystem && combinedSystem.length > 0 ? combinedSystem : undefined,
935
1069
  };
936
1070
  }
1071
+ /**
1072
+ * Fix orphaned toolUse blocks in the conversation.
1073
+ *
1074
+ * When an agent is stopped mid-tool-execution, the assistant message contains toolUse blocks
1075
+ * but no corresponding toolResult was added. The AWS Converse API requires that every toolUse
1076
+ * must be followed by a toolResult in the next user message.
1077
+ *
1078
+ * This function detects such cases and injects synthetic toolResult blocks indicating
1079
+ * the tools were interrupted, allowing the conversation to continue.
1080
+ */
1081
+ export function fixOrphanedToolUse(messages) {
1082
+ if (messages.length < 2)
1083
+ return messages;
1084
+ const result = [];
1085
+ for (let i = 0; i < messages.length; i++) {
1086
+ const current = messages[i];
1087
+ result.push(current);
1088
+ // Check if this is an assistant message with toolUse blocks
1089
+ if (current.role === 'assistant' && current.content) {
1090
+ // Extract toolUse blocks using simple property check (same pattern as existing Bedrock code)
1091
+ const toolUseBlocks = [];
1092
+ for (const block of current.content) {
1093
+ if (block.toolUse?.toolUseId) {
1094
+ toolUseBlocks.push({
1095
+ toolUseId: block.toolUse.toolUseId,
1096
+ name: block.toolUse.name ?? 'unknown'
1097
+ });
1098
+ }
1099
+ }
1100
+ if (toolUseBlocks.length > 0) {
1101
+ // Check if the next message is a user message with matching toolResults
1102
+ const nextMessage = messages[i + 1];
1103
+ if (nextMessage && nextMessage.role === 'user' && nextMessage.content) {
1104
+ // Get toolResult IDs from the next message using simple property check
1105
+ const toolResultIds = new Set();
1106
+ for (const block of nextMessage.content) {
1107
+ if (block.toolResult?.toolUseId) {
1108
+ toolResultIds.add(block.toolResult.toolUseId);
1109
+ }
1110
+ }
1111
+ // Find orphaned toolUse blocks (no matching toolResult)
1112
+ const orphanedToolUse = toolUseBlocks.filter(tu => !toolResultIds.has(tu.toolUseId));
1113
+ if (orphanedToolUse.length > 0) {
1114
+ // Inject synthetic toolResults for orphaned toolUse
1115
+ const syntheticResults = orphanedToolUse.map(tu => ({
1116
+ toolResult: {
1117
+ toolUseId: tu.toolUseId,
1118
+ content: [{
1119
+ text: `[Tool interrupted: The user stopped the operation before "${tu.name}" could execute.]`
1120
+ }]
1121
+ }
1122
+ }));
1123
+ // Prepend synthetic results to the next user message
1124
+ const updatedNextMessage = {
1125
+ ...nextMessage,
1126
+ content: [...syntheticResults, ...nextMessage.content]
1127
+ };
1128
+ // Replace the next message in our iteration
1129
+ messages[i + 1] = updatedNextMessage;
1130
+ }
1131
+ }
1132
+ else if (nextMessage && nextMessage.role === 'user' && !nextMessage.content) {
1133
+ // Next message is a user message but has no content
1134
+ // We need to add toolResults
1135
+ const syntheticResults = toolUseBlocks.map(tu => ({
1136
+ toolResult: {
1137
+ toolUseId: tu.toolUseId,
1138
+ content: [{
1139
+ text: `[Tool interrupted: The user stopped the operation before "${tu.name}" could execute.]`
1140
+ }]
1141
+ }
1142
+ }));
1143
+ const updatedNextMessage = {
1144
+ role: 'user',
1145
+ content: syntheticResults
1146
+ };
1147
+ messages[i + 1] = updatedNextMessage;
1148
+ }
1149
+ // Note: If there's no nextMessage, we leave the conversation as-is.
1150
+ // The toolUse blocks are expected to be there - the next turn will provide toolResults.
1151
+ }
1152
+ }
1153
+ }
1154
+ return result;
1155
+ }
937
1156
  function formatAmazonModalities(modalities) {
938
1157
  const standardizedModalities = [];
939
1158
  for (const modality of modalities) {