ai.matey.utils 0.2.1 → 0.4.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 (48) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/cjs/embeddings.js +153 -0
  3. package/dist/cjs/embeddings.js.map +1 -0
  4. package/dist/cjs/index.js +9 -0
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/model-cache.js +2 -5
  7. package/dist/cjs/model-cache.js.map +1 -1
  8. package/dist/cjs/model-registry-data.js +725 -0
  9. package/dist/cjs/model-registry-data.js.map +1 -0
  10. package/dist/cjs/model-registry.js +175 -0
  11. package/dist/cjs/model-registry.js.map +1 -0
  12. package/dist/cjs/streaming.js +61 -1
  13. package/dist/cjs/streaming.js.map +1 -1
  14. package/dist/cjs/structured-output.js +17 -5
  15. package/dist/cjs/structured-output.js.map +1 -1
  16. package/dist/cjs/tools.js +218 -0
  17. package/dist/cjs/tools.js.map +1 -0
  18. package/dist/esm/embeddings.js +145 -0
  19. package/dist/esm/embeddings.js.map +1 -0
  20. package/dist/esm/index.js +7 -0
  21. package/dist/esm/index.js.map +1 -1
  22. package/dist/esm/model-cache.js +2 -5
  23. package/dist/esm/model-cache.js.map +1 -1
  24. package/dist/esm/model-registry-data.js +722 -0
  25. package/dist/esm/model-registry-data.js.map +1 -0
  26. package/dist/esm/model-registry.js +162 -0
  27. package/dist/esm/model-registry.js.map +1 -0
  28. package/dist/esm/streaming.js +61 -1
  29. package/dist/esm/streaming.js.map +1 -1
  30. package/dist/esm/structured-output.js +17 -5
  31. package/dist/esm/structured-output.js.map +1 -1
  32. package/dist/esm/tools.js +211 -0
  33. package/dist/esm/tools.js.map +1 -0
  34. package/dist/types/embeddings.d.ts +80 -0
  35. package/dist/types/embeddings.d.ts.map +1 -0
  36. package/dist/types/index.d.ts +4 -0
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/model-cache.d.ts.map +1 -1
  39. package/dist/types/model-registry-data.d.ts +23 -0
  40. package/dist/types/model-registry-data.d.ts.map +1 -0
  41. package/dist/types/model-registry.d.ts +80 -0
  42. package/dist/types/model-registry.d.ts.map +1 -0
  43. package/dist/types/streaming.d.ts +18 -0
  44. package/dist/types/streaming.d.ts.map +1 -1
  45. package/dist/types/structured-output.d.ts.map +1 -1
  46. package/dist/types/tools.d.ts +70 -0
  47. package/dist/types/tools.d.ts.map +1 -0
  48. package/package.json +1 -1
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ /**
3
+ * Tool-Calling Utilities
4
+ *
5
+ * Helpers for working with tool calls in IR responses: extraction, result
6
+ * construction, zero-dependency argument validation against the IR
7
+ * JSONSchema subset, and streamed tool-call assembly.
8
+ *
9
+ * @module
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.extractToolCalls = extractToolCalls;
13
+ exports.hasToolCalls = hasToolCalls;
14
+ exports.createToolResultMessage = createToolResultMessage;
15
+ exports.validateToolArgs = validateToolArgs;
16
+ exports.collectToolCallsFromStream = collectToolCallsFromStream;
17
+ // ============================================================================
18
+ // Extraction
19
+ // ============================================================================
20
+ /**
21
+ * Extract tool calls from an IR message or response.
22
+ */
23
+ function extractToolCalls(source) {
24
+ const message = 'message' in source ? source.message : source;
25
+ if (typeof message.content === 'string') {
26
+ return [];
27
+ }
28
+ return message.content.filter((block) => block.type === 'tool_use');
29
+ }
30
+ /**
31
+ * Whether a response requests tool execution.
32
+ */
33
+ function hasToolCalls(response) {
34
+ return response.finishReason === 'tool_calls' || extractToolCalls(response).length > 0;
35
+ }
36
+ /**
37
+ * Build the `role: 'tool'` message carrying tool results back to the model.
38
+ *
39
+ * Non-string results are JSON-stringified.
40
+ */
41
+ function createToolResultMessage(results) {
42
+ const list = Array.isArray(results) ? results : [results];
43
+ return {
44
+ role: 'tool',
45
+ content: list.map((result) => ({
46
+ type: 'tool_result',
47
+ toolUseId: result.toolCallId,
48
+ content: typeof result.result === 'string' ? result.result : JSON.stringify(result.result ?? null),
49
+ isError: result.isError,
50
+ })),
51
+ };
52
+ }
53
+ /**
54
+ * Validate tool-call arguments against the tool's JSON Schema.
55
+ *
56
+ * Zero-dependency validator for the IR `JSONSchema` subset (type, enum,
57
+ * const, properties, required, items, min/max, pattern, length bounds) —
58
+ * deliberately not a full draft-2020 implementation. Use Zod via
59
+ * `generateObject` when full-fidelity validation matters.
60
+ */
61
+ function validateToolArgs(tool, input) {
62
+ const errors = [];
63
+ validateAgainstSchema(input, tool.parameters, '$', errors);
64
+ if (errors.length > 0) {
65
+ return { valid: false, errors };
66
+ }
67
+ return {
68
+ valid: true,
69
+ value: input !== null && typeof input === 'object' && !Array.isArray(input)
70
+ ? input
71
+ : {},
72
+ };
73
+ }
74
+ function validateAgainstSchema(value, schema, path, errors) {
75
+ const s = schema;
76
+ // const / enum
77
+ if ('const' in s && value !== s.const) {
78
+ errors.push({ path, message: `expected constant ${JSON.stringify(s.const)}` });
79
+ return;
80
+ }
81
+ if (Array.isArray(s.enum) && !s.enum.some((candidate) => deepEqual(candidate, value))) {
82
+ errors.push({ path, message: `expected one of ${JSON.stringify(s.enum)}` });
83
+ return;
84
+ }
85
+ const type = s.type;
86
+ switch (type) {
87
+ case 'object': {
88
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
89
+ errors.push({ path, message: 'expected object' });
90
+ return;
91
+ }
92
+ const record = value;
93
+ const properties = (s.properties ?? {});
94
+ const required = (s.required ?? []);
95
+ for (const key of required) {
96
+ if (!(key in record)) {
97
+ errors.push({ path: `${path}.${key}`, message: 'required property missing' });
98
+ }
99
+ }
100
+ for (const [key, propertySchema] of Object.entries(properties)) {
101
+ if (key in record) {
102
+ validateAgainstSchema(record[key], propertySchema, `${path}.${key}`, errors);
103
+ }
104
+ }
105
+ if (s.additionalProperties === false) {
106
+ for (const key of Object.keys(record)) {
107
+ if (!(key in properties)) {
108
+ errors.push({ path: `${path}.${key}`, message: 'unexpected property' });
109
+ }
110
+ }
111
+ }
112
+ break;
113
+ }
114
+ case 'array': {
115
+ if (!Array.isArray(value)) {
116
+ errors.push({ path, message: 'expected array' });
117
+ return;
118
+ }
119
+ if (typeof s.minItems === 'number' && value.length < s.minItems) {
120
+ errors.push({ path, message: `expected at least ${s.minItems} items` });
121
+ }
122
+ if (typeof s.maxItems === 'number' && value.length > s.maxItems) {
123
+ errors.push({ path, message: `expected at most ${s.maxItems} items` });
124
+ }
125
+ if (s.items) {
126
+ value.forEach((item, index) => validateAgainstSchema(item, s.items, `${path}[${index}]`, errors));
127
+ }
128
+ break;
129
+ }
130
+ case 'string': {
131
+ if (typeof value !== 'string') {
132
+ errors.push({ path, message: 'expected string' });
133
+ return;
134
+ }
135
+ if (typeof s.minLength === 'number' && value.length < s.minLength) {
136
+ errors.push({ path, message: `expected length >= ${s.minLength}` });
137
+ }
138
+ if (typeof s.maxLength === 'number' && value.length > s.maxLength) {
139
+ errors.push({ path, message: `expected length <= ${s.maxLength}` });
140
+ }
141
+ if (typeof s.pattern === 'string' && !new RegExp(s.pattern).test(value)) {
142
+ errors.push({ path, message: `expected match for /${s.pattern}/` });
143
+ }
144
+ break;
145
+ }
146
+ case 'number':
147
+ case 'integer': {
148
+ if (typeof value !== 'number' || Number.isNaN(value)) {
149
+ errors.push({ path, message: `expected ${type}` });
150
+ return;
151
+ }
152
+ if (type === 'integer' && !Number.isInteger(value)) {
153
+ errors.push({ path, message: 'expected integer' });
154
+ }
155
+ if (typeof s.minimum === 'number' && value < s.minimum) {
156
+ errors.push({ path, message: `expected >= ${s.minimum}` });
157
+ }
158
+ if (typeof s.maximum === 'number' && value > s.maximum) {
159
+ errors.push({ path, message: `expected <= ${s.maximum}` });
160
+ }
161
+ break;
162
+ }
163
+ case 'boolean':
164
+ if (typeof value !== 'boolean') {
165
+ errors.push({ path, message: 'expected boolean' });
166
+ }
167
+ break;
168
+ case 'null':
169
+ if (value !== null) {
170
+ errors.push({ path, message: 'expected null' });
171
+ }
172
+ break;
173
+ default:
174
+ // No/unknown type constraint: accept
175
+ break;
176
+ }
177
+ }
178
+ function deepEqual(a, b) {
179
+ if (a === b) {
180
+ return true;
181
+ }
182
+ if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
183
+ return false;
184
+ }
185
+ return JSON.stringify(a) === JSON.stringify(b);
186
+ }
187
+ // ============================================================================
188
+ // Stream Assembly
189
+ // ============================================================================
190
+ /**
191
+ * Consume an IR stream and assemble its tool calls and final response.
192
+ *
193
+ * Convenience for callers that stream for latency but want complete tool
194
+ * calls at the end: collects `tool_use` deltas and returns the `done`
195
+ * chunk's assembled message/finish reason.
196
+ */
197
+ async function collectToolCallsFromStream(stream) {
198
+ let response = null;
199
+ for await (const chunk of stream) {
200
+ if (chunk.type === 'done') {
201
+ response = {
202
+ message: chunk.message ?? { role: 'assistant', content: '' },
203
+ finishReason: chunk.finishReason,
204
+ usage: chunk.usage,
205
+ metadata: {
206
+ requestId: 'stream',
207
+ timestamp: Date.now(),
208
+ provenance: {},
209
+ },
210
+ };
211
+ }
212
+ }
213
+ return {
214
+ toolCalls: response ? extractToolCalls(response) : [],
215
+ response,
216
+ };
217
+ }
218
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Embedding Utilities
3
+ *
4
+ * Shared helpers for embedding support: batch chunking, dimension
5
+ * normalization, similarity, capability detection, and OpenAI wire-format
6
+ * conversion (used by the HTTP layer's /v1/embeddings route).
7
+ *
8
+ * @module
9
+ */
10
+ // ============================================================================
11
+ // Capability Detection
12
+ // ============================================================================
13
+ /**
14
+ * Type guard: does this backend implement embeddings?
15
+ */
16
+ export function supportsEmbeddings(adapter) {
17
+ // An inherited embed() can be explicitly opted out of via the capability
18
+ // flag (e.g. providers subclassing the OpenAI adapter without an
19
+ // embeddings endpoint set `capabilities.embeddings: false`)
20
+ return typeof adapter.embed === 'function' && adapter.metadata.capabilities.embeddings !== false;
21
+ }
22
+ // ============================================================================
23
+ // Batch Chunking
24
+ // ============================================================================
25
+ /**
26
+ * Split embedding inputs into provider-sized batches.
27
+ *
28
+ * @param inputs - Input strings
29
+ * @param options - maxBatchSize: max inputs per request; maxTokensPerBatch:
30
+ * optional token budget per batch using estimateTokens (default ~4 chars
31
+ * per token)
32
+ * @returns Batches in original order
33
+ */
34
+ export function chunkEmbedInputs(inputs, options) {
35
+ const { maxBatchSize, maxTokensPerBatch, estimateTokens } = options;
36
+ const tokensOf = estimateTokens ?? ((text) => Math.ceil(text.length / 4));
37
+ const batches = [];
38
+ let current = [];
39
+ let currentTokens = 0;
40
+ for (const input of inputs) {
41
+ const inputTokens = maxTokensPerBatch ? tokensOf(input) : 0;
42
+ const wouldOverflow = current.length >= maxBatchSize ||
43
+ (maxTokensPerBatch !== undefined &&
44
+ current.length > 0 &&
45
+ currentTokens + inputTokens > maxTokensPerBatch);
46
+ if (wouldOverflow) {
47
+ batches.push(current);
48
+ current = [];
49
+ currentTokens = 0;
50
+ }
51
+ current.push(input);
52
+ currentTokens += inputTokens;
53
+ }
54
+ if (current.length > 0) {
55
+ batches.push(current);
56
+ }
57
+ return batches;
58
+ }
59
+ // ============================================================================
60
+ // Dimension Normalization
61
+ // ============================================================================
62
+ /**
63
+ * Normalize a vector to a target dimensionality.
64
+ *
65
+ * - `truncate` (default): drop trailing components and re-normalize to unit
66
+ * length (valid for Matryoshka-trained models; approximate otherwise)
67
+ * - `pad`: zero-pad to the target length
68
+ *
69
+ * @param vector - Source vector
70
+ * @param dimensions - Target dimensionality
71
+ * @param strategy - 'truncate' | 'pad'
72
+ */
73
+ export function normalizeDimensions(vector, dimensions, strategy = 'truncate') {
74
+ if (vector.length === dimensions) {
75
+ return [...vector];
76
+ }
77
+ if (vector.length > dimensions) {
78
+ const truncated = vector.slice(0, dimensions);
79
+ const norm = Math.sqrt(truncated.reduce((sum, value) => sum + value * value, 0));
80
+ return norm === 0 ? truncated : truncated.map((value) => value / norm);
81
+ }
82
+ if (strategy === 'pad') {
83
+ return [...vector, ...new Array(dimensions - vector.length).fill(0)];
84
+ }
85
+ // Truncate strategy with a shorter source: return as-is (cannot invent data)
86
+ return [...vector];
87
+ }
88
+ /**
89
+ * Cosine similarity between two vectors (also the seed primitive for
90
+ * semantic caching).
91
+ */
92
+ export function cosineSimilarity(a, b) {
93
+ if (a.length !== b.length) {
94
+ throw new Error(`Vector length mismatch: ${a.length} vs ${b.length}`);
95
+ }
96
+ let dot = 0;
97
+ let normA = 0;
98
+ let normB = 0;
99
+ for (let i = 0; i < a.length; i++) {
100
+ const x = a[i];
101
+ const y = b[i];
102
+ dot += x * y;
103
+ normA += x * x;
104
+ normB += y * y;
105
+ }
106
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
107
+ return denominator === 0 ? 0 : dot / denominator;
108
+ }
109
+ /**
110
+ * Convert an OpenAI-format embeddings request body to IR.
111
+ */
112
+ export function openaiEmbedRequestToIR(body) {
113
+ return {
114
+ input: body.input,
115
+ parameters: {
116
+ model: body.model,
117
+ dimensions: body.dimensions,
118
+ user: body.user,
119
+ },
120
+ metadata: {
121
+ requestId: crypto.randomUUID(),
122
+ timestamp: Date.now(),
123
+ provenance: { frontend: 'openai-embed' },
124
+ },
125
+ };
126
+ }
127
+ /**
128
+ * Convert an IR embedding response to the OpenAI wire format.
129
+ */
130
+ export function irToOpenAIEmbedResponse(response) {
131
+ return {
132
+ object: 'list',
133
+ data: response.embeddings.map((embedding) => ({
134
+ object: 'embedding',
135
+ index: embedding.index,
136
+ embedding: [...embedding.vector],
137
+ })),
138
+ model: response.model,
139
+ usage: {
140
+ prompt_tokens: response.usage?.promptTokens ?? 0,
141
+ total_tokens: response.usage?.totalTokens ?? 0,
142
+ },
143
+ };
144
+ }
145
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/embeddings.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -21,6 +21,13 @@ export * from './warnings.js';
21
21
  export * from './conversation-history.js';
22
22
  // Model cache utilities
23
23
  export * from './model-cache.js';
24
+ // Embedding utilities
25
+ export * from './embeddings.js';
26
+ // Tool-calling helpers
27
+ export * from './tools.js';
28
+ // Model registry (pricing, context windows, capabilities)
29
+ export * from './model-registry.js';
30
+ export { MODEL_REGISTRY_SEED } from './model-registry-data.js';
24
31
  // Structured output utilities (Zod integration)
25
32
  export * from './structured-output.js';
26
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,cAAc,qBAAqB,CAAC;AAEpC,oCAAoC;AACpC,cAAc,2BAA2B,CAAC;AAE1C,sBAAsB;AACtB,cAAc,gBAAgB,CAAC;AAE/B,sCAAsC;AACtC,cAAc,sBAAsB,CAAC;AAErC,oBAAoB;AACpB,cAAc,eAAe,CAAC;AAE9B,iCAAiC;AACjC,cAAc,2BAA2B,CAAC;AAE1C,wBAAwB;AACxB,cAAc,kBAAkB,CAAC;AAEjC,gDAAgD;AAChD,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,cAAc,qBAAqB,CAAC;AAEpC,oCAAoC;AACpC,cAAc,2BAA2B,CAAC;AAE1C,sBAAsB;AACtB,cAAc,gBAAgB,CAAC;AAE/B,sCAAsC;AACtC,cAAc,sBAAsB,CAAC;AAErC,oBAAoB;AACpB,cAAc,eAAe,CAAC;AAE9B,iCAAiC;AACjC,cAAc,2BAA2B,CAAC;AAE1C,wBAAwB;AACxB,cAAc,kBAAkB,CAAC;AAEjC,sBAAsB;AACtB,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,YAAY,CAAC;AAE3B,0DAA0D;AAC1D,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,gDAAgD;AAChD,cAAc,wBAAwB,CAAC"}
@@ -50,11 +50,8 @@ export class ModelCache {
50
50
  this.cache.delete(backendName);
51
51
  return null;
52
52
  }
53
- // Return cached result with updated source
54
- return {
55
- ...entry.result,
56
- source: 'cache',
57
- };
53
+ // Return cached result (preserve original source)
54
+ return entry.result;
58
55
  }
59
56
  /**
60
57
  * Cache a model list result.
@@ -1 +1 @@
1
- {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/model-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/model-cache.ts"],"names":[],"mappings":"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"}