@llumiverse/core 0.23.0-dev.20251121 → 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.
- package/README.md +141 -218
- package/lib/cjs/CompletionStream.js +65 -0
- package/lib/cjs/CompletionStream.js.map +1 -1
- package/lib/cjs/Driver.js +35 -11
- package/lib/cjs/Driver.js.map +1 -1
- package/lib/cjs/conversation-utils.js +457 -0
- package/lib/cjs/conversation-utils.js.map +1 -0
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/stream.js.map +1 -1
- package/lib/esm/CompletionStream.js +65 -0
- package/lib/esm/CompletionStream.js.map +1 -1
- package/lib/esm/Driver.js +35 -11
- package/lib/esm/Driver.js.map +1 -1
- package/lib/esm/conversation-utils.js +447 -0
- package/lib/esm/conversation-utils.js.map +1 -0
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/stream.js.map +1 -1
- package/lib/types/CompletionStream.d.ts.map +1 -1
- package/lib/types/Driver.d.ts +22 -0
- package/lib/types/Driver.d.ts.map +1 -1
- package/lib/types/conversation-utils.d.ts +112 -0
- package/lib/types/conversation-utils.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/stream.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/CompletionStream.ts +70 -1
- package/src/Driver.ts +47 -12
- package/src/conversation-utils.ts +497 -0
- package/src/index.ts +1 -0
- package/src/stream.ts +1 -0
- package/lib/tsconfig.tsbuildinfo +0 -1
package/lib/cjs/Driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAyDH,oCAQC;AA/DD,+DAA0F;AAC1F,oDAAyD;AACzD,+CAmB4B;AAC5B,mDAAiD;AAEjD,6FAA6F;AAC7F,SAAS,yBAAyB,CAAC,aAA2C;IAC1E,OAAO,CAAC,CAAC,QAAa,EAAE,UAAgB,EAAE,GAAG,IAAmC,EAAE,EAAE;QAChF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,gDAAgD;YAChD,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,yDAAyD;YACzD,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,oCAAoC;YACpC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC,CAAmB,CAAC;AACzB,CAAC;AAED,MAAM,aAAa,GAAW;IAC1B,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CAChE,CAAA;AAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAW;IACvB,KAAK,EAAE,IAAuB;IAC9B,IAAI,EAAE,IAAsB;IAC5B,IAAI,EAAE,IAAsB;IAC5B,KAAK,EAAE,IAAuB;CACjC,CAAA;AAED,SAAgB,YAAY,CAAC,MAAsC;IAC/D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACJ,OAAO,UAAU,CAAC;IACtB,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Utilities for cleaning up conversation objects before storage.
|
|
4
|
+
*
|
|
5
|
+
* These functions strip binary data (Uint8Array) and large base64 strings
|
|
6
|
+
* from conversation objects to prevent JSON.stringify corruption and reduce
|
|
7
|
+
* storage bloat.
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: These functions replace entire image/document/video BLOCKS with
|
|
10
|
+
* text placeholders, not just the data. This ensures the conversation remains
|
|
11
|
+
* valid for subsequent API calls.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getConversationMeta = getConversationMeta;
|
|
15
|
+
exports.setConversationMeta = setConversationMeta;
|
|
16
|
+
exports.unwrapConversationArray = unwrapConversationArray;
|
|
17
|
+
exports.incrementConversationTurn = incrementConversationTurn;
|
|
18
|
+
exports.stripBinaryFromConversation = stripBinaryFromConversation;
|
|
19
|
+
exports.deserializeBinaryFromStorage = deserializeBinaryFromStorage;
|
|
20
|
+
exports.stripBase64ImagesFromConversation = stripBase64ImagesFromConversation;
|
|
21
|
+
exports.truncateLargeTextInConversation = truncateLargeTextInConversation;
|
|
22
|
+
const IMAGE_PLACEHOLDER = '[Image removed from conversation history]';
|
|
23
|
+
const DOCUMENT_PLACEHOLDER = '[Document removed from conversation history]';
|
|
24
|
+
const VIDEO_PLACEHOLDER = '[Video removed from conversation history]';
|
|
25
|
+
const TEXT_TRUNCATED_MARKER = '\n\n[Content truncated - exceeded token limit]';
|
|
26
|
+
/** Metadata key used to store turn information in conversations */
|
|
27
|
+
const META_KEY = '_llumiverse_meta';
|
|
28
|
+
/**
|
|
29
|
+
* Check if an object is a Bedrock image block: { image: { source: { bytes: Uint8Array } } }
|
|
30
|
+
*/
|
|
31
|
+
function isBedrockImageBlock(obj) {
|
|
32
|
+
if (typeof obj !== 'object' || obj === null)
|
|
33
|
+
return false;
|
|
34
|
+
const o = obj;
|
|
35
|
+
if (!o.image || typeof o.image !== 'object')
|
|
36
|
+
return false;
|
|
37
|
+
const img = o.image;
|
|
38
|
+
if (!img.source || typeof img.source !== 'object')
|
|
39
|
+
return false;
|
|
40
|
+
const src = img.source;
|
|
41
|
+
return src.bytes instanceof Uint8Array;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if an object is a serialized Bedrock image block (Uint8Array converted to base64)
|
|
45
|
+
*/
|
|
46
|
+
function isSerializedBedrockImageBlock(obj) {
|
|
47
|
+
if (typeof obj !== 'object' || obj === null)
|
|
48
|
+
return false;
|
|
49
|
+
const o = obj;
|
|
50
|
+
if (!o.image || typeof o.image !== 'object')
|
|
51
|
+
return false;
|
|
52
|
+
const img = o.image;
|
|
53
|
+
if (!img.source || typeof img.source !== 'object')
|
|
54
|
+
return false;
|
|
55
|
+
const src = img.source;
|
|
56
|
+
// Check for our serialized format: bytes: { _base64: string }
|
|
57
|
+
if (!src.bytes || typeof src.bytes !== 'object')
|
|
58
|
+
return false;
|
|
59
|
+
const bytes = src.bytes;
|
|
60
|
+
return typeof bytes._base64 === 'string';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if an object is a Bedrock document block: { document: { source: { bytes: Uint8Array } } }
|
|
64
|
+
*/
|
|
65
|
+
function isBedrockDocumentBlock(obj) {
|
|
66
|
+
if (typeof obj !== 'object' || obj === null)
|
|
67
|
+
return false;
|
|
68
|
+
const o = obj;
|
|
69
|
+
if (!o.document || typeof o.document !== 'object')
|
|
70
|
+
return false;
|
|
71
|
+
const doc = o.document;
|
|
72
|
+
if (!doc.source || typeof doc.source !== 'object')
|
|
73
|
+
return false;
|
|
74
|
+
const src = doc.source;
|
|
75
|
+
return src.bytes instanceof Uint8Array;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if an object is a serialized Bedrock document block
|
|
79
|
+
*/
|
|
80
|
+
function isSerializedBedrockDocumentBlock(obj) {
|
|
81
|
+
if (typeof obj !== 'object' || obj === null)
|
|
82
|
+
return false;
|
|
83
|
+
const o = obj;
|
|
84
|
+
if (!o.document || typeof o.document !== 'object')
|
|
85
|
+
return false;
|
|
86
|
+
const doc = o.document;
|
|
87
|
+
if (!doc.source || typeof doc.source !== 'object')
|
|
88
|
+
return false;
|
|
89
|
+
const src = doc.source;
|
|
90
|
+
// Check for our serialized format: bytes: { _base64: string }
|
|
91
|
+
if (!src.bytes || typeof src.bytes !== 'object')
|
|
92
|
+
return false;
|
|
93
|
+
const bytes = src.bytes;
|
|
94
|
+
return typeof bytes._base64 === 'string';
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if an object is a Bedrock video block: { video: { source: { bytes: Uint8Array } } }
|
|
98
|
+
*/
|
|
99
|
+
function isBedrockVideoBlock(obj) {
|
|
100
|
+
if (typeof obj !== 'object' || obj === null)
|
|
101
|
+
return false;
|
|
102
|
+
const o = obj;
|
|
103
|
+
if (!o.video || typeof o.video !== 'object')
|
|
104
|
+
return false;
|
|
105
|
+
const vid = o.video;
|
|
106
|
+
if (!vid.source || typeof vid.source !== 'object')
|
|
107
|
+
return false;
|
|
108
|
+
const src = vid.source;
|
|
109
|
+
return src.bytes instanceof Uint8Array;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if an object is a serialized Bedrock video block
|
|
113
|
+
*/
|
|
114
|
+
function isSerializedBedrockVideoBlock(obj) {
|
|
115
|
+
if (typeof obj !== 'object' || obj === null)
|
|
116
|
+
return false;
|
|
117
|
+
const o = obj;
|
|
118
|
+
if (!o.video || typeof o.video !== 'object')
|
|
119
|
+
return false;
|
|
120
|
+
const vid = o.video;
|
|
121
|
+
if (!vid.source || typeof vid.source !== 'object')
|
|
122
|
+
return false;
|
|
123
|
+
const src = vid.source;
|
|
124
|
+
// Check for our serialized format: bytes: { _base64: string }
|
|
125
|
+
if (!src.bytes || typeof src.bytes !== 'object')
|
|
126
|
+
return false;
|
|
127
|
+
const bytes = src.bytes;
|
|
128
|
+
return typeof bytes._base64 === 'string';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if an object is an OpenAI image_url block with base64 data
|
|
132
|
+
*/
|
|
133
|
+
function isOpenAIBase64ImageBlock(obj) {
|
|
134
|
+
if (typeof obj !== 'object' || obj === null)
|
|
135
|
+
return false;
|
|
136
|
+
const o = obj;
|
|
137
|
+
if (o.type !== 'image_url')
|
|
138
|
+
return false;
|
|
139
|
+
if (!o.image_url || typeof o.image_url !== 'object')
|
|
140
|
+
return false;
|
|
141
|
+
const imgUrl = o.image_url;
|
|
142
|
+
return typeof imgUrl.url === 'string' &&
|
|
143
|
+
imgUrl.url.startsWith('data:image/') &&
|
|
144
|
+
imgUrl.url.includes(';base64,');
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if an object is a Gemini inlineData block with large base64 data
|
|
148
|
+
*/
|
|
149
|
+
function isGeminiInlineDataBlock(obj) {
|
|
150
|
+
if (typeof obj !== 'object' || obj === null)
|
|
151
|
+
return false;
|
|
152
|
+
const o = obj;
|
|
153
|
+
if (!o.inlineData || typeof o.inlineData !== 'object')
|
|
154
|
+
return false;
|
|
155
|
+
const inlineData = o.inlineData;
|
|
156
|
+
return typeof inlineData.data === 'string' && inlineData.data.length > 1000;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Convert Uint8Array to base64 string for safe JSON serialization.
|
|
160
|
+
*/
|
|
161
|
+
function uint8ArrayToBase64(bytes) {
|
|
162
|
+
let binary = '';
|
|
163
|
+
for (let i = 0; i < bytes.byteLength; i++) {
|
|
164
|
+
binary += String.fromCharCode(bytes[i]);
|
|
165
|
+
}
|
|
166
|
+
return btoa(binary);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Convert base64 string back to Uint8Array.
|
|
170
|
+
*/
|
|
171
|
+
function base64ToUint8Array(base64) {
|
|
172
|
+
const binary = atob(base64);
|
|
173
|
+
const bytes = new Uint8Array(binary.length);
|
|
174
|
+
for (let i = 0; i < binary.length; i++) {
|
|
175
|
+
bytes[i] = binary.charCodeAt(i);
|
|
176
|
+
}
|
|
177
|
+
return bytes;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get metadata from a conversation object, or return defaults.
|
|
181
|
+
*/
|
|
182
|
+
function getConversationMeta(conversation) {
|
|
183
|
+
if (typeof conversation === 'object' && conversation !== null) {
|
|
184
|
+
const meta = conversation[META_KEY];
|
|
185
|
+
if (meta && typeof meta === 'object') {
|
|
186
|
+
return meta;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return { turnNumber: 0 };
|
|
190
|
+
}
|
|
191
|
+
/** Key used to wrap array conversations to preserve their type through JSON serialization */
|
|
192
|
+
const ARRAY_WRAPPER_KEY = '_arrayConversation';
|
|
193
|
+
/**
|
|
194
|
+
* Set metadata on a conversation object.
|
|
195
|
+
* Arrays are wrapped in an object to preserve their type through JSON serialization.
|
|
196
|
+
*/
|
|
197
|
+
function setConversationMeta(conversation, meta) {
|
|
198
|
+
if (Array.isArray(conversation)) {
|
|
199
|
+
// Wrap arrays in an object to preserve their array nature through JSON serialization
|
|
200
|
+
return { [ARRAY_WRAPPER_KEY]: conversation, [META_KEY]: meta };
|
|
201
|
+
}
|
|
202
|
+
if (typeof conversation === 'object' && conversation !== null) {
|
|
203
|
+
return { ...conversation, [META_KEY]: meta };
|
|
204
|
+
}
|
|
205
|
+
return conversation;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Unwrap a conversation array that was wrapped by setConversationMeta.
|
|
209
|
+
* If the conversation is not a wrapped array, returns undefined.
|
|
210
|
+
* Use this to extract the actual message array from a conversation object.
|
|
211
|
+
*/
|
|
212
|
+
function unwrapConversationArray(conversation) {
|
|
213
|
+
if (typeof conversation === 'object' && conversation !== null) {
|
|
214
|
+
const c = conversation;
|
|
215
|
+
if (Array.isArray(c[ARRAY_WRAPPER_KEY])) {
|
|
216
|
+
return c[ARRAY_WRAPPER_KEY];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Increment the turn number in a conversation and return the updated conversation.
|
|
223
|
+
*/
|
|
224
|
+
function incrementConversationTurn(conversation) {
|
|
225
|
+
const meta = getConversationMeta(conversation);
|
|
226
|
+
return setConversationMeta(conversation, { ...meta, turnNumber: meta.turnNumber + 1 });
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Strip binary data (Uint8Array) from conversation to prevent JSON.stringify corruption.
|
|
230
|
+
*
|
|
231
|
+
* When Uint8Array is passed through JSON.stringify, it gets corrupted into an object
|
|
232
|
+
* like { "0": 137, "1": 80, ... } instead of proper binary data. This breaks
|
|
233
|
+
* subsequent API calls that expect binary data.
|
|
234
|
+
*
|
|
235
|
+
* This function either:
|
|
236
|
+
* - Strips images immediately (keepForTurns = 0, default)
|
|
237
|
+
* - Serializes images to base64 for safe storage, then strips after N turns
|
|
238
|
+
*
|
|
239
|
+
* @param obj The conversation object to strip binary data from
|
|
240
|
+
* @param options Optional settings for turn-based stripping
|
|
241
|
+
* @returns A new object with binary content handled appropriately
|
|
242
|
+
*/
|
|
243
|
+
function stripBinaryFromConversation(obj, options) {
|
|
244
|
+
const { keepForTurns = 0 } = options ?? {};
|
|
245
|
+
const currentTurn = options?.currentTurn ?? getConversationMeta(obj).turnNumber;
|
|
246
|
+
// If we should keep images and haven't exceeded the turn threshold,
|
|
247
|
+
// serialize Uint8Array to base64 for safe JSON storage
|
|
248
|
+
if (keepForTurns > 0 && currentTurn < keepForTurns) {
|
|
249
|
+
return serializeBinaryForStorage(obj);
|
|
250
|
+
}
|
|
251
|
+
// Strip all binary/serialized images
|
|
252
|
+
return stripBinaryFromConversationInternal(obj);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Serialize Uint8Array to base64 for safe JSON storage, preserving the image structure.
|
|
256
|
+
*/
|
|
257
|
+
function serializeBinaryForStorage(obj) {
|
|
258
|
+
if (obj === null || obj === undefined)
|
|
259
|
+
return obj;
|
|
260
|
+
if (obj instanceof Uint8Array) {
|
|
261
|
+
return { _base64: uint8ArrayToBase64(obj) };
|
|
262
|
+
}
|
|
263
|
+
if (Array.isArray(obj)) {
|
|
264
|
+
return obj.map(item => serializeBinaryForStorage(item));
|
|
265
|
+
}
|
|
266
|
+
if (typeof obj === 'object') {
|
|
267
|
+
const result = {};
|
|
268
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
269
|
+
result[key] = serializeBinaryForStorage(value);
|
|
270
|
+
}
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
return obj;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Restore Uint8Array from base64 serialization.
|
|
277
|
+
* Call this before sending conversation to API if images were preserved.
|
|
278
|
+
*/
|
|
279
|
+
function deserializeBinaryFromStorage(obj) {
|
|
280
|
+
if (obj === null || obj === undefined)
|
|
281
|
+
return obj;
|
|
282
|
+
// Check for our serialized format
|
|
283
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
284
|
+
const o = obj;
|
|
285
|
+
if (typeof o._base64 === 'string' && Object.keys(o).length === 1) {
|
|
286
|
+
return base64ToUint8Array(o._base64);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (Array.isArray(obj)) {
|
|
290
|
+
return obj.map(item => deserializeBinaryFromStorage(item));
|
|
291
|
+
}
|
|
292
|
+
if (typeof obj === 'object') {
|
|
293
|
+
const result = {};
|
|
294
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
295
|
+
result[key] = deserializeBinaryFromStorage(value);
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
return obj;
|
|
300
|
+
}
|
|
301
|
+
function stripBinaryFromConversationInternal(obj) {
|
|
302
|
+
if (obj === null || obj === undefined)
|
|
303
|
+
return obj;
|
|
304
|
+
// Handle Uint8Array directly
|
|
305
|
+
if (obj instanceof Uint8Array) {
|
|
306
|
+
return IMAGE_PLACEHOLDER;
|
|
307
|
+
}
|
|
308
|
+
// Handle our serialized format
|
|
309
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
310
|
+
const o = obj;
|
|
311
|
+
if (typeof o._base64 === 'string' && Object.keys(o).length === 1) {
|
|
312
|
+
return IMAGE_PLACEHOLDER;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (Array.isArray(obj)) {
|
|
316
|
+
return obj.map(item => {
|
|
317
|
+
// Replace entire Bedrock image/document/video blocks with text blocks
|
|
318
|
+
if (isBedrockImageBlock(item) || isSerializedBedrockImageBlock(item)) {
|
|
319
|
+
return { text: IMAGE_PLACEHOLDER };
|
|
320
|
+
}
|
|
321
|
+
if (isBedrockDocumentBlock(item) || isSerializedBedrockDocumentBlock(item)) {
|
|
322
|
+
return { text: DOCUMENT_PLACEHOLDER };
|
|
323
|
+
}
|
|
324
|
+
if (isBedrockVideoBlock(item) || isSerializedBedrockVideoBlock(item)) {
|
|
325
|
+
return { text: VIDEO_PLACEHOLDER };
|
|
326
|
+
}
|
|
327
|
+
return stripBinaryFromConversationInternal(item);
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
if (typeof obj === 'object') {
|
|
331
|
+
const result = {};
|
|
332
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
333
|
+
// Preserve metadata
|
|
334
|
+
if (key === META_KEY) {
|
|
335
|
+
result[key] = value;
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
result[key] = stripBinaryFromConversationInternal(value);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
return obj;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Strip large base64 image data from conversation to reduce storage bloat.
|
|
347
|
+
*
|
|
348
|
+
* While base64 strings survive JSON.stringify (unlike Uint8Array), they can
|
|
349
|
+
* significantly bloat conversation storage. This function replaces entire
|
|
350
|
+
* image blocks with text placeholders:
|
|
351
|
+
* - OpenAI: { type: "image_url", image_url: { url: "data:..." } } → { type: "text", text: "[placeholder]" }
|
|
352
|
+
* - Gemini: { inlineData: { data: "...", mimeType: "..." } } → { text: "[placeholder]" }
|
|
353
|
+
*
|
|
354
|
+
* @param obj The conversation object to strip base64 images from
|
|
355
|
+
* @param options Optional settings for turn-based stripping
|
|
356
|
+
* @returns A new object with image blocks replaced with text placeholders
|
|
357
|
+
*/
|
|
358
|
+
function stripBase64ImagesFromConversation(obj, options) {
|
|
359
|
+
const { keepForTurns = 0 } = options ?? {};
|
|
360
|
+
const currentTurn = options?.currentTurn ?? getConversationMeta(obj).turnNumber;
|
|
361
|
+
// If we should keep images and haven't exceeded the turn threshold, don't strip
|
|
362
|
+
// (base64 strings are already safe for JSON serialization)
|
|
363
|
+
if (keepForTurns > 0 && currentTurn < keepForTurns) {
|
|
364
|
+
return obj;
|
|
365
|
+
}
|
|
366
|
+
return stripBase64ImagesFromConversationInternal(obj);
|
|
367
|
+
}
|
|
368
|
+
function stripBase64ImagesFromConversationInternal(obj) {
|
|
369
|
+
if (obj === null || obj === undefined)
|
|
370
|
+
return obj;
|
|
371
|
+
// Handle base64 data URL string directly
|
|
372
|
+
if (typeof obj === 'string' && obj.startsWith('data:image/') && obj.includes(';base64,')) {
|
|
373
|
+
return IMAGE_PLACEHOLDER;
|
|
374
|
+
}
|
|
375
|
+
if (Array.isArray(obj)) {
|
|
376
|
+
return obj.map(item => {
|
|
377
|
+
// Replace entire OpenAI image_url blocks with text blocks
|
|
378
|
+
if (isOpenAIBase64ImageBlock(item)) {
|
|
379
|
+
return { type: 'text', text: IMAGE_PLACEHOLDER };
|
|
380
|
+
}
|
|
381
|
+
// Replace entire Gemini inlineData blocks with text blocks
|
|
382
|
+
if (isGeminiInlineDataBlock(item)) {
|
|
383
|
+
return { text: IMAGE_PLACEHOLDER };
|
|
384
|
+
}
|
|
385
|
+
return stripBase64ImagesFromConversationInternal(item);
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
if (typeof obj === 'object') {
|
|
389
|
+
const result = {};
|
|
390
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
391
|
+
// Preserve metadata
|
|
392
|
+
if (key === META_KEY) {
|
|
393
|
+
result[key] = value;
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
result[key] = stripBase64ImagesFromConversationInternal(value);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return result;
|
|
400
|
+
}
|
|
401
|
+
return obj;
|
|
402
|
+
}
|
|
403
|
+
/** Approximate characters per token for text truncation */
|
|
404
|
+
const CHARS_PER_TOKEN = 4;
|
|
405
|
+
/**
|
|
406
|
+
* Truncate large text content in conversation to reduce storage and context bloat.
|
|
407
|
+
*
|
|
408
|
+
* This function finds text strings in tool results and truncates them if they
|
|
409
|
+
* exceed the specified token limit (using ~4 chars/token estimate).
|
|
410
|
+
*
|
|
411
|
+
* Works with:
|
|
412
|
+
* - Bedrock: toolResult.content[].text
|
|
413
|
+
* - OpenAI: tool message content (string)
|
|
414
|
+
* - Gemini: function response content
|
|
415
|
+
*
|
|
416
|
+
* @param obj The conversation object to truncate text in
|
|
417
|
+
* @param options Options including textMaxTokens
|
|
418
|
+
* @returns A new object with large text content truncated
|
|
419
|
+
*/
|
|
420
|
+
function truncateLargeTextInConversation(obj, options) {
|
|
421
|
+
const maxTokens = options?.textMaxTokens;
|
|
422
|
+
// If no max tokens specified or 0, don't truncate
|
|
423
|
+
if (!maxTokens || maxTokens <= 0) {
|
|
424
|
+
return obj;
|
|
425
|
+
}
|
|
426
|
+
const maxChars = maxTokens * CHARS_PER_TOKEN;
|
|
427
|
+
return truncateLargeTextInternal(obj, maxChars);
|
|
428
|
+
}
|
|
429
|
+
function truncateLargeTextInternal(obj, maxChars) {
|
|
430
|
+
if (obj === null || obj === undefined)
|
|
431
|
+
return obj;
|
|
432
|
+
// Truncate large strings
|
|
433
|
+
if (typeof obj === 'string') {
|
|
434
|
+
if (obj.length > maxChars) {
|
|
435
|
+
return obj.substring(0, maxChars) + TEXT_TRUNCATED_MARKER;
|
|
436
|
+
}
|
|
437
|
+
return obj;
|
|
438
|
+
}
|
|
439
|
+
if (Array.isArray(obj)) {
|
|
440
|
+
return obj.map(item => truncateLargeTextInternal(item, maxChars));
|
|
441
|
+
}
|
|
442
|
+
if (typeof obj === 'object') {
|
|
443
|
+
const result = {};
|
|
444
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
445
|
+
// Preserve metadata without truncation
|
|
446
|
+
if (key === META_KEY) {
|
|
447
|
+
result[key] = value;
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
result[key] = truncateLargeTextInternal(value, maxChars);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return result;
|
|
454
|
+
}
|
|
455
|
+
return obj;
|
|
456
|
+
}
|
|
457
|
+
//# sourceMappingURL=conversation-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-utils.js","sourceRoot":"","sources":["../../src/conversation-utils.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./Driver.js"), exports);
|
|
18
18
|
__exportStar(require("./json.js"), exports);
|
|
19
19
|
__exportStar(require("./stream.js"), exports);
|
|
20
|
+
__exportStar(require("./conversation-utils.js"), exports);
|
|
20
21
|
__exportStar(require("@llumiverse/common"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,0DAAwC;AACxC,qDAAmC"}
|
package/lib/cjs/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";;AACA,gDAGC;AAED,gDAGC;AAED,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";;AACA,gDAGC;AAED,gDAGC;AAED,wDAmBC;AA7BM,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/E,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -15,6 +15,7 @@ export class DefaultCompletionStream {
|
|
|
15
15
|
this.completion = undefined;
|
|
16
16
|
this.chunks = 0;
|
|
17
17
|
const accumulatedResults = []; // Accumulate CompletionResult[] from chunks
|
|
18
|
+
const accumulatedToolUse = new Map(); // Accumulate tool_use by id
|
|
18
19
|
this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`);
|
|
19
20
|
const start = Date.now();
|
|
20
21
|
let finish_reason = undefined;
|
|
@@ -39,6 +40,43 @@ export class DefaultCompletionStream {
|
|
|
39
40
|
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
40
41
|
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
41
42
|
}
|
|
43
|
+
// Accumulate tool_use from chunks
|
|
44
|
+
// Note: During streaming, tool_input comes as string chunks that need concatenation
|
|
45
|
+
if (chunk.tool_use && chunk.tool_use.length > 0) {
|
|
46
|
+
for (const tool of chunk.tool_use) {
|
|
47
|
+
const existing = accumulatedToolUse.get(tool.id);
|
|
48
|
+
if (existing) {
|
|
49
|
+
// Merge tool input (for streaming where arguments come as string pieces)
|
|
50
|
+
if (tool.tool_input !== null && tool.tool_input !== undefined) {
|
|
51
|
+
const existingInput = existing.tool_input;
|
|
52
|
+
const newInput = tool.tool_input;
|
|
53
|
+
if (typeof existingInput === 'string' && typeof newInput === 'string') {
|
|
54
|
+
// Concatenate string arguments
|
|
55
|
+
existing.tool_input = existingInput + newInput;
|
|
56
|
+
}
|
|
57
|
+
else if (existingInput && typeof existingInput === 'object' && newInput && typeof newInput === 'object') {
|
|
58
|
+
// Merge objects
|
|
59
|
+
existing.tool_input = { ...existingInput, ...newInput };
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
existing.tool_input = tool.tool_input;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Update tool name if provided (might come in later chunk)
|
|
66
|
+
if (tool.tool_name) {
|
|
67
|
+
existing.tool_name = tool.tool_name;
|
|
68
|
+
}
|
|
69
|
+
// Update actual ID if provided (OpenAI sends id only in first chunk)
|
|
70
|
+
if (tool._actual_id) {
|
|
71
|
+
existing._actual_id = tool._actual_id;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// New tool call
|
|
76
|
+
accumulatedToolUse.set(tool.id, { ...tool });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
42
80
|
if (Array.isArray(chunk.result) && chunk.result.length > 0) {
|
|
43
81
|
// Process each result in the chunk, combining consecutive text/JSON
|
|
44
82
|
for (const result of chunk.result) {
|
|
@@ -112,6 +150,27 @@ export class DefaultCompletionStream {
|
|
|
112
150
|
// Allows for checking for truthy-ness on token_usage, rather than it's internals. For testing and downstream usage.
|
|
113
151
|
const tokens = resultTokens ?
|
|
114
152
|
{ prompt: promptTokens, result: resultTokens, total: resultTokens + promptTokens, } : undefined;
|
|
153
|
+
// Convert accumulated tool_use Map to array
|
|
154
|
+
const toolUseArray = accumulatedToolUse.size > 0 ? Array.from(accumulatedToolUse.values()) : undefined;
|
|
155
|
+
// Finalize tool calls: restore actual IDs and parse JSON arguments
|
|
156
|
+
if (toolUseArray) {
|
|
157
|
+
for (const tool of toolUseArray) {
|
|
158
|
+
// Restore actual ID from OpenAI (was stored in _actual_id during streaming)
|
|
159
|
+
if (tool._actual_id) {
|
|
160
|
+
tool.id = tool._actual_id;
|
|
161
|
+
delete tool._actual_id;
|
|
162
|
+
}
|
|
163
|
+
// Parse tool_input strings as JSON if needed (streaming sends arguments as string chunks)
|
|
164
|
+
if (typeof tool.tool_input === 'string') {
|
|
165
|
+
try {
|
|
166
|
+
tool.tool_input = JSON.parse(tool.tool_input);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Keep as string if not valid JSON
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
115
174
|
this.completion = {
|
|
116
175
|
result: accumulatedResults, // Return the accumulated CompletionResult[] instead of text
|
|
117
176
|
prompt: this.prompt,
|
|
@@ -119,7 +178,13 @@ export class DefaultCompletionStream {
|
|
|
119
178
|
token_usage: tokens,
|
|
120
179
|
finish_reason: finish_reason,
|
|
121
180
|
chunks: this.chunks,
|
|
181
|
+
tool_use: toolUseArray,
|
|
122
182
|
};
|
|
183
|
+
// Build conversation context for multi-turn support
|
|
184
|
+
const conversation = this.driver.buildStreamingConversation(this.prompt, accumulatedResults, toolUseArray, this.options);
|
|
185
|
+
if (conversation !== undefined) {
|
|
186
|
+
this.completion.conversation = conversation;
|
|
187
|
+
}
|
|
123
188
|
try {
|
|
124
189
|
if (this.completion) {
|
|
125
190
|
this.driver.validateResult(this.completion, this.options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,uBAAuB;IAKb;IACR;IACA;IALX,MAAM,CAAS,CAAC,0DAA0D;IAC1E,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EACtD,MAAe,EACf,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QACtD,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,MAAM,kBAAkB,GAAU,EAAE,CAAC,CAAC,4CAA4C;
|
|
1
|
+
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
|