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.
- 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-cache.js +2 -5
- package/dist/cjs/model-cache.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-cache.js +2 -5
- package/dist/esm/model-cache.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-cache.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,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
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/esm/model-cache.js
CHANGED
|
@@ -50,11 +50,8 @@ export class ModelCache {
|
|
|
50
50
|
this.cache.delete(backendName);
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
|
-
// Return cached result
|
|
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":"AAAA;;;;;;;GAOG;AAuBH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,CAA0B;IAEvC;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,WAAmB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/model-cache.ts"],"names":[],"mappings":"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"}
|