@skyold/provider-adapters 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.
Files changed (116) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +59 -0
  3. package/README.zh-CN.md +15 -0
  4. package/dist/anthropic-messages/adapter.d.ts +3 -0
  5. package/dist/anthropic-messages/adapter.d.ts.map +1 -0
  6. package/dist/anthropic-messages/adapter.js +50 -0
  7. package/dist/anthropic-messages/adapter.js.map +1 -0
  8. package/dist/anthropic-messages/codec.d.ts +7 -0
  9. package/dist/anthropic-messages/codec.d.ts.map +1 -0
  10. package/dist/anthropic-messages/codec.js +581 -0
  11. package/dist/anthropic-messages/codec.js.map +1 -0
  12. package/dist/anthropic-messages/sse.d.ts +7 -0
  13. package/dist/anthropic-messages/sse.d.ts.map +1 -0
  14. package/dist/anthropic-messages/sse.js +77 -0
  15. package/dist/anthropic-messages/sse.js.map +1 -0
  16. package/dist/builtin-registry.d.ts +17 -0
  17. package/dist/builtin-registry.d.ts.map +1 -0
  18. package/dist/builtin-registry.js +110 -0
  19. package/dist/builtin-registry.js.map +1 -0
  20. package/dist/image-response-json.d.ts +36 -0
  21. package/dist/image-response-json.d.ts.map +1 -0
  22. package/dist/image-response-json.js +193 -0
  23. package/dist/image-response-json.js.map +1 -0
  24. package/dist/index.d.ts +24 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +24 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/openai-chat/adapter.d.ts +3 -0
  29. package/dist/openai-chat/adapter.d.ts.map +1 -0
  30. package/dist/openai-chat/adapter.js +83 -0
  31. package/dist/openai-chat/adapter.js.map +1 -0
  32. package/dist/openai-chat/codec.d.ts +7 -0
  33. package/dist/openai-chat/codec.d.ts.map +1 -0
  34. package/dist/openai-chat/codec.js +584 -0
  35. package/dist/openai-chat/codec.js.map +1 -0
  36. package/dist/openai-chat/sse.d.ts +3 -0
  37. package/dist/openai-chat/sse.d.ts.map +1 -0
  38. package/dist/openai-chat/sse.js +64 -0
  39. package/dist/openai-chat/sse.js.map +1 -0
  40. package/dist/openai-embeddings/adapter.d.ts +3 -0
  41. package/dist/openai-embeddings/adapter.d.ts.map +1 -0
  42. package/dist/openai-embeddings/adapter.js +90 -0
  43. package/dist/openai-embeddings/adapter.js.map +1 -0
  44. package/dist/openai-embeddings/codec.d.ts +7 -0
  45. package/dist/openai-embeddings/codec.d.ts.map +1 -0
  46. package/dist/openai-embeddings/codec.js +120 -0
  47. package/dist/openai-embeddings/codec.js.map +1 -0
  48. package/dist/openai-images/adapter.d.ts +4 -0
  49. package/dist/openai-images/adapter.d.ts.map +1 -0
  50. package/dist/openai-images/adapter.js +103 -0
  51. package/dist/openai-images/adapter.js.map +1 -0
  52. package/dist/openai-images/codec.d.ts +24 -0
  53. package/dist/openai-images/codec.d.ts.map +1 -0
  54. package/dist/openai-images/codec.js +979 -0
  55. package/dist/openai-images/codec.js.map +1 -0
  56. package/dist/openai-responses/adapter.d.ts +3 -0
  57. package/dist/openai-responses/adapter.d.ts.map +1 -0
  58. package/dist/openai-responses/adapter.js +102 -0
  59. package/dist/openai-responses/adapter.js.map +1 -0
  60. package/dist/openai-responses/codec.d.ts +7 -0
  61. package/dist/openai-responses/codec.d.ts.map +1 -0
  62. package/dist/openai-responses/codec.js +1086 -0
  63. package/dist/openai-responses/codec.js.map +1 -0
  64. package/dist/openai-responses/sse.d.ts +7 -0
  65. package/dist/openai-responses/sse.d.ts.map +1 -0
  66. package/dist/openai-responses/sse.js +82 -0
  67. package/dist/openai-responses/sse.js.map +1 -0
  68. package/dist/ppio-video/adapter.d.ts +37 -0
  69. package/dist/ppio-video/adapter.d.ts.map +1 -0
  70. package/dist/ppio-video/adapter.js +155 -0
  71. package/dist/ppio-video/adapter.js.map +1 -0
  72. package/dist/ppio-video/codec.d.ts +19 -0
  73. package/dist/ppio-video/codec.d.ts.map +1 -0
  74. package/dist/ppio-video/codec.js +172 -0
  75. package/dist/ppio-video/codec.js.map +1 -0
  76. package/dist/ppio-video/estimator.d.ts +21 -0
  77. package/dist/ppio-video/estimator.d.ts.map +1 -0
  78. package/dist/ppio-video/estimator.js +23 -0
  79. package/dist/ppio-video/estimator.js.map +1 -0
  80. package/dist/registry.d.ts +15 -0
  81. package/dist/registry.d.ts.map +1 -0
  82. package/dist/registry.js +36 -0
  83. package/dist/registry.js.map +1 -0
  84. package/dist/transport-profile.d.ts +17 -0
  85. package/dist/transport-profile.d.ts.map +1 -0
  86. package/dist/transport-profile.js +36 -0
  87. package/dist/transport-profile.js.map +1 -0
  88. package/dist/volc-embeddings/adapter.d.ts +4 -0
  89. package/dist/volc-embeddings/adapter.d.ts.map +1 -0
  90. package/dist/volc-embeddings/adapter.js +92 -0
  91. package/dist/volc-embeddings/adapter.js.map +1 -0
  92. package/dist/volc-embeddings/codec.d.ts +8 -0
  93. package/dist/volc-embeddings/codec.d.ts.map +1 -0
  94. package/dist/volc-embeddings/codec.js +196 -0
  95. package/dist/volc-embeddings/codec.js.map +1 -0
  96. package/dist/volc-images/adapter.d.ts +3 -0
  97. package/dist/volc-images/adapter.d.ts.map +1 -0
  98. package/dist/volc-images/adapter.js +96 -0
  99. package/dist/volc-images/adapter.js.map +1 -0
  100. package/dist/volc-images/codec.d.ts +13 -0
  101. package/dist/volc-images/codec.d.ts.map +1 -0
  102. package/dist/volc-images/codec.js +581 -0
  103. package/dist/volc-images/codec.js.map +1 -0
  104. package/dist/volc-video/adapter.d.ts +40 -0
  105. package/dist/volc-video/adapter.d.ts.map +1 -0
  106. package/dist/volc-video/adapter.js +165 -0
  107. package/dist/volc-video/adapter.js.map +1 -0
  108. package/dist/volc-video/codec.d.ts +26 -0
  109. package/dist/volc-video/codec.d.ts.map +1 -0
  110. package/dist/volc-video/codec.js +203 -0
  111. package/dist/volc-video/codec.js.map +1 -0
  112. package/dist/volc-video/estimator.d.ts +18 -0
  113. package/dist/volc-video/estimator.d.ts.map +1 -0
  114. package/dist/volc-video/estimator.js +21 -0
  115. package/dist/volc-video/estimator.js.map +1 -0
  116. package/package.json +61 -0
