@miragari/providers 0.1.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 (83) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +567 -0
  3. package/dist/builtin.d.ts +9 -0
  4. package/dist/builtin.d.ts.map +1 -0
  5. package/dist/builtin.js +13 -0
  6. package/dist/builtin.js.map +1 -0
  7. package/dist/google/definition.d.ts +3 -0
  8. package/dist/google/definition.d.ts.map +1 -0
  9. package/dist/google/definition.js +69 -0
  10. package/dist/google/definition.js.map +1 -0
  11. package/dist/google/index.d.ts +2 -0
  12. package/dist/google/index.d.ts.map +1 -0
  13. package/dist/google/index.js +2 -0
  14. package/dist/google/index.js.map +1 -0
  15. package/dist/google/provider.d.ts +2 -0
  16. package/dist/google/provider.d.ts.map +1 -0
  17. package/dist/google/provider.js +133 -0
  18. package/dist/google/provider.js.map +1 -0
  19. package/dist/happyhorse/definition.d.ts +3 -0
  20. package/dist/happyhorse/definition.d.ts.map +1 -0
  21. package/dist/happyhorse/definition.js +57 -0
  22. package/dist/happyhorse/definition.js.map +1 -0
  23. package/dist/happyhorse/index.d.ts +2 -0
  24. package/dist/happyhorse/index.d.ts.map +1 -0
  25. package/dist/happyhorse/index.js +2 -0
  26. package/dist/happyhorse/index.js.map +1 -0
  27. package/dist/happyhorse/provider.d.ts +2 -0
  28. package/dist/happyhorse/provider.d.ts.map +1 -0
  29. package/dist/happyhorse/provider.js +253 -0
  30. package/dist/happyhorse/provider.js.map +1 -0
  31. package/dist/http.d.ts +66 -0
  32. package/dist/http.d.ts.map +1 -0
  33. package/dist/http.js +236 -0
  34. package/dist/http.js.map +1 -0
  35. package/dist/index.d.ts +14 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +10 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/media-router.d.ts +35 -0
  40. package/dist/media-router.d.ts.map +1 -0
  41. package/dist/media-router.js +202 -0
  42. package/dist/media-router.js.map +1 -0
  43. package/dist/openai/definition.d.ts +4 -0
  44. package/dist/openai/definition.d.ts.map +1 -0
  45. package/dist/openai/definition.js +92 -0
  46. package/dist/openai/definition.js.map +1 -0
  47. package/dist/openai/index.d.ts +2 -0
  48. package/dist/openai/index.d.ts.map +1 -0
  49. package/dist/openai/index.js +2 -0
  50. package/dist/openai/index.js.map +1 -0
  51. package/dist/openai/provider.d.ts +2 -0
  52. package/dist/openai/provider.d.ts.map +1 -0
  53. package/dist/openai/provider.js +188 -0
  54. package/dist/openai/provider.js.map +1 -0
  55. package/dist/qwen/definition.d.ts +4 -0
  56. package/dist/qwen/definition.d.ts.map +1 -0
  57. package/dist/qwen/definition.js +210 -0
  58. package/dist/qwen/definition.js.map +1 -0
  59. package/dist/qwen/index.d.ts +2 -0
  60. package/dist/qwen/index.d.ts.map +1 -0
  61. package/dist/qwen/index.js +2 -0
  62. package/dist/qwen/index.js.map +1 -0
  63. package/dist/qwen/provider.d.ts +2 -0
  64. package/dist/qwen/provider.d.ts.map +1 -0
  65. package/dist/qwen/provider.js +237 -0
  66. package/dist/qwen/provider.js.map +1 -0
  67. package/dist/toolkit.d.ts +137 -0
  68. package/dist/toolkit.d.ts.map +1 -0
  69. package/dist/toolkit.js +490 -0
  70. package/dist/toolkit.js.map +1 -0
  71. package/dist/volcengine/definition.d.ts +4 -0
  72. package/dist/volcengine/definition.d.ts.map +1 -0
  73. package/dist/volcengine/definition.js +130 -0
  74. package/dist/volcengine/definition.js.map +1 -0
  75. package/dist/volcengine/index.d.ts +2 -0
  76. package/dist/volcengine/index.d.ts.map +1 -0
  77. package/dist/volcengine/index.js +2 -0
  78. package/dist/volcengine/index.js.map +1 -0
  79. package/dist/volcengine/provider.d.ts +2 -0
  80. package/dist/volcengine/provider.d.ts.map +1 -0
  81. package/dist/volcengine/provider.js +232 -0
  82. package/dist/volcengine/provider.js.map +1 -0
  83. package/package.json +51 -0
