@openadapter/koda-ai 1.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1385 -0
- package/dist/api-registry.d.ts +19 -0
- package/dist/api-registry.js +1 -0
- package/dist/bedrock-provider.d.ts +4 -0
- package/dist/bedrock-provider.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +24 -0
- package/dist/env-api-keys.d.ts +17 -0
- package/dist/env-api-keys.js +1 -0
- package/dist/image-models.d.ts +9 -0
- package/dist/image-models.generated.d.ts +454 -0
- package/dist/image-models.generated.js +1 -0
- package/dist/image-models.js +1 -0
- package/dist/images-api-registry.d.ts +13 -0
- package/dist/images-api-registry.js +1 -0
- package/dist/images.d.ts +3 -0
- package/dist/images.js +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +1 -0
- package/dist/models.d.ts +17 -0
- package/dist/models.generated.d.ts +18136 -0
- package/dist/models.generated.js +1 -0
- package/dist/models.js +1 -0
- package/dist/oauth.d.ts +1 -0
- package/dist/oauth.js +1 -0
- package/dist/providers/amazon-bedrock.d.ts +37 -0
- package/dist/providers/amazon-bedrock.js +1 -0
- package/dist/providers/anthropic.d.ts +70 -0
- package/dist/providers/anthropic.js +5 -0
- package/dist/providers/azure-openai-responses.d.ts +14 -0
- package/dist/providers/azure-openai-responses.js +1 -0
- package/dist/providers/cloudflare.d.ts +12 -0
- package/dist/providers/cloudflare.js +1 -0
- package/dist/providers/faux.d.ts +55 -0
- package/dist/providers/faux.js +6 -0
- package/dist/providers/github-copilot-headers.d.ts +7 -0
- package/dist/providers/github-copilot-headers.js +1 -0
- package/dist/providers/google-shared.d.ts +69 -0
- package/dist/providers/google-shared.js +2 -0
- package/dist/providers/google-vertex.d.ts +14 -0
- package/dist/providers/google-vertex.js +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.js +1 -0
- package/dist/providers/images/openrouter.d.ts +2 -0
- package/dist/providers/images/openrouter.js +1 -0
- package/dist/providers/images/register-builtins.d.ts +3 -0
- package/dist/providers/images/register-builtins.js +1 -0
- package/dist/providers/mistral.d.ts +24 -0
- package/dist/providers/mistral.js +3 -0
- package/dist/providers/openai-codex-responses.d.ts +29 -0
- package/dist/providers/openai-codex-responses.js +7 -0
- package/dist/providers/openai-completions.d.ts +18 -0
- package/dist/providers/openai-completions.js +6 -0
- package/dist/providers/openai-prompt-cache.d.ts +2 -0
- package/dist/providers/openai-prompt-cache.js +1 -0
- package/dist/providers/openai-responses-shared.d.ts +17 -0
- package/dist/providers/openai-responses-shared.js +12 -0
- package/dist/providers/openai-responses.d.ts +12 -0
- package/dist/providers/openai-responses.js +1 -0
- package/dist/providers/register-builtins.d.ts +34 -0
- package/dist/providers/register-builtins.js +1 -0
- package/dist/providers/simple-options.d.ts +7 -0
- package/dist/providers/simple-options.js +1 -0
- package/dist/providers/transform-messages.d.ts +7 -0
- package/dist/providers/transform-messages.js +1 -0
- package/dist/session-resources.d.ts +3 -0
- package/dist/session-resources.js +1 -0
- package/dist/stream.d.ts +7 -0
- package/dist/stream.js +1 -0
- package/dist/types.d.ts +513 -0
- package/dist/types.js +0 -0
- package/dist/utils/abort-signals.d.ts +5 -0
- package/dist/utils/abort-signals.js +1 -0
- package/dist/utils/diagnostics.d.ts +18 -0
- package/dist/utils/diagnostics.js +1 -0
- package/dist/utils/event-stream.d.ts +20 -0
- package/dist/utils/event-stream.js +1 -0
- package/dist/utils/hash.d.ts +2 -0
- package/dist/utils/hash.js +1 -0
- package/dist/utils/headers.d.ts +1 -0
- package/dist/utils/headers.js +1 -0
- package/dist/utils/json-parse.d.ts +15 -0
- package/dist/utils/json-parse.js +2 -0
- package/dist/utils/node-http-proxy.d.ts +9 -0
- package/dist/utils/node-http-proxy.js +1 -0
- package/dist/utils/oauth/anthropic.d.ts +24 -0
- package/dist/utils/oauth/anthropic.js +1 -0
- package/dist/utils/oauth/device-code.d.ts +20 -0
- package/dist/utils/oauth/device-code.js +1 -0
- package/dist/utils/oauth/github-copilot.d.ts +29 -0
- package/dist/utils/oauth/github-copilot.js +1 -0
- package/dist/utils/oauth/index.d.ts +57 -0
- package/dist/utils/oauth/index.js +1 -0
- package/dist/utils/oauth/oauth-page.d.ts +2 -0
- package/dist/utils/oauth/oauth-page.js +74 -0
- package/dist/utils/oauth/openai-codex.d.ts +42 -0
- package/dist/utils/oauth/openai-codex.js +1 -0
- package/dist/utils/oauth/pkce.d.ts +12 -0
- package/dist/utils/oauth/pkce.js +1 -0
- package/dist/utils/oauth/types.d.ts +63 -0
- package/dist/utils/oauth/types.js +0 -0
- package/dist/utils/overflow.d.ts +56 -0
- package/dist/utils/overflow.js +1 -0
- package/dist/utils/sanitize-unicode.d.ts +21 -0
- package/dist/utils/sanitize-unicode.js +1 -0
- package/dist/utils/typebox-helpers.d.ts +16 -0
- package/dist/utils/typebox-helpers.js +1 -0
- package/dist/utils/validation.d.ts +17 -0
- package/dist/utils/validation.js +6 -0
- package/package.json +114 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Api, AssistantMessageEventStream, Context, Model, SimpleStreamOptions, StreamFunction, StreamOptions } from "./types.ts";
|
|
2
|
+
export type ApiStreamFunction = (model: Model<Api>, context: Context, options?: StreamOptions) => AssistantMessageEventStream;
|
|
3
|
+
export type ApiStreamSimpleFunction = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;
|
|
4
|
+
export interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {
|
|
5
|
+
api: TApi;
|
|
6
|
+
stream: StreamFunction<TApi, TOptions>;
|
|
7
|
+
streamSimple: StreamFunction<TApi, SimpleStreamOptions>;
|
|
8
|
+
}
|
|
9
|
+
interface ApiProviderInternal {
|
|
10
|
+
api: Api;
|
|
11
|
+
stream: ApiStreamFunction;
|
|
12
|
+
streamSimple: ApiStreamSimpleFunction;
|
|
13
|
+
}
|
|
14
|
+
export declare function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string): void;
|
|
15
|
+
export declare function getApiProvider(api: Api): ApiProviderInternal | undefined;
|
|
16
|
+
export declare function getApiProviders(): ApiProviderInternal[];
|
|
17
|
+
export declare function unregisterApiProviders(sourceId: string): void;
|
|
18
|
+
export declare function clearApiProviders(): void;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=Object.defineProperty;var i=(r,e)=>o(r,"name",{value:e,configurable:!0});const n=new Map;function s(r,e){return(t,p,a)=>{if(t.api!==r)throw new Error(`Mismatched api: ${t.api} expected ${r}`);return e(t,p,a)}}i(s,"wrapStream");function c(r,e){return(t,p,a)=>{if(t.api!==r)throw new Error(`Mismatched api: ${t.api} expected ${r}`);return e(t,p,a)}}i(c,"wrapStreamSimple");function f(r,e){n.set(r.api,{provider:{api:r.api,stream:s(r.api,r.stream),streamSimple:c(r.api,r.streamSimple)},sourceId:e})}i(f,"registerApiProvider");function m(r){return n.get(r)?.provider}i(m,"getApiProvider");function w(){return Array.from(n.values(),r=>r.provider)}i(w,"getApiProviders");function x(r){for(const[e,t]of n.entries())t.sourceId===r&&n.delete(e)}i(x,"unregisterApiProviders");function d(){n.clear()}i(d,"clearApiProviders");export{d as clearApiProviders,m as getApiProvider,w as getApiProviders,f as registerApiProvider,x as unregisterApiProviders};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const bedrockProviderModule: {
|
|
2
|
+
streamBedrock: import("./types.ts").StreamFunction<"bedrock-converse-stream", import("./providers/amazon-bedrock.ts").BedrockOptions>;
|
|
3
|
+
streamSimpleBedrock: import("./types.ts").StreamFunction<"bedrock-converse-stream", import("./types.ts").SimpleStreamOptions>;
|
|
4
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{streamBedrock as r,streamSimpleBedrock as e}from"./providers/amazon-bedrock.js";const d={streamBedrock:r,streamSimpleBedrock:e};export{d as bedrockProviderModule};
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
var h=Object.defineProperty;var t=(n,r)=>h(n,"name",{value:r,configurable:!0});import{createInterface as d}from"node:readline";import{existsSync as f,readFileSync as v,writeFileSync as $}from"fs";import{getOAuthProvider as x,getOAuthProviders as y}from"./utils/oauth/index.js";const p="auth.json",i=y();function u(n,r){return new Promise(e=>n.question(r,e))}t(u,"prompt");function w(){if(!f(p))return{};try{return JSON.parse(v(p,"utf-8"))}catch{return{}}}t(w,"loadAuth");function U(n){$(p,JSON.stringify(n,null,2),"utf-8")}t(U,"saveAuth");async function k(n){const r=x(n);r||(console.error(`Unknown provider: ${n}`),process.exit(1));const e=d({input:process.stdin,output:process.stdout}),s=t(c=>u(e,`${c} `),"promptFn");try{const c=await r.login({onAuth:t(o=>{console.log(`
|
|
3
|
+
Open this URL in your browser:
|
|
4
|
+
${o.url}`),o.instructions&&console.log(o.instructions),console.log()},"onAuth"),onDeviceCode:t(o=>{console.log(`
|
|
5
|
+
Open this URL in your browser:
|
|
6
|
+
${o.verificationUri}`),console.log(`Enter code: ${o.userCode}`),console.log()},"onDeviceCode"),onPrompt:t(async o=>await s(`${o.message}${o.placeholder?` (${o.placeholder})`:""}:`),"onPrompt"),onSelect:t(async o=>{console.log(`
|
|
7
|
+
${o.message}`);for(let a=0;a<o.options.length;a++)console.log(` ${a+1}. ${o.options[a].label}`);const g=await s(`Enter number (1-${o.options.length}):`),m=parseInt(g,10)-1;return o.options[m]?.id},"onSelect"),onProgress:t(o=>console.log(o),"onProgress")}),l=w();l[n]={type:"oauth",...c},U(l),console.log(`
|
|
8
|
+
Credentials saved to ${p}`)}finally{e.close()}}t(k,"login");async function A(){const n=process.argv.slice(2),r=n[0];if(!r||r==="help"||r==="--help"||r==="-h"){const e=i.map(s=>` ${s.id.padEnd(20)} ${s.name}`).join(`
|
|
9
|
+
`);console.log(`Usage: npx @openadapter/koda-ai <command> [provider]
|
|
10
|
+
|
|
11
|
+
Commands:
|
|
12
|
+
login [provider] Login to an OAuth provider
|
|
13
|
+
list List available providers
|
|
14
|
+
|
|
15
|
+
Providers:
|
|
16
|
+
${e}
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
npx @openadapter/koda-ai login # interactive provider selection
|
|
20
|
+
npx @openadapter/koda-ai login anthropic # login to specific provider
|
|
21
|
+
npx @openadapter/koda-ai list # list providers
|
|
22
|
+
`);return}if(r==="list"){console.log(`Available OAuth providers:
|
|
23
|
+
`);for(const e of i)console.log(` ${e.id.padEnd(20)} ${e.name}`);return}if(r==="login"){let e=n[1];if(!e){const s=d({input:process.stdin,output:process.stdout});console.log(`Select a provider:
|
|
24
|
+
`);for(let o=0;o<i.length;o++)console.log(` ${o+1}. ${i[o].name}`);console.log();const c=await u(s,`Enter number (1-${i.length}): `);s.close();const l=parseInt(c,10)-1;(l<0||l>=i.length)&&(console.error("Invalid selection"),process.exit(1)),e=i[l].id}i.some(s=>s.id===e)||(console.error(`Unknown provider: ${e}`),console.error("Use 'npx @openadapter/koda-ai list' to see available providers"),process.exit(1)),console.log(`Logging in to ${e}...`),await k(e);return}console.error(`Unknown command: ${r}`),console.error("Use 'npx @openadapter/koda-ai --help' for usage"),process.exit(1)}t(A,"main"),A().catch(n=>{console.error("Error:",n.message),process.exit(1)});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { KnownProvider } from "./types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Find configured environment variables that can provide an API key for a provider.
|
|
4
|
+
*
|
|
5
|
+
* This only reports actual API key variables. It intentionally excludes ambient
|
|
6
|
+
* credential sources such as AWS profiles, AWS IAM credentials, and Google
|
|
7
|
+
* Application Default Credentials.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findEnvKeys(provider: KnownProvider): string[] | undefined;
|
|
10
|
+
export declare function findEnvKeys(provider: string): string[] | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
|
|
13
|
+
*
|
|
14
|
+
* Will not return API keys for providers that require OAuth tokens.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getEnvApiKey(provider: KnownProvider): string | undefined;
|
|
17
|
+
export declare function getEnvApiKey(provider: string): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var u=Object.defineProperty;var t=(e,n)=>u(e,"name",{value:n,configurable:!0});var f=function(e,n){return typeof e=="string"&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(E,o,s,a,P){return o?n?".jsx":".js":s&&(!a||!P)?E:s+a+"."+P.toLowerCase()+"js"}):e};let r=null,A=null,c=null;const O=t(e=>import(f(e)),"dynamicImport"),C="node:fs",l="node:os",N="node:path";typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&(O(C).then(e=>{r=e.existsSync}),O(l).then(e=>{A=e.homedir}),O(N).then(e=>{c=e.join}));let I=null;function _(e){if(process.versions?.bun&&!(typeof process>"u")&&!(Object.keys(process.env).length>0)){if(I===null){I=new Map;try{const{readFileSync:n}=require("node:fs"),E=n("/proc/self/environ","utf-8");for(const o of E.split("\0")){const s=o.indexOf("=");s>0&&I.set(o.slice(0,s),o.slice(s+1))}}catch{}}return I.get(e)}}t(_,"getProcEnv");let i=null;function K(){if(i===null){if(!r||!A||!c)return typeof process<"u"&&(process.versions?.node||process.versions?.bun)||(i=!1),!1;const e=process.env.GOOGLE_APPLICATION_CREDENTIALS||_("GOOGLE_APPLICATION_CREDENTIALS");e?i=r(e):i=r(c(A(),".config","gcloud","application_default_credentials.json"))}return i}t(K,"hasVertexAdcCredentials");function d(e){if(e==="github-copilot")return["COPILOT_GITHUB_TOKEN"];if(e==="anthropic")return["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"];const E={openai:"OPENAI_API_KEY","azure-openai-responses":"AZURE_OPENAI_API_KEY",nvidia:"NVIDIA_API_KEY",deepseek:"DEEPSEEK_API_KEY",google:"GEMINI_API_KEY","google-vertex":"GOOGLE_CLOUD_API_KEY",groq:"GROQ_API_KEY",cerebras:"CEREBRAS_API_KEY",xai:"XAI_API_KEY",openrouter:"OPENROUTER_API_KEY","vercel-ai-gateway":"AI_GATEWAY_API_KEY",zai:"ZAI_API_KEY",mistral:"MISTRAL_API_KEY",minimax:"MINIMAX_API_KEY","minimax-cn":"MINIMAX_CN_API_KEY",moonshotai:"MOONSHOT_API_KEY","moonshotai-cn":"MOONSHOT_API_KEY",huggingface:"HF_TOKEN",fireworks:"FIREWORKS_API_KEY",together:"TOGETHER_API_KEY",opencode:"OPENCODE_API_KEY","opencode-go":"OPENCODE_API_KEY","kimi-coding":"KIMI_API_KEY","cloudflare-workers-ai":"CLOUDFLARE_API_KEY","cloudflare-ai-gateway":"CLOUDFLARE_API_KEY",xiaomi:"XIAOMI_API_KEY","xiaomi-token-plan-cn":"XIAOMI_TOKEN_PLAN_CN_API_KEY","xiaomi-token-plan-ams":"XIAOMI_TOKEN_PLAN_AMS_API_KEY","xiaomi-token-plan-sgp":"XIAOMI_TOKEN_PLAN_SGP_API_KEY"}[e];return E?[E]:void 0}t(d,"getApiKeyEnvVars");function p(e){const n=d(e);if(!n)return;const E=n.filter(o=>!!process.env[o]||!!_(o));return E.length>0?E:void 0}t(p,"findEnvKeys");function T(e){const n=p(e);if(n?.[0])return process.env[n[0]]||_(n[0]);if(e==="google-vertex"){const E=K(),o=!!(process.env.GOOGLE_CLOUD_PROJECT||process.env.GCLOUD_PROJECT||_("GOOGLE_CLOUD_PROJECT")||_("GCLOUD_PROJECT")),s=!!(process.env.GOOGLE_CLOUD_LOCATION||_("GOOGLE_CLOUD_LOCATION"));if(E&&o&&s)return"<authenticated>"}if(e==="amazon-bedrock"&&(process.env.AWS_PROFILE||process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY||process.env.AWS_BEARER_TOKEN_BEDROCK||process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI||process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI||process.env.AWS_WEB_IDENTITY_TOKEN_FILE||_("AWS_PROFILE")||_("AWS_ACCESS_KEY_ID")&&_("AWS_SECRET_ACCESS_KEY")||_("AWS_BEARER_TOKEN_BEDROCK")||_("AWS_CONTAINER_CREDENTIALS_RELATIVE_URI")||_("AWS_CONTAINER_CREDENTIALS_FULL_URI")||_("AWS_WEB_IDENTITY_TOKEN_FILE")))return"<authenticated>"}t(T,"getEnvApiKey");export{p as findEnvKeys,T as getEnvApiKey};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IMAGE_MODELS } from "./image-models.generated.ts";
|
|
2
|
+
import type { ImagesApi, ImagesModel, KnownImagesProvider } from "./types.ts";
|
|
3
|
+
type ImageModelApi<TProvider extends KnownImagesProvider, TModelId extends keyof (typeof IMAGE_MODELS)[TProvider]> = (typeof IMAGE_MODELS)[TProvider][TModelId] extends {
|
|
4
|
+
api: infer TApi;
|
|
5
|
+
} ? TApi extends ImagesApi ? TApi : never : never;
|
|
6
|
+
export declare function getImageModel<TProvider extends KnownImagesProvider, TModelId extends keyof (typeof IMAGE_MODELS)[TProvider]>(provider: TProvider, modelId: TModelId): ImagesModel<ImageModelApi<TProvider, TModelId>>;
|
|
7
|
+
export declare function getImageProviders(): KnownImagesProvider[];
|
|
8
|
+
export declare function getImageModels<TProvider extends KnownImagesProvider>(provider: TProvider): ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[];
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
export declare const IMAGE_MODELS: {
|
|
2
|
+
readonly openrouter: {
|
|
3
|
+
readonly "black-forest-labs/flux.2-flex": {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
api: "openrouter-images";
|
|
7
|
+
provider: string;
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
input: ("image" | "text")[];
|
|
10
|
+
output: "image"[];
|
|
11
|
+
cost: {
|
|
12
|
+
input: number;
|
|
13
|
+
output: number;
|
|
14
|
+
cacheRead: number;
|
|
15
|
+
cacheWrite: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
readonly "black-forest-labs/flux.2-klein-4b": {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
api: "openrouter-images";
|
|
22
|
+
provider: string;
|
|
23
|
+
baseUrl: string;
|
|
24
|
+
input: ("image" | "text")[];
|
|
25
|
+
output: "image"[];
|
|
26
|
+
cost: {
|
|
27
|
+
input: number;
|
|
28
|
+
output: number;
|
|
29
|
+
cacheRead: number;
|
|
30
|
+
cacheWrite: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
readonly "black-forest-labs/flux.2-max": {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
api: "openrouter-images";
|
|
37
|
+
provider: string;
|
|
38
|
+
baseUrl: string;
|
|
39
|
+
input: ("image" | "text")[];
|
|
40
|
+
output: "image"[];
|
|
41
|
+
cost: {
|
|
42
|
+
input: number;
|
|
43
|
+
output: number;
|
|
44
|
+
cacheRead: number;
|
|
45
|
+
cacheWrite: number;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
readonly "black-forest-labs/flux.2-pro": {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
api: "openrouter-images";
|
|
52
|
+
provider: string;
|
|
53
|
+
baseUrl: string;
|
|
54
|
+
input: ("image" | "text")[];
|
|
55
|
+
output: "image"[];
|
|
56
|
+
cost: {
|
|
57
|
+
input: number;
|
|
58
|
+
output: number;
|
|
59
|
+
cacheRead: number;
|
|
60
|
+
cacheWrite: number;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
readonly "bytedance-seed/seedream-4.5": {
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
api: "openrouter-images";
|
|
67
|
+
provider: string;
|
|
68
|
+
baseUrl: string;
|
|
69
|
+
input: ("image" | "text")[];
|
|
70
|
+
output: "image"[];
|
|
71
|
+
cost: {
|
|
72
|
+
input: number;
|
|
73
|
+
output: number;
|
|
74
|
+
cacheRead: number;
|
|
75
|
+
cacheWrite: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly "google/gemini-2.5-flash-image": {
|
|
79
|
+
id: string;
|
|
80
|
+
name: string;
|
|
81
|
+
api: "openrouter-images";
|
|
82
|
+
provider: string;
|
|
83
|
+
baseUrl: string;
|
|
84
|
+
input: ("image" | "text")[];
|
|
85
|
+
output: ("image" | "text")[];
|
|
86
|
+
cost: {
|
|
87
|
+
input: number;
|
|
88
|
+
output: number;
|
|
89
|
+
cacheRead: number;
|
|
90
|
+
cacheWrite: number;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
readonly "google/gemini-3-pro-image-preview": {
|
|
94
|
+
id: string;
|
|
95
|
+
name: string;
|
|
96
|
+
api: "openrouter-images";
|
|
97
|
+
provider: string;
|
|
98
|
+
baseUrl: string;
|
|
99
|
+
input: ("image" | "text")[];
|
|
100
|
+
output: ("image" | "text")[];
|
|
101
|
+
cost: {
|
|
102
|
+
input: number;
|
|
103
|
+
output: number;
|
|
104
|
+
cacheRead: number;
|
|
105
|
+
cacheWrite: number;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
readonly "google/gemini-3.1-flash-image-preview": {
|
|
109
|
+
id: string;
|
|
110
|
+
name: string;
|
|
111
|
+
api: "openrouter-images";
|
|
112
|
+
provider: string;
|
|
113
|
+
baseUrl: string;
|
|
114
|
+
input: ("image" | "text")[];
|
|
115
|
+
output: ("image" | "text")[];
|
|
116
|
+
cost: {
|
|
117
|
+
input: number;
|
|
118
|
+
output: number;
|
|
119
|
+
cacheRead: number;
|
|
120
|
+
cacheWrite: number;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
readonly "microsoft/mai-image-2.5": {
|
|
124
|
+
id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
api: "openrouter-images";
|
|
127
|
+
provider: string;
|
|
128
|
+
baseUrl: string;
|
|
129
|
+
input: ("image" | "text")[];
|
|
130
|
+
output: "image"[];
|
|
131
|
+
cost: {
|
|
132
|
+
input: number;
|
|
133
|
+
output: number;
|
|
134
|
+
cacheRead: number;
|
|
135
|
+
cacheWrite: number;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
readonly "openai/gpt-5-image": {
|
|
139
|
+
id: string;
|
|
140
|
+
name: string;
|
|
141
|
+
api: "openrouter-images";
|
|
142
|
+
provider: string;
|
|
143
|
+
baseUrl: string;
|
|
144
|
+
input: ("image" | "text")[];
|
|
145
|
+
output: ("image" | "text")[];
|
|
146
|
+
cost: {
|
|
147
|
+
input: number;
|
|
148
|
+
output: number;
|
|
149
|
+
cacheRead: number;
|
|
150
|
+
cacheWrite: number;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
readonly "openai/gpt-5-image-mini": {
|
|
154
|
+
id: string;
|
|
155
|
+
name: string;
|
|
156
|
+
api: "openrouter-images";
|
|
157
|
+
provider: string;
|
|
158
|
+
baseUrl: string;
|
|
159
|
+
input: ("image" | "text")[];
|
|
160
|
+
output: ("image" | "text")[];
|
|
161
|
+
cost: {
|
|
162
|
+
input: number;
|
|
163
|
+
output: number;
|
|
164
|
+
cacheRead: number;
|
|
165
|
+
cacheWrite: number;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
readonly "openai/gpt-5.4-image-2": {
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
api: "openrouter-images";
|
|
172
|
+
provider: string;
|
|
173
|
+
baseUrl: string;
|
|
174
|
+
input: ("image" | "text")[];
|
|
175
|
+
output: ("image" | "text")[];
|
|
176
|
+
cost: {
|
|
177
|
+
input: number;
|
|
178
|
+
output: number;
|
|
179
|
+
cacheRead: number;
|
|
180
|
+
cacheWrite: number;
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
readonly "openrouter/auto": {
|
|
184
|
+
id: string;
|
|
185
|
+
name: string;
|
|
186
|
+
api: "openrouter-images";
|
|
187
|
+
provider: string;
|
|
188
|
+
baseUrl: string;
|
|
189
|
+
input: ("image" | "text")[];
|
|
190
|
+
output: ("image" | "text")[];
|
|
191
|
+
cost: {
|
|
192
|
+
input: number;
|
|
193
|
+
output: number;
|
|
194
|
+
cacheRead: number;
|
|
195
|
+
cacheWrite: number;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
readonly "recraft/recraft-v3": {
|
|
199
|
+
id: string;
|
|
200
|
+
name: string;
|
|
201
|
+
api: "openrouter-images";
|
|
202
|
+
provider: string;
|
|
203
|
+
baseUrl: string;
|
|
204
|
+
input: ("image" | "text")[];
|
|
205
|
+
output: "image"[];
|
|
206
|
+
cost: {
|
|
207
|
+
input: number;
|
|
208
|
+
output: number;
|
|
209
|
+
cacheRead: number;
|
|
210
|
+
cacheWrite: number;
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
readonly "recraft/recraft-v4": {
|
|
214
|
+
id: string;
|
|
215
|
+
name: string;
|
|
216
|
+
api: "openrouter-images";
|
|
217
|
+
provider: string;
|
|
218
|
+
baseUrl: string;
|
|
219
|
+
input: ("image" | "text")[];
|
|
220
|
+
output: "image"[];
|
|
221
|
+
cost: {
|
|
222
|
+
input: number;
|
|
223
|
+
output: number;
|
|
224
|
+
cacheRead: number;
|
|
225
|
+
cacheWrite: number;
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
readonly "recraft/recraft-v4-pro": {
|
|
229
|
+
id: string;
|
|
230
|
+
name: string;
|
|
231
|
+
api: "openrouter-images";
|
|
232
|
+
provider: string;
|
|
233
|
+
baseUrl: string;
|
|
234
|
+
input: ("image" | "text")[];
|
|
235
|
+
output: "image"[];
|
|
236
|
+
cost: {
|
|
237
|
+
input: number;
|
|
238
|
+
output: number;
|
|
239
|
+
cacheRead: number;
|
|
240
|
+
cacheWrite: number;
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
readonly "recraft/recraft-v4-pro-vector": {
|
|
244
|
+
id: string;
|
|
245
|
+
name: string;
|
|
246
|
+
api: "openrouter-images";
|
|
247
|
+
provider: string;
|
|
248
|
+
baseUrl: string;
|
|
249
|
+
input: ("image" | "text")[];
|
|
250
|
+
output: "image"[];
|
|
251
|
+
cost: {
|
|
252
|
+
input: number;
|
|
253
|
+
output: number;
|
|
254
|
+
cacheRead: number;
|
|
255
|
+
cacheWrite: number;
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
readonly "recraft/recraft-v4-vector": {
|
|
259
|
+
id: string;
|
|
260
|
+
name: string;
|
|
261
|
+
api: "openrouter-images";
|
|
262
|
+
provider: string;
|
|
263
|
+
baseUrl: string;
|
|
264
|
+
input: ("image" | "text")[];
|
|
265
|
+
output: "image"[];
|
|
266
|
+
cost: {
|
|
267
|
+
input: number;
|
|
268
|
+
output: number;
|
|
269
|
+
cacheRead: number;
|
|
270
|
+
cacheWrite: number;
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
readonly "recraft/recraft-v4.1": {
|
|
274
|
+
id: string;
|
|
275
|
+
name: string;
|
|
276
|
+
api: "openrouter-images";
|
|
277
|
+
provider: string;
|
|
278
|
+
baseUrl: string;
|
|
279
|
+
input: ("image" | "text")[];
|
|
280
|
+
output: "image"[];
|
|
281
|
+
cost: {
|
|
282
|
+
input: number;
|
|
283
|
+
output: number;
|
|
284
|
+
cacheRead: number;
|
|
285
|
+
cacheWrite: number;
|
|
286
|
+
};
|
|
287
|
+
};
|
|
288
|
+
readonly "recraft/recraft-v4.1-pro": {
|
|
289
|
+
id: string;
|
|
290
|
+
name: string;
|
|
291
|
+
api: "openrouter-images";
|
|
292
|
+
provider: string;
|
|
293
|
+
baseUrl: string;
|
|
294
|
+
input: ("image" | "text")[];
|
|
295
|
+
output: "image"[];
|
|
296
|
+
cost: {
|
|
297
|
+
input: number;
|
|
298
|
+
output: number;
|
|
299
|
+
cacheRead: number;
|
|
300
|
+
cacheWrite: number;
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
readonly "recraft/recraft-v4.1-pro-vector": {
|
|
304
|
+
id: string;
|
|
305
|
+
name: string;
|
|
306
|
+
api: "openrouter-images";
|
|
307
|
+
provider: string;
|
|
308
|
+
baseUrl: string;
|
|
309
|
+
input: ("image" | "text")[];
|
|
310
|
+
output: "image"[];
|
|
311
|
+
cost: {
|
|
312
|
+
input: number;
|
|
313
|
+
output: number;
|
|
314
|
+
cacheRead: number;
|
|
315
|
+
cacheWrite: number;
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
readonly "recraft/recraft-v4.1-utility": {
|
|
319
|
+
id: string;
|
|
320
|
+
name: string;
|
|
321
|
+
api: "openrouter-images";
|
|
322
|
+
provider: string;
|
|
323
|
+
baseUrl: string;
|
|
324
|
+
input: ("image" | "text")[];
|
|
325
|
+
output: "image"[];
|
|
326
|
+
cost: {
|
|
327
|
+
input: number;
|
|
328
|
+
output: number;
|
|
329
|
+
cacheRead: number;
|
|
330
|
+
cacheWrite: number;
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
readonly "recraft/recraft-v4.1-utility-pro": {
|
|
334
|
+
id: string;
|
|
335
|
+
name: string;
|
|
336
|
+
api: "openrouter-images";
|
|
337
|
+
provider: string;
|
|
338
|
+
baseUrl: string;
|
|
339
|
+
input: ("image" | "text")[];
|
|
340
|
+
output: "image"[];
|
|
341
|
+
cost: {
|
|
342
|
+
input: number;
|
|
343
|
+
output: number;
|
|
344
|
+
cacheRead: number;
|
|
345
|
+
cacheWrite: number;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
readonly "recraft/recraft-v4.1-vector": {
|
|
349
|
+
id: string;
|
|
350
|
+
name: string;
|
|
351
|
+
api: "openrouter-images";
|
|
352
|
+
provider: string;
|
|
353
|
+
baseUrl: string;
|
|
354
|
+
input: ("image" | "text")[];
|
|
355
|
+
output: "image"[];
|
|
356
|
+
cost: {
|
|
357
|
+
input: number;
|
|
358
|
+
output: number;
|
|
359
|
+
cacheRead: number;
|
|
360
|
+
cacheWrite: number;
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
readonly "sourceful/riverflow-v2-fast": {
|
|
364
|
+
id: string;
|
|
365
|
+
name: string;
|
|
366
|
+
api: "openrouter-images";
|
|
367
|
+
provider: string;
|
|
368
|
+
baseUrl: string;
|
|
369
|
+
input: ("image" | "text")[];
|
|
370
|
+
output: "image"[];
|
|
371
|
+
cost: {
|
|
372
|
+
input: number;
|
|
373
|
+
output: number;
|
|
374
|
+
cacheRead: number;
|
|
375
|
+
cacheWrite: number;
|
|
376
|
+
};
|
|
377
|
+
};
|
|
378
|
+
readonly "sourceful/riverflow-v2-fast-preview": {
|
|
379
|
+
id: string;
|
|
380
|
+
name: string;
|
|
381
|
+
api: "openrouter-images";
|
|
382
|
+
provider: string;
|
|
383
|
+
baseUrl: string;
|
|
384
|
+
input: ("image" | "text")[];
|
|
385
|
+
output: "image"[];
|
|
386
|
+
cost: {
|
|
387
|
+
input: number;
|
|
388
|
+
output: number;
|
|
389
|
+
cacheRead: number;
|
|
390
|
+
cacheWrite: number;
|
|
391
|
+
};
|
|
392
|
+
};
|
|
393
|
+
readonly "sourceful/riverflow-v2-max-preview": {
|
|
394
|
+
id: string;
|
|
395
|
+
name: string;
|
|
396
|
+
api: "openrouter-images";
|
|
397
|
+
provider: string;
|
|
398
|
+
baseUrl: string;
|
|
399
|
+
input: ("image" | "text")[];
|
|
400
|
+
output: "image"[];
|
|
401
|
+
cost: {
|
|
402
|
+
input: number;
|
|
403
|
+
output: number;
|
|
404
|
+
cacheRead: number;
|
|
405
|
+
cacheWrite: number;
|
|
406
|
+
};
|
|
407
|
+
};
|
|
408
|
+
readonly "sourceful/riverflow-v2-pro": {
|
|
409
|
+
id: string;
|
|
410
|
+
name: string;
|
|
411
|
+
api: "openrouter-images";
|
|
412
|
+
provider: string;
|
|
413
|
+
baseUrl: string;
|
|
414
|
+
input: ("image" | "text")[];
|
|
415
|
+
output: "image"[];
|
|
416
|
+
cost: {
|
|
417
|
+
input: number;
|
|
418
|
+
output: number;
|
|
419
|
+
cacheRead: number;
|
|
420
|
+
cacheWrite: number;
|
|
421
|
+
};
|
|
422
|
+
};
|
|
423
|
+
readonly "sourceful/riverflow-v2-standard-preview": {
|
|
424
|
+
id: string;
|
|
425
|
+
name: string;
|
|
426
|
+
api: "openrouter-images";
|
|
427
|
+
provider: string;
|
|
428
|
+
baseUrl: string;
|
|
429
|
+
input: ("image" | "text")[];
|
|
430
|
+
output: "image"[];
|
|
431
|
+
cost: {
|
|
432
|
+
input: number;
|
|
433
|
+
output: number;
|
|
434
|
+
cacheRead: number;
|
|
435
|
+
cacheWrite: number;
|
|
436
|
+
};
|
|
437
|
+
};
|
|
438
|
+
readonly "x-ai/grok-imagine-image-quality": {
|
|
439
|
+
id: string;
|
|
440
|
+
name: string;
|
|
441
|
+
api: "openrouter-images";
|
|
442
|
+
provider: string;
|
|
443
|
+
baseUrl: string;
|
|
444
|
+
input: ("image" | "text")[];
|
|
445
|
+
output: "image"[];
|
|
446
|
+
cost: {
|
|
447
|
+
input: number;
|
|
448
|
+
output: number;
|
|
449
|
+
cacheRead: number;
|
|
450
|
+
cacheWrite: number;
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={openrouter:{"black-forest-labs/flux.2-flex":{id:"black-forest-labs/flux.2-flex",name:"Black Forest Labs: FLUX.2 Flex",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-klein-4b":{id:"black-forest-labs/flux.2-klein-4b",name:"Black Forest Labs: FLUX.2 Klein 4B",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-max":{id:"black-forest-labs/flux.2-max",name:"Black Forest Labs: FLUX.2 Max",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-pro":{id:"black-forest-labs/flux.2-pro",name:"Black Forest Labs: FLUX.2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"bytedance-seed/seedream-4.5":{id:"bytedance-seed/seedream-4.5",name:"ByteDance Seed: Seedream 4.5",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"google/gemini-2.5-flash-image":{id:"google/gemini-2.5-flash-image",name:"Google: Nano Banana (Gemini 2.5 Flash Image)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:.08333333333333334}},"google/gemini-3-pro-image-preview":{id:"google/gemini-3-pro-image-preview",name:"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375}},"google/gemini-3.1-flash-image-preview":{id:"google/gemini-3.1-flash-image-preview",name:"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:.5,output:3,cacheRead:0,cacheWrite:0}},"microsoft/mai-image-2.5":{id:"microsoft/mai-image-2.5",name:"Microsoft: MAI-Image-2.5",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:5,output:0,cacheRead:0,cacheWrite:0}},"openai/gpt-5-image":{id:"openai/gpt-5-image",name:"OpenAI: GPT-5 Image",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:10,output:10,cacheRead:1.25,cacheWrite:0}},"openai/gpt-5-image-mini":{id:"openai/gpt-5-image-mini",name:"OpenAI: GPT-5 Image Mini",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2.5,output:2,cacheRead:.25,cacheWrite:0}},"openai/gpt-5.4-image-2":{id:"openai/gpt-5.4-image-2",name:"OpenAI: GPT-5.4 Image 2",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:8,output:15,cacheRead:2,cacheWrite:0}},"openrouter/auto":{id:"openrouter/auto",name:"Auto Router",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["text","image"],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0}},"recraft/recraft-v3":{id:"recraft/recraft-v3",name:"Recraft: Recraft V3",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4":{id:"recraft/recraft-v4",name:"Recraft: Recraft V4",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro":{id:"recraft/recraft-v4-pro",name:"Recraft: Recraft V4 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro-vector":{id:"recraft/recraft-v4-pro-vector",name:"Recraft: Recraft V4 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-vector":{id:"recraft/recraft-v4-vector",name:"Recraft: Recraft V4 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1":{id:"recraft/recraft-v4.1",name:"Recraft: Recraft V4.1",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro":{id:"recraft/recraft-v4.1-pro",name:"Recraft: Recraft V4.1 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro-vector":{id:"recraft/recraft-v4.1-pro-vector",name:"Recraft: Recraft V4.1 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility":{id:"recraft/recraft-v4.1-utility",name:"Recraft: Recraft V4.1 Utility",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility-pro":{id:"recraft/recraft-v4.1-utility-pro",name:"Recraft: Recraft V4.1 Utility Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-vector":{id:"recraft/recraft-v4.1-vector",name:"Recraft: Recraft V4.1 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast":{id:"sourceful/riverflow-v2-fast",name:"Sourceful: Riverflow V2 Fast",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast-preview":{id:"sourceful/riverflow-v2-fast-preview",name:"Sourceful: Riverflow V2 Fast Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-max-preview":{id:"sourceful/riverflow-v2-max-preview",name:"Sourceful: Riverflow V2 Max Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-pro":{id:"sourceful/riverflow-v2-pro",name:"Sourceful: Riverflow V2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-standard-preview":{id:"sourceful/riverflow-v2-standard-preview",name:"Sourceful: Riverflow V2 Standard Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"x-ai/grok-imagine-image-quality":{id:"x-ai/grok-imagine-image-quality",name:"xAI: Grok Imagine Image Quality",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}}}};export{e as IMAGE_MODELS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var i=Object.defineProperty;var r=(o,e)=>i(o,"name",{value:e,configurable:!0});import{IMAGE_MODELS as c}from"./image-models.generated.js";const t=new Map;for(const[o,e]of Object.entries(c)){const s=new Map;for(const[n,d]of Object.entries(e))s.set(n,d);t.set(o,s)}function f(o,e){return t.get(o)?.get(e)}r(f,"getImageModel");function l(){return Array.from(t.keys())}r(l,"getImageProviders");function p(o){const e=t.get(o);return e?Array.from(e.values()):[]}r(p,"getImageModels");export{f as getImageModel,p as getImageModels,l as getImageProviders};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AssistantImages, ImagesApi, ImagesContext, ImagesFunction, ImagesModel, ImagesOptions } from "./types.ts";
|
|
2
|
+
export type ImagesApiFunction = (model: ImagesModel<ImagesApi>, context: ImagesContext, options?: ImagesOptions) => Promise<AssistantImages>;
|
|
3
|
+
export interface ImagesApiProvider<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> {
|
|
4
|
+
api: TApi;
|
|
5
|
+
generateImages: ImagesFunction<TApi, TOptions>;
|
|
6
|
+
}
|
|
7
|
+
interface ImagesApiProviderInternal {
|
|
8
|
+
api: ImagesApi;
|
|
9
|
+
generateImages: ImagesApiFunction;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(provider: ImagesApiProvider<TApi, TOptions>, sourceId?: string): void;
|
|
12
|
+
export declare function getImagesApiProvider(api: ImagesApi): ImagesApiProviderInternal | undefined;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=Object.defineProperty;var t=(e,r)=>g(e,"name",{value:r,configurable:!0});const a=new Map;function s(e,r){return(i,n,p)=>{if(i.api!==e)throw new Error(`Mismatched api: ${i.api} expected ${e}`);return r(i,n,p)}}t(s,"wrapGenerateImages");function c(e,r){a.set(e.api,{provider:{api:e.api,generateImages:s(e.api,e.generateImages)},sourceId:r})}t(c,"registerImagesApiProvider");function u(e){return a.get(e)?.provider}t(u,"getImagesApiProvider");export{u as getImagesApiProvider,c as registerImagesApiProvider};
|
package/dist/images.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import "./providers/images/register-builtins.ts";
|
|
2
|
+
import type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ProviderImagesOptions } from "./types.ts";
|
|
3
|
+
export declare function generateImages<TApi extends ImagesApi>(model: ImagesModel<TApi>, context: ImagesContext, options?: ProviderImagesOptions): Promise<AssistantImages>;
|
package/dist/images.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t=Object.defineProperty;var o=(r,e)=>t(r,"name",{value:e,configurable:!0});import"./providers/images/register-builtins.js";import{getImagesApiProvider as n}from"./images-api-registry.js";function p(r){const e=n(r);if(!e)throw new Error(`No API provider registered for api: ${r}`);return e}o(p,"resolveImagesApiProvider");async function d(r,e,i){return p(r.api).generateImages(r,e,i)}o(d,"generateImages");export{d as generateImages};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type { Static, TSchema } from "typebox";
|
|
2
|
+
export { Type } from "typebox";
|
|
3
|
+
export * from "./api-registry.ts";
|
|
4
|
+
export * from "./env-api-keys.ts";
|
|
5
|
+
export * from "./image-models.ts";
|
|
6
|
+
export * from "./images.ts";
|
|
7
|
+
export * from "./images-api-registry.ts";
|
|
8
|
+
export * from "./models.ts";
|
|
9
|
+
export type { BedrockOptions, BedrockThinkingDisplay } from "./providers/amazon-bedrock.ts";
|
|
10
|
+
export type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from "./providers/anthropic.ts";
|
|
11
|
+
export type { AzureOpenAIResponsesOptions } from "./providers/azure-openai-responses.ts";
|
|
12
|
+
export * from "./providers/faux.ts";
|
|
13
|
+
export type { GoogleOptions } from "./providers/google.ts";
|
|
14
|
+
export type { GoogleThinkingLevel } from "./providers/google-shared.ts";
|
|
15
|
+
export type { GoogleVertexOptions } from "./providers/google-vertex.ts";
|
|
16
|
+
export * from "./providers/images/register-builtins.ts";
|
|
17
|
+
export type { MistralOptions } from "./providers/mistral.ts";
|
|
18
|
+
export type { OpenAICodexResponsesOptions, OpenAICodexWebSocketDebugStats, } from "./providers/openai-codex-responses.ts";
|
|
19
|
+
export type { OpenAICompletionsOptions } from "./providers/openai-completions.ts";
|
|
20
|
+
export type { OpenAIResponsesOptions } from "./providers/openai-responses.ts";
|
|
21
|
+
export * from "./providers/register-builtins.ts";
|
|
22
|
+
export * from "./session-resources.ts";
|
|
23
|
+
export * from "./stream.ts";
|
|
24
|
+
export * from "./types.ts";
|
|
25
|
+
export * from "./utils/diagnostics.ts";
|
|
26
|
+
export * from "./utils/event-stream.ts";
|
|
27
|
+
export * from "./utils/json-parse.ts";
|
|
28
|
+
export type { OAuthAuthInfo, OAuthCredentials, OAuthDeviceCodeInfo, OAuthLoginCallbacks, OAuthPrompt, OAuthProvider, OAuthProviderId, OAuthProviderInfo, OAuthProviderInterface, OAuthSelectOption, OAuthSelectPrompt, } from "./utils/oauth/types.ts";
|
|
29
|
+
export * from "./utils/overflow.ts";
|
|
30
|
+
export * from "./utils/typebox-helpers.ts";
|
|
31
|
+
export * from "./utils/validation.ts";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Type as e}from"typebox";export*from"./api-registry.js";export*from"./env-api-keys.js";export*from"./image-models.js";export*from"./images.js";export*from"./images-api-registry.js";export*from"./models.js";export*from"./providers/faux.js";export*from"./providers/images/register-builtins.js";export*from"./providers/register-builtins.js";export*from"./session-resources.js";export*from"./stream.js";export*from"./types.js";export*from"./utils/diagnostics.js";export*from"./utils/event-stream.js";export*from"./utils/json-parse.js";export*from"./utils/overflow.js";export*from"./utils/typebox-helpers.js";export*from"./utils/validation.js";export{e as Type};
|