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