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