@code-yeongyu/senpi-ai 2026.9.30 → 2026.10.1-2

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 (274) hide show
  1. package/README.md +189 -19
  2. package/dist/api/anthropic-messages.js +168 -32
  3. package/dist/api/azure-openai-responses.js +23 -10
  4. package/dist/api/bedrock-converse-stream.js +12 -4
  5. package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
  6. package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
  7. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
  8. package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
  9. package/dist/api/cloudflare.d.ts +2 -0
  10. package/dist/api/cloudflare.js +2 -0
  11. package/dist/api/context-room.d.ts +2 -2
  12. package/dist/api/cursor-agent.js +19 -10
  13. package/dist/api/devin-agent/request.d.ts +9 -9
  14. package/dist/api/devin-agent/request.js +14 -10
  15. package/dist/api/google-generative-ai.js +20 -80
  16. package/dist/api/google-shared.d.ts +13 -4
  17. package/dist/api/google-shared.js +54 -4
  18. package/dist/api/google-vertex.js +19 -62
  19. package/dist/api/llama-cpp-classify.d.ts +33 -0
  20. package/dist/api/llama-cpp-classify.js +365 -0
  21. package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
  22. package/dist/api/llama-cpp-classify.lazy.js +4 -0
  23. package/dist/api/mistral-conversations.d.ts +1 -1
  24. package/dist/api/mistral-conversations.js +36 -29
  25. package/dist/api/openai-codex-responses.d.ts +1 -1
  26. package/dist/api/openai-codex-responses.js +72 -37
  27. package/dist/api/openai-completions.d.ts +3 -2
  28. package/dist/api/openai-completions.js +76 -50
  29. package/dist/api/openai-images-params.d.ts +2 -2
  30. package/dist/api/openai-images.d.ts +1 -1
  31. package/dist/api/openai-responses-shared.d.ts +31 -8
  32. package/dist/api/openai-responses-shared.js +115 -27
  33. package/dist/api/openai-responses.d.ts +1 -1
  34. package/dist/api/openai-responses.js +38 -33
  35. package/dist/api/openrouter-images.d.ts +2 -1
  36. package/dist/api/openrouter-images.js +1 -0
  37. package/dist/api/pi-messages.d.ts +3 -3
  38. package/dist/api/pi-messages.js +3 -2
  39. package/dist/api/simple-options.d.ts +2 -2
  40. package/dist/api/simple-options.js +1 -0
  41. package/dist/api/system-one-shared.d.ts +23 -0
  42. package/dist/api/system-one-shared.js +183 -0
  43. package/dist/api/transform-messages.js +5 -2
  44. package/dist/api/typesafe-system-one.d.ts +4 -0
  45. package/dist/api/typesafe-system-one.js +19 -0
  46. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  47. package/dist/api/typesafe-system-one.lazy.js +4 -0
  48. package/dist/api-registry.d.ts +3 -3
  49. package/dist/auth/helpers.js +1 -1
  50. package/dist/auth/oauth/anthropic-callback-listener.js +1 -1
  51. package/dist/auth/oauth/callback-server.d.ts +55 -0
  52. package/dist/auth/oauth/callback-server.js +146 -0
  53. package/dist/auth/oauth/chatgpt-subscription.d.ts +1 -1
  54. package/dist/auth/oauth/chatgpt-subscription.js +20 -124
  55. package/dist/auth/oauth/devin-callback.js +1 -1
  56. package/dist/auth/oauth/load.d.ts +4 -0
  57. package/dist/auth/oauth/load.js +10 -0
  58. package/dist/auth/oauth/meta.d.ts +17 -0
  59. package/dist/auth/oauth/meta.js +190 -0
  60. package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
  61. package/dist/auth/oauth/openai-chatgpt.js +266 -0
  62. package/dist/auth/oauth/openrouter.d.ts +1 -1
  63. package/dist/auth/oauth/openrouter.js +19 -138
  64. package/dist/auth/oauth/radius.d.ts +1 -1
  65. package/dist/auth/oauth/radius.js +21 -89
  66. package/dist/auth/resolve.d.ts +3 -8
  67. package/dist/auth/resolve.js +3 -18
  68. package/dist/auth/types.d.ts +10 -1
  69. package/dist/bun-oauth.js +4 -0
  70. package/dist/cli.js +3 -1
  71. package/dist/compat.js +17 -14
  72. package/dist/env-api-keys.js +2 -0
  73. package/dist/image-models.d.ts +19 -8
  74. package/dist/image-models.js +14 -13
  75. package/dist/images-api-registry.d.ts +8 -8
  76. package/dist/images.d.ts +7 -2
  77. package/dist/images.js +5 -0
  78. package/dist/index.d.ts +2 -2
  79. package/dist/index.js +2 -2
  80. package/dist/model-catalog.d.ts +27 -9
  81. package/dist/model-catalog.js +24 -2
  82. package/dist/model.d.ts +13 -13
  83. package/dist/models-store.d.ts +3 -2
  84. package/dist/models.d.ts +106 -36
  85. package/dist/models.generated.d.ts +142 -42
  86. package/dist/models.generated.js +142 -42
  87. package/dist/models.js +174 -36
  88. package/dist/providers/alibaba-token-plan.models.d.ts +4 -2
  89. package/dist/providers/alibaba-token-plan.models.js +4 -2
  90. package/dist/providers/all.d.ts +72 -19
  91. package/dist/providers/all.js +28 -22
  92. package/dist/providers/amazon-bedrock.models.d.ts +4 -2
  93. package/dist/providers/amazon-bedrock.models.js +4 -2
  94. package/dist/providers/ant-ling.models.d.ts +4 -2
  95. package/dist/providers/ant-ling.models.js +4 -2
  96. package/dist/providers/anthropic.models.d.ts +4 -2
  97. package/dist/providers/anthropic.models.js +4 -2
  98. package/dist/providers/azure-openai-responses.models.d.ts +4 -2
  99. package/dist/providers/azure-openai-responses.models.js +4 -2
  100. package/dist/providers/bai.models.d.ts +4 -2
  101. package/dist/providers/bai.models.js +4 -2
  102. package/dist/providers/baseten.models.d.ts +4 -2
  103. package/dist/providers/baseten.models.js +4 -2
  104. package/dist/providers/cerebras.models.d.ts +4 -2
  105. package/dist/providers/cerebras.models.js +4 -2
  106. package/dist/providers/chatgpt-subscription.models.d.ts +4 -2
  107. package/dist/providers/chatgpt-subscription.models.js +4 -2
  108. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
  109. package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
  110. package/dist/providers/cloudflare-stream.d.ts +6 -2
  111. package/dist/providers/cloudflare-stream.js +6 -0
  112. package/dist/providers/cloudflare-workers-ai.js +10 -3
  113. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
  114. package/dist/providers/cloudflare-workers-ai.models.js +4 -2
  115. package/dist/providers/data/.manifest.json +1 -1
  116. package/dist/providers/data/alibaba-token-plan.json +1 -1
  117. package/dist/providers/data/amazon-bedrock.json +1 -1
  118. package/dist/providers/data/ant-ling.json +1 -1
  119. package/dist/providers/data/anthropic.json +1 -1
  120. package/dist/providers/data/azure-openai-responses.json +1 -1
  121. package/dist/providers/data/bai.json +1 -1
  122. package/dist/providers/data/baseten.json +1 -1
  123. package/dist/providers/data/cerebras.json +1 -1
  124. package/dist/providers/data/chatgpt-subscription.json +1 -1
  125. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  126. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  127. package/dist/providers/data/deepseek.json +1 -1
  128. package/dist/providers/data/fireworks.json +1 -1
  129. package/dist/providers/data/github-copilot.json +1 -1
  130. package/dist/providers/data/google-vertex.json +1 -1
  131. package/dist/providers/data/google.json +1 -1
  132. package/dist/providers/data/groq.json +1 -1
  133. package/dist/providers/data/huggingface.json +1 -1
  134. package/dist/providers/data/meta.json +1 -0
  135. package/dist/providers/data/minimax-cn.json +1 -1
  136. package/dist/providers/data/minimax.json +1 -1
  137. package/dist/providers/data/mistral.json +1 -1
  138. package/dist/providers/data/moonshotai-cn.json +1 -1
  139. package/dist/providers/data/moonshotai.json +1 -1
  140. package/dist/providers/data/nvidia.json +1 -1
  141. package/dist/providers/data/openai.json +1 -1
  142. package/dist/providers/data/opencode-go.json +1 -1
  143. package/dist/providers/data/opencode.json +1 -1
  144. package/dist/providers/data/opengateway.json +1 -1
  145. package/dist/providers/data/openrouter.json +1 -1
  146. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  147. package/dist/providers/data/qwen-token-plan-individual.json +1 -1
  148. package/dist/providers/data/qwen-token-plan.json +1 -1
  149. package/dist/providers/data/radius.json +1 -0
  150. package/dist/providers/data/together.json +1 -1
  151. package/dist/providers/data/typesafe.json +1 -0
  152. package/dist/providers/data/venice.json +1 -1
  153. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  154. package/dist/providers/data/xai.json +1 -1
  155. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  156. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  157. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  158. package/dist/providers/data/xiaomi.json +1 -1
  159. package/dist/providers/data/zai-coding-cn.json +1 -1
  160. package/dist/providers/data/zai.json +1 -1
  161. package/dist/providers/deepseek.models.d.ts +4 -2
  162. package/dist/providers/deepseek.models.js +4 -2
  163. package/dist/providers/faux.d.ts +7 -2
  164. package/dist/providers/faux.js +31 -22
  165. package/dist/providers/fireworks.models.d.ts +4 -2
  166. package/dist/providers/fireworks.models.js +4 -2
  167. package/dist/providers/github-copilot.models.d.ts +4 -2
  168. package/dist/providers/github-copilot.models.js +4 -2
  169. package/dist/providers/google-vertex.models.d.ts +4 -2
  170. package/dist/providers/google-vertex.models.js +4 -2
  171. package/dist/providers/google.models.d.ts +4 -2
  172. package/dist/providers/google.models.js +4 -2
  173. package/dist/providers/groq.models.d.ts +4 -2
  174. package/dist/providers/groq.models.js +4 -2
  175. package/dist/providers/huggingface.models.d.ts +4 -2
  176. package/dist/providers/huggingface.models.js +4 -2
  177. package/dist/providers/images/register-builtins.d.ts +2 -2
  178. package/dist/providers/kimi-coding.models.d.ts +54 -7
  179. package/dist/providers/kimi-coding.models.js +34 -7
  180. package/dist/providers/meta.d.ts +3 -0
  181. package/dist/providers/meta.js +24 -0
  182. package/dist/providers/meta.models.d.ts +6 -0
  183. package/dist/providers/meta.models.js +8 -0
  184. package/dist/providers/minimax-cn.models.d.ts +4 -2
  185. package/dist/providers/minimax-cn.models.js +4 -2
  186. package/dist/providers/minimax.models.d.ts +4 -2
  187. package/dist/providers/minimax.models.js +4 -2
  188. package/dist/providers/mistral.models.d.ts +4 -2
  189. package/dist/providers/mistral.models.js +4 -2
  190. package/dist/providers/moonshotai-cn.models.d.ts +4 -2
  191. package/dist/providers/moonshotai-cn.models.js +4 -2
  192. package/dist/providers/moonshotai.models.d.ts +4 -2
  193. package/dist/providers/moonshotai.models.js +4 -2
  194. package/dist/providers/nvidia.models.d.ts +4 -2
  195. package/dist/providers/nvidia.models.js +4 -2
  196. package/dist/providers/openai.js +4 -2
  197. package/dist/providers/openai.models.d.ts +4 -2
  198. package/dist/providers/openai.models.js +4 -2
  199. package/dist/providers/opencode-go.models.d.ts +4 -2
  200. package/dist/providers/opencode-go.models.js +4 -2
  201. package/dist/providers/opencode.d.ts +3 -1
  202. package/dist/providers/opencode.js +5 -2
  203. package/dist/providers/opencode.models.d.ts +4 -2
  204. package/dist/providers/opencode.models.js +4 -2
  205. package/dist/providers/opengateway.models.d.ts +4 -2
  206. package/dist/providers/opengateway.models.js +4 -2
  207. package/dist/providers/openrouter.js +11 -2
  208. package/dist/providers/openrouter.models.d.ts +4 -2
  209. package/dist/providers/openrouter.models.js +4 -2
  210. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
  211. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  212. package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -2
  213. package/dist/providers/qwen-token-plan-individual.models.js +4 -2
  214. package/dist/providers/qwen-token-plan.models.d.ts +4 -2
  215. package/dist/providers/qwen-token-plan.models.js +4 -2
  216. package/dist/providers/radius.js +19 -5
  217. package/dist/providers/radius.models.d.ts +6 -0
  218. package/dist/providers/radius.models.js +8 -0
  219. package/dist/providers/together.models.d.ts +4 -2
  220. package/dist/providers/together.models.js +4 -2
  221. package/dist/providers/typesafe.d.ts +3 -0
  222. package/dist/providers/typesafe.js +18 -0
  223. package/dist/providers/typesafe.models.d.ts +6 -0
  224. package/dist/providers/typesafe.models.js +8 -0
  225. package/dist/providers/venice.models.d.ts +4 -2
  226. package/dist/providers/venice.models.js +4 -2
  227. package/dist/providers/vercel-ai-gateway.js +5 -2
  228. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
  229. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  230. package/dist/providers/xai.models.d.ts +4 -2
  231. package/dist/providers/xai.models.js +4 -2
  232. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
  233. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  234. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
  235. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  236. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
  237. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  238. package/dist/providers/xiaomi.models.d.ts +4 -2
  239. package/dist/providers/xiaomi.models.js +4 -2
  240. package/dist/providers/zai-coding-cn.models.d.ts +4 -2
  241. package/dist/providers/zai-coding-cn.models.js +4 -2
  242. package/dist/providers/zai.models.d.ts +4 -2
  243. package/dist/providers/zai.models.js +4 -2
  244. package/dist/tool-call-middleware/context-transformer.d.ts +8 -5
  245. package/dist/tool-call-middleware/context-transformer.js +44 -15
  246. package/dist/types.d.ts +262 -28
  247. package/dist/utils/diagnostics.d.ts +3 -2
  248. package/dist/utils/estimate.d.ts +2 -2
  249. package/dist/utils/estimate.js +22 -30
  250. package/dist/utils/headers.d.ts +1 -1
  251. package/dist/utils/headers.js +10 -8
  252. package/dist/utils/model-operations.d.ts +11 -0
  253. package/dist/utils/model-operations.js +47 -0
  254. package/dist/utils/models-error.d.ts +8 -0
  255. package/dist/utils/models-error.js +18 -0
  256. package/dist/utils/overflow.d.ts +1 -0
  257. package/dist/utils/overflow.js +11 -5
  258. package/dist/utils/prompt-cache-ttl.js +10 -3
  259. package/dist/utils/retry.js +9 -0
  260. package/dist/utils/text.d.ts +9 -1
  261. package/dist/utils/text.js +26 -0
  262. package/dist/utils/transcript.d.ts +85 -0
  263. package/dist/utils/transcript.js +205 -0
  264. package/package.json +3 -4
  265. package/dist/image-models.generated.d.ts +0 -925
  266. package/dist/image-models.generated.js +0 -927
  267. package/dist/images-models.d.ts +0 -95
  268. package/dist/images-models.js +0 -141
  269. package/dist/providers/openai-images.d.ts +0 -3
  270. package/dist/providers/openai-images.js +0 -16
  271. package/dist/providers/openrouter-images.d.ts +0 -3
  272. package/dist/providers/openrouter-images.js +0 -22
  273. /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
  274. /package/dist/{auth/oauth → utils}/oauth-page.js +0 -0
