@llumiverse/drivers 1.0.0-dev.20260202.145450Z → 1.0.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/lib/cjs/adobe/firefly.js +120 -0
- package/lib/cjs/adobe/firefly.js.map +1 -0
- package/lib/cjs/azure/azure_foundry.js +432 -0
- package/lib/cjs/azure/azure_foundry.js.map +1 -0
- package/lib/cjs/bedrock/converse.js +359 -0
- package/lib/cjs/bedrock/converse.js.map +1 -0
- package/lib/cjs/bedrock/index.js +1441 -0
- package/lib/cjs/bedrock/index.js.map +1 -0
- package/lib/cjs/bedrock/nova-image-payload.js +207 -0
- package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
- package/lib/cjs/bedrock/payloads.js +3 -0
- package/lib/cjs/bedrock/payloads.js.map +1 -0
- package/lib/cjs/bedrock/s3.js +107 -0
- package/lib/cjs/bedrock/s3.js.map +1 -0
- package/lib/cjs/bedrock/twelvelabs.js +87 -0
- package/lib/cjs/bedrock/twelvelabs.js.map +1 -0
- package/lib/cjs/groq/index.js +326 -0
- package/lib/cjs/groq/index.js.map +1 -0
- package/lib/cjs/huggingface_ie.js +201 -0
- package/lib/cjs/huggingface_ie.js.map +1 -0
- package/lib/cjs/index.js +31 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/mistral/index.js +176 -0
- package/lib/cjs/mistral/index.js.map +1 -0
- package/lib/cjs/mistral/types.js +83 -0
- package/lib/cjs/mistral/types.js.map +1 -0
- package/lib/cjs/openai/azure_openai.js +72 -0
- package/lib/cjs/openai/azure_openai.js.map +1 -0
- package/lib/cjs/openai/index.js +1100 -0
- package/lib/cjs/openai/index.js.map +1 -0
- package/lib/cjs/openai/openai.js +21 -0
- package/lib/cjs/openai/openai.js.map +1 -0
- package/lib/cjs/openai/openai_compatible.js +63 -0
- package/lib/cjs/openai/openai_compatible.js.map +1 -0
- package/lib/cjs/openai/openai_format.js +131 -0
- package/lib/cjs/openai/openai_format.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/replicate.js +275 -0
- package/lib/cjs/replicate.js.map +1 -0
- package/lib/cjs/test-driver/TestErrorCompletionStream.js +20 -0
- package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +1 -0
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +24 -0
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
- package/lib/cjs/test-driver/index.js +109 -0
- package/lib/cjs/test-driver/index.js.map +1 -0
- package/lib/cjs/test-driver/utils.js +30 -0
- package/lib/cjs/test-driver/utils.js.map +1 -0
- package/lib/cjs/togetherai/index.js +126 -0
- package/lib/cjs/togetherai/index.js.map +1 -0
- package/lib/cjs/togetherai/interfaces.js +3 -0
- package/lib/cjs/togetherai/interfaces.js.map +1 -0
- package/lib/cjs/vertexai/debug.js +12 -0
- package/lib/cjs/vertexai/debug.js.map +1 -0
- package/lib/cjs/vertexai/embeddings/embeddings-image.js +27 -0
- package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
- package/lib/cjs/vertexai/embeddings/embeddings-text.js +23 -0
- package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -0
- package/lib/cjs/vertexai/index.js +635 -0
- package/lib/cjs/vertexai/index.js.map +1 -0
- package/lib/cjs/vertexai/models/claude.js +842 -0
- package/lib/cjs/vertexai/models/claude.js.map +1 -0
- package/lib/cjs/vertexai/models/gemini.js +1110 -0
- package/lib/cjs/vertexai/models/gemini.js.map +1 -0
- package/lib/cjs/vertexai/models/imagen.js +303 -0
- package/lib/cjs/vertexai/models/imagen.js.map +1 -0
- package/lib/cjs/vertexai/models/llama.js +183 -0
- package/lib/cjs/vertexai/models/llama.js.map +1 -0
- package/lib/cjs/vertexai/models.js +35 -0
- package/lib/cjs/vertexai/models.js.map +1 -0
- package/lib/cjs/watsonx/index.js +161 -0
- package/lib/cjs/watsonx/index.js.map +1 -0
- package/lib/cjs/watsonx/interfaces.js +3 -0
- package/lib/cjs/watsonx/interfaces.js.map +1 -0
- package/lib/cjs/xai/index.js +65 -0
- package/lib/cjs/xai/index.js.map +1 -0
- package/lib/esm/adobe/firefly.js +116 -0
- package/lib/esm/adobe/firefly.js.map +1 -0
- package/lib/esm/azure/azure_foundry.js +426 -0
- package/lib/esm/azure/azure_foundry.js.map +1 -0
- package/lib/esm/bedrock/converse.js +352 -0
- package/lib/esm/bedrock/converse.js.map +1 -0
- package/lib/esm/bedrock/index.js +1434 -0
- package/lib/esm/bedrock/index.js.map +1 -0
- package/lib/esm/bedrock/nova-image-payload.js +203 -0
- package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
- package/lib/esm/bedrock/payloads.js +2 -0
- package/lib/esm/bedrock/payloads.js.map +1 -0
- package/lib/esm/bedrock/s3.js +99 -0
- package/lib/esm/bedrock/s3.js.map +1 -0
- package/lib/esm/bedrock/twelvelabs.js +84 -0
- package/lib/esm/bedrock/twelvelabs.js.map +1 -0
- package/lib/esm/groq/index.js +319 -0
- package/lib/esm/groq/index.js.map +1 -0
- package/lib/esm/huggingface_ie.js +197 -0
- package/lib/esm/huggingface_ie.js.map +1 -0
- package/lib/esm/index.js +15 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/mistral/index.js +172 -0
- package/lib/esm/mistral/index.js.map +1 -0
- package/lib/esm/mistral/types.js +80 -0
- package/lib/esm/mistral/types.js.map +1 -0
- package/lib/esm/openai/azure_openai.js +68 -0
- package/lib/esm/openai/azure_openai.js.map +1 -0
- package/lib/esm/openai/index.js +1093 -0
- package/lib/esm/openai/index.js.map +1 -0
- package/lib/esm/openai/openai.js +14 -0
- package/lib/esm/openai/openai.js.map +1 -0
- package/lib/esm/openai/openai_compatible.js +56 -0
- package/lib/esm/openai/openai_compatible.js.map +1 -0
- package/lib/esm/openai/openai_format.js +127 -0
- package/lib/esm/openai/openai_format.js.map +1 -0
- package/lib/esm/replicate.js +268 -0
- package/lib/esm/replicate.js.map +1 -0
- package/lib/esm/test-driver/TestErrorCompletionStream.js +16 -0
- package/lib/esm/test-driver/TestErrorCompletionStream.js.map +1 -0
- package/lib/esm/test-driver/TestValidationErrorCompletionStream.js +20 -0
- package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
- package/lib/esm/test-driver/index.js +91 -0
- package/lib/esm/test-driver/index.js.map +1 -0
- package/lib/esm/test-driver/utils.js +25 -0
- package/lib/esm/test-driver/utils.js.map +1 -0
- package/lib/esm/togetherai/index.js +122 -0
- package/lib/esm/togetherai/index.js.map +1 -0
- package/lib/esm/togetherai/interfaces.js +2 -0
- package/lib/esm/togetherai/interfaces.js.map +1 -0
- package/lib/esm/vertexai/debug.js +6 -0
- package/lib/esm/vertexai/debug.js.map +1 -0
- package/lib/esm/vertexai/embeddings/embeddings-image.js +24 -0
- package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
- package/lib/esm/vertexai/embeddings/embeddings-text.js +20 -0
- package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -0
- package/lib/esm/vertexai/index.js +630 -0
- package/lib/esm/vertexai/index.js.map +1 -0
- package/lib/esm/vertexai/models/claude.js +833 -0
- package/lib/esm/vertexai/models/claude.js.map +1 -0
- package/lib/esm/vertexai/models/gemini.js +1104 -0
- package/lib/esm/vertexai/models/gemini.js.map +1 -0
- package/lib/esm/vertexai/models/imagen.js +299 -0
- package/lib/esm/vertexai/models/imagen.js.map +1 -0
- package/lib/esm/vertexai/models/llama.js +179 -0
- package/lib/esm/vertexai/models/llama.js.map +1 -0
- package/lib/esm/vertexai/models.js +32 -0
- package/lib/esm/vertexai/models.js.map +1 -0
- package/lib/esm/watsonx/index.js +157 -0
- package/lib/esm/watsonx/index.js.map +1 -0
- package/lib/esm/watsonx/interfaces.js +2 -0
- package/lib/esm/watsonx/interfaces.js.map +1 -0
- package/lib/esm/xai/index.js +58 -0
- package/lib/esm/xai/index.js.map +1 -0
- package/lib/types/adobe/firefly.d.ts +30 -0
- package/lib/types/adobe/firefly.d.ts.map +1 -0
- package/lib/types/azure/azure_foundry.d.ts +52 -0
- package/lib/types/azure/azure_foundry.d.ts.map +1 -0
- package/lib/types/bedrock/converse.d.ts +8 -0
- package/lib/types/bedrock/converse.d.ts.map +1 -0
- package/lib/types/bedrock/index.d.ts +135 -0
- package/lib/types/bedrock/index.d.ts.map +1 -0
- package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
- package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
- package/lib/types/bedrock/payloads.d.ts +12 -0
- package/lib/types/bedrock/payloads.d.ts.map +1 -0
- package/lib/types/bedrock/s3.d.ts +23 -0
- package/lib/types/bedrock/s3.d.ts.map +1 -0
- package/lib/types/bedrock/twelvelabs.d.ts +50 -0
- package/lib/types/bedrock/twelvelabs.d.ts.map +1 -0
- package/lib/types/groq/index.d.ts +27 -0
- package/lib/types/groq/index.d.ts.map +1 -0
- package/lib/types/huggingface_ie.d.ts +35 -0
- package/lib/types/huggingface_ie.d.ts.map +1 -0
- package/lib/types/index.d.ts +15 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/mistral/index.d.ts +25 -0
- package/lib/types/mistral/index.d.ts.map +1 -0
- package/lib/types/mistral/types.d.ts +127 -0
- package/lib/types/mistral/types.d.ts.map +1 -0
- package/lib/types/openai/azure_openai.d.ts +25 -0
- package/lib/types/openai/azure_openai.d.ts.map +1 -0
- package/lib/types/openai/index.d.ts +126 -0
- package/lib/types/openai/index.d.ts.map +1 -0
- package/lib/types/openai/openai.d.ts +15 -0
- package/lib/types/openai/openai.d.ts.map +1 -0
- package/lib/types/openai/openai_compatible.d.ts +31 -0
- package/lib/types/openai/openai_compatible.d.ts.map +1 -0
- package/lib/types/openai/openai_format.d.ts +21 -0
- package/lib/types/openai/openai_format.d.ts.map +1 -0
- package/lib/types/replicate.d.ts +48 -0
- package/lib/types/replicate.d.ts.map +1 -0
- package/lib/types/test-driver/TestErrorCompletionStream.d.ts +9 -0
- package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
- package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts +9 -0
- package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
- package/lib/types/test-driver/index.d.ts +24 -0
- package/lib/types/test-driver/index.d.ts.map +1 -0
- package/lib/types/test-driver/utils.d.ts +5 -0
- package/lib/types/test-driver/utils.d.ts.map +1 -0
- package/lib/types/togetherai/index.d.ts +23 -0
- package/lib/types/togetherai/index.d.ts.map +1 -0
- package/lib/types/togetherai/interfaces.d.ts +96 -0
- package/lib/types/togetherai/interfaces.d.ts.map +1 -0
- package/lib/types/vertexai/debug.d.ts +2 -0
- package/lib/types/vertexai/debug.d.ts.map +1 -0
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts +10 -0
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +1 -0
- package/lib/types/vertexai/index.d.ts +79 -0
- package/lib/types/vertexai/index.d.ts.map +1 -0
- package/lib/types/vertexai/models/claude.d.ts +103 -0
- package/lib/types/vertexai/models/claude.d.ts.map +1 -0
- package/lib/types/vertexai/models/gemini.d.ts +78 -0
- package/lib/types/vertexai/models/gemini.d.ts.map +1 -0
- package/lib/types/vertexai/models/imagen.d.ts +75 -0
- package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
- package/lib/types/vertexai/models/llama.d.ts +20 -0
- package/lib/types/vertexai/models/llama.d.ts.map +1 -0
- package/lib/types/vertexai/models.d.ts +20 -0
- package/lib/types/vertexai/models.d.ts.map +1 -0
- package/lib/types/watsonx/index.d.ts +27 -0
- package/lib/types/watsonx/index.d.ts.map +1 -0
- package/lib/types/watsonx/interfaces.d.ts +65 -0
- package/lib/types/watsonx/interfaces.d.ts.map +1 -0
- package/lib/types/xai/index.d.ts +18 -0
- package/lib/types/xai/index.d.ts.map +1 -0
- package/package.json +18 -18
- package/src/bedrock/converse.ts +85 -10
- package/src/bedrock/error-handling.test.ts +352 -0
- package/src/bedrock/index.ts +293 -16
- package/src/groq/index.ts +9 -4
- package/src/mistral/index.ts +25 -22
- package/src/mistral/types.ts +0 -5
- package/src/openai/error-handling.test.ts +567 -0
- package/src/openai/index.ts +513 -33
- package/src/openai/openai_compatible.ts +7 -0
- package/src/openai/openai_format.ts +1 -1
- package/src/vertexai/index.ts +61 -13
- package/src/vertexai/models/claude-error-handling.test.ts +432 -0
- package/src/vertexai/models/claude.ts +287 -10
- package/src/vertexai/models/gemini-error-handling.test.ts +353 -0
- package/src/vertexai/models/gemini.ts +329 -52
- package/src/vertexai/models.ts +7 -2
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.converseConcatMessages = converseConcatMessages;
|
|
4
|
+
exports.converseSystemToMessages = converseSystemToMessages;
|
|
5
|
+
exports.converseRemoveJSONprefill = converseRemoveJSONprefill;
|
|
6
|
+
exports.converseJSONprefill = converseJSONprefill;
|
|
7
|
+
exports.formatConversePrompt = formatConversePrompt;
|
|
8
|
+
const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
|
|
9
|
+
const core_1 = require("@llumiverse/core");
|
|
10
|
+
const s3_js_1 = require("./s3.js");
|
|
11
|
+
function roleConversion(role) {
|
|
12
|
+
return role === core_1.PromptRole.assistant ? client_bedrock_runtime_1.ConversationRole.ASSISTANT : client_bedrock_runtime_1.ConversationRole.USER;
|
|
13
|
+
}
|
|
14
|
+
const BEDROCK_IMAGE_FORMATS = new Set(["png", "jpeg", "gif", "webp"]);
|
|
15
|
+
const mimeToImageMap = {
|
|
16
|
+
"image/png": "png",
|
|
17
|
+
"image/jpeg": "jpeg",
|
|
18
|
+
"image/gif": "gif",
|
|
19
|
+
"image/webp": "webp",
|
|
20
|
+
};
|
|
21
|
+
function mimeToImageType(mime) {
|
|
22
|
+
const mapped = mimeToImageMap[mime];
|
|
23
|
+
if (mapped)
|
|
24
|
+
return mapped;
|
|
25
|
+
if (mime.startsWith("image/")) {
|
|
26
|
+
const subtype = mime.split("/")[1];
|
|
27
|
+
if (subtype && BEDROCK_IMAGE_FORMATS.has(subtype)) {
|
|
28
|
+
return subtype;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return "png";
|
|
32
|
+
}
|
|
33
|
+
const BEDROCK_DOC_FORMATS = new Set(["pdf", "csv", "doc", "docx", "xls", "xlsx", "html", "txt", "md"]);
|
|
34
|
+
const mimeToDocMap = {
|
|
35
|
+
"application/pdf": "pdf",
|
|
36
|
+
"text/csv": "csv",
|
|
37
|
+
"application/msword": "doc",
|
|
38
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
|
|
39
|
+
"application/vnd.ms-excel": "xls",
|
|
40
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
|
|
41
|
+
"text/html": "html",
|
|
42
|
+
"text/plain": "txt",
|
|
43
|
+
"text/markdown": "md",
|
|
44
|
+
};
|
|
45
|
+
function mimeToDocType(mime) {
|
|
46
|
+
// 1. Exact map lookup (handles complex MIME types like vnd.openxmlformats-*)
|
|
47
|
+
const mapped = mimeToDocMap[mime];
|
|
48
|
+
if (mapped)
|
|
49
|
+
return mapped;
|
|
50
|
+
// 2. Fallback: extract subtype for simple application/ or text/ MIME types
|
|
51
|
+
if (mime.startsWith("application/") || mime.startsWith("text/")) {
|
|
52
|
+
const subtype = mime.split("/")[1];
|
|
53
|
+
if (subtype && BEDROCK_DOC_FORMATS.has(subtype)) {
|
|
54
|
+
return subtype;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return "txt";
|
|
58
|
+
}
|
|
59
|
+
const BEDROCK_VIDEO_FORMATS = new Set(["mov", "mkv", "mp4", "webm", "flv", "mpeg", "mpg", "wmv", "three_gp"]);
|
|
60
|
+
const mimeToVideoMap = {
|
|
61
|
+
"video/quicktime": "mov",
|
|
62
|
+
"video/x-matroska": "mkv",
|
|
63
|
+
"video/mp4": "mp4",
|
|
64
|
+
"video/webm": "webm",
|
|
65
|
+
"video/x-flv": "flv",
|
|
66
|
+
"video/mpeg": "mpeg",
|
|
67
|
+
"video/x-ms-wmv": "wmv",
|
|
68
|
+
"video/3gpp": "three_gp",
|
|
69
|
+
};
|
|
70
|
+
function mimeToVideoType(mime) {
|
|
71
|
+
const mapped = mimeToVideoMap[mime];
|
|
72
|
+
if (mapped)
|
|
73
|
+
return mapped;
|
|
74
|
+
if (mime.startsWith("video/")) {
|
|
75
|
+
const subtype = mime.split("/")[1];
|
|
76
|
+
if (subtype && BEDROCK_VIDEO_FORMATS.has(subtype)) {
|
|
77
|
+
return subtype;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return "mp4";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Cleans a filename to conform to Bedrock's restrictions:
|
|
84
|
+
* - Alphanumeric characters, whitespace, hyphens, parentheses, square brackets.
|
|
85
|
+
* - No more than one consecutive whitespace character.
|
|
86
|
+
* - Decodes URI components (e.g., %20 -> space).
|
|
87
|
+
*/
|
|
88
|
+
function cleanBedrockFilename(name) {
|
|
89
|
+
if (!name)
|
|
90
|
+
return name;
|
|
91
|
+
try {
|
|
92
|
+
// Decode URI components like %20
|
|
93
|
+
name = decodeURIComponent(name);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Ignore decoding errors
|
|
97
|
+
}
|
|
98
|
+
return name
|
|
99
|
+
.replace(/[^\w\s\-()[\]]/g, " ") // Replace invalid characters with space
|
|
100
|
+
.replace(/\s+/g, " ") // Collapse consecutive whitespaces
|
|
101
|
+
.trim();
|
|
102
|
+
}
|
|
103
|
+
async function processFile(f, mode) {
|
|
104
|
+
const source = await f.getStream();
|
|
105
|
+
//Image file - "png" | "jpeg" | "gif" | "webp"
|
|
106
|
+
if (f.mime_type && f.mime_type.startsWith("image")) {
|
|
107
|
+
const imageBlock = {
|
|
108
|
+
image: {
|
|
109
|
+
format: mimeToImageType(f.mime_type),
|
|
110
|
+
source: { bytes: await (0, core_1.readStreamAsUint8Array)(source) },
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
return mode === 'content'
|
|
114
|
+
? imageBlock
|
|
115
|
+
: imageBlock;
|
|
116
|
+
}
|
|
117
|
+
//Document file - "pdf | csv | doc | docx | xls | xlsx | html | txt | md"
|
|
118
|
+
else if (f.mime_type && (f.mime_type.startsWith("text") || f.mime_type?.startsWith("application"))) {
|
|
119
|
+
// Handle JSON files specially
|
|
120
|
+
if (f.mime_type === "application/json" || (f.name && f.name.endsWith('.json'))) {
|
|
121
|
+
const jsonContent = await (0, core_1.readStreamAsString)(source);
|
|
122
|
+
try {
|
|
123
|
+
const parsedJson = JSON.parse(jsonContent);
|
|
124
|
+
if (mode === 'tool') {
|
|
125
|
+
return { json: parsedJson };
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// ContentBlock doesn't support JSON, so treat as text
|
|
129
|
+
return { text: jsonContent };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const textBlock = { text: jsonContent };
|
|
134
|
+
return mode === 'content'
|
|
135
|
+
? textBlock
|
|
136
|
+
: textBlock;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const documentBlock = {
|
|
141
|
+
document: {
|
|
142
|
+
format: mimeToDocType(f.mime_type),
|
|
143
|
+
name: cleanBedrockFilename(f.name),
|
|
144
|
+
source: { bytes: await (0, core_1.readStreamAsUint8Array)(source) },
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
return mode === 'content'
|
|
148
|
+
? documentBlock
|
|
149
|
+
: documentBlock;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//Video file - "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp"
|
|
153
|
+
else if (f.mime_type && f.mime_type.startsWith("video")) {
|
|
154
|
+
let url_string = (await f.getURL()).toLowerCase();
|
|
155
|
+
let url_format = new URL(url_string);
|
|
156
|
+
if (url_format.hostname.endsWith("amazonaws.com") &&
|
|
157
|
+
(url_format.hostname.startsWith("s3.") || url_format.hostname.includes(".s3."))) {
|
|
158
|
+
//Convert to s3:// format
|
|
159
|
+
const parsedUrl = (0, s3_js_1.parseS3UrlToUri)(new URL(url_string));
|
|
160
|
+
url_string = parsedUrl;
|
|
161
|
+
url_format = new URL(parsedUrl);
|
|
162
|
+
}
|
|
163
|
+
const videoBlock = url_format.protocol === "s3:" ? {
|
|
164
|
+
video: {
|
|
165
|
+
format: mimeToVideoType(f.mime_type),
|
|
166
|
+
source: {
|
|
167
|
+
s3Location: {
|
|
168
|
+
uri: url_string, //S3 URL
|
|
169
|
+
//bucketOwner: We don't have this additional information.
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
} : {
|
|
174
|
+
video: {
|
|
175
|
+
format: mimeToVideoType(f.mime_type),
|
|
176
|
+
source: { bytes: await (0, core_1.readStreamAsUint8Array)(source) },
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
return mode === 'content'
|
|
180
|
+
? videoBlock
|
|
181
|
+
: videoBlock;
|
|
182
|
+
}
|
|
183
|
+
//Fallback, send as text
|
|
184
|
+
else {
|
|
185
|
+
const textBlock = { text: await (0, core_1.readStreamAsString)(source) };
|
|
186
|
+
return mode === 'content'
|
|
187
|
+
? textBlock
|
|
188
|
+
: textBlock;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async function processFileToContentBlock(f) {
|
|
192
|
+
try {
|
|
193
|
+
return processFile(f, 'content');
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw new Error(`Failed to process file ${f.name} for prompt: ${error instanceof Error ? error.message : String(error)}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function processFileToToolContentBlock(f) {
|
|
200
|
+
try {
|
|
201
|
+
return processFile(f, 'tool');
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
throw new Error(`Failed to process file ${f.name} for tool response: ${error instanceof Error ? error.message : String(error)}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function converseConcatMessages(messages) {
|
|
208
|
+
if (!messages || messages.length === 0)
|
|
209
|
+
return [];
|
|
210
|
+
const needsMerging = messages.some((message, i) => i < messages.length - 1 && message.role === messages[i + 1].role);
|
|
211
|
+
// If no merging needed, return original array
|
|
212
|
+
if (!needsMerging) {
|
|
213
|
+
return messages;
|
|
214
|
+
}
|
|
215
|
+
const result = [];
|
|
216
|
+
let currentMessage = { ...messages[0] };
|
|
217
|
+
for (let i = 1; i < messages.length; i++) {
|
|
218
|
+
if (currentMessage.role === messages[i].role) {
|
|
219
|
+
// Same role - concatenate content
|
|
220
|
+
currentMessage.content = (currentMessage.content || []).concat(...(messages[i].content || []));
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// Different role - push current and start new
|
|
224
|
+
result.push(currentMessage);
|
|
225
|
+
currentMessage = { ...messages[i] };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
result.push(currentMessage);
|
|
229
|
+
return result;
|
|
230
|
+
}
|
|
231
|
+
function converseSystemToMessages(system) {
|
|
232
|
+
return {
|
|
233
|
+
content: [{ text: system.map(system => system.text).join('\n').trim() }],
|
|
234
|
+
role: client_bedrock_runtime_1.ConversationRole.USER
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function converseRemoveJSONprefill(messages) {
|
|
238
|
+
//Remove the "```json" stop message
|
|
239
|
+
if (messages && messages.length > 0) {
|
|
240
|
+
if (messages[messages.length - 1].content?.[0].text === "```json") {
|
|
241
|
+
messages.pop();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return messages ?? [];
|
|
245
|
+
}
|
|
246
|
+
function converseJSONprefill(messages) {
|
|
247
|
+
if (!messages) {
|
|
248
|
+
messages = [];
|
|
249
|
+
}
|
|
250
|
+
//prefill the json
|
|
251
|
+
messages.push({
|
|
252
|
+
content: [{ text: "```json" }],
|
|
253
|
+
role: client_bedrock_runtime_1.ConversationRole.ASSISTANT,
|
|
254
|
+
});
|
|
255
|
+
return messages;
|
|
256
|
+
}
|
|
257
|
+
// Used to ignore unsupported roles. Typically these are things like image specific roles.
|
|
258
|
+
const unsupportedRoles = [
|
|
259
|
+
core_1.PromptRole.negative,
|
|
260
|
+
core_1.PromptRole.mask,
|
|
261
|
+
];
|
|
262
|
+
async function formatConversePrompt(segments, options) {
|
|
263
|
+
//Non-const for concat
|
|
264
|
+
let system = [];
|
|
265
|
+
const safety = [];
|
|
266
|
+
let messages = [];
|
|
267
|
+
for (const segment of segments) {
|
|
268
|
+
// Role dependent processing
|
|
269
|
+
if (segment.role === core_1.PromptRole.system) {
|
|
270
|
+
system.push({ text: segment.content });
|
|
271
|
+
}
|
|
272
|
+
else if (segment.role === core_1.PromptRole.tool) {
|
|
273
|
+
if (!segment.tool_use_id) {
|
|
274
|
+
throw new Error("Tool use ID is required for tool segments");
|
|
275
|
+
}
|
|
276
|
+
//Tool use results (i.e. the model has requested a tool and this it the answer to that request)
|
|
277
|
+
const toolContentBlocks = [];
|
|
278
|
+
//Text segments
|
|
279
|
+
if (segment.content) {
|
|
280
|
+
toolContentBlocks.push({ text: segment.content });
|
|
281
|
+
}
|
|
282
|
+
//Handle attached files
|
|
283
|
+
for (const file of segment.files ?? []) {
|
|
284
|
+
toolContentBlocks.push(await processFileToToolContentBlock(file));
|
|
285
|
+
}
|
|
286
|
+
// Bedrock requires at least one content block in toolResult
|
|
287
|
+
if (toolContentBlocks.length === 0) {
|
|
288
|
+
toolContentBlocks.push({ text: '[No output]' });
|
|
289
|
+
}
|
|
290
|
+
messages.push({
|
|
291
|
+
content: [{
|
|
292
|
+
toolResult: {
|
|
293
|
+
toolUseId: segment.tool_use_id,
|
|
294
|
+
content: toolContentBlocks,
|
|
295
|
+
}
|
|
296
|
+
}],
|
|
297
|
+
role: client_bedrock_runtime_1.ConversationRole.USER
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
else if (!unsupportedRoles.includes(segment.role)) {
|
|
301
|
+
//User, Assistant or safety roles
|
|
302
|
+
const contentBlocks = [];
|
|
303
|
+
//Text segments
|
|
304
|
+
if (segment.content) {
|
|
305
|
+
contentBlocks.push({ text: segment.content });
|
|
306
|
+
}
|
|
307
|
+
//Handle attached files
|
|
308
|
+
for (const file of segment.files ?? []) {
|
|
309
|
+
contentBlocks.push(await processFileToContentBlock(file));
|
|
310
|
+
}
|
|
311
|
+
//If there are no content blocks, skip this message
|
|
312
|
+
if (contentBlocks.length !== 0) {
|
|
313
|
+
const message = { content: contentBlocks, role: roleConversion(segment.role) };
|
|
314
|
+
if (segment.role === core_1.PromptRole.safety) {
|
|
315
|
+
safety.push(message);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
messages.push(message);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (options.result_schema) {
|
|
324
|
+
let schemaText;
|
|
325
|
+
if (options.tools && options.tools.length > 0) {
|
|
326
|
+
schemaText = "When not calling tools, the answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema, undefined, 2);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
schemaText = "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema, undefined, 2);
|
|
330
|
+
}
|
|
331
|
+
system.push({ text: "IMPORTANT: " + schemaText });
|
|
332
|
+
}
|
|
333
|
+
// Safety messages are user messages that should be included at the end.
|
|
334
|
+
if (safety.length > 0) {
|
|
335
|
+
messages = messages.concat(safety);
|
|
336
|
+
}
|
|
337
|
+
//Conversations must start with a user message
|
|
338
|
+
//Use the system messages if none are provided
|
|
339
|
+
if (messages.length === 0) {
|
|
340
|
+
const systemMessage = converseSystemToMessages(system);
|
|
341
|
+
if (systemMessage?.content?.[0]?.text?.trim()) {
|
|
342
|
+
messages.push(systemMessage);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
throw new Error("Prompt must contain at least one message");
|
|
346
|
+
}
|
|
347
|
+
system = undefined;
|
|
348
|
+
}
|
|
349
|
+
if (system && system.length === 0) {
|
|
350
|
+
system = undefined; // If no system messages, set to undefined
|
|
351
|
+
}
|
|
352
|
+
messages = converseConcatMessages(messages);
|
|
353
|
+
return {
|
|
354
|
+
modelId: undefined, //required property, but allowed to be undefined
|
|
355
|
+
messages: messages,
|
|
356
|
+
system: system,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=converse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converse.js","sourceRoot":"","sources":["../../../src/bedrock/converse.ts"],"names":[],"mappings":"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"}
|