ai.matey.utils 0.2.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/LICENSE +21 -0
- package/dist/cjs/conversation-history.js +139 -0
- package/dist/cjs/conversation-history.js.map +1 -0
- package/dist/cjs/index.js +42 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/model-cache.js +163 -0
- package/dist/cjs/model-cache.js.map +1 -0
- package/dist/cjs/parameter-normalizer.js +451 -0
- package/dist/cjs/parameter-normalizer.js.map +1 -0
- package/dist/cjs/streaming-modes.js +277 -0
- package/dist/cjs/streaming-modes.js.map +1 -0
- package/dist/cjs/streaming.js +892 -0
- package/dist/cjs/streaming.js.map +1 -0
- package/dist/cjs/structured-output.js +398 -0
- package/dist/cjs/structured-output.js.map +1 -0
- package/dist/cjs/system-message.js +222 -0
- package/dist/cjs/system-message.js.map +1 -0
- package/dist/cjs/validation.js +534 -0
- package/dist/cjs/validation.js.map +1 -0
- package/dist/cjs/warnings.js +301 -0
- package/dist/cjs/warnings.js.map +1 -0
- package/dist/esm/conversation-history.js +134 -0
- package/dist/esm/conversation-history.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/model-cache.js +158 -0
- package/dist/esm/model-cache.js.map +1 -0
- package/dist/esm/parameter-normalizer.js +434 -0
- package/dist/esm/parameter-normalizer.js.map +1 -0
- package/dist/esm/streaming-modes.js +265 -0
- package/dist/esm/streaming-modes.js.map +1 -0
- package/dist/esm/streaming.js +860 -0
- package/dist/esm/streaming.js.map +1 -0
- package/dist/esm/structured-output.js +387 -0
- package/dist/esm/structured-output.js.map +1 -0
- package/dist/esm/system-message.js +213 -0
- package/dist/esm/system-message.js.map +1 -0
- package/dist/esm/validation.js +523 -0
- package/dist/esm/validation.js.map +1 -0
- package/dist/esm/warnings.js +284 -0
- package/dist/esm/warnings.js.map +1 -0
- package/dist/types/conversation-history.d.ts +70 -0
- package/dist/types/conversation-history.d.ts.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/model-cache.d.ts +88 -0
- package/dist/types/model-cache.d.ts.map +1 -0
- package/dist/types/parameter-normalizer.d.ts +154 -0
- package/dist/types/parameter-normalizer.d.ts.map +1 -0
- package/dist/types/streaming-modes.d.ts +139 -0
- package/dist/types/streaming-modes.d.ts.map +1 -0
- package/dist/types/streaming.d.ts +384 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/structured-output.d.ts +157 -0
- package/dist/types/structured-output.d.ts.map +1 -0
- package/dist/types/system-message.d.ts +78 -0
- package/dist/types/system-message.d.ts.map +1 -0
- package/dist/types/validation.d.ts +46 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/warnings.d.ts +149 -0
- package/dist/types/warnings.d.ts.map +1 -0
- package/package.json +75 -0
- package/readme.md +280 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Output with Zod
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for working with Zod schemas for structured LLM outputs.
|
|
5
|
+
* It includes:
|
|
6
|
+
* - Schema to tool definition conversion
|
|
7
|
+
* - Runtime validation
|
|
8
|
+
* - Type-safe object generation
|
|
9
|
+
* - Streaming with partial objects
|
|
10
|
+
*
|
|
11
|
+
* **IMPORTANT**: This module requires the optional peer dependency `zod` to be installed.
|
|
12
|
+
* Install it with: `npm install zod`
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Zod Availability Check
|
|
16
|
+
// ============================================================================
|
|
17
|
+
let zodModule = null;
|
|
18
|
+
/**
|
|
19
|
+
* Lazily load Zod module
|
|
20
|
+
* @throws Error if Zod is not installed
|
|
21
|
+
*/
|
|
22
|
+
function getZod() {
|
|
23
|
+
if (zodModule) {
|
|
24
|
+
return zodModule;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
// Dynamic import for optional dependency
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const loaded = require('zod').z;
|
|
30
|
+
zodModule = loaded;
|
|
31
|
+
return loaded;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new Error('Zod is required for structured output features but is not installed. ' +
|
|
35
|
+
'Install it with: npm install zod\n' +
|
|
36
|
+
'See: https://github.com/johnhenry/ai.matey#structured-output');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Schema to Tool Definition Converter
|
|
41
|
+
// ============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Convert a Zod schema to an OpenAI tool definition
|
|
44
|
+
*
|
|
45
|
+
* @param schema - Zod schema to convert
|
|
46
|
+
* @param name - Function name for the tool
|
|
47
|
+
* @param description - Description of what the tool does
|
|
48
|
+
* @returns OpenAI-compatible tool definition
|
|
49
|
+
*/
|
|
50
|
+
export function schemaToToolDefinition(schema, // Using any to avoid importing z.ZodType
|
|
51
|
+
name = 'extract_data', description = 'Extract structured data from the input') {
|
|
52
|
+
// Ensure Zod is available
|
|
53
|
+
getZod();
|
|
54
|
+
const jsonSchema = zodToJsonSchema(schema);
|
|
55
|
+
return {
|
|
56
|
+
type: 'function',
|
|
57
|
+
function: {
|
|
58
|
+
name,
|
|
59
|
+
description,
|
|
60
|
+
parameters: jsonSchema,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert a Zod schema to JSON Schema format
|
|
66
|
+
*/
|
|
67
|
+
function zodToJsonSchema(schema) {
|
|
68
|
+
// Get the Zod internal definition
|
|
69
|
+
const def = schema._def;
|
|
70
|
+
// Zod v3+ uses _def.typeName, fallback to constructor name
|
|
71
|
+
const typeName = def.typeName || schema.constructor.name;
|
|
72
|
+
// Handle ZodObject
|
|
73
|
+
if (typeName === 'ZodObject') {
|
|
74
|
+
// shape is a getter property, not a method
|
|
75
|
+
const shape = def.shape;
|
|
76
|
+
const properties = {};
|
|
77
|
+
const required = [];
|
|
78
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
79
|
+
const fieldSchema = value;
|
|
80
|
+
const fieldDef = fieldSchema._def;
|
|
81
|
+
// Check if field is optional BEFORE converting
|
|
82
|
+
const isOptional = fieldDef.typeName === 'ZodOptional' || fieldSchema.constructor.name === 'ZodOptional';
|
|
83
|
+
properties[key] = zodToJsonSchema(fieldSchema);
|
|
84
|
+
// Only add to required if not optional
|
|
85
|
+
if (!isOptional) {
|
|
86
|
+
required.push(key);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const result = {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties,
|
|
92
|
+
};
|
|
93
|
+
// Only add required if there are required fields
|
|
94
|
+
if (required.length > 0) {
|
|
95
|
+
result.required = required;
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
// Handle ZodOptional
|
|
100
|
+
if (typeName === 'ZodOptional') {
|
|
101
|
+
const innerSchema = def.innerType;
|
|
102
|
+
return zodToJsonSchema(innerSchema);
|
|
103
|
+
}
|
|
104
|
+
// Handle ZodString
|
|
105
|
+
if (typeName === 'ZodString') {
|
|
106
|
+
const result = { type: 'string' };
|
|
107
|
+
// Description is stored on the schema object itself
|
|
108
|
+
const description = schema.description;
|
|
109
|
+
if (description) {
|
|
110
|
+
result.description = description;
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
// Handle ZodNumber
|
|
115
|
+
if (typeName === 'ZodNumber') {
|
|
116
|
+
const result = { type: 'number' };
|
|
117
|
+
const description = schema.description;
|
|
118
|
+
if (description) {
|
|
119
|
+
result.description = description;
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
// Handle ZodBoolean
|
|
124
|
+
if (typeName === 'ZodBoolean') {
|
|
125
|
+
const result = { type: 'boolean' };
|
|
126
|
+
const description = schema.description;
|
|
127
|
+
if (description) {
|
|
128
|
+
result.description = description;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
// Handle ZodArray
|
|
133
|
+
if (typeName === 'ZodArray') {
|
|
134
|
+
// Array items are stored in _def.element (not .type)
|
|
135
|
+
const itemSchema = def.element || def.type;
|
|
136
|
+
const result = {
|
|
137
|
+
type: 'array',
|
|
138
|
+
items: zodToJsonSchema(itemSchema),
|
|
139
|
+
};
|
|
140
|
+
const description = schema.description;
|
|
141
|
+
if (description) {
|
|
142
|
+
result.description = description;
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
// Handle ZodEnum
|
|
147
|
+
if (typeName === 'ZodEnum') {
|
|
148
|
+
// Enum values are in _def.entries as an object - extract the values
|
|
149
|
+
const entries = def.entries;
|
|
150
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
151
|
+
const values = entries ? Object.values(entries) : [];
|
|
152
|
+
const result = {
|
|
153
|
+
type: 'string',
|
|
154
|
+
enum: values,
|
|
155
|
+
};
|
|
156
|
+
const description = schema.description;
|
|
157
|
+
if (description) {
|
|
158
|
+
result.description = description;
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
// Default fallback
|
|
163
|
+
return { type: 'string' };
|
|
164
|
+
}
|
|
165
|
+
// ============================================================================
|
|
166
|
+
// Runtime Validation
|
|
167
|
+
// ============================================================================
|
|
168
|
+
/**
|
|
169
|
+
* Validate data against a Zod schema
|
|
170
|
+
*
|
|
171
|
+
* @param data - Data to validate
|
|
172
|
+
* @param schema - Zod schema to validate against
|
|
173
|
+
* @returns Validation result with typed data or errors
|
|
174
|
+
*/
|
|
175
|
+
export function validateWithSchema(data, schema) {
|
|
176
|
+
// Ensure Zod is available
|
|
177
|
+
getZod();
|
|
178
|
+
const result = schema.safeParse(data);
|
|
179
|
+
if (result.success) {
|
|
180
|
+
return {
|
|
181
|
+
success: true,
|
|
182
|
+
data: result.data,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
success: false,
|
|
187
|
+
errors: result.error.issues,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// ============================================================================
|
|
191
|
+
// PII Detection and Redaction (from validation-middleware)
|
|
192
|
+
// ============================================================================
|
|
193
|
+
/**
|
|
194
|
+
* Default PII patterns for detection
|
|
195
|
+
*/
|
|
196
|
+
export const DEFAULT_PII_PATTERNS = [
|
|
197
|
+
{
|
|
198
|
+
type: 'email',
|
|
199
|
+
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
|
|
200
|
+
replacement: '[REDACTED_EMAIL]',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
type: 'phone',
|
|
204
|
+
pattern: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g,
|
|
205
|
+
replacement: '[REDACTED_PHONE]',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
type: 'ssn',
|
|
209
|
+
pattern: /\b\d{3}-\d{2}-\d{4}\b/g,
|
|
210
|
+
replacement: '[REDACTED_SSN]',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
type: 'creditCard',
|
|
214
|
+
pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g,
|
|
215
|
+
replacement: '[REDACTED_CREDIT_CARD]',
|
|
216
|
+
},
|
|
217
|
+
];
|
|
218
|
+
/**
|
|
219
|
+
* Default prompt injection patterns
|
|
220
|
+
*/
|
|
221
|
+
export const DEFAULT_INJECTION_PATTERNS = [
|
|
222
|
+
/ignore\s+previous\s+instructions/i,
|
|
223
|
+
/ignore\s+all\s+previous/i,
|
|
224
|
+
/system:\s*new\s+instruction/i,
|
|
225
|
+
/forget\s+everything/i,
|
|
226
|
+
/disregard\s+all/i,
|
|
227
|
+
];
|
|
228
|
+
/**
|
|
229
|
+
* Detect PII in text
|
|
230
|
+
*/
|
|
231
|
+
export function detectPII(text, patterns = DEFAULT_PII_PATTERNS) {
|
|
232
|
+
const matches = [];
|
|
233
|
+
for (const pattern of patterns) {
|
|
234
|
+
const regex = new RegExp(pattern.pattern);
|
|
235
|
+
let match;
|
|
236
|
+
while ((match = regex.exec(text)) !== null) {
|
|
237
|
+
matches.push({
|
|
238
|
+
type: pattern.type,
|
|
239
|
+
value: match[0],
|
|
240
|
+
start: match.index,
|
|
241
|
+
end: match.index + match[0].length,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
detected: matches.length > 0,
|
|
247
|
+
matches,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Redact PII from text
|
|
252
|
+
*/
|
|
253
|
+
export function redactPII(text, patterns = DEFAULT_PII_PATTERNS) {
|
|
254
|
+
let result = text;
|
|
255
|
+
for (const pattern of patterns) {
|
|
256
|
+
result = result.replace(pattern.pattern, pattern.replacement);
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Detect prompt injection attempts
|
|
262
|
+
*/
|
|
263
|
+
export function detectPromptInjection(text, patterns = DEFAULT_INJECTION_PATTERNS) {
|
|
264
|
+
return patterns.some((pattern) => pattern.test(text));
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Sanitize text by removing control characters
|
|
268
|
+
*/
|
|
269
|
+
export function sanitizeText(text) {
|
|
270
|
+
return (text
|
|
271
|
+
// eslint-disable-next-line no-control-regex
|
|
272
|
+
.replace(/\x00/g, '') // Remove null bytes
|
|
273
|
+
.replace(/\r\n/g, '\n') // Normalize line endings
|
|
274
|
+
.replace(/\r/g, '\n'));
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Create a generateObject function bound to a Bridge instance
|
|
278
|
+
*
|
|
279
|
+
* This is a factory function that creates a generateObject implementation
|
|
280
|
+
* that uses the provided Bridge for making LLM calls.
|
|
281
|
+
*/
|
|
282
|
+
export function createGenerateObject(bridge) {
|
|
283
|
+
return async function generateObject(options) {
|
|
284
|
+
// Ensure Zod is available
|
|
285
|
+
getZod();
|
|
286
|
+
const { schema, prompt, model, temperature = 0.7, maxRetries = 3 } = options;
|
|
287
|
+
// Convert schema to tool definition
|
|
288
|
+
const toolDef = schemaToToolDefinition(schema, 'extract_data', 'Extract structured data');
|
|
289
|
+
let lastError;
|
|
290
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
291
|
+
try {
|
|
292
|
+
// Make the LLM call with tool use
|
|
293
|
+
const response = await bridge.chat({
|
|
294
|
+
model: model || bridge.config.defaultModel,
|
|
295
|
+
messages: [
|
|
296
|
+
{
|
|
297
|
+
role: 'user',
|
|
298
|
+
content: prompt,
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
tools: [toolDef],
|
|
302
|
+
tool_choice: { type: 'tool', name: 'extract_data' },
|
|
303
|
+
temperature,
|
|
304
|
+
});
|
|
305
|
+
// Extract tool call result
|
|
306
|
+
const toolCalls = response.content?.filter((c) => c.type === 'tool_use');
|
|
307
|
+
if (!toolCalls || toolCalls.length === 0) {
|
|
308
|
+
throw new Error('No tool call in response');
|
|
309
|
+
}
|
|
310
|
+
const toolCall = toolCalls[0];
|
|
311
|
+
const data = toolCall.input;
|
|
312
|
+
// Validate against schema
|
|
313
|
+
const validation = validateWithSchema(data, schema);
|
|
314
|
+
if (!validation.success) {
|
|
315
|
+
lastError = new Error(`Validation failed: ${JSON.stringify(validation.errors)}`);
|
|
316
|
+
continue; // Retry
|
|
317
|
+
}
|
|
318
|
+
// Return validated object
|
|
319
|
+
return {
|
|
320
|
+
object: validation.data,
|
|
321
|
+
usage: response.usage,
|
|
322
|
+
finishReason: response.stop_reason || 'stop',
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
lastError = error;
|
|
327
|
+
if (attempt === maxRetries - 1) {
|
|
328
|
+
throw lastError;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
throw lastError || new Error('Failed to generate object');
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Create a streamObject function bound to a Bridge instance
|
|
337
|
+
*
|
|
338
|
+
* This is a factory function that creates a streamObject implementation
|
|
339
|
+
* that uses the provided Bridge for making streaming LLM calls.
|
|
340
|
+
*/
|
|
341
|
+
export function createStreamObject(bridge) {
|
|
342
|
+
return async function* streamObject(options) {
|
|
343
|
+
// Ensure Zod is available
|
|
344
|
+
getZod();
|
|
345
|
+
const { schema, prompt, model, onPartial } = options;
|
|
346
|
+
// Convert schema to tool definition
|
|
347
|
+
const toolDef = schemaToToolDefinition(schema, 'extract_data', 'Extract structured data');
|
|
348
|
+
// Make streaming LLM call
|
|
349
|
+
const stream = await bridge.chatStream({
|
|
350
|
+
model: model || bridge.config.defaultModel,
|
|
351
|
+
messages: [
|
|
352
|
+
{
|
|
353
|
+
role: 'user',
|
|
354
|
+
content: prompt,
|
|
355
|
+
},
|
|
356
|
+
],
|
|
357
|
+
tools: [toolDef],
|
|
358
|
+
tool_choice: { type: 'tool', name: 'extract_data' },
|
|
359
|
+
});
|
|
360
|
+
let accumulatedData = {};
|
|
361
|
+
for await (const chunk of stream) {
|
|
362
|
+
// Check if chunk contains tool use delta
|
|
363
|
+
if (chunk.delta?.type === 'input_json_delta') {
|
|
364
|
+
const jsonDelta = chunk.delta.partial_json;
|
|
365
|
+
try {
|
|
366
|
+
// Parse accumulated JSON
|
|
367
|
+
accumulatedData = JSON.parse(jsonDelta || '{}');
|
|
368
|
+
// Emit partial
|
|
369
|
+
if (onPartial) {
|
|
370
|
+
onPartial(accumulatedData);
|
|
371
|
+
}
|
|
372
|
+
yield accumulatedData;
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
// JSON not yet complete, continue
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Validate final object
|
|
380
|
+
const validation = validateWithSchema(accumulatedData, schema);
|
|
381
|
+
if (!validation.success) {
|
|
382
|
+
throw new Error(`Validation failed: ${JSON.stringify(validation.errors)}`);
|
|
383
|
+
}
|
|
384
|
+
return validation.data;
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=structured-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../../src/structured-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Message Normalization Utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles different provider strategies for system messages:
|
|
5
|
+
* - separate-parameter: System as separate parameter (Anthropic)
|
|
6
|
+
* - in-messages: System messages in message array (OpenAI, Gemini)
|
|
7
|
+
* - prepend-user: Prepend system to first user message (some providers)
|
|
8
|
+
* - not-supported: Strip system messages (rare)
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// System Message Extraction
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Extract system messages from message array.
|
|
17
|
+
*
|
|
18
|
+
* Returns both the system messages and the remaining non-system messages.
|
|
19
|
+
*
|
|
20
|
+
* @param messages Message array
|
|
21
|
+
* @returns Object with system messages and remaining messages
|
|
22
|
+
*/
|
|
23
|
+
export function extractSystemMessages(messages) {
|
|
24
|
+
const systemMessages = [];
|
|
25
|
+
const otherMessages = [];
|
|
26
|
+
for (const message of messages) {
|
|
27
|
+
if (message.role === 'system') {
|
|
28
|
+
systemMessages.push(message);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
otherMessages.push(message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { systemMessages, otherMessages };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Combine multiple system messages into a single string.
|
|
38
|
+
*
|
|
39
|
+
* @param systemMessages Array of system messages
|
|
40
|
+
* @param separator Separator between messages (default: double newline)
|
|
41
|
+
* @returns Combined system message content
|
|
42
|
+
*/
|
|
43
|
+
export function combineSystemMessages(systemMessages, separator = '\n\n') {
|
|
44
|
+
return systemMessages
|
|
45
|
+
.map((msg) => {
|
|
46
|
+
if (typeof msg.content === 'string') {
|
|
47
|
+
return msg.content;
|
|
48
|
+
}
|
|
49
|
+
// Extract text from content blocks
|
|
50
|
+
return msg.content
|
|
51
|
+
.filter((block) => block.type === 'text')
|
|
52
|
+
.map((block) => (block.type === 'text' ? block.text : ''))
|
|
53
|
+
.join(' ');
|
|
54
|
+
})
|
|
55
|
+
.filter((content) => content.length > 0)
|
|
56
|
+
.join(separator);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get first system message as string (for providers that only support one).
|
|
60
|
+
*
|
|
61
|
+
* @param messages Message array
|
|
62
|
+
* @returns First system message content or undefined
|
|
63
|
+
*/
|
|
64
|
+
export function getFirstSystemMessage(messages) {
|
|
65
|
+
const systemMessage = messages.find((msg) => msg.role === 'system');
|
|
66
|
+
if (!systemMessage) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
if (typeof systemMessage.content === 'string') {
|
|
70
|
+
return systemMessage.content;
|
|
71
|
+
}
|
|
72
|
+
// Extract text from content blocks
|
|
73
|
+
const text = systemMessage.content
|
|
74
|
+
.filter((block) => block.type === 'text')
|
|
75
|
+
.map((block) => (block.type === 'text' ? block.text : ''))
|
|
76
|
+
.join(' ');
|
|
77
|
+
return text.length > 0 ? text : undefined;
|
|
78
|
+
}
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// System Message Normalization
|
|
81
|
+
// ============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Normalize system messages according to provider strategy.
|
|
84
|
+
*
|
|
85
|
+
* @param messages Original message array
|
|
86
|
+
* @param strategy System message strategy
|
|
87
|
+
* @param supportsMultiple Whether provider supports multiple system messages
|
|
88
|
+
* @returns Normalized messages and optional system parameter
|
|
89
|
+
*/
|
|
90
|
+
export function normalizeSystemMessages(messages, strategy, supportsMultiple = false) {
|
|
91
|
+
const { systemMessages, otherMessages } = extractSystemMessages(messages);
|
|
92
|
+
// No system messages - return as-is
|
|
93
|
+
if (systemMessages.length === 0) {
|
|
94
|
+
return { messages: [...messages] };
|
|
95
|
+
}
|
|
96
|
+
switch (strategy) {
|
|
97
|
+
case 'separate-parameter': {
|
|
98
|
+
// System messages go in separate parameter
|
|
99
|
+
const systemContent = supportsMultiple
|
|
100
|
+
? combineSystemMessages(systemMessages)
|
|
101
|
+
: (getFirstSystemMessage(messages) ?? '');
|
|
102
|
+
return {
|
|
103
|
+
messages: otherMessages,
|
|
104
|
+
systemParameter: systemContent,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
case 'in-messages': {
|
|
108
|
+
// System messages stay in message array
|
|
109
|
+
if (supportsMultiple) {
|
|
110
|
+
// Can keep all system messages
|
|
111
|
+
return { messages: [...messages] };
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Combine multiple system messages into one
|
|
115
|
+
const combinedContent = combineSystemMessages(systemMessages);
|
|
116
|
+
const singleSystemMessage = {
|
|
117
|
+
role: 'system',
|
|
118
|
+
content: combinedContent,
|
|
119
|
+
};
|
|
120
|
+
return {
|
|
121
|
+
messages: [singleSystemMessage, ...otherMessages],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
case 'prepend-user': {
|
|
126
|
+
// Prepend system message to first user message
|
|
127
|
+
const systemContent = combineSystemMessages(systemMessages);
|
|
128
|
+
// Find first user message
|
|
129
|
+
const firstUserIndex = otherMessages.findIndex((msg) => msg.role === 'user');
|
|
130
|
+
if (firstUserIndex === -1) {
|
|
131
|
+
// No user message - just remove system messages
|
|
132
|
+
return { messages: otherMessages };
|
|
133
|
+
}
|
|
134
|
+
const firstUserMessage = otherMessages[firstUserIndex];
|
|
135
|
+
const userContent = typeof firstUserMessage?.content === 'string' ? firstUserMessage.content : '';
|
|
136
|
+
// Combine system and user content
|
|
137
|
+
const combinedMessage = {
|
|
138
|
+
role: 'user',
|
|
139
|
+
content: `${systemContent}\n\n${userContent}`,
|
|
140
|
+
};
|
|
141
|
+
// Replace first user message with combined message
|
|
142
|
+
const newMessages = [...otherMessages];
|
|
143
|
+
newMessages[firstUserIndex] = combinedMessage;
|
|
144
|
+
return { messages: newMessages };
|
|
145
|
+
}
|
|
146
|
+
case 'not-supported': {
|
|
147
|
+
// Strip system messages entirely
|
|
148
|
+
return { messages: otherMessages };
|
|
149
|
+
}
|
|
150
|
+
default: {
|
|
151
|
+
// Unknown strategy - return as-is
|
|
152
|
+
return { messages: [...messages] };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Add system message to message array.
|
|
158
|
+
*
|
|
159
|
+
* Handles prepending or replacing existing system messages based on strategy.
|
|
160
|
+
*
|
|
161
|
+
* @param messages Existing message array
|
|
162
|
+
* @param systemContent System message content to add
|
|
163
|
+
* @param strategy System message strategy
|
|
164
|
+
* @param supportsMultiple Whether provider supports multiple system messages
|
|
165
|
+
* @returns New message array with system message added
|
|
166
|
+
*/
|
|
167
|
+
export function addSystemMessage(messages, systemContent, strategy = 'in-messages', supportsMultiple = false) {
|
|
168
|
+
const systemMessage = {
|
|
169
|
+
role: 'system',
|
|
170
|
+
content: systemContent,
|
|
171
|
+
};
|
|
172
|
+
if (strategy === 'separate-parameter') {
|
|
173
|
+
// System handled separately, don't add to messages
|
|
174
|
+
return [...messages];
|
|
175
|
+
}
|
|
176
|
+
if (strategy === 'prepend-user') {
|
|
177
|
+
// Will be prepended to first user message in normalization
|
|
178
|
+
return [systemMessage, ...messages];
|
|
179
|
+
}
|
|
180
|
+
if (strategy === 'not-supported') {
|
|
181
|
+
// System not supported, don't add
|
|
182
|
+
return [...messages];
|
|
183
|
+
}
|
|
184
|
+
// 'in-messages' strategy
|
|
185
|
+
if (supportsMultiple) {
|
|
186
|
+
// Add at beginning
|
|
187
|
+
return [systemMessage, ...messages];
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Replace existing system messages with new one
|
|
191
|
+
const { otherMessages } = extractSystemMessages(messages);
|
|
192
|
+
return [systemMessage, ...otherMessages];
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check if messages contain any system messages.
|
|
197
|
+
*
|
|
198
|
+
* @param messages Message array
|
|
199
|
+
* @returns true if any message has role 'system'
|
|
200
|
+
*/
|
|
201
|
+
export function hasSystemMessages(messages) {
|
|
202
|
+
return messages.some((msg) => msg.role === 'system');
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Count system messages in array.
|
|
206
|
+
*
|
|
207
|
+
* @param messages Message array
|
|
208
|
+
* @returns Number of system messages
|
|
209
|
+
*/
|
|
210
|
+
export function countSystemMessages(messages) {
|
|
211
|
+
return messages.filter((msg) => msg.role === 'system').length;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=system-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-message.js","sourceRoot":"","sources":["../../src/system-message.ts"],"names":[],"mappings":"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"}
|