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,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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"}