@qjp88995/provider-client 0.3.0 → 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.
Files changed (40) hide show
  1. package/dist/direct-resolver.d.ts.map +1 -1
  2. package/dist/direct-resolver.js +2 -0
  3. package/dist/direct-resolver.js.map +1 -1
  4. package/dist/image/http.d.ts +16 -0
  5. package/dist/image/http.d.ts.map +1 -0
  6. package/dist/image/http.js +62 -0
  7. package/dist/image/http.js.map +1 -0
  8. package/dist/image/index.d.ts +32 -0
  9. package/dist/image/index.d.ts.map +1 -0
  10. package/dist/image/index.js +39 -0
  11. package/dist/image/index.js.map +1 -0
  12. package/dist/image/types.d.ts +94 -0
  13. package/dist/image/types.d.ts.map +1 -0
  14. package/dist/image/types.js +44 -0
  15. package/dist/image/types.js.map +1 -0
  16. package/dist/image/volcengine.adapter.d.ts +8 -0
  17. package/dist/image/volcengine.adapter.d.ts.map +1 -0
  18. package/dist/image/volcengine.adapter.js +85 -0
  19. package/dist/image/volcengine.adapter.js.map +1 -0
  20. package/dist/index.d.ts +3 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/provider-client.d.ts +13 -0
  25. package/dist/provider-client.d.ts.map +1 -1
  26. package/dist/provider-client.js +47 -0
  27. package/dist/provider-client.js.map +1 -1
  28. package/dist/types.d.ts +18 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js +2 -0
  31. package/dist/types.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/direct-resolver.ts +2 -0
  34. package/src/image/http.ts +68 -0
  35. package/src/image/index.ts +87 -0
  36. package/src/image/types.ts +134 -0
  37. package/src/image/volcengine.adapter.ts +133 -0
  38. package/src/index.ts +27 -0
  39. package/src/provider-client.ts +77 -2
  40. package/src/types.ts +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"direct-resolver.d.ts","sourceRoot":"","sources":["../src/direct-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEZ,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,wDAAwD;IACxD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;AAEvD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGnB;gBAEO,OAAO,EAAE,SAAS,YAAY,EAAE;IAuBtC,OAAO,CACX,GAAG,EAAE,QAAQ,EACb,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAcvB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAMxD"}
1
+ {"version":3,"file":"direct-resolver.d.ts","sourceRoot":"","sources":["../src/direct-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEZ,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,wDAAwD;IACxD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;AAEvD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGnB;gBAEO,OAAO,EAAE,SAAS,YAAY,EAAE;IAyBtC,OAAO,CACX,GAAG,EAAE,QAAQ,EACb,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAcvB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAMxD"}
@@ -23,6 +23,8 @@ export class DirectModelResolver {
23
23
  pricing: null,
24
24
  ...m,
25
25
  })),
26
+ // 直连不做生图(生图只走中心)。
27
+ imageModels: [],
26
28
  }));
27
29
  }
28
30
  // async:找不到厂商 / 模型时以 rejected promise 报出,与中心模式一致。
