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,434 @@
1
+ /**
2
+ * Parameter Normalization Utilities
3
+ *
4
+ * Normalizes parameters across different provider ranges and conventions.
5
+ * Enhanced with warning generation for semantic drift tracking.
6
+ *
7
+ * @module
8
+ */
9
+ import { createNormalizationWarning, createClampingWarning, createUnsupportedParameterWarning, createStopSequencesTruncatedWarning, } from './warnings.js';
10
+ // ============================================================================
11
+ // Parameter Normalization
12
+ // ============================================================================
13
+ /**
14
+ * Normalize temperature to provider's range.
15
+ *
16
+ * IR uses 0-2 range (OpenAI convention).
17
+ * Some providers use 0-1 range (Anthropic).
18
+ *
19
+ * @param temperature Temperature value (0-2)
20
+ * @param targetRange Target range ('0-1' or '0-2')
21
+ * @returns Normalized temperature
22
+ */
23
+ export function normalizeTemperature(temperature, targetRange = '0-2') {
24
+ if (temperature === undefined) {
25
+ return undefined;
26
+ }
27
+ // Clamp to IR range
28
+ const clamped = Math.max(0, Math.min(2, temperature));
29
+ if (targetRange === '0-1') {
30
+ // Scale 0-2 to 0-1
31
+ return clamped / 2;
32
+ }
33
+ return clamped;
34
+ }
35
+ /**
36
+ * Denormalize temperature from provider's range back to IR.
37
+ *
38
+ * @param temperature Temperature value from provider
39
+ * @param sourceRange Source range ('0-1' or '0-2')
40
+ * @returns IR temperature (0-2)
41
+ */
42
+ export function denormalizeTemperature(temperature, sourceRange = '0-2') {
43
+ if (temperature === undefined) {
44
+ return undefined;
45
+ }
46
+ if (sourceRange === '0-1') {
47
+ // Scale 0-1 to 0-2
48
+ return temperature * 2;
49
+ }
50
+ return temperature;
51
+ }
52
+ /**
53
+ * Normalize topP parameter.
54
+ *
55
+ * Always 0-1 range across providers.
56
+ *
57
+ * @param topP TopP value
58
+ * @returns Clamped topP
59
+ */
60
+ export function normalizeTopP(topP) {
61
+ if (topP === undefined) {
62
+ return undefined;
63
+ }
64
+ return Math.max(0, Math.min(1, topP));
65
+ }
66
+ /**
67
+ * Normalize topK parameter.
68
+ *
69
+ * @param topK TopK value
70
+ * @param maxTopK Maximum topK supported by provider
71
+ * @returns Clamped topK
72
+ */
73
+ export function normalizeTopK(topK, maxTopK = 100) {
74
+ if (topK === undefined) {
75
+ return undefined;
76
+ }
77
+ return Math.max(1, Math.min(maxTopK, Math.floor(topK)));
78
+ }
79
+ /**
80
+ * Normalize penalty parameters (frequency, presence).
81
+ *
82
+ * IR uses -2 to 2 range (OpenAI convention).
83
+ * Some providers might use different ranges.
84
+ *
85
+ * @param penalty Penalty value
86
+ * @param targetRange Target range
87
+ * @returns Normalized penalty
88
+ */
89
+ export function normalizePenalty(penalty, targetRange = { min: -2, max: 2 }) {
90
+ if (penalty === undefined) {
91
+ return undefined;
92
+ }
93
+ // Clamp to IR range first
94
+ const clamped = Math.max(-2, Math.min(2, penalty));
95
+ // Map from -2..2 to target range
96
+ const normalized = ((clamped + 2) / 4) * (targetRange.max - targetRange.min) + targetRange.min;
97
+ return normalized;
98
+ }
99
+ /**
100
+ * Normalize stop sequences.
101
+ *
102
+ * @param stopSequences Stop sequences array
103
+ * @param maxStopSequences Maximum number of stop sequences supported
104
+ * @returns Normalized stop sequences
105
+ */
106
+ export function normalizeStopSequences(stopSequences, maxStopSequences) {
107
+ if (!stopSequences || stopSequences.length === 0) {
108
+ return undefined;
109
+ }
110
+ // Remove duplicates
111
+ const unique = Array.from(new Set(stopSequences));
112
+ // Limit to max if specified
113
+ if (maxStopSequences !== undefined && maxStopSequences > 0) {
114
+ return unique.slice(0, maxStopSequences);
115
+ }
116
+ return unique;
117
+ }
118
+ // ============================================================================
119
+ // Parameter Filtering
120
+ // ============================================================================
121
+ /**
122
+ * Filter parameters based on provider capabilities.
123
+ *
124
+ * Removes parameters that the provider doesn't support.
125
+ *
126
+ * @param parameters IR parameters
127
+ * @param capabilities Provider capabilities
128
+ * @returns Filtered parameters
129
+ */
130
+ export function filterUnsupportedParameters(parameters, capabilities) {
131
+ if (!parameters) {
132
+ return {};
133
+ }
134
+ const filtered = {
135
+ model: parameters.model,
136
+ };
137
+ // Only include supported parameters
138
+ if (capabilities.supportsTemperature !== false && parameters.temperature !== undefined) {
139
+ filtered.temperature = parameters.temperature;
140
+ }
141
+ if (capabilities.supportsTopP !== false && parameters.topP !== undefined) {
142
+ filtered.topP = parameters.topP;
143
+ }
144
+ if (capabilities.supportsTopK && parameters.topK !== undefined) {
145
+ filtered.topK = parameters.topK;
146
+ }
147
+ if (capabilities.supportsFrequencyPenalty !== false &&
148
+ parameters.frequencyPenalty !== undefined) {
149
+ filtered.frequencyPenalty = parameters.frequencyPenalty;
150
+ }
151
+ if (capabilities.supportsPresencePenalty !== false && parameters.presencePenalty !== undefined) {
152
+ filtered.presencePenalty = parameters.presencePenalty;
153
+ }
154
+ if (parameters.maxTokens !== undefined) {
155
+ filtered.maxTokens = parameters.maxTokens;
156
+ }
157
+ if (parameters.stopSequences !== undefined) {
158
+ filtered.stopSequences = normalizeStopSequences(parameters.stopSequences, capabilities.maxStopSequences);
159
+ }
160
+ if (capabilities.supportsSeed !== false && parameters.seed !== undefined) {
161
+ filtered.seed = parameters.seed;
162
+ }
163
+ if (parameters.user !== undefined) {
164
+ filtered.user = parameters.user;
165
+ }
166
+ if (parameters.custom !== undefined) {
167
+ filtered.custom = parameters.custom;
168
+ }
169
+ return filtered;
170
+ }
171
+ /**
172
+ * Apply parameter defaults.
173
+ *
174
+ * @param parameters IR parameters
175
+ * @param defaults Default values
176
+ * @returns Parameters with defaults applied
177
+ */
178
+ export function applyParameterDefaults(parameters, defaults) {
179
+ return {
180
+ ...defaults,
181
+ ...parameters,
182
+ };
183
+ }
184
+ /**
185
+ * Merge parameter objects.
186
+ *
187
+ * Later parameters override earlier ones.
188
+ *
189
+ * @param parameterSets Parameter objects to merge
190
+ * @returns Merged parameters
191
+ */
192
+ export function mergeParameters(...parameterSets) {
193
+ const merged = {};
194
+ for (const params of parameterSets) {
195
+ if (!params) {
196
+ continue;
197
+ }
198
+ Object.assign(merged, params);
199
+ }
200
+ return merged;
201
+ }
202
+ // ============================================================================
203
+ // Parameter Validation
204
+ // ============================================================================
205
+ /**
206
+ * Clamp parameter to valid range.
207
+ *
208
+ * @param value Parameter value
209
+ * @param min Minimum value
210
+ * @param max Maximum value
211
+ * @returns Clamped value
212
+ */
213
+ export function clampParameter(value, min, max) {
214
+ if (value === undefined) {
215
+ return undefined;
216
+ }
217
+ return Math.max(min, Math.min(max, value));
218
+ }
219
+ /**
220
+ * Sanitize parameters by clamping to valid ranges.
221
+ *
222
+ * @param parameters IR parameters
223
+ * @returns Sanitized parameters
224
+ */
225
+ export function sanitizeParameters(parameters) {
226
+ if (!parameters) {
227
+ return {};
228
+ }
229
+ const sanitized = { ...parameters };
230
+ if (parameters.temperature !== undefined) {
231
+ sanitized.temperature = clampParameter(parameters.temperature, 0, 2);
232
+ }
233
+ if (parameters.maxTokens !== undefined) {
234
+ sanitized.maxTokens = Math.max(1, Math.floor(parameters.maxTokens));
235
+ }
236
+ if (parameters.topP !== undefined) {
237
+ sanitized.topP = clampParameter(parameters.topP, 0, 1);
238
+ }
239
+ if (parameters.topK !== undefined) {
240
+ sanitized.topK = Math.max(1, Math.floor(parameters.topK));
241
+ }
242
+ if (parameters.frequencyPenalty !== undefined) {
243
+ sanitized.frequencyPenalty = clampParameter(parameters.frequencyPenalty, -2, 2);
244
+ }
245
+ if (parameters.presencePenalty !== undefined) {
246
+ sanitized.presencePenalty = clampParameter(parameters.presencePenalty, -2, 2);
247
+ }
248
+ if (parameters.seed !== undefined) {
249
+ sanitized.seed = Math.floor(parameters.seed);
250
+ }
251
+ return sanitized;
252
+ }
253
+ /**
254
+ * Check if parameters are within valid ranges.
255
+ *
256
+ * @param parameters IR parameters
257
+ * @returns true if all parameters are valid
258
+ */
259
+ export function areParametersValid(parameters) {
260
+ if (!parameters) {
261
+ return true;
262
+ }
263
+ // Check temperature
264
+ if (parameters.temperature !== undefined) {
265
+ if (parameters.temperature < 0 || parameters.temperature > 2) {
266
+ return false;
267
+ }
268
+ }
269
+ // Check maxTokens
270
+ if (parameters.maxTokens !== undefined) {
271
+ if (parameters.maxTokens < 1 || !Number.isInteger(parameters.maxTokens)) {
272
+ return false;
273
+ }
274
+ }
275
+ // Check topP
276
+ if (parameters.topP !== undefined) {
277
+ if (parameters.topP < 0 || parameters.topP > 1) {
278
+ return false;
279
+ }
280
+ }
281
+ // Check topK
282
+ if (parameters.topK !== undefined) {
283
+ if (parameters.topK < 1 || !Number.isInteger(parameters.topK)) {
284
+ return false;
285
+ }
286
+ }
287
+ // Check penalties
288
+ if (parameters.frequencyPenalty !== undefined) {
289
+ if (parameters.frequencyPenalty < -2 || parameters.frequencyPenalty > 2) {
290
+ return false;
291
+ }
292
+ }
293
+ if (parameters.presencePenalty !== undefined) {
294
+ if (parameters.presencePenalty < -2 || parameters.presencePenalty > 2) {
295
+ return false;
296
+ }
297
+ }
298
+ return true;
299
+ }
300
+ /**
301
+ * Normalize temperature with warning generation.
302
+ *
303
+ * @param temperature Temperature value (0-2)
304
+ * @param targetRange Target range ('0-1' or '0-2')
305
+ * @param source Source adapter name
306
+ * @returns Normalized temperature and warnings
307
+ */
308
+ export function normalizeTemperatureWithWarnings(temperature, targetRange = '0-2', source) {
309
+ const warnings = [];
310
+ if (temperature === undefined) {
311
+ return { value: undefined, warnings };
312
+ }
313
+ const original = temperature;
314
+ const clamped = Math.max(0, Math.min(2, temperature));
315
+ // Warn if clamped
316
+ if (clamped !== original) {
317
+ warnings.push(createClampingWarning('temperature', original, clamped, 0, 2, source));
318
+ }
319
+ if (targetRange === '0-1') {
320
+ const normalized = clamped / 2;
321
+ // Warn about scaling
322
+ if (clamped > 1) {
323
+ warnings.push(createNormalizationWarning('temperature', clamped, normalized, `Temperature scaled from 0-2 range (${clamped}) to 0-1 range (${normalized.toFixed(2)})`, source));
324
+ }
325
+ return { value: normalized, warnings };
326
+ }
327
+ return { value: clamped, warnings };
328
+ }
329
+ /**
330
+ * Normalize stop sequences with warning generation.
331
+ *
332
+ * @param stopSequences Stop sequences array
333
+ * @param maxStopSequences Maximum number supported
334
+ * @param source Source adapter name
335
+ * @returns Normalized stop sequences and warnings
336
+ */
337
+ export function normalizeStopSequencesWithWarnings(stopSequences, maxStopSequences, source) {
338
+ const warnings = [];
339
+ if (!stopSequences || stopSequences.length === 0) {
340
+ return { value: undefined, warnings };
341
+ }
342
+ // Remove duplicates
343
+ const unique = Array.from(new Set(stopSequences));
344
+ // Limit to max if specified
345
+ if (maxStopSequences !== undefined && maxStopSequences > 0 && unique.length > maxStopSequences) {
346
+ warnings.push(createStopSequencesTruncatedWarning(unique.length, maxStopSequences, source));
347
+ return { value: unique.slice(0, maxStopSequences), warnings };
348
+ }
349
+ return { value: unique, warnings };
350
+ }
351
+ /**
352
+ * Filter parameters with warning generation.
353
+ *
354
+ * @param parameters IR parameters
355
+ * @param capabilities Provider capabilities
356
+ * @param source Source adapter name
357
+ * @returns Filtered parameters and warnings
358
+ */
359
+ export function filterUnsupportedParametersWithWarnings(parameters, capabilities, source) {
360
+ const warnings = [];
361
+ if (!parameters) {
362
+ return { value: {}, warnings };
363
+ }
364
+ const filtered = {
365
+ model: parameters.model,
366
+ };
367
+ // Check each parameter for support
368
+ if (parameters.temperature !== undefined) {
369
+ if (capabilities.supportsTemperature !== false) {
370
+ filtered.temperature = parameters.temperature;
371
+ }
372
+ else {
373
+ warnings.push(createUnsupportedParameterWarning('temperature', parameters.temperature, source));
374
+ }
375
+ }
376
+ if (parameters.topP !== undefined) {
377
+ if (capabilities.supportsTopP !== false) {
378
+ filtered.topP = parameters.topP;
379
+ }
380
+ else {
381
+ warnings.push(createUnsupportedParameterWarning('topP', parameters.topP, source));
382
+ }
383
+ }
384
+ if (parameters.topK !== undefined) {
385
+ if (capabilities.supportsTopK) {
386
+ filtered.topK = parameters.topK;
387
+ }
388
+ else {
389
+ warnings.push(createUnsupportedParameterWarning('topK', parameters.topK, source));
390
+ }
391
+ }
392
+ if (parameters.frequencyPenalty !== undefined) {
393
+ if (capabilities.supportsFrequencyPenalty !== false) {
394
+ filtered.frequencyPenalty = parameters.frequencyPenalty;
395
+ }
396
+ else {
397
+ warnings.push(createUnsupportedParameterWarning('frequencyPenalty', parameters.frequencyPenalty, source));
398
+ }
399
+ }
400
+ if (parameters.presencePenalty !== undefined) {
401
+ if (capabilities.supportsPresencePenalty !== false) {
402
+ filtered.presencePenalty = parameters.presencePenalty;
403
+ }
404
+ else {
405
+ warnings.push(createUnsupportedParameterWarning('presencePenalty', parameters.presencePenalty, source));
406
+ }
407
+ }
408
+ if (parameters.seed !== undefined) {
409
+ if (capabilities.supportsSeed !== false) {
410
+ filtered.seed = parameters.seed;
411
+ }
412
+ else {
413
+ warnings.push(createUnsupportedParameterWarning('seed', parameters.seed, source));
414
+ }
415
+ }
416
+ // Always include these
417
+ if (parameters.maxTokens !== undefined) {
418
+ filtered.maxTokens = parameters.maxTokens;
419
+ }
420
+ // Handle stop sequences with warnings
421
+ if (parameters.stopSequences !== undefined) {
422
+ const stopResult = normalizeStopSequencesWithWarnings(parameters.stopSequences, capabilities.maxStopSequences, source);
423
+ filtered.stopSequences = stopResult.value;
424
+ warnings.push(...stopResult.warnings);
425
+ }
426
+ if (parameters.user !== undefined) {
427
+ filtered.user = parameters.user;
428
+ }
429
+ if (parameters.custom !== undefined) {
430
+ filtered.custom = parameters.custom;
431
+ }
432
+ return { value: filtered, warnings };
433
+ }
434
+ //# sourceMappingURL=parameter-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-normalizer.js","sourceRoot":"","sources":["../../src/parameter-normalizer.ts"],"names":[],"mappings":"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"}