@@ -1,95 +0,0 @@
1
- import { type AuthResolutionOverrides } from "./auth/resolve.ts";
2
- import type { AuthResult, ProviderAuth } from "./auth/types.ts";
3
- import type { CreateModelsOptions } from "./models.ts";
4
- import type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ImagesOptions, ProviderImages } from "./types.ts";
5
- /**
6
- * An image-generation provider: the image-side counterpart of `Provider`.
7
- * Owns id/name metadata, auth, model listing, and generation behavior.
8
- */
9
- export interface ImagesProvider {
10
- readonly id: string;
11
- readonly name: string;
12
- /**
13
- * Required: at least one of `apiKey`/`oauth`. Same semantics as chat
14
- * providers; `ImagesModels.getAuth()` returns undefined when the provider
15
- * is unconfigured.
16
- */
17
- readonly auth: ProviderAuth;
18
- /**
19
- * Current known models, sync. Static providers return their catalog;
20
- * dynamic providers return the list as of the last `refreshModels()`
21
- * (empty before the first). Must not throw; `ImagesModels` treats a
22
- * throwing implementation as having no models.
23
- */
24
- getModels(): readonly ImagesModel<ImagesApi>[];
25
- /**
26
- * Dynamic providers only: fetch and update the model list. May reject
27
- * (network); on rejection the model list stays at its last-known state
28
- * and a later call retries.
29
- */
30
- refreshModels?(): Promise<void>;
31
- generateImages(model: ImagesModel<ImagesApi>, context: ImagesContext, options?: ImagesOptions): Promise<AssistantImages>;
32
- }
33
- /**
34
- * Runtime collection of image-generation providers plus auth application and
35
- * generation convenience: the image-side counterpart of `Models`.
36
- */
37
- export interface ImagesModels {
38
- getProviders(): readonly ImagesProvider[];
39
- getProvider(id: string): ImagesProvider | undefined;
40
- /**
41
- * Sync read of last-known models from one provider or all providers.
42
- * Best-effort: a provider whose `getModels()` throws yields no models.
43
- */
44
- getModels(provider?: string): readonly ImagesModel<ImagesApi>[];
45
- /** Sync runtime model lookup against last-known lists. */
46
- getModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined;
47
- /**
48
- * Ask dynamic providers to re-fetch their model lists. With a provider id,
49
- * rejects with `ModelsError` ("model_source") on that provider's fetch
50
- * failure; without one, refreshes all providers concurrently best-effort.
51
- * Static providers (no `refreshModels`) are no-ops.
52
- */
53
- refresh(provider?: string): Promise<void>;
54
- /**
55
- * Resolve request auth by provider id or image model. Same contract as
56
- * `Models.getAuth()`: undefined when unknown/unconfigured, rejects with
57
- * `ModelsError` ("oauth"/"auth") on real failures.
58
- */
59
- getAuth(providerId: string, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;
60
- getAuth(model: ImagesModel<ImagesApi>, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;
61
- /**
62
- * Generate images through the owning provider with auth resolved and
63
- * merged (explicit options win per field). Never rejects; failures are
64
- * returned as an `AssistantImages` with `stopReason: "error"`.
65
- */
66
- generateImages(model: ImagesModel<ImagesApi>, context: ImagesContext, options?: ImagesOptions): Promise<AssistantImages>;
67
- }
68
- export interface MutableImagesModels extends ImagesModels {
69
- /** Upsert/replace by provider.id. Provider ids are unique. */
70
- setProvider(provider: ImagesProvider): void;
71
- deleteProvider(id: string): void;
72
- clearProviders(): void;
73
- }
74
- export declare function createImagesModels(options?: CreateModelsOptions): MutableImagesModels;
75
- export interface CreateImagesProviderOptions {
76
- id: string;
77
- /** Display name. Default: `id`. */
78
- name?: string;
79
- /** Required — every provider has auth semantics, even ambient/keyless ones. */
80
- auth: ProviderAuth;
81
- /** Initial model list (empty for purely dynamic providers). */
82
- models: readonly ImagesModel<ImagesApi>[];
83
- /**
84
- * Dynamic providers: fetch the current list. Stored on success; concurrent
85
- * calls share one in-flight fetch. May reject: the stored list then stays
86
- * at its last-known state, the rejection propagates to the caller of
87
- * `refreshModels()` (wrapped as ModelsError "model_source" by
88
- * `ImagesModels.refresh(provider)`), and a later call retries.
89
- */
90
- refreshModels?: () => Promise<readonly ImagesModel<ImagesApi>[]>;
91
- api: ProviderImages;
92
- }
93
- /** Builds an image-generation provider from parts. */
94
- export declare function createImagesProvider(input: CreateImagesProviderOptions): ImagesProvider;
95
- //# sourceMappingURL=images-models.d.ts.map
@@ -1,141 +0,0 @@
1
- import { defaultProviderAuthContext as defaultAuthContext } from "./auth/context.js";
2
- import { InMemoryCredentialStore } from "./auth/credential-store.js";
3
- import { ModelsError, resolveProviderAuth } from "./auth/resolve.js";
4
- class ImagesModelsImpl {
5
- constructor(options) {
6
- this.providers = new Map();
7
- this.credentials = options?.credentials ?? new InMemoryCredentialStore();
8
- this.authContext = options?.authContext ?? defaultAuthContext();
9
- }
10
- setProvider(provider) {
11
- this.providers.set(provider.id, provider);
12
- }
13
- deleteProvider(id) {
14
- this.providers.delete(id);
15
- }
16
- clearProviders() {
17
- this.providers.clear();
18
- }
19
- getProviders() {
20
- return Array.from(this.providers.values());
21
- }
22
- getProvider(id) {
23
- return this.providers.get(id);
24
- }
25
- getModels(provider) {
26
- if (provider !== undefined) {
27
- const entry = this.providers.get(provider);
28
- if (!entry)
29
- return [];
30
- try {
31
- return entry.getModels();
32
- }
33
- catch {
34
- return [];
35
- }
36
- }
37
- const models = [];
38
- for (const entry of this.providers.values()) {
39
- try {
40
- models.push(...entry.getModels());
41
- }
42
- catch {
43
- // Best-effort: ill-behaved providers yield no models.
44
- }
45
- }
46
- return models;
47
- }
48
- getModel(provider, id) {
49
- return this.getModels(provider).find((model) => model.id === id);
50
- }
51
- async refresh(provider) {
52
- if (provider !== undefined) {
53
- const entry = this.providers.get(provider);
54
- if (!entry?.refreshModels)
55
- return;
56
- try {
57
- await entry.refreshModels();
58
- }
59
- catch (error) {
60
- if (error instanceof ModelsError)
61
- throw error;
62
- throw new ModelsError("model_source", `Model refresh failed for ${provider}`, { cause: error });
63
- }
64
- return;
65
- }
66
- // Cannot reject: the async mapper turns even sync throws from ill-behaved
67
- // providers into rejections, and allSettled captures all of them.
68
- await Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));
69
- }
70
- async getAuth(providerOrModel, overrides) {
71
- const providerId = typeof providerOrModel === "string" ? providerOrModel : providerOrModel.provider;
72
- const provider = this.providers.get(providerId);
73
- if (!provider)
74
- return undefined;
75
- return resolveProviderAuth(provider, this.credentials, this.authContext, overrides);
76
- }
77
- async generateImages(model, context, options) {
78
- try {
79
- const provider = this.providers.get(model.provider);
80
- if (!provider) {
81
- throw new ModelsError("provider", `Unknown provider: ${model.provider}`);
82
- }
83
- const resolution = await this.getAuth(model, {
84
- apiKey: options?.apiKey,
85
- env: options?.env,
86
- signal: options?.signal,
87
- });
88
- const auth = resolution?.auth;
89
- if (!auth) {
90
- return provider.generateImages(model, context, options);
91
- }
92
- const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;
93
- // Explicit request options win per-field; headers/env merge per key.
94
- const apiKey = options?.apiKey ?? auth.apiKey;
95
- const headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;
96
- const env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;
97
- return await provider.generateImages(requestModel, context, { ...options, apiKey, headers, env });
98
- }
99
- catch (error) {
100
- return {
101
- api: model.api,
102
- provider: model.provider,
103
- model: model.id,
104
- output: [],
105
- stopReason: "error",
106
- errorMessage: error instanceof Error ? error.message : String(error),
107
- timestamp: Date.now(),
108
- };
109
- }
110
- }
111
- }
112
- export function createImagesModels(options) {
113
- return new ImagesModelsImpl(options);
114
- }
115
- /** Builds an image-generation provider from parts. */
116
- export function createImagesProvider(input) {
117
- let models = input.models;
118
- let inflightRefresh;
119
- const refreshModels = input.refreshModels;
120
- return {
121
- id: input.id,
122
- name: input.name ?? input.id,
123
- auth: input.auth,
124
- getModels: () => models,
125
- refreshModels: refreshModels
126
- ? () => {
127
- inflightRefresh ??= (async () => {
128
- try {
129
- models = await refreshModels();
130
- }
131
- finally {
132
- inflightRefresh = undefined;
133
- }
134
- })();
135
- return inflightRefresh;
136
- }
137
- : undefined,
138
- generateImages: (model, context, options) => input.api.generateImages(model, context, options),
139
- };
140
- }
141
- //# sourceMappingURL=images-models.js.map
@@ -1,3 +0,0 @@
1
- import { type ImagesProvider } from "../images-models.ts";
2
- export declare function openaiImagesProvider(): ImagesProvider;
3
- //# sourceMappingURL=openai-images.d.ts.map
@@ -1,16 +0,0 @@
1
- import { openaiImagesApi } from "../api/openai-images.lazy.js";
2
- import { envApiKeyAuth } from "../auth/helpers.js";
3
- import { IMAGE_MODELS } from "../image-models.generated.js";
4
- import { createImagesProvider } from "../images-models.js";
5
- export function openaiImagesProvider() {
6
- return createImagesProvider({
7
- id: "openai",
8
- name: "OpenAI",
9
- auth: {
10
- apiKey: envApiKeyAuth("OpenAI API key", ["OPENAI_API_KEY"]),
11
- },
12
- models: Object.values(IMAGE_MODELS.openai),
13
- api: openaiImagesApi(),
14
- });
15
- }
16
- //# sourceMappingURL=openai-images.js.map
@@ -1,3 +0,0 @@
1
- import { type ImagesProvider } from "../images-models.ts";
2
- export declare function openrouterImagesProvider(): ImagesProvider;
3
- //# sourceMappingURL=openrouter-images.d.ts.map
@@ -1,22 +0,0 @@
1
- import { openrouterImagesApi } from "../api/openrouter-images.lazy.js";
2
- import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
3
- import { loadOpenRouterOAuth } from "../auth/oauth/load.js";
4
- import { IMAGE_MODELS } from "../image-models.generated.js";
5
- import { createImagesProvider } from "../images-models.js";
6
- export function openrouterImagesProvider() {
7
- return createImagesProvider({
8
- id: "openrouter",
9
- name: "OpenRouter",
10
- auth: {
11
- apiKey: envApiKeyAuth("OpenRouter API key", ["OPENROUTER_API_KEY"]),
12
- oauth: lazyOAuth({
13
- name: "OpenRouter OAuth",
14
- loginLabel: "Sign in with OpenRouter",
15
- load: loadOpenRouterOAuth,
16
- }),
17
- },
18
- models: Object.values(IMAGE_MODELS.openrouter),
19
- api: openrouterImagesApi(),
20
- });
21
- }
22
- //# sourceMappingURL=openrouter-images.js.map
File without changes
File without changes