ai.matey.utils 0.2.2 → 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.
- package/CHANGELOG.md +61 -0
- package/dist/cjs/embeddings.js +153 -0
- package/dist/cjs/embeddings.js.map +1 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model-registry-data.js +725 -0
- package/dist/cjs/model-registry-data.js.map +1 -0
- package/dist/cjs/model-registry.js +175 -0
- package/dist/cjs/model-registry.js.map +1 -0
- package/dist/cjs/streaming.js +61 -1
- package/dist/cjs/streaming.js.map +1 -1
- package/dist/cjs/structured-output.js +17 -5
- package/dist/cjs/structured-output.js.map +1 -1
- package/dist/cjs/tools.js +218 -0
- package/dist/cjs/tools.js.map +1 -0
- package/dist/esm/embeddings.js +145 -0
- package/dist/esm/embeddings.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model-registry-data.js +722 -0
- package/dist/esm/model-registry-data.js.map +1 -0
- package/dist/esm/model-registry.js +162 -0
- package/dist/esm/model-registry.js.map +1 -0
- package/dist/esm/streaming.js +61 -1
- package/dist/esm/streaming.js.map +1 -1
- package/dist/esm/structured-output.js +17 -5
- package/dist/esm/structured-output.js.map +1 -1
- package/dist/esm/tools.js +211 -0
- package/dist/esm/tools.js.map +1 -0
- package/dist/types/embeddings.d.ts +80 -0
- package/dist/types/embeddings.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model-registry-data.d.ts +23 -0
- package/dist/types/model-registry-data.d.ts.map +1 -0
- package/dist/types/model-registry.d.ts +80 -0
- package/dist/types/model-registry.d.ts.map +1 -0
- package/dist/types/streaming.d.ts +18 -0
- package/dist/types/streaming.d.ts.map +1 -1
- package/dist/types/structured-output.d.ts.map +1 -1
- package/dist/types/tools.d.ts +70 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-Calling Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helpers for working with tool calls in IR responses: extraction, result
|
|
5
|
+
* construction, zero-dependency argument validation against the IR
|
|
6
|
+
* JSONSchema subset, and streamed tool-call assembly.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Extraction
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Extract tool calls from an IR message or response.
|
|
15
|
+
*/
|
|
16
|
+
export function extractToolCalls(source) {
|
|
17
|
+
const message = 'message' in source ? source.message : source;
|
|
18
|
+
if (typeof message.content === 'string') {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
return message.content.filter((block) => block.type === 'tool_use');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Whether a response requests tool execution.
|
|
25
|
+
*/
|
|
26
|
+
export function hasToolCalls(response) {
|
|
27
|
+
return response.finishReason === 'tool_calls' || extractToolCalls(response).length > 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build the `role: 'tool'` message carrying tool results back to the model.
|
|
31
|
+
*
|
|
32
|
+
* Non-string results are JSON-stringified.
|
|
33
|
+
*/
|
|
34
|
+
export function createToolResultMessage(results) {
|
|
35
|
+
const list = Array.isArray(results) ? results : [results];
|
|
36
|
+
return {
|
|
37
|
+
role: 'tool',
|
|
38
|
+
content: list.map((result) => ({
|
|
39
|
+
type: 'tool_result',
|
|
40
|
+
toolUseId: result.toolCallId,
|
|
41
|
+
content: typeof result.result === 'string' ? result.result : JSON.stringify(result.result ?? null),
|
|
42
|
+
isError: result.isError,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate tool-call arguments against the tool's JSON Schema.
|
|
48
|
+
*
|
|
49
|
+
* Zero-dependency validator for the IR `JSONSchema` subset (type, enum,
|
|
50
|
+
* const, properties, required, items, min/max, pattern, length bounds) —
|
|
51
|
+
* deliberately not a full draft-2020 implementation. Use Zod via
|
|
52
|
+
* `generateObject` when full-fidelity validation matters.
|
|
53
|
+
*/
|
|
54
|
+
export function validateToolArgs(tool, input) {
|
|
55
|
+
const errors = [];
|
|
56
|
+
validateAgainstSchema(input, tool.parameters, '$', errors);
|
|
57
|
+
if (errors.length > 0) {
|
|
58
|
+
return { valid: false, errors };
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
valid: true,
|
|
62
|
+
value: input !== null && typeof input === 'object' && !Array.isArray(input)
|
|
63
|
+
? input
|
|
64
|
+
: {},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function validateAgainstSchema(value, schema, path, errors) {
|
|
68
|
+
const s = schema;
|
|
69
|
+
// const / enum
|
|
70
|
+
if ('const' in s && value !== s.const) {
|
|
71
|
+
errors.push({ path, message: `expected constant ${JSON.stringify(s.const)}` });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(s.enum) && !s.enum.some((candidate) => deepEqual(candidate, value))) {
|
|
75
|
+
errors.push({ path, message: `expected one of ${JSON.stringify(s.enum)}` });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const type = s.type;
|
|
79
|
+
switch (type) {
|
|
80
|
+
case 'object': {
|
|
81
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
82
|
+
errors.push({ path, message: 'expected object' });
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const record = value;
|
|
86
|
+
const properties = (s.properties ?? {});
|
|
87
|
+
const required = (s.required ?? []);
|
|
88
|
+
for (const key of required) {
|
|
89
|
+
if (!(key in record)) {
|
|
90
|
+
errors.push({ path: `${path}.${key}`, message: 'required property missing' });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
for (const [key, propertySchema] of Object.entries(properties)) {
|
|
94
|
+
if (key in record) {
|
|
95
|
+
validateAgainstSchema(record[key], propertySchema, `${path}.${key}`, errors);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (s.additionalProperties === false) {
|
|
99
|
+
for (const key of Object.keys(record)) {
|
|
100
|
+
if (!(key in properties)) {
|
|
101
|
+
errors.push({ path: `${path}.${key}`, message: 'unexpected property' });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'array': {
|
|
108
|
+
if (!Array.isArray(value)) {
|
|
109
|
+
errors.push({ path, message: 'expected array' });
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (typeof s.minItems === 'number' && value.length < s.minItems) {
|
|
113
|
+
errors.push({ path, message: `expected at least ${s.minItems} items` });
|
|
114
|
+
}
|
|
115
|
+
if (typeof s.maxItems === 'number' && value.length > s.maxItems) {
|
|
116
|
+
errors.push({ path, message: `expected at most ${s.maxItems} items` });
|
|
117
|
+
}
|
|
118
|
+
if (s.items) {
|
|
119
|
+
value.forEach((item, index) => validateAgainstSchema(item, s.items, `${path}[${index}]`, errors));
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case 'string': {
|
|
124
|
+
if (typeof value !== 'string') {
|
|
125
|
+
errors.push({ path, message: 'expected string' });
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (typeof s.minLength === 'number' && value.length < s.minLength) {
|
|
129
|
+
errors.push({ path, message: `expected length >= ${s.minLength}` });
|
|
130
|
+
}
|
|
131
|
+
if (typeof s.maxLength === 'number' && value.length > s.maxLength) {
|
|
132
|
+
errors.push({ path, message: `expected length <= ${s.maxLength}` });
|
|
133
|
+
}
|
|
134
|
+
if (typeof s.pattern === 'string' && !new RegExp(s.pattern).test(value)) {
|
|
135
|
+
errors.push({ path, message: `expected match for /${s.pattern}/` });
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case 'number':
|
|
140
|
+
case 'integer': {
|
|
141
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
142
|
+
errors.push({ path, message: `expected ${type}` });
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (type === 'integer' && !Number.isInteger(value)) {
|
|
146
|
+
errors.push({ path, message: 'expected integer' });
|
|
147
|
+
}
|
|
148
|
+
if (typeof s.minimum === 'number' && value < s.minimum) {
|
|
149
|
+
errors.push({ path, message: `expected >= ${s.minimum}` });
|
|
150
|
+
}
|
|
151
|
+
if (typeof s.maximum === 'number' && value > s.maximum) {
|
|
152
|
+
errors.push({ path, message: `expected <= ${s.maximum}` });
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'boolean':
|
|
157
|
+
if (typeof value !== 'boolean') {
|
|
158
|
+
errors.push({ path, message: 'expected boolean' });
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
case 'null':
|
|
162
|
+
if (value !== null) {
|
|
163
|
+
errors.push({ path, message: 'expected null' });
|
|
164
|
+
}
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
// No/unknown type constraint: accept
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function deepEqual(a, b) {
|
|
172
|
+
if (a === b) {
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
179
|
+
}
|
|
180
|
+
// ============================================================================
|
|
181
|
+
// Stream Assembly
|
|
182
|
+
// ============================================================================
|
|
183
|
+
/**
|
|
184
|
+
* Consume an IR stream and assemble its tool calls and final response.
|
|
185
|
+
*
|
|
186
|
+
* Convenience for callers that stream for latency but want complete tool
|
|
187
|
+
* calls at the end: collects `tool_use` deltas and returns the `done`
|
|
188
|
+
* chunk's assembled message/finish reason.
|
|
189
|
+
*/
|
|
190
|
+
export async function collectToolCallsFromStream(stream) {
|
|
191
|
+
let response = null;
|
|
192
|
+
for await (const chunk of stream) {
|
|
193
|
+
if (chunk.type === 'done') {
|
|
194
|
+
response = {
|
|
195
|
+
message: chunk.message ?? { role: 'assistant', content: '' },
|
|
196
|
+
finishReason: chunk.finishReason,
|
|
197
|
+
usage: chunk.usage,
|
|
198
|
+
metadata: {
|
|
199
|
+
requestId: 'stream',
|
|
200
|
+
timestamp: Date.now(),
|
|
201
|
+
provenance: {},
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
toolCalls: response ? extractToolCalls(response) : [],
|
|
208
|
+
response,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
//# 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,80 @@
|
|
|
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
|
+
import type { BackendAdapter, IREmbedRequest, IREmbedResponse } from 'ai.matey.types';
|
|
11
|
+
/**
|
|
12
|
+
* Type guard: does this backend implement embeddings?
|
|
13
|
+
*/
|
|
14
|
+
export declare function supportsEmbeddings(adapter: BackendAdapter): adapter is BackendAdapter & Required<Pick<BackendAdapter, 'embed'>>;
|
|
15
|
+
/**
|
|
16
|
+
* Split embedding inputs into provider-sized batches.
|
|
17
|
+
*
|
|
18
|
+
* @param inputs - Input strings
|
|
19
|
+
* @param options - maxBatchSize: max inputs per request; maxTokensPerBatch:
|
|
20
|
+
* optional token budget per batch using estimateTokens (default ~4 chars
|
|
21
|
+
* per token)
|
|
22
|
+
* @returns Batches in original order
|
|
23
|
+
*/
|
|
24
|
+
export declare function chunkEmbedInputs(inputs: readonly string[], options: {
|
|
25
|
+
maxBatchSize: number;
|
|
26
|
+
maxTokensPerBatch?: number;
|
|
27
|
+
estimateTokens?: (text: string) => number;
|
|
28
|
+
}): string[][];
|
|
29
|
+
/**
|
|
30
|
+
* Normalize a vector to a target dimensionality.
|
|
31
|
+
*
|
|
32
|
+
* - `truncate` (default): drop trailing components and re-normalize to unit
|
|
33
|
+
* length (valid for Matryoshka-trained models; approximate otherwise)
|
|
34
|
+
* - `pad`: zero-pad to the target length
|
|
35
|
+
*
|
|
36
|
+
* @param vector - Source vector
|
|
37
|
+
* @param dimensions - Target dimensionality
|
|
38
|
+
* @param strategy - 'truncate' | 'pad'
|
|
39
|
+
*/
|
|
40
|
+
export declare function normalizeDimensions(vector: readonly number[], dimensions: number, strategy?: 'truncate' | 'pad'): number[];
|
|
41
|
+
/**
|
|
42
|
+
* Cosine similarity between two vectors (also the seed primitive for
|
|
43
|
+
* semantic caching).
|
|
44
|
+
*/
|
|
45
|
+
export declare function cosineSimilarity(a: readonly number[], b: readonly number[]): number;
|
|
46
|
+
/**
|
|
47
|
+
* OpenAI /v1/embeddings request shape.
|
|
48
|
+
*/
|
|
49
|
+
export interface OpenAIEmbedWireRequest {
|
|
50
|
+
model: string;
|
|
51
|
+
input: string | string[];
|
|
52
|
+
dimensions?: number;
|
|
53
|
+
encoding_format?: 'float' | 'base64';
|
|
54
|
+
user?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* OpenAI /v1/embeddings response shape.
|
|
58
|
+
*/
|
|
59
|
+
export interface OpenAIEmbedWireResponse {
|
|
60
|
+
object: 'list';
|
|
61
|
+
data: Array<{
|
|
62
|
+
object: 'embedding';
|
|
63
|
+
index: number;
|
|
64
|
+
embedding: number[];
|
|
65
|
+
}>;
|
|
66
|
+
model: string;
|
|
67
|
+
usage: {
|
|
68
|
+
prompt_tokens: number;
|
|
69
|
+
total_tokens: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Convert an OpenAI-format embeddings request body to IR.
|
|
74
|
+
*/
|
|
75
|
+
export declare function openaiEmbedRequestToIR(body: OpenAIEmbedWireRequest): IREmbedRequest;
|
|
76
|
+
/**
|
|
77
|
+
* Convert an IR embedding response to the OpenAI wire format.
|
|
78
|
+
*/
|
|
79
|
+
export declare function irToOpenAIEmbedResponse(response: IREmbedResponse): OpenAIEmbedWireResponse;
|
|
80
|
+
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,gBAAgB,CAAC;AAMlG;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,GACtB,OAAO,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAKrE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,GACA,MAAM,EAAE,EAAE,CA+BZ;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,UAAU,GAAG,KAAkB,GACxC,MAAM,EAAE,CAiBV;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAmBnF;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;QACV,MAAM,EAAE,WAAW,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,cAAc,CAcnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,uBAAuB,CAc1F"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -13,5 +13,9 @@ export * from './streaming-modes.js';
|
|
|
13
13
|
export * from './warnings.js';
|
|
14
14
|
export * from './conversation-history.js';
|
|
15
15
|
export * from './model-cache.js';
|
|
16
|
+
export * from './embeddings.js';
|
|
17
|
+
export * from './tools.js';
|
|
18
|
+
export * from './model-registry.js';
|
|
19
|
+
export { MODEL_REGISTRY_SEED } from './model-registry-data.js';
|
|
16
20
|
export * from './structured-output.js';
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,eAAe,CAAC;AAG9B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,eAAe,CAAC;AAG9B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry Seed Data
|
|
3
|
+
*
|
|
4
|
+
* The built-in model database consumed by the model registry
|
|
5
|
+
* (see ./model-registry.ts). Pricing is USD per 1M tokens.
|
|
6
|
+
*
|
|
7
|
+
* UPDATING THIS FILE
|
|
8
|
+
* - This file is intentionally the only place in the monorepo where model
|
|
9
|
+
* metadata is hardcoded. Everything else (pricing helpers, capability
|
|
10
|
+
* inference, cost tracking, token counting) derives from it.
|
|
11
|
+
* - Add new models at the top of their provider section; mark superseded
|
|
12
|
+
* models `deprecated: true` instead of deleting them (cost tracking for
|
|
13
|
+
* historical usage still needs their prices).
|
|
14
|
+
* - Users can add or correct models at runtime with `registerModels()`,
|
|
15
|
+
* so an out-of-date seed never blocks anyone.
|
|
16
|
+
*
|
|
17
|
+
* Data last refreshed: 2026-07-04 (verified against provider pricing pages).
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
import type { ModelRegistryEntry } from 'ai.matey.types';
|
|
22
|
+
export declare const MODEL_REGISTRY_SEED: readonly ModelRegistryEntry[];
|
|
23
|
+
//# sourceMappingURL=model-registry-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry-data.d.ts","sourceRoot":"","sources":["../../src/model-registry-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,EAAE,SAAS,kBAAkB,EAisB5D,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for model metadata (pricing, context windows,
|
|
5
|
+
* capabilities, quality/latency heuristics) across the monorepo. Seeded
|
|
6
|
+
* from ./model-registry-data.ts and extensible at runtime, so consumers
|
|
7
|
+
* are never blocked by stale built-in data:
|
|
8
|
+
*
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { registerModels } from 'ai.matey.utils';
|
|
11
|
+
*
|
|
12
|
+
* registerModels([
|
|
13
|
+
* {
|
|
14
|
+
* id: 'gpt-6-preview',
|
|
15
|
+
* provider: 'openai',
|
|
16
|
+
* family: 'gpt-6',
|
|
17
|
+
* pricing: { inputPer1M: 2.0, outputPer1M: 16.0 },
|
|
18
|
+
* },
|
|
19
|
+
* ]);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Lookup resolves exact ids first, then aliases, then falls back to the
|
|
23
|
+
* longest matching id/alias prefix — so an unknown dated snapshot like
|
|
24
|
+
* `claude-sonnet-4-5-20991231` still resolves to the `claude-sonnet-4-5`
|
|
25
|
+
* family entry instead of returning nothing.
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*/
|
|
29
|
+
import type { ModelRegistryEntry, ModelPricingInfo } from 'ai.matey.types';
|
|
30
|
+
/**
|
|
31
|
+
* Register (or replace) model entries at runtime.
|
|
32
|
+
*
|
|
33
|
+
* User entries take precedence over the built-in seed for the same id.
|
|
34
|
+
*/
|
|
35
|
+
export declare function registerModels(entries: readonly ModelRegistryEntry[]): void;
|
|
36
|
+
/**
|
|
37
|
+
* Look up a model entry by id, alias, or longest-prefix fallback.
|
|
38
|
+
*
|
|
39
|
+
* @param modelId - Model identifier (canonical id, alias, or unknown variant)
|
|
40
|
+
* @returns The best matching entry, or null when nothing plausibly matches
|
|
41
|
+
*/
|
|
42
|
+
export declare function getModelEntry(modelId: string): ModelRegistryEntry | null;
|
|
43
|
+
/**
|
|
44
|
+
* Get pricing for a model in USD per 1M tokens (overrides applied).
|
|
45
|
+
*/
|
|
46
|
+
export declare function getModelPricingInfo(modelId: string): ModelPricingInfo | null;
|
|
47
|
+
/**
|
|
48
|
+
* Override pricing for a model (USD per 1M tokens).
|
|
49
|
+
*/
|
|
50
|
+
export declare function overrideModelPricing(modelId: string, pricing: ModelPricingInfo): void;
|
|
51
|
+
/**
|
|
52
|
+
* Remove a single pricing override.
|
|
53
|
+
*/
|
|
54
|
+
export declare function clearModelPricingOverride(modelId: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Remove all pricing overrides.
|
|
57
|
+
*/
|
|
58
|
+
export declare function clearModelPricingOverrides(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Get a model's maximum input context window in tokens.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getModelContextWindow(modelId: string): number | null;
|
|
63
|
+
/**
|
|
64
|
+
* All registry entries (seed + user registrations).
|
|
65
|
+
*/
|
|
66
|
+
export declare function getRegisteredModels(): ModelRegistryEntry[];
|
|
67
|
+
/**
|
|
68
|
+
* Entries for a given provider key (e.g. 'openai').
|
|
69
|
+
*/
|
|
70
|
+
export declare function getModelsByProvider(provider: string): ModelRegistryEntry[];
|
|
71
|
+
/**
|
|
72
|
+
* Entries for a given model family (e.g. 'gpt-5', 'claude-4').
|
|
73
|
+
*/
|
|
74
|
+
export declare function getModelEntriesByFamily(family: string): ModelRegistryEntry[];
|
|
75
|
+
/**
|
|
76
|
+
* Reset the registry to its built-in seed (clears user registrations and
|
|
77
|
+
* pricing overrides). Primarily for test isolation.
|
|
78
|
+
*/
|
|
79
|
+
export declare function resetModelRegistry(): void;
|
|
80
|
+
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/model-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0C3E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAK3E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAgCxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAM5E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAErF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAE5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
* @module streaming
|
|
21
21
|
*/
|
|
22
22
|
import type { IRChatStream, IRStreamChunk, StreamContentChunk, StreamDoneChunk, StreamErrorChunk, IRMessage, IRChatResponse, IRMetadata, IRUsage, FinishReason } from 'ai.matey.types';
|
|
23
|
+
/**
|
|
24
|
+
* A tool call being assembled from streamed deltas.
|
|
25
|
+
*/
|
|
26
|
+
export interface AccumulatedToolCall {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
/** Concatenated raw JSON argument fragments. */
|
|
30
|
+
args: string;
|
|
31
|
+
/** Zero-based position of the tool call within the message. */
|
|
32
|
+
index: number;
|
|
33
|
+
}
|
|
23
34
|
/**
|
|
24
35
|
* Accumulated stream state.
|
|
25
36
|
*/
|
|
@@ -28,6 +39,8 @@ export interface StreamAccumulator {
|
|
|
28
39
|
role: 'assistant';
|
|
29
40
|
sequence: number;
|
|
30
41
|
metadata?: Partial<IRMetadata>;
|
|
42
|
+
/** Tool calls assembled from tool_use chunks, keyed by tool-call id. */
|
|
43
|
+
toolCalls?: Map<string, AccumulatedToolCall>;
|
|
31
44
|
}
|
|
32
45
|
/**
|
|
33
46
|
* Create a new stream accumulator.
|
|
@@ -46,6 +59,11 @@ export declare function accumulateChunk(accumulator: StreamAccumulator, chunk: I
|
|
|
46
59
|
/**
|
|
47
60
|
* Convert accumulated state to IR message.
|
|
48
61
|
*
|
|
62
|
+
* Returns plain string content when no tool calls were streamed (backward
|
|
63
|
+
* compatible); otherwise structured content blocks: optional leading text
|
|
64
|
+
* followed by one tool_use block per call in index order. Tool argument
|
|
65
|
+
* fragments are parsed as JSON, degrading to `{}` when malformed.
|
|
66
|
+
*
|
|
49
67
|
* @param accumulator Stream accumulator
|
|
50
68
|
* @returns IR message
|
|
51
69
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,UAAU,EACV,OAAO,EACP,YAAY,EACb,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../src/structured-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsCH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC;AAMjG;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,GAAG,EAAE,yCAAyC;AACtD,IAAI,GAAE,MAAuB,EAC7B,WAAW,GAAE,MAAiD,GAC7D,cAAc,CAchB;
|
|
1
|
+
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../src/structured-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-Calling Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helpers for working with tool calls in IR responses: extraction, result
|
|
5
|
+
* construction, zero-dependency argument validation against the IR
|
|
6
|
+
* JSONSchema subset, and streamed tool-call assembly.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type { IRChatResponse, IRChatStream, IRMessage, IRTool, ToolUseContent } from 'ai.matey.types';
|
|
11
|
+
/**
|
|
12
|
+
* Extract tool calls from an IR message or response.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractToolCalls(source: IRMessage | IRChatResponse): ToolUseContent[];
|
|
15
|
+
/**
|
|
16
|
+
* Whether a response requests tool execution.
|
|
17
|
+
*/
|
|
18
|
+
export declare function hasToolCalls(response: IRChatResponse): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* A tool execution result to feed back to the model.
|
|
21
|
+
*/
|
|
22
|
+
export interface ToolCallResult {
|
|
23
|
+
readonly toolCallId: string;
|
|
24
|
+
readonly result: unknown;
|
|
25
|
+
readonly isError?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build the `role: 'tool'` message carrying tool results back to the model.
|
|
29
|
+
*
|
|
30
|
+
* Non-string results are JSON-stringified.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createToolResultMessage(results: ToolCallResult | readonly ToolCallResult[]): IRMessage;
|
|
33
|
+
/**
|
|
34
|
+
* A single validation failure.
|
|
35
|
+
*/
|
|
36
|
+
export interface ToolArgValidationError {
|
|
37
|
+
readonly path: string;
|
|
38
|
+
readonly message: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validation outcome for tool arguments.
|
|
42
|
+
*/
|
|
43
|
+
export type ToolArgValidationResult = {
|
|
44
|
+
readonly valid: true;
|
|
45
|
+
readonly value: Record<string, unknown>;
|
|
46
|
+
} | {
|
|
47
|
+
readonly valid: false;
|
|
48
|
+
readonly errors: readonly ToolArgValidationError[];
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Validate tool-call arguments against the tool's JSON Schema.
|
|
52
|
+
*
|
|
53
|
+
* Zero-dependency validator for the IR `JSONSchema` subset (type, enum,
|
|
54
|
+
* const, properties, required, items, min/max, pattern, length bounds) —
|
|
55
|
+
* deliberately not a full draft-2020 implementation. Use Zod via
|
|
56
|
+
* `generateObject` when full-fidelity validation matters.
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateToolArgs(tool: IRTool, input: unknown): ToolArgValidationResult;
|
|
59
|
+
/**
|
|
60
|
+
* Consume an IR stream and assemble its tool calls and final response.
|
|
61
|
+
*
|
|
62
|
+
* Convenience for callers that stream for latency but want complete tool
|
|
63
|
+
* calls at the end: collects `tool_use` deltas and returns the `done`
|
|
64
|
+
* chunk's assembled message/finish reason.
|
|
65
|
+
*/
|
|
66
|
+
export declare function collectToolCallsFromStream(stream: IRChatStream): Promise<{
|
|
67
|
+
toolCalls: ToolUseContent[];
|
|
68
|
+
response: IRChatResponse | null;
|
|
69
|
+
}>;
|
|
70
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,cAAc,EACf,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,cAAc,EAAE,CAMrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAE9D;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,GAClD,SAAS,CAYX;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC;AAElF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,uBAAuB,CActF;AAyID;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC9E,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,CAAC,CAsBD"}
|