@skyold/model-protocol 0.1.0-beta.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/LICENSE +201 -0
- package/README.md +22 -0
- package/README.zh-CN.md +17 -0
- package/dist/chat-egress.d.ts +12 -0
- package/dist/chat-egress.d.ts.map +1 -0
- package/dist/chat-egress.js +144 -0
- package/dist/chat-egress.js.map +1 -0
- package/dist/chat-ingress.d.ts +39 -0
- package/dist/chat-ingress.d.ts.map +1 -0
- package/dist/chat-ingress.js +323 -0
- package/dist/chat-ingress.js.map +1 -0
- package/dist/chat-stream-egress.d.ts +8 -0
- package/dist/chat-stream-egress.d.ts.map +1 -0
- package/dist/chat-stream-egress.js +129 -0
- package/dist/chat-stream-egress.js.map +1 -0
- package/dist/contracts.d.ts +61 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +2 -0
- package/dist/contracts.js.map +1 -0
- package/dist/egress-codec-registry.d.ts +36 -0
- package/dist/egress-codec-registry.d.ts.map +1 -0
- package/dist/egress-codec-registry.js +125 -0
- package/dist/egress-codec-registry.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/ingress-codec-registry.d.ts +26 -0
- package/dist/ingress-codec-registry.d.ts.map +1 -0
- package/dist/ingress-codec-registry.js +106 -0
- package/dist/ingress-codec-registry.js.map +1 -0
- package/dist/media-images.d.ts +154 -0
- package/dist/media-images.d.ts.map +1 -0
- package/dist/media-images.js +721 -0
- package/dist/media-images.js.map +1 -0
- package/dist/media-video.d.ts +68 -0
- package/dist/media-video.d.ts.map +1 -0
- package/dist/media-video.js +196 -0
- package/dist/media-video.js.map +1 -0
- package/dist/native-images.d.ts +68 -0
- package/dist/native-images.d.ts.map +1 -0
- package/dist/native-images.js +424 -0
- package/dist/native-images.js.map +1 -0
- package/dist/openai-embeddings-egress.d.ts +4 -0
- package/dist/openai-embeddings-egress.d.ts.map +1 -0
- package/dist/openai-embeddings-egress.js +21 -0
- package/dist/openai-embeddings-egress.js.map +1 -0
- package/dist/openai-embeddings.d.ts +66 -0
- package/dist/openai-embeddings.d.ts.map +1 -0
- package/dist/openai-embeddings.js +442 -0
- package/dist/openai-embeddings.js.map +1 -0
- package/dist/openai-responses-egress.d.ts +17 -0
- package/dist/openai-responses-egress.d.ts.map +1 -0
- package/dist/openai-responses-egress.js +99 -0
- package/dist/openai-responses-egress.js.map +1 -0
- package/dist/openai-responses-stream-egress.d.ts +4 -0
- package/dist/openai-responses-stream-egress.d.ts.map +1 -0
- package/dist/openai-responses-stream-egress.js +252 -0
- package/dist/openai-responses-stream-egress.js.map +1 -0
- package/dist/openai-responses.d.ts +15 -0
- package/dist/openai-responses.d.ts.map +1 -0
- package/dist/openai-responses.js +363 -0
- package/dist/openai-responses.js.map +1 -0
- package/dist/provider-source.d.ts +20 -0
- package/dist/provider-source.d.ts.map +1 -0
- package/dist/provider-source.js +41 -0
- package/dist/provider-source.js.map +1 -0
- package/dist/provider-transport.d.ts +5 -0
- package/dist/provider-transport.d.ts.map +1 -0
- package/dist/provider-transport.js +114 -0
- package/dist/provider-transport.js.map +1 -0
- package/dist/runtime-v2-validation.d.ts +16 -0
- package/dist/runtime-v2-validation.d.ts.map +1 -0
- package/dist/runtime-v2-validation.js +915 -0
- package/dist/runtime-v2-validation.js.map +1 -0
- package/dist/runtime-v2.d.ts +462 -0
- package/dist/runtime-v2.d.ts.map +1 -0
- package/dist/runtime-v2.js +56 -0
- package/dist/runtime-v2.js.map +1 -0
- package/dist/tokenforge-task-projection.d.ts +8 -0
- package/dist/tokenforge-task-projection.d.ts.map +1 -0
- package/dist/tokenforge-task-projection.js +247 -0
- package/dist/tokenforge-task-projection.js.map +1 -0
- package/dist/tokenforge-tasks.d.ts +241 -0
- package/dist/tokenforge-tasks.d.ts.map +1 -0
- package/dist/tokenforge-tasks.js +1132 -0
- package/dist/tokenforge-tasks.js.map +1 -0
- package/dist/usage-reservation.d.ts +11 -0
- package/dist/usage-reservation.d.ts.map +1 -0
- package/dist/usage-reservation.js +40 -0
- package/dist/usage-reservation.js.map +1 -0
- package/dist/validation.d.ts +22 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +415 -0
- package/dist/validation.js.map +1 -0
- package/dist/video-ingress.d.ts +31 -0
- package/dist/video-ingress.d.ts.map +1 -0
- package/dist/video-ingress.js +246 -0
- package/dist/video-ingress.js.map +1 -0
- package/dist/volc-video-task-codec.d.ts +59 -0
- package/dist/volc-video-task-codec.d.ts.map +1 -0
- package/dist/volc-video-task-codec.js +123 -0
- package/dist/volc-video-task-codec.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
export const OPENAI_EMBEDDINGS_PROTOCOL = 'openai-embeddings/v1';
|
|
3
|
+
const MAX_EMBEDDING_BATCH_ITEMS = 2_048;
|
|
4
|
+
const TOP_LEVEL_FIELDS = new Set(['model', 'input', 'dimensions', 'encoding_format', 'user']);
|
|
5
|
+
export class OpenAiEmbeddingsRequestError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
status;
|
|
8
|
+
name = 'OpenAiEmbeddingsRequestError';
|
|
9
|
+
constructor(code, status) {
|
|
10
|
+
super(`OpenAI embeddings request rejected: ${code}`);
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.status = status;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class OpenAiEmbeddingResponseError extends Error {
|
|
16
|
+
name = 'OpenAiEmbeddingResponseError';
|
|
17
|
+
code = 'INVALID_EMBEDDING_RESPONSE';
|
|
18
|
+
constructor() {
|
|
19
|
+
super('OpenAI embedding response rejected: INVALID_EMBEDDING_RESPONSE');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function decodeOpenAiEmbeddingsRequest(body) {
|
|
23
|
+
const request = requireRecord(body, 'body_required');
|
|
24
|
+
assertKnownFields(request, TOP_LEVEL_FIELDS);
|
|
25
|
+
const model = requiredString(request['model'], 'model_required');
|
|
26
|
+
const decodedInput = decodeInput(request['input']);
|
|
27
|
+
const dimensions = optionalPositiveInteger(request['dimensions'], 'invalid_dimensions');
|
|
28
|
+
const encodingFormat = decodeEncodingFormat(request['encoding_format']);
|
|
29
|
+
const user = optionalString(request['user']);
|
|
30
|
+
const normalizedInput = {
|
|
31
|
+
input: decodedInput.input,
|
|
32
|
+
inputEncoding: decodedInput.inputEncoding,
|
|
33
|
+
encodingFormat,
|
|
34
|
+
...(dimensions === undefined ? {} : { dimensions }),
|
|
35
|
+
...(user === undefined ? {} : { user }),
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
ingressProtocolFamily: OPENAI_EMBEDDINGS_PROTOCOL,
|
|
39
|
+
model,
|
|
40
|
+
taskKind: 'embedding',
|
|
41
|
+
executionMode: 'sync',
|
|
42
|
+
inputModalities: ['text'],
|
|
43
|
+
outputModalities: ['vector'],
|
|
44
|
+
requiresFunctionTools: false,
|
|
45
|
+
requiresReasoning: false,
|
|
46
|
+
normalizedInput,
|
|
47
|
+
providerOptions: {},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function validateOpenAiEmbeddingsCapability(decoded, capability) {
|
|
51
|
+
if (decoded.ingressProtocolFamily !== OPENAI_EMBEDDINGS_PROTOCOL ||
|
|
52
|
+
capability.protocolFamily !== OPENAI_EMBEDDINGS_PROTOCOL) {
|
|
53
|
+
reject('protocol_family_mismatch', 422);
|
|
54
|
+
}
|
|
55
|
+
validateEmbeddingCapabilityV1(decoded, capability);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validates normalized embedding semantics independently from the ingress and
|
|
59
|
+
* Provider wire protocols.
|
|
60
|
+
*/
|
|
61
|
+
export function validateEmbeddingCapabilityV1(decoded, capability) {
|
|
62
|
+
const failure = embeddingCapabilityFailure(decoded, capability);
|
|
63
|
+
if (failure !== undefined) {
|
|
64
|
+
reject(failure, 422);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function embeddingCapabilityFailure(decoded, capability) {
|
|
68
|
+
if (decoded.taskKind !== 'embedding' ||
|
|
69
|
+
capability.taskKind !== 'embedding' ||
|
|
70
|
+
decoded.executionMode !== 'sync' ||
|
|
71
|
+
!capability.executionModes.includes('sync') ||
|
|
72
|
+
!onlySupported(decoded.inputModalities, ['text']) ||
|
|
73
|
+
!onlySupported(decoded.outputModalities, ['vector']) ||
|
|
74
|
+
!decoded.inputModalities.every((item) => capability.inputModalities.includes(item)) ||
|
|
75
|
+
!decoded.outputModalities.every((item) => capability.outputModalities.includes(item))) {
|
|
76
|
+
return 'unsupported_capability';
|
|
77
|
+
}
|
|
78
|
+
const facts = capability.embeddingCapability;
|
|
79
|
+
if (!facts || !isValidEmbeddingCapability(facts, capability)) {
|
|
80
|
+
return 'unsupported_capability';
|
|
81
|
+
}
|
|
82
|
+
const normalized = decoded.normalizedInput;
|
|
83
|
+
const input = normalized.input;
|
|
84
|
+
const inputEncoding = normalized.inputEncoding;
|
|
85
|
+
const requestedDimensions = normalized.dimensions ?? facts.nativeDimensions;
|
|
86
|
+
const encodingFormat = normalized.encodingFormat ?? 'float';
|
|
87
|
+
if (!Array.isArray(input) ||
|
|
88
|
+
input.length === 0 ||
|
|
89
|
+
input.length > MAX_EMBEDDING_BATCH_ITEMS ||
|
|
90
|
+
input.length > facts.maxBatchItems ||
|
|
91
|
+
!inputMatchesEncoding(input, inputEncoding) ||
|
|
92
|
+
(requestedDimensions !== facts.nativeDimensions &&
|
|
93
|
+
!facts.allowedDimensions.includes(requestedDimensions)) ||
|
|
94
|
+
!facts.encodingFormats.includes(encodingFormat) ||
|
|
95
|
+
!facts.inputEncodings.includes(inputEncoding)) {
|
|
96
|
+
return 'unsupported_capability';
|
|
97
|
+
}
|
|
98
|
+
if (inputEncoding === 'utf8_text') {
|
|
99
|
+
const textInput = input;
|
|
100
|
+
// No provider tokenizer is available at this boundary. UTF-8 bytes are a deterministic,
|
|
101
|
+
// conservative upper bound for byte-pair tokenizers (each token covers at least one byte).
|
|
102
|
+
// This is intentionally not reported or persisted as an exact token count.
|
|
103
|
+
const byteUpperBounds = textInput.map((item) => Buffer.byteLength(item, 'utf8'));
|
|
104
|
+
const totalByteUpperBound = byteUpperBounds.reduce((total, item) => total + item, 0);
|
|
105
|
+
if ((facts.maxInputTokensPerItem !== undefined &&
|
|
106
|
+
byteUpperBounds.some((item) => item > facts.maxInputTokensPerItem)) ||
|
|
107
|
+
(facts.maxTotalInputTokens !== undefined && totalByteUpperBound > facts.maxTotalInputTokens)) {
|
|
108
|
+
return 'unsupported_capability';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (inputEncoding === 'token_ids') {
|
|
112
|
+
const tokenInput = input;
|
|
113
|
+
const totalTokens = tokenInput.reduce((total, item) => total + item.length, 0);
|
|
114
|
+
if ((facts.maxInputTokensPerItem !== undefined &&
|
|
115
|
+
tokenInput.some((item) => item.length > facts.maxInputTokensPerItem)) ||
|
|
116
|
+
(facts.maxTotalInputTokens !== undefined && totalTokens > facts.maxTotalInputTokens)) {
|
|
117
|
+
return 'unsupported_capability';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
export function normalizeOpenAiEmbeddingResponse(body, input) {
|
|
123
|
+
if (!Number.isSafeInteger(input.inputCount) ||
|
|
124
|
+
input.inputCount <= 0 ||
|
|
125
|
+
input.inputCount > MAX_EMBEDDING_BATCH_ITEMS ||
|
|
126
|
+
input.inputCount > input.capability.maxBatchItems ||
|
|
127
|
+
!Number.isSafeInteger(input.dimensions) ||
|
|
128
|
+
input.dimensions <= 0 ||
|
|
129
|
+
!isValidEmbeddingCapabilityFacts(input.capability) ||
|
|
130
|
+
(input.dimensions !== input.capability.nativeDimensions &&
|
|
131
|
+
!input.capability.allowedDimensions.includes(input.dimensions)) ||
|
|
132
|
+
!input.capability.encodingFormats.includes(input.encodingFormat)) {
|
|
133
|
+
responseReject();
|
|
134
|
+
}
|
|
135
|
+
const response = responseRecord(body);
|
|
136
|
+
const data = response['data'];
|
|
137
|
+
if (!Array.isArray(data) || data.length !== input.inputCount) {
|
|
138
|
+
responseReject();
|
|
139
|
+
}
|
|
140
|
+
const vectors = new Array(input.inputCount);
|
|
141
|
+
const seen = new Set();
|
|
142
|
+
for (const rawItem of data) {
|
|
143
|
+
const item = responseRecord(rawItem);
|
|
144
|
+
const index = item['index'];
|
|
145
|
+
if (typeof index !== 'number' ||
|
|
146
|
+
!Number.isSafeInteger(index) ||
|
|
147
|
+
index < 0 ||
|
|
148
|
+
index >= input.inputCount ||
|
|
149
|
+
seen.has(index)) {
|
|
150
|
+
responseReject();
|
|
151
|
+
}
|
|
152
|
+
seen.add(index);
|
|
153
|
+
const vector = validateVector(item['embedding'], input.encodingFormat, input.dimensions);
|
|
154
|
+
vectors[index] = { index, vector };
|
|
155
|
+
}
|
|
156
|
+
if (seen.size !== input.inputCount || vectors.some((item) => item === undefined)) {
|
|
157
|
+
responseReject();
|
|
158
|
+
}
|
|
159
|
+
const usageRecord = response['usage'] === undefined ? undefined : responseRecord(response['usage']);
|
|
160
|
+
const inputTokens = optionalSafeUsageInteger(usageRecord?.['prompt_tokens']);
|
|
161
|
+
const totalTokens = optionalSafeUsageInteger(usageRecord?.['total_tokens']);
|
|
162
|
+
const spaceId = deriveSpaceId(input.capability, input.dimensions);
|
|
163
|
+
const summary = {
|
|
164
|
+
vectorCount: input.inputCount,
|
|
165
|
+
dimensions: input.dimensions,
|
|
166
|
+
encodingFormat: input.encodingFormat,
|
|
167
|
+
spaceId,
|
|
168
|
+
};
|
|
169
|
+
return {
|
|
170
|
+
output: {
|
|
171
|
+
vectors,
|
|
172
|
+
dimensions: input.dimensions,
|
|
173
|
+
encodingFormat: input.encodingFormat,
|
|
174
|
+
spaceId,
|
|
175
|
+
},
|
|
176
|
+
usage: {
|
|
177
|
+
...(inputTokens === undefined ? {} : { inputTokens }),
|
|
178
|
+
...(totalTokens === undefined ? {} : { totalTokens }),
|
|
179
|
+
...summary,
|
|
180
|
+
estimated: false,
|
|
181
|
+
},
|
|
182
|
+
summary,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function decodeInput(value) {
|
|
186
|
+
if (typeof value === 'string') {
|
|
187
|
+
return { input: [requiredString(value, 'input_required')], inputEncoding: 'utf8_text' };
|
|
188
|
+
}
|
|
189
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
190
|
+
reject('input_required', 400);
|
|
191
|
+
}
|
|
192
|
+
if (value.every((item) => typeof item === 'number')) {
|
|
193
|
+
return { input: [decodeTokenIds(value)], inputEncoding: 'token_ids' };
|
|
194
|
+
}
|
|
195
|
+
if (value.length > MAX_EMBEDDING_BATCH_ITEMS) {
|
|
196
|
+
reject('input_limit_exceeded', 400);
|
|
197
|
+
}
|
|
198
|
+
if (value.every((item) => typeof item === 'string')) {
|
|
199
|
+
return {
|
|
200
|
+
input: value.map((item) => requiredString(item, 'input_required')),
|
|
201
|
+
inputEncoding: 'utf8_text',
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
if (value.every((item) => Array.isArray(item))) {
|
|
205
|
+
return { input: value.map((item) => decodeTokenIds(item)), inputEncoding: 'token_ids' };
|
|
206
|
+
}
|
|
207
|
+
reject('invalid_input', 400);
|
|
208
|
+
}
|
|
209
|
+
function decodeTokenIds(value) {
|
|
210
|
+
if (value.length === 0) {
|
|
211
|
+
reject('input_required', 400);
|
|
212
|
+
}
|
|
213
|
+
return value.map((token) => {
|
|
214
|
+
if (typeof token !== 'number' || !Number.isSafeInteger(token) || token < 0) {
|
|
215
|
+
reject('invalid_input', 400);
|
|
216
|
+
}
|
|
217
|
+
return token;
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function decodeEncodingFormat(value) {
|
|
221
|
+
if (value === undefined) {
|
|
222
|
+
return 'float';
|
|
223
|
+
}
|
|
224
|
+
if (value !== 'float' && value !== 'base64') {
|
|
225
|
+
reject('invalid_encoding_format', 400);
|
|
226
|
+
}
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
function isValidEmbeddingCapability(facts, capability) {
|
|
230
|
+
return (isValidEmbeddingCapabilityFacts(facts) &&
|
|
231
|
+
facts.compatibilitySpace.provider === capability.provider &&
|
|
232
|
+
facts.compatibilitySpace.model === capability.model);
|
|
233
|
+
}
|
|
234
|
+
export function parseEmbeddingCapabilityV1(value) {
|
|
235
|
+
if (!isValidEmbeddingCapabilityFacts(value)) {
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
schemaVersion: value.schemaVersion,
|
|
240
|
+
nativeDimensions: value.nativeDimensions,
|
|
241
|
+
allowedDimensions: [...value.allowedDimensions],
|
|
242
|
+
encodingFormats: [...value.encodingFormats],
|
|
243
|
+
normalized: value.normalized,
|
|
244
|
+
maxBatchItems: value.maxBatchItems,
|
|
245
|
+
...(value.maxInputTokensPerItem === undefined
|
|
246
|
+
? {}
|
|
247
|
+
: { maxInputTokensPerItem: value.maxInputTokensPerItem }),
|
|
248
|
+
...(value.maxTotalInputTokens === undefined
|
|
249
|
+
? {}
|
|
250
|
+
: { maxTotalInputTokens: value.maxTotalInputTokens }),
|
|
251
|
+
inputEncodings: [...value.inputEncodings],
|
|
252
|
+
compatibilitySpace: {
|
|
253
|
+
provider: value.compatibilitySpace.provider,
|
|
254
|
+
model: value.compatibilitySpace.model,
|
|
255
|
+
modelVersion: value.compatibilitySpace.modelVersion,
|
|
256
|
+
dimensions: value.compatibilitySpace.dimensions,
|
|
257
|
+
preprocessingVersion: value.compatibilitySpace.preprocessingVersion,
|
|
258
|
+
spaceId: value.compatibilitySpace.spaceId,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
function isValidEmbeddingCapabilityFacts(value) {
|
|
263
|
+
if (!isPlainRecord(value) ||
|
|
264
|
+
!hasExactKeys(value, [
|
|
265
|
+
'schemaVersion',
|
|
266
|
+
'nativeDimensions',
|
|
267
|
+
'allowedDimensions',
|
|
268
|
+
'encodingFormats',
|
|
269
|
+
'normalized',
|
|
270
|
+
'maxBatchItems',
|
|
271
|
+
'inputEncodings',
|
|
272
|
+
'compatibilitySpace',
|
|
273
|
+
], ['maxInputTokensPerItem', 'maxTotalInputTokens'])) {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
const space = value['compatibilitySpace'];
|
|
277
|
+
if (!isPlainRecord(space) ||
|
|
278
|
+
!hasExactKeys(space, [
|
|
279
|
+
'provider',
|
|
280
|
+
'model',
|
|
281
|
+
'modelVersion',
|
|
282
|
+
'dimensions',
|
|
283
|
+
'preprocessingVersion',
|
|
284
|
+
'spaceId',
|
|
285
|
+
])) {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
const allowedDimensions = value['allowedDimensions'];
|
|
289
|
+
const encodingFormats = value['encodingFormats'];
|
|
290
|
+
const inputEncodings = value['inputEncodings'];
|
|
291
|
+
const nativeDimensions = value['nativeDimensions'];
|
|
292
|
+
const hasPerItemLimit = Object.prototype.hasOwnProperty.call(value, 'maxInputTokensPerItem');
|
|
293
|
+
const hasTotalLimit = Object.prototype.hasOwnProperty.call(value, 'maxTotalInputTokens');
|
|
294
|
+
if (value['schemaVersion'] !== 1 ||
|
|
295
|
+
!isPositiveSafeInteger(nativeDimensions) ||
|
|
296
|
+
!isUniqueArray(allowedDimensions, isPositiveSafeInteger) ||
|
|
297
|
+
!isUniqueArray(encodingFormats, (item) => item === 'float' || item === 'base64', true) ||
|
|
298
|
+
!isUniqueArray(inputEncodings, (item) => item === 'utf8_text' || item === 'token_ids', true) ||
|
|
299
|
+
typeof value['normalized'] !== 'boolean' ||
|
|
300
|
+
!isPositiveSafeInteger(value['maxBatchItems']) ||
|
|
301
|
+
(hasPerItemLimit && !isPositiveSafeInteger(value['maxInputTokensPerItem'])) ||
|
|
302
|
+
(hasTotalLimit && !isPositiveSafeInteger(value['maxTotalInputTokens'])) ||
|
|
303
|
+
!isNonEmptyString(space['provider']) ||
|
|
304
|
+
!isNonEmptyString(space['model']) ||
|
|
305
|
+
!isNonEmptyString(space['modelVersion']) ||
|
|
306
|
+
!isNonEmptyString(space['preprocessingVersion']) ||
|
|
307
|
+
!isNonEmptyString(space['spaceId']) ||
|
|
308
|
+
space['dimensions'] !== nativeDimensions) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
const facts = value;
|
|
312
|
+
return facts.compatibilitySpace.spaceId === deriveSpaceId(facts, facts.nativeDimensions);
|
|
313
|
+
}
|
|
314
|
+
function hasExactKeys(value, required, optional = []) {
|
|
315
|
+
const allowed = new Set([...required, ...optional]);
|
|
316
|
+
return (Object.keys(value).every((key) => allowed.has(key)) &&
|
|
317
|
+
required.every((key) => Object.prototype.hasOwnProperty.call(value, key)));
|
|
318
|
+
}
|
|
319
|
+
function isPositiveSafeInteger(value) {
|
|
320
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;
|
|
321
|
+
}
|
|
322
|
+
function isNonEmptyString(value) {
|
|
323
|
+
return typeof value === 'string' && Boolean(value.trim());
|
|
324
|
+
}
|
|
325
|
+
function isUniqueArray(value, isItem, requireNonEmpty = false) {
|
|
326
|
+
if (!Array.isArray(value) || (requireNonEmpty && value.length === 0)) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
const items = Array.from(value);
|
|
330
|
+
return items.every(isItem) && new Set(items).size === items.length;
|
|
331
|
+
}
|
|
332
|
+
function deriveSpaceId(facts, dimensions) {
|
|
333
|
+
const space = facts.compatibilitySpace;
|
|
334
|
+
return `${space.provider}:${space.model}:${space.modelVersion}:${dimensions}:${space.preprocessingVersion}`;
|
|
335
|
+
}
|
|
336
|
+
function inputMatchesEncoding(input, inputEncoding) {
|
|
337
|
+
if (inputEncoding === 'utf8_text') {
|
|
338
|
+
return input.every((item) => typeof item === 'string' && Boolean(item.trim()));
|
|
339
|
+
}
|
|
340
|
+
if (inputEncoding === 'token_ids') {
|
|
341
|
+
return input.every((item) => Array.isArray(item) &&
|
|
342
|
+
item.length > 0 &&
|
|
343
|
+
item.every((token) => typeof token === 'number' && Number.isSafeInteger(token) && token >= 0));
|
|
344
|
+
}
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
function validateVector(value, encodingFormat, dimensions) {
|
|
348
|
+
if (encodingFormat === 'float') {
|
|
349
|
+
if (!Array.isArray(value) ||
|
|
350
|
+
value.length !== dimensions ||
|
|
351
|
+
!value.every((item) => typeof item === 'number' && Number.isFinite(item))) {
|
|
352
|
+
responseReject();
|
|
353
|
+
}
|
|
354
|
+
return value;
|
|
355
|
+
}
|
|
356
|
+
if (typeof value !== 'string' || !isCanonicalBase64(value)) {
|
|
357
|
+
responseReject();
|
|
358
|
+
}
|
|
359
|
+
const bytes = Buffer.from(value, 'base64');
|
|
360
|
+
if (bytes.byteLength !== dimensions * 4) {
|
|
361
|
+
responseReject();
|
|
362
|
+
}
|
|
363
|
+
for (let offset = 0; offset < bytes.byteLength; offset += 4) {
|
|
364
|
+
if (!Number.isFinite(bytes.readFloatLE(offset))) {
|
|
365
|
+
responseReject();
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return value;
|
|
369
|
+
}
|
|
370
|
+
function isCanonicalBase64(value) {
|
|
371
|
+
return (value.length > 0 &&
|
|
372
|
+
value.length % 4 === 0 &&
|
|
373
|
+
/^[A-Za-z0-9+/]+={0,2}$/.test(value) &&
|
|
374
|
+
Buffer.from(value, 'base64').toString('base64') === value);
|
|
375
|
+
}
|
|
376
|
+
function requireRecord(value, code) {
|
|
377
|
+
if (!isPlainRecord(value)) {
|
|
378
|
+
reject(code, 400);
|
|
379
|
+
}
|
|
380
|
+
return value;
|
|
381
|
+
}
|
|
382
|
+
function responseRecord(value) {
|
|
383
|
+
if (!isPlainRecord(value)) {
|
|
384
|
+
responseReject();
|
|
385
|
+
}
|
|
386
|
+
return value;
|
|
387
|
+
}
|
|
388
|
+
function isPlainRecord(value) {
|
|
389
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
const prototype = Object.getPrototypeOf(value);
|
|
393
|
+
return prototype === Object.prototype || prototype === null;
|
|
394
|
+
}
|
|
395
|
+
function assertKnownFields(value, allowed) {
|
|
396
|
+
if (Object.keys(value).some((key) => !allowed.has(key))) {
|
|
397
|
+
reject('unknown_field', 400);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
function requiredString(value, code) {
|
|
401
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
402
|
+
reject(code, 400);
|
|
403
|
+
}
|
|
404
|
+
return value;
|
|
405
|
+
}
|
|
406
|
+
function optionalString(value) {
|
|
407
|
+
if (value === undefined) {
|
|
408
|
+
return undefined;
|
|
409
|
+
}
|
|
410
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
411
|
+
reject('invalid_input', 400);
|
|
412
|
+
}
|
|
413
|
+
return value;
|
|
414
|
+
}
|
|
415
|
+
function optionalPositiveInteger(value, code) {
|
|
416
|
+
if (value === undefined) {
|
|
417
|
+
return undefined;
|
|
418
|
+
}
|
|
419
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0) {
|
|
420
|
+
reject(code, 400);
|
|
421
|
+
}
|
|
422
|
+
return value;
|
|
423
|
+
}
|
|
424
|
+
function optionalSafeUsageInteger(value) {
|
|
425
|
+
if (value === undefined) {
|
|
426
|
+
return undefined;
|
|
427
|
+
}
|
|
428
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
|
|
429
|
+
responseReject();
|
|
430
|
+
}
|
|
431
|
+
return value;
|
|
432
|
+
}
|
|
433
|
+
function onlySupported(actual, expected) {
|
|
434
|
+
return actual.length > 0 && actual.every((item) => expected.includes(item));
|
|
435
|
+
}
|
|
436
|
+
function reject(code, status) {
|
|
437
|
+
throw new OpenAiEmbeddingsRequestError(code, status);
|
|
438
|
+
}
|
|
439
|
+
function responseReject() {
|
|
440
|
+
throw new OpenAiEmbeddingResponseError();
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=openai-embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-embeddings.js","sourceRoot":"","sources":["../src/openai-embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { NormalizedResponsesSyncResponseV1 } from './runtime-v2.js';
|
|
2
|
+
export interface OpenAiResponsesSafeErrorFactsV1 {
|
|
3
|
+
readonly code: 'PROVIDER_RATE_LIMITED' | 'PROVIDER_REQUEST_FAILED' | 'PROVIDER_RESPONSE_INVALID';
|
|
4
|
+
readonly category: 'provider' | 'protocol';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Versioned Host egress for a normalized OpenAI Responses terminal.
|
|
8
|
+
*
|
|
9
|
+
* Provider wire bodies never enter this projection. The Adapter is the only
|
|
10
|
+
* component allowed to parse them; Hosts encode this bounded safe contract.
|
|
11
|
+
*/
|
|
12
|
+
export declare function encodeOpenAiResponsesEgressV1(response: NormalizedResponsesSyncResponseV1, options?: {
|
|
13
|
+
readonly fallbackModel?: string;
|
|
14
|
+
}): Record<string, unknown>;
|
|
15
|
+
export declare function encodeOpenAiResponsesErrorEgressV1(code: string | undefined): Record<string, unknown>;
|
|
16
|
+
export declare function openAiResponsesSafeErrorFactsV1(code: string | undefined): OpenAiResponsesSafeErrorFactsV1;
|
|
17
|
+
//# sourceMappingURL=openai-responses-egress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-responses-egress.d.ts","sourceRoot":"","sources":["../src/openai-responses-egress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iCAAiC,EAElC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,2BAA2B,CAAC;IACjG,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,iCAAiC,EAC3C,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,+BAA+B,CAQjC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Versioned Host egress for a normalized OpenAI Responses terminal.
|
|
3
|
+
*
|
|
4
|
+
* Provider wire bodies never enter this projection. The Adapter is the only
|
|
5
|
+
* component allowed to parse them; Hosts encode this bounded safe contract.
|
|
6
|
+
*/
|
|
7
|
+
export function encodeOpenAiResponsesEgressV1(response, options = {}) {
|
|
8
|
+
if (response.protocolFamily !== 'openai-responses/v1' || response.store !== false) {
|
|
9
|
+
throw new Error('OPENAI_RESPONSES_EGRESS_INVALID');
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
id: response.id,
|
|
13
|
+
object: 'response',
|
|
14
|
+
status: response.status,
|
|
15
|
+
...((response.model ?? options.fallbackModel)
|
|
16
|
+
? { model: response.model ?? options.fallbackModel }
|
|
17
|
+
: {}),
|
|
18
|
+
store: false,
|
|
19
|
+
output: response.output.map(encodeOutputItem),
|
|
20
|
+
...(response.usage === undefined ? {} : { usage: encodeUsage(response.usage) }),
|
|
21
|
+
...(response.incompleteDetails === undefined
|
|
22
|
+
? {}
|
|
23
|
+
: { incomplete_details: { reason: response.incompleteDetails.reason } }),
|
|
24
|
+
...(response.error === undefined
|
|
25
|
+
? {}
|
|
26
|
+
: {
|
|
27
|
+
error: {
|
|
28
|
+
...openAiResponsesSafeErrorFactsV1(response.error.code),
|
|
29
|
+
message: 'provider request failed',
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function encodeOpenAiResponsesErrorEgressV1(code) {
|
|
35
|
+
return { error: { status: 'failed', ...openAiResponsesSafeErrorFactsV1(code) } };
|
|
36
|
+
}
|
|
37
|
+
export function openAiResponsesSafeErrorFactsV1(code) {
|
|
38
|
+
if (code === 'PROVIDER_RATE_LIMITED') {
|
|
39
|
+
return { code: 'PROVIDER_RATE_LIMITED', category: 'provider' };
|
|
40
|
+
}
|
|
41
|
+
if (code === 'PROVIDER_RESPONSE_INVALID' || code === 'PROVIDER_STREAM_INVALID') {
|
|
42
|
+
return { code: 'PROVIDER_RESPONSE_INVALID', category: 'protocol' };
|
|
43
|
+
}
|
|
44
|
+
return { code: 'PROVIDER_REQUEST_FAILED', category: 'provider' };
|
|
45
|
+
}
|
|
46
|
+
function encodeOutputItem(item) {
|
|
47
|
+
switch (item.type) {
|
|
48
|
+
case 'message':
|
|
49
|
+
return {
|
|
50
|
+
id: item.id,
|
|
51
|
+
type: item.type,
|
|
52
|
+
status: item.status,
|
|
53
|
+
role: item.role ?? 'assistant',
|
|
54
|
+
content: item.content,
|
|
55
|
+
};
|
|
56
|
+
case 'reasoning':
|
|
57
|
+
return {
|
|
58
|
+
id: item.id,
|
|
59
|
+
type: item.type,
|
|
60
|
+
status: item.status,
|
|
61
|
+
summary: item.summary,
|
|
62
|
+
};
|
|
63
|
+
case 'function_call':
|
|
64
|
+
return {
|
|
65
|
+
id: item.id,
|
|
66
|
+
type: item.type,
|
|
67
|
+
status: item.status,
|
|
68
|
+
call_id: item.callId,
|
|
69
|
+
name: item.name,
|
|
70
|
+
arguments: item.arguments,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function encodeUsage(usage) {
|
|
75
|
+
return {
|
|
76
|
+
...(usage.inputTokens === undefined ? {} : { input_tokens: usage.inputTokens }),
|
|
77
|
+
...(usage.outputTokens === undefined ? {} : { output_tokens: usage.outputTokens }),
|
|
78
|
+
...(usage.totalTokens === undefined ? {} : { total_tokens: usage.totalTokens }),
|
|
79
|
+
...(usage.inputTokenDetails === undefined
|
|
80
|
+
? usage.cachedInputTokens === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { input_tokens_details: { cached_tokens: usage.cachedInputTokens } }
|
|
83
|
+
: {
|
|
84
|
+
input_tokens_details: {
|
|
85
|
+
cached_tokens: usage.inputTokenDetails.cachedTokens ?? 0,
|
|
86
|
+
},
|
|
87
|
+
}),
|
|
88
|
+
...(usage.outputTokenDetails === undefined
|
|
89
|
+
? usage.reasoningOutputTokens === undefined
|
|
90
|
+
? {}
|
|
91
|
+
: { output_tokens_details: { reasoning_tokens: usage.reasoningOutputTokens } }
|
|
92
|
+
: {
|
|
93
|
+
output_tokens_details: {
|
|
94
|
+
reasoning_tokens: usage.outputTokenDetails.reasoningTokens ?? 0,
|
|
95
|
+
},
|
|
96
|
+
}),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=openai-responses-egress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-responses-egress.js","sourceRoot":"","sources":["../src/openai-responses-egress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizedStreamEventV1 } from './runtime-v2.js';
|
|
2
|
+
export declare function encodeOpenAiResponsesStreamEventV1(event: NormalizedStreamEventV1): string;
|
|
3
|
+
export declare function encodeOpenAiResponsesStreamFailureV1(responseId: string | undefined, sequenceNumber: number, code: string | undefined): string;
|
|
4
|
+
//# sourceMappingURL=openai-responses-stream-egress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-responses-stream-egress.d.ts","sourceRoot":"","sources":["../src/openai-responses-stream-egress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CA4JzF;AAED,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,CAgBR"}
|