@@ -0,0 +1,581 @@
1
+ import { decodeVolcImagesProtocolSnapshotV1, materializeInlineImageBase64ValueV1, parseImageGenerationCapabilityV1, parseImageTaskCapabilityDeclarationV2, stableMediaInputDigestV2, } from '@skyold/model-protocol';
2
+ import { consumeStrictImageResponseJson, } from '../image-response-json.js';
3
+ const PROTOCOL_FAMILY = 'volc-images/v1';
4
+ const TOKENFORGE_TASKS_PROTOCOL = 'tokenforge-tasks/v1';
5
+ const RESPONSE_INVALID = 'PROVIDER_RESPONSE_INVALID';
6
+ const RESPONSE_TOO_LARGE = 'PROVIDER_RESPONSE_TOO_LARGE';
7
+ const RESPONSE_INCOMPLETE = 'PROVIDER_RESPONSE_INCOMPLETE';
8
+ const MAX_OUTPUT_ITEM_BYTES = 25 * 1024 * 1024;
9
+ const MAX_OUTPUT_ITEM_BASE64_CHARS = 4 * Math.ceil(MAX_OUTPUT_ITEM_BYTES / 3);
10
+ const MAX_BOUNDED_RESPONSE_BYTES = 144 * 1024 * 1024;
11
+ const RESPONSE_ENVELOPE_BYTES = 128 * 1024;
12
+ const MAX_URL_CHARS = 4_096;
13
+ const MAX_INPUT_IMAGE_BYTES = 10 * 1024 * 1024;
14
+ const SHA256 = /^[a-f0-9]{64}$/;
15
+ const encoder = new TextEncoder();
16
+ export const volcImagesCodec = {
17
+ protocolFamily: PROTOCOL_FAMILY,
18
+ supportsTask(task, capability) {
19
+ try {
20
+ requestFacts(task, capability);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ },
27
+ encodeProviderRequest(task, providerModel, capability) {
28
+ const facts = requestFacts(task, capability);
29
+ if (facts.operation !== 'generate')
30
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
31
+ return encodeRequest(facts, providerModel);
32
+ },
33
+ async encodeEditProviderRequest(task, providerModel, capability, preparedMedia, signal) {
34
+ const facts = requestFacts(task, capability);
35
+ if (facts.operation !== 'edit')
36
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
37
+ const images = await materializePreparedImages(facts, preparedMedia, signal);
38
+ return encodeRequest(facts, providerModel, images);
39
+ },
40
+ responseBodyPolicy(task, capability) {
41
+ return {
42
+ mode: 'bounded-success-stream',
43
+ maxBytes: responseBodyMaxBytes(requestFacts(task, capability)),
44
+ };
45
+ },
46
+ async decodeProviderStart(response, task, capability) {
47
+ const responseMetadata = metadata(response);
48
+ if (response.status < 200 || response.status >= 300) {
49
+ return failedStart(responseMetadata, response.status);
50
+ }
51
+ try {
52
+ const request = requestFacts(task, capability);
53
+ const decoded = await decodeResponseBody(response.body, request);
54
+ const usage = decodeUsage(decoded.root.usage, decoded.items.length);
55
+ const protocolSnapshot = decodeVolcImagesProtocolSnapshotV1({
56
+ protocolFamily: PROTOCOL_FAMILY,
57
+ model: decoded.root.model,
58
+ created: decoded.root.created,
59
+ items: decoded.snapshotItems,
60
+ usage: usage.snapshot,
61
+ });
62
+ const output = { type: 'media', items: decoded.items };
63
+ return {
64
+ kind: 'sync',
65
+ acceptance: { state: 'accepted' },
66
+ responseMetadata,
67
+ terminal: {
68
+ status: 'succeeded',
69
+ acceptanceState: 'accepted',
70
+ retryable: false,
71
+ result: {
72
+ taskKind: 'image_generation',
73
+ output,
74
+ usage: usage.normalized,
75
+ protocolSnapshot,
76
+ },
77
+ usage: usage.normalized,
78
+ },
79
+ };
80
+ }
81
+ catch (error) {
82
+ return invalidStart(responseMetadata, responseFailureCode(error));
83
+ }
84
+ },
85
+ };
86
+ function encodeRequest(facts, providerModel, images) {
87
+ return encoder.encode(JSON.stringify({
88
+ model: providerModel,
89
+ prompt: facts.prompt,
90
+ ...(images === undefined ? {} : { image: images }),
91
+ ...(facts.size === undefined ? {} : { size: `${facts.size.width}x${facts.size.height}` }),
92
+ response_format: facts.responseFormat,
93
+ ...facts.providerOptions,
94
+ sequential_image_generation: 'disabled',
95
+ }));
96
+ }
97
+ class ImageResponseError extends Error {
98
+ code;
99
+ constructor(code) {
100
+ super(code);
101
+ this.code = code;
102
+ }
103
+ }
104
+ function requestFacts(task, capability) {
105
+ const operation = task.input['operation'];
106
+ if (task.protocolFamily !== PROTOCOL_FAMILY ||
107
+ (task.ingressProtocolFamily !== PROTOCOL_FAMILY &&
108
+ task.ingressProtocolFamily !== TOKENFORGE_TASKS_PROTOCOL) ||
109
+ task.dispatchProtocolFamily !== PROTOCOL_FAMILY ||
110
+ task.taskKind !== 'image_generation' ||
111
+ task.executionMode !== 'sync' ||
112
+ (operation === 'generate'
113
+ ? task.inputModalities.length !== 1 || task.inputModalities[0] !== 'text'
114
+ : operation === 'edit'
115
+ ? task.inputModalities.length !== 2 ||
116
+ task.inputModalities[0] !== 'text' ||
117
+ task.inputModalities[1] !== 'image'
118
+ : true) ||
119
+ task.outputModalities.length !== 1 ||
120
+ task.outputModalities[0] !== 'image') {
121
+ throw new Error('VOLC_IMAGES_TASK_UNSUPPORTED');
122
+ }
123
+ const declared = parseImageGenerationCapabilityV1(capability.imageGenerationCapability);
124
+ if (declared === null)
125
+ throw new Error('VOLC_IMAGES_CAPABILITY_INVALID');
126
+ const declarationV2 = operation === 'edit' || capability.operations !== undefined
127
+ ? parseCapabilityV2(capability)
128
+ : null;
129
+ if (operation === 'edit' &&
130
+ (declarationV2 === null ||
131
+ !declarationV2.operations.includes('edit') ||
132
+ declarationV2.imageEditingCapability === undefined)) {
133
+ throw new Error('VOLC_IMAGES_CAPABILITY_INVALID');
134
+ }
135
+ if (operation === 'generate' &&
136
+ capability.operations !== undefined &&
137
+ declarationV2?.operations.includes('generate') !== true) {
138
+ throw new Error('VOLC_IMAGES_CAPABILITY_INVALID');
139
+ }
140
+ if (declared.supportedPolicies.length !== 1 ||
141
+ declared.supportedPolicies[0] !== 'transparent' ||
142
+ declared.minCount !== 1 ||
143
+ declared.maxCount !== 1 ||
144
+ declared.qualities.length !== 1 ||
145
+ declared.qualities[0] !== 'auto' ||
146
+ declared.outputFormats.length !== 1 ||
147
+ declared.outputFormats[0] !== 'jpeg' ||
148
+ declared.requestMapping.outputFormat.mode !== 'fixed' ||
149
+ declared.requestMapping.outputFormat.value !== 'jpeg' ||
150
+ declared.requestMapping.providerOptions.openaiImages.length !== 0) {
151
+ throw new Error('VOLC_IMAGES_CAPABILITY_INVALID');
152
+ }
153
+ const input = record(task.input);
154
+ if (!hasExactKeys(input, operation === 'edit' ? ['operation', 'prompt', 'images'] : ['operation', 'prompt'], ['count', 'size', 'quality', 'outputFormat', 'responseFormat', 'clientRequestId']) ||
155
+ (operation !== 'generate' && operation !== 'edit') ||
156
+ typeof input['prompt'] !== 'string' ||
157
+ encoder.encode(input['prompt']).byteLength > declared.maxPromptUtf8Bytes ||
158
+ (input['count'] !== undefined && input['count'] !== 1) ||
159
+ (input['quality'] !== undefined && input['quality'] !== 'auto') ||
160
+ (input['outputFormat'] !== undefined && input['outputFormat'] !== 'jpeg') ||
161
+ (input['clientRequestId'] !== undefined &&
162
+ (typeof input['clientRequestId'] !== 'string' ||
163
+ !input['clientRequestId'].trim() ||
164
+ input['clientRequestId'].length > 128))) {
165
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
166
+ }
167
+ const size = optionalSize(input['size']);
168
+ if (size !== undefined &&
169
+ !declared.allowedSizes.some((allowed) => allowed.width === size.width && allowed.height === size.height)) {
170
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
171
+ }
172
+ const responseFormat = resolveResponseFormat(input['responseFormat'], declared);
173
+ const images = operation === 'edit' ? decodeMediaInputs(input['images']) : undefined;
174
+ if (images !== undefined &&
175
+ (images.length === 0 || images.length > declarationV2.imageEditingCapability.maxInputImages)) {
176
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
177
+ }
178
+ return {
179
+ operation,
180
+ prompt: input['prompt'],
181
+ ...(images === undefined ? {} : { images }),
182
+ ...(operation === 'edit' ? { editingCapability: declarationV2.imageEditingCapability } : {}),
183
+ ...(size === undefined ? {} : { size }),
184
+ allowedSizes: declared.allowedSizes,
185
+ responseFormat,
186
+ providerOptions: decodeProviderOptions(task.providerOptions, declared),
187
+ };
188
+ }
189
+ function parseCapabilityV2(capability) {
190
+ return parseImageTaskCapabilityDeclarationV2({
191
+ schemaVersion: 2,
192
+ taskKind: capability.taskKind,
193
+ protocolFamily: capability.protocolFamily,
194
+ operations: capability.operations,
195
+ inputModalities: capability.inputModalities,
196
+ outputModalities: capability.outputModalities,
197
+ executionModes: capability.executionModes,
198
+ supportsCallback: false,
199
+ supportsCancel: false,
200
+ imageGenerationCapability: capability.imageGenerationCapability,
201
+ ...(capability.imageEditingCapability === undefined
202
+ ? {}
203
+ : { imageEditingCapability: capability.imageEditingCapability }),
204
+ });
205
+ }
206
+ function decodeMediaInputs(value) {
207
+ if (!Array.isArray(value))
208
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
209
+ return value.map((item) => {
210
+ const input = record(item);
211
+ if (input['kind'] === 'url' &&
212
+ hasExactKeys(input, ['kind', 'url'], ['mimeType']) &&
213
+ typeof input['url'] === 'string' &&
214
+ (input['mimeType'] === undefined || typeof input['mimeType'] === 'string')) {
215
+ return {
216
+ kind: 'url',
217
+ url: input['url'],
218
+ ...(input['mimeType'] === undefined ? {} : { mimeType: input['mimeType'] }),
219
+ };
220
+ }
221
+ if (input['kind'] === 'object' &&
222
+ hasExactKeys(input, ['kind', 'objectKey']) &&
223
+ typeof input['objectKey'] === 'string') {
224
+ return { kind: 'object', objectKey: input['objectKey'] };
225
+ }
226
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
227
+ });
228
+ }
229
+ async function materializePreparedImages(facts, preparedMedia, signal) {
230
+ const sources = facts.images;
231
+ const prepared = preparedMedia?.images ?? [];
232
+ if (sources === undefined ||
233
+ preparedMedia?.operation !== 'edit' ||
234
+ prepared.length !== sources.length ||
235
+ preparedMedia.mask !== undefined) {
236
+ throw new Error('VOLC_IMAGES_PREPARED_MEDIA_MISMATCH');
237
+ }
238
+ const editing = facts.editingCapability;
239
+ const projected = [];
240
+ for (const [index, input] of prepared.entries()) {
241
+ if (input.sourceDigest !== stableMediaInputDigestV2(sources[index]) ||
242
+ !editing.inputMimeTypes.includes(input.mimeType) ||
243
+ input.sizeBytes <= 0 ||
244
+ input.sizeBytes > MAX_INPUT_IMAGE_BYTES ||
245
+ !SHA256.test(input.sha256)) {
246
+ throw new Error('VOLC_IMAGES_PREPARED_MEDIA_INVALID');
247
+ }
248
+ const bytes = await readPreparedMedia(input, signal);
249
+ const digest = await sha256Hex(bytes, signal);
250
+ if (bytes.byteLength !== input.sizeBytes || digest !== input.sha256) {
251
+ throw new Error('VOLC_IMAGES_PREPARED_MEDIA_INVALID');
252
+ }
253
+ projected.push(`data:${input.mimeType};base64,${encodeBase64(bytes)}`);
254
+ }
255
+ return projected;
256
+ }
257
+ async function readPreparedMedia(input, signal) {
258
+ const bytes = new Uint8Array(input.sizeBytes);
259
+ let offset = 0;
260
+ for await (const chunk of input.stream()) {
261
+ if (signal.aborted)
262
+ throw new Error('VOLC_IMAGES_MEDIA_ABORTED');
263
+ if (!(chunk instanceof Uint8Array) || offset + chunk.byteLength > bytes.byteLength) {
264
+ throw new Error('VOLC_IMAGES_PREPARED_MEDIA_INVALID');
265
+ }
266
+ bytes.set(chunk, offset);
267
+ offset += chunk.byteLength;
268
+ }
269
+ if (signal.aborted)
270
+ throw new Error('VOLC_IMAGES_MEDIA_ABORTED');
271
+ if (offset !== bytes.byteLength)
272
+ throw new Error('VOLC_IMAGES_PREPARED_MEDIA_INVALID');
273
+ return bytes;
274
+ }
275
+ async function sha256Hex(value, signal) {
276
+ const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', value));
277
+ if (signal.aborted)
278
+ throw new Error('VOLC_IMAGES_MEDIA_ABORTED');
279
+ return Array.from(digest, (byte) => byte.toString(16).padStart(2, '0')).join('');
280
+ }
281
+ const BASE64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
282
+ function encodeBase64(value) {
283
+ const chunks = [];
284
+ let chunk = '';
285
+ for (let index = 0; index < value.byteLength; index += 3) {
286
+ const first = value[index];
287
+ const second = value[index + 1];
288
+ const third = value[index + 2];
289
+ chunk += BASE64_ALPHABET[first >> 2];
290
+ chunk += BASE64_ALPHABET[((first & 0x03) << 4) | ((second ?? 0) >> 4)];
291
+ chunk +=
292
+ second === undefined ? '=' : BASE64_ALPHABET[((second & 0x0f) << 2) | ((third ?? 0) >> 6)];
293
+ chunk += third === undefined ? '=' : BASE64_ALPHABET[third & 0x3f];
294
+ if (chunk.length >= 16 * 1024) {
295
+ chunks.push(chunk);
296
+ chunk = '';
297
+ }
298
+ }
299
+ if (chunk)
300
+ chunks.push(chunk);
301
+ return chunks.join('');
302
+ }
303
+ function resolveResponseFormat(value, capability) {
304
+ if (value !== undefined && value !== 'url' && value !== 'b64_json') {
305
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
306
+ }
307
+ const mapping = capability.requestMapping.responseFormat;
308
+ if (mapping.mode === 'fixed') {
309
+ if (value !== undefined && value !== mapping.value)
310
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
311
+ return mapping.value;
312
+ }
313
+ const effective = value ?? mapping.defaultValue;
314
+ if (!capability.responseFormats.includes(effective))
315
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
316
+ return effective;
317
+ }
318
+ function decodeProviderOptions(value, capability) {
319
+ if (Object.keys(value).some((key) => key !== 'volcImages')) {
320
+ throw new Error('VOLC_IMAGES_PROVIDER_OPTIONS_INVALID');
321
+ }
322
+ if (value['volcImages'] === undefined)
323
+ return {};
324
+ const options = record(value['volcImages']);
325
+ if (!hasExactKeys(options, [], ['watermark']) ||
326
+ (Object.prototype.hasOwnProperty.call(options, 'watermark') &&
327
+ !capability.requestMapping.providerOptions.volcImages.includes('watermark')) ||
328
+ (options['watermark'] !== undefined && typeof options['watermark'] !== 'boolean')) {
329
+ throw new Error('VOLC_IMAGES_PROVIDER_OPTIONS_INVALID');
330
+ }
331
+ return options['watermark'] === undefined ? {} : { watermark: options['watermark'] };
332
+ }
333
+ async function decodeResponseBody(body, request) {
334
+ const rootValues = {};
335
+ const items = [];
336
+ const snapshotItems = [];
337
+ const tracker = await consumeStrictImageResponseJson({
338
+ body,
339
+ maxBytes: responseBodyMaxBytes(request),
340
+ paths: ['$.model', '$.created', '$.usage', '$.data.*'],
341
+ allowedContainer,
342
+ onValue: ({ value, key, stack }) => {
343
+ if (stack.length === 1 && typeof key === 'string') {
344
+ rootValues[key] = value;
345
+ return;
346
+ }
347
+ if (stack.length === 2 && stack[1]?.key === 'data' && typeof key === 'number') {
348
+ if (key !== items.length || items.length >= 1) {
349
+ throw new ImageResponseError(RESPONSE_INVALID);
350
+ }
351
+ const item = decodeItem(value, request);
352
+ items.push(item.output);
353
+ snapshotItems.push({ size: item.size });
354
+ }
355
+ },
356
+ invalidError: () => new ImageResponseError(RESPONSE_INVALID),
357
+ tooLargeError: () => new ImageResponseError(RESPONSE_TOO_LARGE),
358
+ bodyError: (error) => new ImageResponseError(transportBodyFailureCode(error) ?? RESPONSE_INCOMPLETE),
359
+ isProtocolError: (error) => error instanceof ImageResponseError,
360
+ });
361
+ if (!tracker.sawArray(['data']) || items.length !== 1) {
362
+ throw new ImageResponseError(RESPONSE_INVALID);
363
+ }
364
+ return { root: decodeRoot(rootValues), items, snapshotItems };
365
+ }
366
+ function responseBodyMaxBytes(request) {
367
+ const payload = request.responseFormat === 'b64_json' ? MAX_OUTPUT_ITEM_BASE64_CHARS : MAX_URL_CHARS;
368
+ return Math.min(MAX_BOUNDED_RESPONSE_BYTES, RESPONSE_ENVELOPE_BYTES + payload + 4_096);
369
+ }
370
+ const ROOT_KEYS = new Set(['model', 'created', 'data', 'usage']);
371
+ const ITEM_KEYS = new Set(['url', 'b64_json', 'size']);
372
+ const USAGE_KEYS = new Set(['generated_images', 'output_tokens', 'total_tokens']);
373
+ function allowedContainer(path, kind) {
374
+ if (path.length === 0)
375
+ return kind === 'object';
376
+ if (typeof path[0] === 'string' && !ROOT_KEYS.has(path[0]))
377
+ return true;
378
+ if (path.length === 1 && path[0] === 'data')
379
+ return kind === 'array';
380
+ if (path.length === 2 && path[0] === 'data' && typeof path[1] === 'number') {
381
+ return kind === 'object';
382
+ }
383
+ if (path.length >= 3 &&
384
+ path[0] === 'data' &&
385
+ typeof path[1] === 'number' &&
386
+ typeof path[2] === 'string' &&
387
+ !ITEM_KEYS.has(path[2])) {
388
+ return true;
389
+ }
390
+ if (path.length === 1 && path[0] === 'usage')
391
+ return kind === 'object';
392
+ if (path.length >= 2 &&
393
+ path[0] === 'usage' &&
394
+ typeof path[1] === 'string' &&
395
+ !USAGE_KEYS.has(path[1])) {
396
+ return true;
397
+ }
398
+ return false;
399
+ }
400
+ function decodeRoot(value) {
401
+ const root = record(value);
402
+ if (!hasRequiredKeys(root, ['model', 'created', 'usage']) ||
403
+ typeof root['model'] !== 'string' ||
404
+ !root['model'].trim() ||
405
+ root['model'].length > 256 ||
406
+ !nonNegativeInteger(root['created'])) {
407
+ throw new ImageResponseError(RESPONSE_INVALID);
408
+ }
409
+ return { model: root['model'], created: root['created'], usage: root['usage'] };
410
+ }
411
+ function decodeItem(value, request) {
412
+ const item = record(value);
413
+ const expected = request.responseFormat === 'url' ? 'url' : 'b64_json';
414
+ const conflicting = request.responseFormat === 'url' ? 'b64_json' : 'url';
415
+ if (!hasRequiredKeys(item, [expected, 'size']) ||
416
+ Object.prototype.hasOwnProperty.call(item, conflicting) ||
417
+ !imagePixelSize(item['size'])) {
418
+ throw new ImageResponseError(RESPONSE_INVALID);
419
+ }
420
+ const size = item['size'];
421
+ if (!request.allowedSizes.some((allowed) => `${allowed.width}x${allowed.height}` === size) ||
422
+ (request.size !== undefined && `${request.size.width}x${request.size.height}` !== size)) {
423
+ throw new ImageResponseError(RESPONSE_INVALID);
424
+ }
425
+ if (request.responseFormat === 'b64_json') {
426
+ try {
427
+ return { output: materializeInlineImageBase64ValueV1(item['b64_json'], 'jpeg'), size };
428
+ }
429
+ catch {
430
+ throw new ImageResponseError(RESPONSE_INVALID);
431
+ }
432
+ }
433
+ const url = item['url'];
434
+ if (typeof url !== 'string' ||
435
+ url.length === 0 ||
436
+ url.length > MAX_URL_CHARS ||
437
+ !isHttpsUrl(url)) {
438
+ throw new ImageResponseError(RESPONSE_INVALID);
439
+ }
440
+ return {
441
+ output: {
442
+ kind: 'reference',
443
+ reference: { kind: 'url', url, mimeType: 'image/jpeg' },
444
+ },
445
+ size,
446
+ };
447
+ }
448
+ function decodeUsage(value, imageCount) {
449
+ const usage = record(value);
450
+ if (!hasRequiredKeys(usage, ['generated_images', 'output_tokens', 'total_tokens']) ||
451
+ !nonNegativeInteger(usage['generated_images']) ||
452
+ !nonNegativeInteger(usage['output_tokens']) ||
453
+ !nonNegativeInteger(usage['total_tokens']) ||
454
+ usage['generated_images'] !== imageCount ||
455
+ usage['total_tokens'] < usage['output_tokens']) {
456
+ throw new ImageResponseError(RESPONSE_INVALID);
457
+ }
458
+ const snapshot = {
459
+ generatedImages: usage['generated_images'],
460
+ outputTokens: usage['output_tokens'],
461
+ totalTokens: usage['total_tokens'],
462
+ };
463
+ return {
464
+ snapshot,
465
+ normalized: {
466
+ outputTokens: snapshot.outputTokens,
467
+ totalTokens: snapshot.totalTokens,
468
+ requests: 1,
469
+ imageCount,
470
+ estimated: false,
471
+ },
472
+ };
473
+ }
474
+ function invalidStart(responseMetadata, failureCode) {
475
+ return {
476
+ kind: 'sync',
477
+ acceptance: { state: 'accepted' },
478
+ responseMetadata,
479
+ terminal: {
480
+ status: 'failed',
481
+ acceptanceState: 'accepted',
482
+ failureOrigin: failureCode === RESPONSE_TOO_LARGE || failureCode === RESPONSE_INCOMPLETE
483
+ ? 'transport'
484
+ : 'provider',
485
+ failureCode,
486
+ retryable: false,
487
+ },
488
+ };
489
+ }
490
+ function failedStart(metadata, status) {
491
+ const rateLimited = status === 429;
492
+ const unknown = status >= 500;
493
+ const acceptanceState = unknown ? 'unknown' : 'not-accepted';
494
+ return {
495
+ kind: 'sync',
496
+ acceptance: { state: acceptanceState },
497
+ responseMetadata: metadata,
498
+ terminal: {
499
+ status: 'failed',
500
+ acceptanceState,
501
+ failureOrigin: 'provider',
502
+ failureCode: rateLimited
503
+ ? 'PROVIDER_RATE_LIMITED'
504
+ : unknown
505
+ ? 'PROVIDER_ACCEPTANCE_UNKNOWN'
506
+ : 'PROVIDER_REQUEST_FAILED',
507
+ retryable: rateLimited,
508
+ },
509
+ };
510
+ }
511
+ function responseFailureCode(error) {
512
+ if (error instanceof ImageResponseError)
513
+ return error.code;
514
+ return transportBodyFailureCode(error) ?? RESPONSE_INVALID;
515
+ }
516
+ function transportBodyFailureCode(error) {
517
+ if (error === null || typeof error !== 'object' || !('code' in error))
518
+ return null;
519
+ return error.code === RESPONSE_TOO_LARGE || error.code === RESPONSE_INCOMPLETE
520
+ ? error.code
521
+ : null;
522
+ }
523
+ function optionalSize(value) {
524
+ if (value === undefined)
525
+ return undefined;
526
+ const size = record(value);
527
+ if (!hasExactKeys(size, ['width', 'height']) ||
528
+ !Number.isSafeInteger(size['width']) ||
529
+ !Number.isSafeInteger(size['height'])) {
530
+ throw new Error('VOLC_IMAGES_REQUEST_INVALID');
531
+ }
532
+ return { width: size['width'], height: size['height'] };
533
+ }
534
+ function imagePixelSize(value) {
535
+ if (typeof value !== 'string')
536
+ return false;
537
+ const match = /^([1-9]\d{1,3})x([1-9]\d{1,3})$/.exec(value);
538
+ if (match === null)
539
+ return false;
540
+ const width = Number(match[1]);
541
+ const height = Number(match[2]);
542
+ return width >= 64 && width <= 8192 && height >= 64 && height <= 8192;
543
+ }
544
+ function isHttpsUrl(value) {
545
+ try {
546
+ const url = new URL(value);
547
+ return url.protocol === 'https:' && Boolean(url.hostname) && !url.username && !url.password;
548
+ }
549
+ catch {
550
+ return false;
551
+ }
552
+ }
553
+ function record(value) {
554
+ if (value === null ||
555
+ typeof value !== 'object' ||
556
+ Array.isArray(value) ||
557
+ (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) {
558
+ throw new ImageResponseError(RESPONSE_INVALID);
559
+ }
560
+ return value;
561
+ }
562
+ function hasExactKeys(value, required, optional = []) {
563
+ const allowed = new Set([...required, ...optional]);
564
+ return (Object.keys(value).every((key) => allowed.has(key)) &&
565
+ required.every((key) => Object.prototype.hasOwnProperty.call(value, key)));
566
+ }
567
+ function hasRequiredKeys(value, required) {
568
+ return required.every((key) => Object.prototype.hasOwnProperty.call(value, key));
569
+ }
570
+ function nonNegativeInteger(value) {
571
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
572
+ }
573
+ function metadata(response) {
574
+ const providerRequestId = response.headers['x-request-id'];
575
+ return {
576
+ headersReceived: true,
577
+ statusCode: response.status,
578
+ ...(providerRequestId ? { providerRequestId } : {}),
579
+ };
580
+ }
581
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/volc-images/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type AdapterExecutionInputV2, type AdapterProviderCapabilityV2, type ProviderAsyncJobListInputV2, type ProviderAsyncJobSnapshotV2, type ProviderAdapterBindingInput, type ProviderResponseMetadata } from '@skyold/model-protocol';
2
+ export interface VolcVideoAsyncAdapter {
3
+ readonly id: 'volc-video';
4
+ supports(capability: AdapterProviderCapabilityV2): boolean;
5
+ start(input: VolcVideoStartInput): Promise<VolcVideoCreateStart>;
6
+ get(providerJobId: string, signal: AbortSignal): Promise<ProviderAsyncJobSnapshotV2>;
7
+ list(input: ProviderAsyncJobListInputV2, signal: AbortSignal): Promise<{
8
+ readonly items: readonly ProviderAsyncJobSnapshotV2[];
9
+ readonly total: number;
10
+ }>;
11
+ cancel(providerJobId: string, signal: AbortSignal): Promise<void>;
12
+ }
13
+ export interface VolcVideoStartInput extends AdapterExecutionInputV2 {
14
+ readonly providerCallbackUrl?: string;
15
+ }
16
+ export type VolcVideoCreateStart = {
17
+ readonly kind: 'async';
18
+ readonly acceptance: {
19
+ readonly state: 'accepted';
20
+ };
21
+ readonly responseMetadata: ProviderResponseMetadata;
22
+ readonly providerJobId: string;
23
+ } | {
24
+ readonly kind: 'failed';
25
+ readonly acceptance: {
26
+ readonly state: 'not-accepted' | 'unknown';
27
+ };
28
+ readonly responseMetadata: ProviderResponseMetadata;
29
+ readonly failureCode: string;
30
+ readonly retryable: false;
31
+ };
32
+ export interface VolcVideoAdapterFactory {
33
+ readonly id: 'volc-video';
34
+ readonly protocolFamily: 'volc-video/v1';
35
+ readonly execution: 'async-job';
36
+ readonly jobOperations: readonly ['get', 'list', 'cancel'];
37
+ bind(binding: ProviderAdapterBindingInput): VolcVideoAsyncAdapter;
38
+ }
39
+ export declare function createVolcVideoAdapterFactory(): VolcVideoAdapterFactory;
40
+ //# sourceMappingURL=adapter.d.ts.map