@@ -0,0 +1,2 @@
1
+ export { openaiProvider } from "./provider.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { openaiProvider } from "./provider.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const openaiProvider: import("@miragari/core").ProviderPlugin;
2
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/openai/provider.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,cAAc,yCA0HzB,CAAA"}
@@ -0,0 +1,188 @@
1
+ import { createMediaRouterError, } from "@miragari/core";
2
+ import { authHeaders, completed, defineHttpProvider, pendingProviderJob, pendingStatus, polledJob, providerUrl, stripUndefined, } from "../http.js";
3
+ import { assertNoUnusedMediaInputs, assetFromUrl, assetsFromImageData, collectMediaInputs, describeMediaInput, isVideoRequest, mediaInputToInlineBase64, requirePrompt, unsupportedAction, unsupportedInput, } from "../toolkit.js";
4
+ import { openaiModels, openaiStatusMap } from "./definition.js";
5
+ export const openaiProvider = defineHttpProvider({
6
+ id: "openai",
7
+ displayName: "OpenAI",
8
+ baseURL: "https://api.openai.com/v1",
9
+ auth: { type: "bearer" },
10
+ defaultModels: {
11
+ image: "gpt-image-1",
12
+ video: "sora-2",
13
+ },
14
+ models: openaiModels,
15
+ statusMap: openaiStatusMap,
16
+ create: {
17
+ request: {
18
+ method: "POST",
19
+ path: (context) => {
20
+ if (isVideoRequest(context))
21
+ return "/videos";
22
+ return hasImageEditInputs(context) ? "/images/edits" : "/images/generations";
23
+ },
24
+ body: (context) => {
25
+ const dimensions = context.resolved.dimensions;
26
+ const options = context.request.options;
27
+ if (context.request.action &&
28
+ context.request.action !== "generate" &&
29
+ context.request.action !== "reference" &&
30
+ context.request.action !== "edit") {
31
+ unsupportedAction(context);
32
+ }
33
+ if (isVideoRequest(context)) {
34
+ if (context.request.action === "reference" || context.request.action === "edit") {
35
+ unsupportedAction(context);
36
+ }
37
+ assertNoUnusedMediaInputs(context, []);
38
+ return stripUndefined({
39
+ model: context.request.model,
40
+ prompt: requirePrompt(context),
41
+ size: dimensions?.size,
42
+ seconds: options?.duration,
43
+ ...context.request.providerOptions,
44
+ });
45
+ }
46
+ if (hasImageEditInputs(context)) {
47
+ return openaiImageEditBody(context);
48
+ }
49
+ if (context.request.action === "reference" || context.request.action === "edit") {
50
+ unsupportedInput(context, "input.images", `${context.request.action} action requires images`);
51
+ }
52
+ assertNoUnusedMediaInputs(context, []);
53
+ return stripUndefined({
54
+ model: context.request.model,
55
+ prompt: requirePrompt(context),
56
+ n: options?.count ?? 1,
57
+ size: dimensions?.size,
58
+ quality: options?.quality,
59
+ output_format: options?.outputFormat,
60
+ ...context.request.providerOptions,
61
+ });
62
+ },
63
+ },
64
+ output: (response, context, helpers) => {
65
+ if (isVideoRequest(context)) {
66
+ const video = response;
67
+ return pendingProviderJob({
68
+ context,
69
+ providerJobId: video.id,
70
+ status: video.status
71
+ ? pendingStatus(helpers.statusFrom(video.status, { context }), "running")
72
+ : "queued",
73
+ raw: response,
74
+ pollAfterMs: 5000,
75
+ });
76
+ }
77
+ const image = response;
78
+ return completed({
79
+ context,
80
+ assets: assetsFromImageData(image.data, context),
81
+ raw: response,
82
+ });
83
+ },
84
+ },
85
+ poll: {
86
+ request: {
87
+ method: "GET",
88
+ path: (context) => `/videos/${context.job.providerJobId}`,
89
+ },
90
+ output: async (response, context, helpers) => {
91
+ const status = helpers.statusFrom(response.status, { context });
92
+ const videoUrl = response.output?.video_url ?? response.output?.url;
93
+ const downloadedVideo = status === "succeeded" && !videoUrl
94
+ ? await downloadVideoContent(context)
95
+ : undefined;
96
+ return polledJob({
97
+ context,
98
+ status,
99
+ assets: status === "succeeded" && videoUrl
100
+ ? assetFromUrl("video", videoUrl, "video/mp4")
101
+ : downloadedVideo,
102
+ error: status === "failed"
103
+ ? openaiJobError(response, context.job.provider, context.job.model)
104
+ : undefined,
105
+ raw: response,
106
+ });
107
+ },
108
+ },
109
+ cancel: {
110
+ request: {
111
+ method: "POST",
112
+ path: (context) => `/videos/${context.job.providerJobId}/cancel`,
113
+ },
114
+ },
115
+ });
116
+ function openaiImageEditBody(context) {
117
+ const options = context.request.options;
118
+ const media = collectMediaInputs(context.request);
119
+ const images = media.filter((item) => item.role === "referenceImage");
120
+ const mask = media.find((item) => item.role === "mask");
121
+ if (!images.length) {
122
+ unsupportedInput(context, "input.images", "image edit requires at least one source image");
123
+ }
124
+ if (images.length > 16) {
125
+ unsupportedInput(context, "input.images", "OpenAI image edits support up to 16 source images");
126
+ }
127
+ assertNoUnusedMediaInputs(context, ["referenceImage", "mask"]);
128
+ return stripUndefined({
129
+ model: context.request.model,
130
+ prompt: requirePrompt(context),
131
+ images: images.map((item) => openaiImageReference(context, item.input, "input.images")),
132
+ mask: mask ? openaiImageReference(context, mask.input, "input.mask") : undefined,
133
+ n: options?.count ?? 1,
134
+ size: context.resolved.dimensions?.size,
135
+ quality: options?.quality,
136
+ output_format: options?.outputFormat,
137
+ ...context.request.providerOptions,
138
+ });
139
+ }
140
+ function openaiImageReference(context, input, inputPath) {
141
+ const inline = mediaInputToInlineBase64(input);
142
+ if (inline)
143
+ return { image_url: `data:${inline.mimeType};base64,${inline.data}` };
144
+ const described = describeMediaInput(input);
145
+ if (described.kind === "url")
146
+ return { image_url: described.url };
147
+ unsupportedInput(context, inputPath, `unsupported media kind: ${described.kind}`);
148
+ }
149
+ function hasImageEditInputs(context) {
150
+ if (isVideoRequest(context))
151
+ return false;
152
+ const media = collectMediaInputs(context.request);
153
+ return media.some((item) => item.role === "referenceImage" || item.role === "mask");
154
+ }
155
+ async function downloadVideoContent(context) {
156
+ const url = providerUrl(context, `/videos/${context.job.providerJobId}/content`);
157
+ const response = await context.fetch(url, {
158
+ method: "GET",
159
+ headers: authHeaders(context),
160
+ });
161
+ if (!response.ok)
162
+ return undefined;
163
+ const contentType = response.headers.get("content-type") ?? "video/mp4";
164
+ return [
165
+ {
166
+ type: "video",
167
+ base64: arrayBufferToBase64(await response.arrayBuffer()),
168
+ mimeType: contentType,
169
+ },
170
+ ];
171
+ }
172
+ function arrayBufferToBase64(data) {
173
+ const bytes = new Uint8Array(data);
174
+ let binary = "";
175
+ const chunkSize = 0x8000;
176
+ for (let index = 0; index < bytes.length; index += chunkSize) {
177
+ binary += String.fromCharCode(...bytes.subarray(index, index + chunkSize));
178
+ }
179
+ return btoa(binary);
180
+ }
181
+ function openaiJobError(response, provider, model) {
182
+ return createMediaRouterError("PROVIDER_ERROR", response.error?.message ?? "OpenAI generation failed", {
183
+ provider,
184
+ model,
185
+ raw: response,
186
+ });
187
+ }
188
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/openai/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GenerationStatus, ModelDefinition } from "@miragari/core";
2
+ export declare const qwenModels: Record<string, ModelDefinition>;
3
+ export declare const qwenStatusMap: Record<string, GenerationStatus>;
4
+ //# sourceMappingURL=definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/qwen/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,eAAe,EAChB,MAAM,gBAAgB,CAAA;AAyMvB,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoBtD,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAM1D,CAAA"}
@@ -0,0 +1,210 @@
1
+ const qwenImage20Dimensions = {
2
+ image: {
3
+ sizeFormat: "*",
4
+ minPixels: 512 * 512,
5
+ maxPixels: 2048 * 2048,
6
+ },
7
+ };
8
+ const qwenImagePresetDimensions = {
9
+ aspectRatios: ["16:9", "4:3", "1:1", "3:4", "9:16"],
10
+ image: {
11
+ sizeFormat: "*",
12
+ supportedSizes: ["1664*928", "1472*1104", "1328*1328", "1104*1472", "928*1664"],
13
+ },
14
+ };
15
+ const qwenEditableDimensions = {
16
+ image: {
17
+ sizeFormat: "*",
18
+ minPixels: 512 * 512,
19
+ maxWidth: 2048,
20
+ maxHeight: 2048,
21
+ },
22
+ };
23
+ const qwenVideoDimensions = {
24
+ aspectRatios: ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"],
25
+ video: { resolutions: ["720p", "1080p"] },
26
+ };
27
+ const generateAction = {
28
+ description: "Generate images from prompt text.",
29
+ consumes: [
30
+ "input.prompt",
31
+ "input.negativePrompt",
32
+ "options.width",
33
+ "options.height",
34
+ "options.count",
35
+ "options.seed",
36
+ "providerOptions.prompt_extend",
37
+ "providerOptions.watermark",
38
+ ],
39
+ };
40
+ const videoGenerateAction = {
41
+ description: "Generate videos from prompt text.",
42
+ consumes: [
43
+ "input.prompt",
44
+ "input.negativePrompt",
45
+ "options.width",
46
+ "options.height",
47
+ "options.duration",
48
+ "options.seed",
49
+ "providerOptions.prompt_extend",
50
+ "providerOptions.watermark",
51
+ ],
52
+ };
53
+ const imageToVideoAction = {
54
+ description: "Generate videos from images, audio, or an initial video clip.",
55
+ consumes: [
56
+ "input.prompt",
57
+ "input.negativePrompt",
58
+ "input.image",
59
+ "input.firstFrame",
60
+ "input.lastFrame",
61
+ "input.images",
62
+ "input.video",
63
+ "input.audio",
64
+ "options.duration",
65
+ "options.seed",
66
+ "providerOptions.prompt_extend",
67
+ "providerOptions.watermark",
68
+ ],
69
+ };
70
+ const referenceAction = {
71
+ description: "Generate or edit images from prompt text and reference images.",
72
+ consumes: [
73
+ "input.prompt",
74
+ "input.images",
75
+ "input.negativePrompt",
76
+ "options.width",
77
+ "options.height",
78
+ "options.count",
79
+ "options.seed",
80
+ "providerOptions.prompt_extend",
81
+ "providerOptions.watermark",
82
+ ],
83
+ };
84
+ const editAction = {
85
+ description: "Edit images with natural-language instructions and reference images.",
86
+ consumes: [
87
+ "input.prompt",
88
+ "input.images",
89
+ "input.negativePrompt",
90
+ "options.width",
91
+ "options.height",
92
+ "options.count",
93
+ "options.seed",
94
+ "providerOptions.prompt_extend",
95
+ "providerOptions.watermark",
96
+ ],
97
+ };
98
+ function qwenImage20Model(id) {
99
+ return {
100
+ id,
101
+ type: "image",
102
+ async: false,
103
+ capabilities: {
104
+ actions: {
105
+ generate: generateAction,
106
+ reference: referenceAction,
107
+ edit: editAction,
108
+ },
109
+ dimensions: qwenImage20Dimensions,
110
+ count: { supported: true, max: 6, strategy: "native" },
111
+ maxImages: 3,
112
+ supportsSeed: true,
113
+ },
114
+ };
115
+ }
116
+ function qwenImageMaxModel(id) {
117
+ return {
118
+ id,
119
+ type: "image",
120
+ async: false,
121
+ capabilities: {
122
+ actions: {
123
+ generate: generateAction,
124
+ },
125
+ dimensions: qwenImagePresetDimensions,
126
+ count: { supported: true, max: 1, strategy: "native" },
127
+ supportsSeed: true,
128
+ },
129
+ };
130
+ }
131
+ function qwenAsyncImageModel(id) {
132
+ return {
133
+ id,
134
+ type: "image",
135
+ async: true,
136
+ capabilities: {
137
+ actions: {
138
+ generate: generateAction,
139
+ },
140
+ dimensions: qwenImagePresetDimensions,
141
+ count: { supported: true, max: 1, strategy: "native" },
142
+ supportsSeed: true,
143
+ },
144
+ };
145
+ }
146
+ function qwenEditModel(id, countMax, dimensions = qwenEditableDimensions) {
147
+ return {
148
+ id,
149
+ type: "image",
150
+ async: false,
151
+ capabilities: {
152
+ actions: {
153
+ reference: referenceAction,
154
+ edit: editAction,
155
+ },
156
+ dimensions,
157
+ count: { supported: true, max: countMax, strategy: "native" },
158
+ maxImages: 3,
159
+ supportsSeed: true,
160
+ },
161
+ };
162
+ }
163
+ function wanVideoModel(id) {
164
+ return {
165
+ id,
166
+ type: "video",
167
+ async: true,
168
+ capabilities: {
169
+ actions: {
170
+ generate: videoGenerateAction,
171
+ reference: imageToVideoAction,
172
+ continue: imageToVideoAction,
173
+ },
174
+ dimensions: qwenVideoDimensions,
175
+ maxImages: 2,
176
+ maxVideos: 1,
177
+ maxAudios: 1,
178
+ supportsSeed: true,
179
+ },
180
+ };
181
+ }
182
+ export const qwenModels = {
183
+ "wan2.7": wanVideoModel("wan2.7"),
184
+ "qwen-image-2.0-pro": qwenImage20Model("qwen-image-2.0-pro"),
185
+ "qwen-image-2.0-pro-2026-04-22": qwenImage20Model("qwen-image-2.0-pro-2026-04-22"),
186
+ "qwen-image-2.0-pro-2026-03-03": qwenImage20Model("qwen-image-2.0-pro-2026-03-03"),
187
+ "qwen-image-2.0": qwenImage20Model("qwen-image-2.0"),
188
+ "qwen-image-2.0-2026-03-03": qwenImage20Model("qwen-image-2.0-2026-03-03"),
189
+ "qwen-image-max": qwenImageMaxModel("qwen-image-max"),
190
+ "qwen-image-max-2025-12-30": qwenImageMaxModel("qwen-image-max-2025-12-30"),
191
+ "qwen-image-plus": qwenAsyncImageModel("qwen-image-plus"),
192
+ "qwen-image-plus-2026-01-09": qwenAsyncImageModel("qwen-image-plus-2026-01-09"),
193
+ "qwen-image": qwenAsyncImageModel("qwen-image"),
194
+ "qwen-image-edit-max": qwenEditModel("qwen-image-edit-max", 6),
195
+ "qwen-image-edit-max-2026-01-16": qwenEditModel("qwen-image-edit-max-2026-01-16", 6),
196
+ "qwen-image-edit-plus": qwenEditModel("qwen-image-edit-plus", 6),
197
+ "qwen-image-edit-plus-2025-12-15": qwenEditModel("qwen-image-edit-plus-2025-12-15", 6),
198
+ "qwen-image-edit-plus-2025-10-30": qwenEditModel("qwen-image-edit-plus-2025-10-30", 6),
199
+ "qwen-image-edit": qwenEditModel("qwen-image-edit", 1, {
200
+ image: { sizeFormat: "*" },
201
+ }),
202
+ };
203
+ export const qwenStatusMap = {
204
+ PENDING: "queued",
205
+ RUNNING: "running",
206
+ SUCCEEDED: "succeeded",
207
+ FAILED: "failed",
208
+ CANCELED: "cancelled",
209
+ };
210
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/qwen/definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { qwenProvider } from "./provider.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qwen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { qwenProvider } from "./provider.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qwen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const qwenProvider: import("@miragari/core").ProviderPlugin;
2
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/qwen/provider.ts"],"names":[],"mappings":"AAsDA,eAAO,MAAM,YAAY,yCA4EvB,CAAA"}