@@ -1 +1 @@
1
- {"version":3,"file":"direct-resolver.js","sourceRoot":"","sources":["../src/direct-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,SAAS,GAKV,MAAM,mBAAmB,CAAC;AA4B3B;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,OAAO,CAGnB;IAEL,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,6CAA6C;YAC7C,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzB,WAAW,EAAE,CAAC,CAAC,OAAO;gBACtB,YAAY,EAAE,EAAE;gBAChB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,IAAI;gBACrB,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC;aACL,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kDAAkD;IAElD,KAAK,CAAC,OAAO,CACX,GAAa,EACb,UAA0B,EAAE;QAE5B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAE,CAAC;QAClE,OAAO,WAAW,CAAC;YACjB,GAAG;YACH,MAAM;YACN,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;YAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,GAAa;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC;YACjC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF"}
1
+ {"version":3,"file":"direct-resolver.js","sourceRoot":"","sources":["../src/direct-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,SAAS,GAKV,MAAM,mBAAmB,CAAC;AA4B3B;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,OAAO,CAGnB;IAEL,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,6CAA6C;YAC7C,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzB,WAAW,EAAE,CAAC,CAAC,OAAO;gBACtB,YAAY,EAAE,EAAE;gBAChB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,IAAI;gBACrB,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC;aACL,CAAC,CAAC;YACH,kBAAkB;YAClB,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kDAAkD;IAElD,KAAK,CAAC,OAAO,CACX,GAAa,EACb,UAA0B,EAAE;QAE5B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAE,CAAC;QAClE,OAAO,WAAW,CAAC;YACjB,GAAG;YACH,MAAM;YACN,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;YAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,GAAa;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC;YACjC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { type ImageConnection } from './types.js';
2
+ /**
3
+ * POST 一段 JSON,返回状态码与响应正文(同 web-search 的 `postJson`)。只处理「请求没发出去」与「中心自己报的错」:
4
+ * 中止原样抛;网络错误、中心的 `upstream_error` 是可重试的上游错误;中心别的错(没有可用 key、不许用这家……)是配置问题,
5
+ * 抛 `ProviderClientError`。厂商的状态码与响应体怎么解释是适配器的事。
6
+ */
7
+ export declare function postJson(label: string, url: string, { apiKey, fetch }: ImageConnection, body: Record<string, unknown>, signal: AbortSignal): Promise<{
8
+ status: number;
9
+ ok: boolean;
10
+ text: string;
11
+ }>;
12
+ /** 错误详情别整段回灌(HTML 错误页可能几十 KB)。 */
13
+ export declare function clip(text: string): string;
14
+ /** 端点根 + 子路径(根上多余的 `/` 去掉)。 */
15
+ export declare function joinUrl(baseUrl: string, path: string): string;
16
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/image/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,YAAY,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiCxD;AAUD,kCAAkC;AAClC,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED,+BAA+B;AAC/B,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,62 @@
1
+ import { parseCenterError, ProviderClientError } from '../errors.js';
2
+ import { PC_HEADERS } from '../types.js';
3
+ import { ImageUpstreamError } from './types.js';
4
+ /**
5
+ * POST 一段 JSON,返回状态码与响应正文(同 web-search 的 `postJson`)。只处理「请求没发出去」与「中心自己报的错」:
6
+ * 中止原样抛;网络错误、中心的 `upstream_error` 是可重试的上游错误;中心别的错(没有可用 key、不许用这家……)是配置问题,
7
+ * 抛 `ProviderClientError`。厂商的状态码与响应体怎么解释是适配器的事。
8
+ */
9
+ export async function postJson(label, url, { apiKey, fetch }, body, signal) {
10
+ let res;
11
+ try {
12
+ res = await fetch(url, {
13
+ method: 'POST',
14
+ headers: {
15
+ ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),
16
+ 'content-type': 'application/json',
17
+ },
18
+ body: JSON.stringify(body),
19
+ signal,
20
+ });
21
+ }
22
+ catch (err) {
23
+ if (signal.aborted)
24
+ throw err;
25
+ const reason = err instanceof Error ? err.message : String(err);
26
+ throw new ImageUpstreamError(`${label} 请求失败:${reason}`, {
27
+ retryable: true,
28
+ });
29
+ }
30
+ const text = await res.text();
31
+ if (!res.ok && !res.headers.has(PC_HEADERS.credential)) {
32
+ const center = centerErrorOf(text);
33
+ if (center?.code === 'upstream_error') {
34
+ throw new ImageUpstreamError(`${label} 请求失败:${center.message}`, {
35
+ code: center.code,
36
+ retryable: true,
37
+ });
38
+ }
39
+ if (center) {
40
+ throw new ProviderClientError(center.code, center.message, res.status);
41
+ }
42
+ }
43
+ return { status: res.status, ok: res.ok, text };
44
+ }
45
+ function centerErrorOf(text) {
46
+ try {
47
+ return parseCenterError(JSON.parse(text));
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ /** 错误详情别整段回灌(HTML 错误页可能几十 KB)。 */
54
+ export function clip(text) {
55
+ const flat = text.replace(/\s+/g, ' ').trim();
56
+ return flat.length > 300 ? `${flat.slice(0, 300)}…` : flat;
57
+ }
58
+ /** 端点根 + 子路径(根上多余的 `/` 去掉)。 */
59
+ export function joinUrl(baseUrl, path) {
60
+ return `${baseUrl.replace(/\/+$/, '')}/${path}`;
61
+ }
62
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/image/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type GenerateImageInput, type GenerateImageOutcome, type ImageConnection, type ImageTraits } from './types.js';
2
+ import { VolcengineImageAdapter } from './volcengine.adapter.js';
3
+ /** kind → 生图适配器。中心哪几家能录生图模型(`VendorKindInfo.imageGeneration`)与这里一一对应(契约测试钉着)。 */
4
+ export declare const IMAGE_ADAPTERS: {
5
+ readonly volcengine: VolcengineImageAdapter;
6
+ };
7
+ export type ImageKind = keyof typeof IMAGE_ADAPTERS;
8
+ export declare const IMAGE_KINDS: ImageKind[];
9
+ export declare function isImageKind(kind: string): kind is ImageKind;
10
+ /** 一个生图模型,连接已绑好。 */
11
+ export interface ImageGenerator {
12
+ readonly kind: ImageKind;
13
+ readonly modelId: string;
14
+ readonly traits: ImageTraits;
15
+ /** 能不能带参考图(目录里的 `reference-image` 能力)。 */
16
+ readonly referenceImages: boolean;
17
+ generate(input: GenerateImageInput, signal: AbortSignal): Promise<GenerateImageOutcome>;
18
+ }
19
+ export interface CreateImageGeneratorInput {
20
+ kind: ImageKind;
21
+ modelId: string;
22
+ /** 目录里这个模型有 `reference-image` 能力。 */
23
+ referenceImages: boolean;
24
+ connection: ImageConnection;
25
+ }
26
+ /**
27
+ * 绑好连接的生图模型。中心模式用 `ProviderClient.imageModel`;这里是直连(测试)与中心模式共用的底层。
28
+ * 生成前先校验(空提示词、参考图不支持 / 超张数)并把尺寸放进这家的限制(`fitImageSize`)。
29
+ */
30
+ export declare function createImageGenerator(input: CreateImageGeneratorInput): ImageGenerator;
31
+ export * from './types.js';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAEzB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,iFAAiF;AACjF,eAAO,MAAM,cAAc;;CAEsB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,cAAc,CAAC;AACpD,eAAO,MAAM,WAAW,EAAkC,SAAS,EAAE,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CACN,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,cAAc,CAmChB;AAED,cAAc,YAAY,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { fitImageSize, } from './types.js';
2
+ import { VolcengineImageAdapter } from './volcengine.adapter.js';
3
+ /** kind → 生图适配器。中心哪几家能录生图模型(`VendorKindInfo.imageGeneration`)与这里一一对应(契约测试钉着)。 */
4
+ export const IMAGE_ADAPTERS = {
5
+ volcengine: new VolcengineImageAdapter(),
6
+ };
7
+ export const IMAGE_KINDS = Object.keys(IMAGE_ADAPTERS);
8
+ export function isImageKind(kind) {
9
+ return Object.hasOwn(IMAGE_ADAPTERS, kind);
10
+ }
11
+ /**
12
+ * 绑好连接的生图模型。中心模式用 `ProviderClient.imageModel`;这里是直连(测试)与中心模式共用的底层。
13
+ * 生成前先校验(空提示词、参考图不支持 / 超张数)并把尺寸放进这家的限制(`fitImageSize`)。
14
+ */
15
+ export function createImageGenerator(input) {
16
+ const adapter = IMAGE_ADAPTERS[input.kind];
17
+ const traits = adapter.traits(input.modelId);
18
+ return {
19
+ kind: input.kind,
20
+ modelId: input.modelId,
21
+ traits,
22
+ referenceImages: input.referenceImages,
23
+ generate: (req, signal) => {
24
+ if (!req.prompt.trim()) {
25
+ return Promise.reject(new RangeError('prompt must not be empty'));
26
+ }
27
+ const refs = req.referenceImages ?? [];
28
+ if (refs.length > 0 && !input.referenceImages) {
29
+ return Promise.reject(new RangeError(`model "${input.modelId}" does not take reference images`));
30
+ }
31
+ if (refs.length > traits.maxReferenceImages) {
32
+ return Promise.reject(new RangeError(`at most ${traits.maxReferenceImages} reference images, got ${refs.length}`));
33
+ }
34
+ return adapter.generate(input.connection, input.modelId, { ...req, size: fitImageSize(req.size, traits) }, signal);
35
+ },
36
+ };
37
+ }
38
+ export * from './types.js';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAMb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,IAAI,sBAAsB,EAAE;CACO,CAAC;AAGlD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAgB,CAAC;AAEtE,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAuBD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,MAAM,OAAO,GAAiB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM;QACN,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,UAAU,CACZ,UAAU,KAAK,CAAC,OAAO,kCAAkC,CAC1D,CACF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5C,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,UAAU,CACZ,WAAW,MAAM,CAAC,kBAAkB,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAC5E,CACF,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,CACrB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,OAAO,EACb,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAChD,MAAM,CACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,cAAc,YAAY,CAAC"}
@@ -0,0 +1,94 @@
1
+ import type { VendorFetch } from '../vendors/index.js';
2
+ /**
3
+ * 生图的厂商适配。适配器只管「这家的请求长什么样、响应怎么翻、哪些失败值得重试」与这家的尺寸限制;
4
+ * 什么时候生、生几张、提示词怎么写是 APP 的事。**一次调用出一张图**(火山 5.5 不支持一次多张):要几张就并发几次。
5
+ */
6
+ export interface ImageSize {
7
+ width: number;
8
+ height: number;
9
+ }
10
+ /** 参考图(图生图 / 改图)。字节随请求发出(data URI),不依赖公网地址。 */
11
+ export interface ReferenceImage {
12
+ data: Uint8Array;
13
+ /** `image/jpeg`、`image/png`、`image/webp` …… */
14
+ mimeType: string;
15
+ }
16
+ export declare const IMAGE_FORMATS: readonly ["jpeg", "png"];
17
+ export type ImageFormat = (typeof IMAGE_FORMATS)[number];
18
+ export interface GenerateImageInput {
19
+ prompt: string;
20
+ /**
21
+ * 想要的像素尺寸。这家的面积上下限之外会**等比**缩放进去(比例不变),实际尺寸看结果;
22
+ * 想先知道就用 `fitImageSize(size, traits)`。
23
+ */
24
+ size: ImageSize;
25
+ /** 参考图;模型没有 `reference-image` 能力或超过 `traits.maxReferenceImages` 张就报错,不悄悄丢。 */
26
+ referenceImages?: readonly ReferenceImage[];
27
+ /** 缺省 `jpeg`(幻灯片配图用 jpeg 小一个量级)。 */
28
+ format?: ImageFormat;
29
+ }
30
+ export interface GeneratedImage {
31
+ data: Uint8Array;
32
+ mimeType: string;
33
+ width: number;
34
+ height: number;
35
+ }
36
+ export interface ImageUsage {
37
+ generatedImages: number;
38
+ inputImages: number;
39
+ /** 厂商报的 token 数(火山按面积折算);不报为 null。计价按张,这个只做记录。 */
40
+ tokens: number | null;
41
+ }
42
+ export interface GenerateImageOutcome {
43
+ image: GeneratedImage;
44
+ usage: ImageUsage;
45
+ }
46
+ /** 这家(这个模型)生图的限制,给调用方定尺寸、写工具说明用。 */
47
+ export interface ImageTraits {
48
+ /** 面积下限(像素)。 */
49
+ minPixels: number;
50
+ /** 面积上限(像素)。 */
51
+ maxPixels: number;
52
+ /** 宽高比(长边 / 短边)上限。 */
53
+ maxAspectRatio: number;
54
+ /** 一次最多带几张参考图。 */
55
+ maxReferenceImages: number;
56
+ }
57
+ /**
58
+ * 调一次上游要的东西:这家生图所用端点的根地址与出站 fetch。中心模式下 fetch 是中心的透传 fetch、不带 key;
59
+ * 直连模式给 `apiKey`。
60
+ */
61
+ export interface ImageConnection {
62
+ baseUrl: string;
63
+ fetch: VendorFetch;
64
+ apiKey?: string;
65
+ }
66
+ export interface ImageAdapter<K extends string = string> {
67
+ readonly kind: K;
68
+ /** 生图请求发往这家哪个端点(取它的根地址)。 */
69
+ readonly endpointProtocol: 'openai-chat-completions';
70
+ traits(modelId: string): ImageTraits;
71
+ generate(conn: ImageConnection, modelId: string, input: GenerateImageInput, signal: AbortSignal): Promise<GenerateImageOutcome>;
72
+ }
73
+ /**
74
+ * 厂商的失败(HTTP 错误、拒绝生成、响应不成形、没拿到响应)。中心自己报的错是 `ProviderClientError`。
75
+ * 调用方只读 `retryable` 决定要不要再试,不解析消息文本。
76
+ */
77
+ export declare class ImageUpstreamError extends Error {
78
+ readonly name = "ImageUpstreamError";
79
+ /** 上游错误码(火山的 `InvalidParameter`、`OutputImageSensitiveContentDetected` ……),没有就是 null。 */
80
+ readonly code: string | null;
81
+ readonly retryable: boolean;
82
+ /** 被内容审核拦下(换提示词再试;原样重试没用)。 */
83
+ readonly contentFiltered: boolean;
84
+ constructor(reason: string, opts?: {
85
+ code?: string;
86
+ retryable?: boolean;
87
+ contentFiltered?: boolean;
88
+ });
89
+ }
90
+ /**
91
+ * 把想要的尺寸放进这家的限制:宽高比超了先按上限收窄短边;面积超了等比缩小、不够等比放大。取整后面积仍要在界内。
92
+ */
93
+ export declare function fitImageSize(size: ImageSize, traits: ImageTraits): ImageSize;
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/image/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,0BAA2B,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,oCAAoC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACrD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IACrC,QAAQ,CACN,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAwB;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,8BAA8B;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;gBAGhC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO;CAO/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAkB5E"}
@@ -0,0 +1,44 @@
1
+ export const IMAGE_FORMATS = ['jpeg', 'png'];
2
+ /**
3
+ * 厂商的失败(HTTP 错误、拒绝生成、响应不成形、没拿到响应)。中心自己报的错是 `ProviderClientError`。
4
+ * 调用方只读 `retryable` 决定要不要再试,不解析消息文本。
5
+ */
6
+ export class ImageUpstreamError extends Error {
7
+ name = 'ImageUpstreamError';
8
+ /** 上游错误码(火山的 `InvalidParameter`、`OutputImageSensitiveContentDetected` ……),没有就是 null。 */
9
+ code;
10
+ retryable;
11
+ /** 被内容审核拦下(换提示词再试;原样重试没用)。 */
12
+ contentFiltered;
13
+ constructor(reason, opts = {}) {
14
+ super(reason);
15
+ this.code = opts.code ?? null;
16
+ this.retryable = opts.retryable ?? false;
17
+ this.contentFiltered = opts.contentFiltered ?? false;
18
+ }
19
+ }
20
+ /**
21
+ * 把想要的尺寸放进这家的限制:宽高比超了先按上限收窄短边;面积超了等比缩小、不够等比放大。取整后面积仍要在界内。
22
+ */
23
+ export function fitImageSize(size, traits) {
24
+ let { width: w, height: h } = size;
25
+ if (!(w > 0 && h > 0))
26
+ throw new RangeError('image size must be positive');
27
+ const ratio = Math.max(w, h) / Math.min(w, h);
28
+ if (ratio > traits.maxAspectRatio) {
29
+ if (w > h)
30
+ h = w / traits.maxAspectRatio;
31
+ else
32
+ w = h / traits.maxAspectRatio;
33
+ }
34
+ const area = w * h;
35
+ const scale = area > traits.maxPixels
36
+ ? Math.sqrt(traits.maxPixels / area)
37
+ : area < traits.minPixels
38
+ ? Math.sqrt(traits.minPixels / area)
39
+ : 1;
40
+ // 缩小向下取整、放大向上取整,取整后面积不越界。
41
+ const round = scale < 1 ? Math.floor : scale > 1 ? Math.ceil : Math.round;
42
+ return { width: round(w * scale), height: round(h * scale) };
43
+ }
44
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/image/types.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,CAAU,CAAC;AAsEtD;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACzB,IAAI,GAAG,oBAAoB,CAAC;IAC9C,wFAAwF;IAC/E,IAAI,CAAgB;IACpB,SAAS,CAAU;IAC5B,8BAA8B;IACrB,eAAe,CAAU;IAElC,YACE,MAAc,EACd,OAA0E,EAAE;QAE5E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAe,EAAE,MAAmB;IAC/D,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;;YACpC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,KAAK,GACT,IAAI,GAAG,MAAM,CAAC,SAAS;QACrB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACpC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS;YACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC;IACV,0BAA0B;IAC1B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type GenerateImageInput, type GenerateImageOutcome, type ImageAdapter, type ImageConnection, type ImageTraits } from './types.js';
2
+ export declare class VolcengineImageAdapter implements ImageAdapter<'volcengine'> {
3
+ readonly kind: "volcengine";
4
+ readonly endpointProtocol: "openai-chat-completions";
5
+ traits(): ImageTraits;
6
+ generate(conn: ImageConnection, modelId: string, input: GenerateImageInput, signal: AbortSignal): Promise<GenerateImageOutcome>;
7
+ }
8
+ //# sourceMappingURL=volcengine.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volcengine.adapter.d.ts","sourceRoot":"","sources":["../../src/image/volcengine.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AAkCpB,qBAAa,sBAAuB,YAAW,YAAY,CAAC,YAAY,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,QAAQ,CAAC,gBAAgB,EAAG,yBAAyB,CAAU;IAE/D,MAAM,IAAI,WAAW;IAIf,QAAQ,CACZ,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC;CA4DjC"}
@@ -0,0 +1,85 @@
1
+ import { clip, joinUrl, postJson } from './http.js';
2
+ import { ImageUpstreamError, } from './types.js';
3
+ /**
4
+ * 火山方舟(Seedream)生图:`POST {对话端点根}/images/generations`(`https://ark.cn-beijing.volces.com/api/v3`),
5
+ * OpenAI 形状。2026-11-13 经中心透传实测(Seedream 5.5 / 5.0 flash):
6
+ * - `size` 收 `WxH`,面积 921600~4624220 像素,比例宽松(16:1 也行),像素不用对齐;
7
+ * - 一次一张(`n` 被忽略,组图 5.5 不支持);参考图 `image` 收 data URI,最多 10 张;
8
+ * - 返回链接 24 小时失效 → 要 `b64_json`;`watermark: false` 去掉右下角「AI 生成」;
9
+ * - 失败是 `{ error: { code, message } }`(`InvalidParameter` / `MissingParameter` …)。
10
+ */
11
+ const TRAITS = {
12
+ minPixels: 921_600,
13
+ maxPixels: 4_624_220,
14
+ maxAspectRatio: 16,
15
+ maxReferenceImages: 10,
16
+ };
17
+ const LABEL = '火山方舟生图';
18
+ export class VolcengineImageAdapter {
19
+ kind = 'volcengine';
20
+ endpointProtocol = 'openai-chat-completions';
21
+ traits() {
22
+ return TRAITS;
23
+ }
24
+ async generate(conn, modelId, input, signal) {
25
+ const format = input.format ?? 'jpeg';
26
+ const refs = input.referenceImages ?? [];
27
+ const body = {
28
+ model: modelId,
29
+ prompt: input.prompt,
30
+ size: `${input.size.width}x${input.size.height}`,
31
+ response_format: 'b64_json',
32
+ output_format: format,
33
+ watermark: false,
34
+ };
35
+ if (refs.length > 0) {
36
+ const uris = refs.map(r => `data:${r.mimeType};base64,${Buffer.from(r.data).toString('base64')}`);
37
+ body.image = uris.length === 1 ? uris[0] : uris;
38
+ }
39
+ const res = await postJson(LABEL, joinUrl(conn.baseUrl, 'images/generations'), conn, body, signal);
40
+ let parsed;
41
+ try {
42
+ parsed = JSON.parse(res.text);
43
+ }
44
+ catch {
45
+ throw new ImageUpstreamError(`${LABEL}失败(HTTP ${res.status}):${clip(res.text)}`, { retryable: res.status === 429 || res.status >= 500 });
46
+ }
47
+ if (!res.ok || parsed.error) {
48
+ throw upstreamError(res.status, parsed.error);
49
+ }
50
+ const item = parsed.data?.[0];
51
+ if (item?.error)
52
+ throw upstreamError(res.status, item.error);
53
+ if (!item?.b64_json) {
54
+ throw new ImageUpstreamError(`${LABEL}没有返回图片:${clip(res.text)}`, {
55
+ retryable: true,
56
+ });
57
+ }
58
+ const [w, h] = (item.size ?? '').split('x').map(Number);
59
+ const outFormat = item.output_format === 'png' ? 'png' : format;
60
+ return {
61
+ image: {
62
+ data: new Uint8Array(Buffer.from(item.b64_json, 'base64')),
63
+ mimeType: outFormat === 'png' ? 'image/png' : 'image/jpeg',
64
+ width: w && Number.isFinite(w) ? w : input.size.width,
65
+ height: h && Number.isFinite(h) ? h : input.size.height,
66
+ },
67
+ usage: {
68
+ generatedImages: parsed.usage?.generated_images ?? 1,
69
+ inputImages: parsed.usage?.input_images ?? refs.length,
70
+ tokens: parsed.usage?.total_tokens ?? null,
71
+ },
72
+ };
73
+ }
74
+ }
75
+ function upstreamError(status, error) {
76
+ const code = error?.code;
77
+ const message = error?.message ?? '未知错误';
78
+ return new ImageUpstreamError(`${LABEL}失败(HTTP ${status}${code ? `,${code}` : ''}):${clip(message)}`, {
79
+ ...(code ? { code } : {}),
80
+ // 限流、服务端故障可重试;参数错、审核拦下重试没用。
81
+ retryable: status === 429 || status >= 500,
82
+ contentFiltered: !!code && /Sensitive|Moderation|RiskControl/i.test(code),
83
+ });
84
+ }
85
+ //# sourceMappingURL=volcengine.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volcengine.adapter.js","sourceRoot":"","sources":["../../src/image/volcengine.adapter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  export { type CenterFetchOptions, createCenterFetch } from './center-fetch.js';
2
2
  export { type DirectModel, DirectModelResolver, type DirectVendor, } from './direct-resolver.js';
3
3
  export { ProtocolUnavailableError, ProviderClientError, type ProviderClientErrorCode, } from './errors.js';
4
+ export { createImageGenerator, type CreateImageGeneratorInput, fitImageSize, type GeneratedImage, type GenerateImageInput, type GenerateImageOutcome, IMAGE_ADAPTERS, IMAGE_FORMATS, IMAGE_KINDS, type ImageAdapter, type ImageConnection, type ImageFormat, type ImageGenerator, type ImageKind, type ImageSize, type ImageTraits, ImageUpstreamError, type ImageUsage, isImageKind, type ReferenceImage, } from './image/index.js';
4
5
  export { classifyCode, createJustOne, type JustOne, JUSTONE_BASE_URL, JUSTONE_ENDPOINTS, JUSTONE_FAILURE_KINDS, JUSTONE_PRICE_FEN, JUSTONE_PRICING_EXPORTED_AT, JUSTONE_TIMEOUT_MS, type JustOneAttemptRecord, type JustOneCallOptions, type JustOneConnection, type JustOneEndpointKey, type JustOneEndpointSpec, justOneEndpointSpec, type JustOneFailureKind, type JustOneOptions, type JustOneParams, JustOneParamsError, type JustOneParamsOf, type JustOneParamSpec, justOnePriceFen, type JustOneResult, JustOneUpstreamError, type JustOneUpstreamFailureKind, type NormalizedParams, normalizeParams, } from './justone/index.js';
5
6
  export { type AudioOutcome, type AudioRequest, BibiGptApiError, BibiGptNetworkError, buildPolishPrompt, type CacheKeyOpts, createMedia, type CreateMediaInput, directMediaConnection, type FileOutcome, type FileRequest, isMediaKind, localizeSummaryHeadings, MEDIA_ADAPTERS, MEDIA_CAPABILITIES, MEDIA_KINDS, type MediaAdapter, type MediaCapability, type MediaConnection, type MediaInput, type MediaKind, type MediaService, type MediaSettings, type MediaSettingsByKind, MediaUpstreamError, pageFromExpertName, type ParsedImage, parseParserPackage, type TokenUsage, type UploadLimitHint, type VideoLinkChapter, type VideoLinkOutcome, type VideoLinkRequest, type VideoLinkSubtitle, ZHIPU_AUDIO_MAX_BYTES, ZHIPU_FILE_TOOL_TYPES, ZHIPU_MIME_TO_EXT, type ZhipuFileToolType, } from './media/index.js';
6
7
  export { type ModelFileStore, type ModelHandle, type ModelRef, type ModelResolver, type ResolveOptions, type UploadedFile, } from './model-handle.js';
7
- export { type FetchForOptions, type JustOneClientOptions, type MediaOptions, ProviderClient, type ProviderClientOptions, type WebSearchOptions, } from './provider-client.js';
8
+ export { type FetchForOptions, type ImageModelOptions, type JustOneClientOptions, type MediaOptions, ProviderClient, type ProviderClientOptions, type WebSearchOptions, } from './provider-client.js';
8
9
  export { toProviderClientError } from './to-error.js';
9
- export { type CatalogEndpoint, type CatalogModel, type CatalogResponse, type CatalogVendor, CENTER_ERROR_CODES, type CenterErrorCode, ENDPOINT_PROTOCOLS, type EndpointProtocol, LLM_CAPABILITIES, LLM_PROTOCOLS, type LlmCapability, type LlmProtocol, type ModelPricing, PC_HEADERS, PROXY_ROUTE_PREFIX, REASONING_EFFORTS, type ReasoningEffort, VENDOR_CATEGORIES, VENDOR_KINDS, type VendorCategory, type VendorKind, } from './types.js';
10
+ export { type CatalogEndpoint, type CatalogImageModel, type CatalogModel, type CatalogResponse, type CatalogVendor, CENTER_ERROR_CODES, type CenterErrorCode, ENDPOINT_PROTOCOLS, type EndpointProtocol, IMAGE_CAPABILITIES, type ImageCapability, type ImagePricing, LLM_CAPABILITIES, LLM_PROTOCOLS, type LlmCapability, type LlmProtocol, type ModelPricing, PC_HEADERS, PROXY_ROUTE_PREFIX, REASONING_EFFORTS, type ReasoningEffort, VENDOR_CATEGORIES, VENDOR_KINDS, type VendorCategory, type VendorKind, } from './types.js';
10
11
  export { type AdviceModelView, findVendorAdapter, getVendorAdapter, LlmVendorAdapter, type ModelAdvice, type ProviderOptions, type SamplingParams, VENDOR_ADAPTERS, type VendorFetch, } from './vendors/index.js';
11
12
  export { createWebSearch, type CreateWebSearchInput, isWebSearchKind, KIMI_SEARCH_TIERS, type KimiSearchTier, WEB_SEARCH_ADAPTERS, WEB_SEARCH_FILTERS, WEB_SEARCH_KINDS, WEB_SEARCH_RECENCIES, type WebPageOutcome, type WebSearch, type WebSearchAdapter, type WebSearchConnection, type WebSearchFilter, type WebSearchInput, type WebSearchItem, type WebSearchKind, type WebSearchOutcome, type WebSearchRecency, type WebSearchSettings, type WebSearchSettingsByKind, type WebSearchTraits, WebSearchUpstreamError, ZHIPU_SEARCH_ENGINES, type ZhipuSearchEngine, } from './web-search/index.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAChB,mBAAmB,EACnB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,cAAc,EACd,aAAa,EACb,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,WAAW,EACX,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,KAAK,OAAO,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,YAAY,EACjB,WAAW,EACX,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,WAAW,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,eAAe,EACpB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,eAAe,EACpB,iBAAiB,EACjB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,eAAe,EACf,iBAAiB,EACjB,KAAK,cAAc,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  export { createCenterFetch } from './center-fetch.js';
2
2
  export { DirectModelResolver, } from './direct-resolver.js';
3
3
  export { ProtocolUnavailableError, ProviderClientError, } from './errors.js';
4
+ export { createImageGenerator, fitImageSize, IMAGE_ADAPTERS, IMAGE_FORMATS, IMAGE_KINDS, ImageUpstreamError, isImageKind, } from './image/index.js';
4
5
  export { classifyCode, createJustOne, JUSTONE_BASE_URL, JUSTONE_ENDPOINTS, JUSTONE_FAILURE_KINDS, JUSTONE_PRICE_FEN, JUSTONE_PRICING_EXPORTED_AT, JUSTONE_TIMEOUT_MS, justOneEndpointSpec, JustOneParamsError, justOnePriceFen, JustOneUpstreamError, normalizeParams, } from './justone/index.js';
5
6
  export { BibiGptApiError, BibiGptNetworkError, buildPolishPrompt, createMedia, directMediaConnection, isMediaKind, localizeSummaryHeadings, MEDIA_ADAPTERS, MEDIA_CAPABILITIES, MEDIA_KINDS, MediaUpstreamError, pageFromExpertName, parseParserPackage, ZHIPU_AUDIO_MAX_BYTES, ZHIPU_FILE_TOOL_TYPES, ZHIPU_MIME_TO_EXT, } from './media/index.js';
6
7
  export { ProviderClient, } from './provider-client.js';
7
8
  export { toProviderClientError } from './to-error.js';
8
- export { CENTER_ERROR_CODES, ENDPOINT_PROTOCOLS, LLM_CAPABILITIES, LLM_PROTOCOLS, PC_HEADERS, PROXY_ROUTE_PREFIX, REASONING_EFFORTS, VENDOR_CATEGORIES, VENDOR_KINDS, } from './types.js';
9
+ export { CENTER_ERROR_CODES, ENDPOINT_PROTOCOLS, IMAGE_CAPABILITIES, LLM_CAPABILITIES, LLM_PROTOCOLS, PC_HEADERS, PROXY_ROUTE_PREFIX, REASONING_EFFORTS, VENDOR_CATEGORIES, VENDOR_KINDS, } from './types.js';
9
10
  export { findVendorAdapter, getVendorAdapter, LlmVendorAdapter, VENDOR_ADAPTERS, } from './vendors/index.js';
10
11
  export { createWebSearch, isWebSearchKind, KIMI_SEARCH_TIERS, WEB_SEARCH_ADAPTERS, WEB_SEARCH_FILTERS, WEB_SEARCH_KINDS, WEB_SEARCH_RECENCIES, WebSearchUpstreamError, ZHIPU_SEARCH_ENGINES, } from './web-search/index.js';
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAEL,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAMlB,mBAAmB,EAInB,kBAAkB,EAGlB,eAAe,EAEf,oBAAoB,EAGpB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAEjB,WAAW,EAEX,qBAAqB,EAGrB,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,WAAW,EASX,kBAAkB,EAClB,kBAAkB,EAElB,kBAAkB,EAOlB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAIL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAKL,kBAAkB,EAElB,kBAAkB,EAElB,gBAAgB,EAChB,aAAa,EAIb,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAEjB,iBAAiB,EACjB,YAAY,GAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAIhB,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EAEf,eAAe,EACf,iBAAiB,EAEjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAcpB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAEL,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EAEpB,YAAY,EAIZ,cAAc,EACd,aAAa,EACb,WAAW,EAQX,kBAAkB,EAElB,WAAW,GAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAMlB,mBAAmB,EAInB,kBAAkB,EAGlB,eAAe,EAEf,oBAAoB,EAGpB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAEjB,WAAW,EAEX,qBAAqB,EAGrB,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,WAAW,EASX,kBAAkB,EAClB,kBAAkB,EAElB,kBAAkB,EAOlB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAKL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAML,kBAAkB,EAElB,kBAAkB,EAElB,kBAAkB,EAGlB,gBAAgB,EAChB,aAAa,EAIb,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAEjB,iBAAiB,EACjB,YAAY,GAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAIhB,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EAEf,eAAe,EACf,iBAAiB,EAEjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAcpB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type ImageGenerator } from './image/index.js';
1
2
  import { type JustOne, type JustOneOptions } from './justone/index.js';
2
3
  import { type MediaKind, type MediaService, type MediaSettings } from './media/index.js';
3
4
  import { type ModelHandle, type ModelRef, type ModelResolver, type ResolveOptions } from './model-handle.js';
@@ -28,6 +29,8 @@ export interface FetchForOptions {
28
29
  /** 每次响应回来时告诉调用方实际用的是哪把 key(`x-pc-credential`)。 */
29
30
  onCredential?: (ref: string) => void;
30
31
  }
32
+ /** `ProviderClient.imageModel` 的选项。 */
33
+ export type ImageModelOptions = FetchForOptions;
31
34
  export interface ProviderClientOptions {
32
35
  /** 中心的根地址,如 `https://provider.example.com`。 */
33
36
  centerUrl: string;
@@ -78,6 +81,16 @@ export declare class ProviderClient implements ModelResolver {
78
81
  * 目录只在创建时查一次。
79
82
  */
80
83
  webSearch<K extends WebSearchKind>(slug: string, options?: WebSearchOptions<K>): Promise<WebSearch>;
84
+ /**
85
+ * 一个生图模型(适配器在本包,请求经中心透传、中心注入 key)。地址取自这家的对话端点(生图模型没有自己的协议,
86
+ * 用哪个端点由这家的生图适配器定)。**一次 `generate` 出一张**;要几张就并发几次。
87
+ * - 目录里没有这家 → `unknown_vendor`;这家没有这个生图模型(或停用了)→ `unknown_model`;
88
+ * 这个版本的 client 没有这家的生图适配器 → `unsupported_vendor_kind`;这家没有启用的对应端点 → `protocol_unavailable`。
89
+ * - 生成时中心自己报的错是 `ProviderClientError`,厂商的失败是 `ImageUpstreamError`(`retryable`、`contentFiltered`)。
90
+ * - 用量(张数、参考图数)在结果里,单价在目录里(`catalog()` 的 `imageModels[].pricing`),钱由 APP 自己算。
91
+ * 目录只在创建时查一次。
92
+ */
93
+ imageModel(ref: ModelRef, options?: ImageModelOptions): Promise<ImageGenerator>;
81
94
  /**
82
95
  * 某家厂商的媒体解析(适配器在本包,请求经中心透传、中心注入 key):智谱的文件解析 / 语音转写(地址取自这家的
83
96
  * `media` 端点)、BibiGPT 的视频链接解析(它唯一的 `http` 端点)。
@@ -1 +1 @@
1
- {"version":3,"file":"provider-client.d.ts","sourceRoot":"","sources":["../src/provider-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-client.d.ts","sourceRoot":"","sources":["../src/provider-client.ts"],"names":[],"mappings":"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"}