@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.
Files changed (110) hide show
  1. package/README.md +1385 -0
  2. package/dist/api-registry.d.ts +19 -0
  3. package/dist/api-registry.js +1 -0
  4. package/dist/bedrock-provider.d.ts +4 -0
  5. package/dist/bedrock-provider.js +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +24 -0
  8. package/dist/env-api-keys.d.ts +17 -0
  9. package/dist/env-api-keys.js +1 -0
  10. package/dist/image-models.d.ts +9 -0
  11. package/dist/image-models.generated.d.ts +454 -0
  12. package/dist/image-models.generated.js +1 -0
  13. package/dist/image-models.js +1 -0
  14. package/dist/images-api-registry.d.ts +13 -0
  15. package/dist/images-api-registry.js +1 -0
  16. package/dist/images.d.ts +3 -0
  17. package/dist/images.js +1 -0
  18. package/dist/index.d.ts +31 -0
  19. package/dist/index.js +1 -0
  20. package/dist/models.d.ts +17 -0
  21. package/dist/models.generated.d.ts +18136 -0
  22. package/dist/models.generated.js +1 -0
  23. package/dist/models.js +1 -0
  24. package/dist/oauth.d.ts +1 -0
  25. package/dist/oauth.js +1 -0
  26. package/dist/providers/amazon-bedrock.d.ts +37 -0
  27. package/dist/providers/amazon-bedrock.js +1 -0
  28. package/dist/providers/anthropic.d.ts +70 -0
  29. package/dist/providers/anthropic.js +5 -0
  30. package/dist/providers/azure-openai-responses.d.ts +14 -0
  31. package/dist/providers/azure-openai-responses.js +1 -0
  32. package/dist/providers/cloudflare.d.ts +12 -0
  33. package/dist/providers/cloudflare.js +1 -0
  34. package/dist/providers/faux.d.ts +55 -0
  35. package/dist/providers/faux.js +6 -0
  36. package/dist/providers/github-copilot-headers.d.ts +7 -0
  37. package/dist/providers/github-copilot-headers.js +1 -0
  38. package/dist/providers/google-shared.d.ts +69 -0
  39. package/dist/providers/google-shared.js +2 -0
  40. package/dist/providers/google-vertex.d.ts +14 -0
  41. package/dist/providers/google-vertex.js +1 -0
  42. package/dist/providers/google.d.ts +12 -0
  43. package/dist/providers/google.js +1 -0
  44. package/dist/providers/images/openrouter.d.ts +2 -0
  45. package/dist/providers/images/openrouter.js +1 -0
  46. package/dist/providers/images/register-builtins.d.ts +3 -0
  47. package/dist/providers/images/register-builtins.js +1 -0
  48. package/dist/providers/mistral.d.ts +24 -0
  49. package/dist/providers/mistral.js +3 -0
  50. package/dist/providers/openai-codex-responses.d.ts +29 -0
  51. package/dist/providers/openai-codex-responses.js +7 -0
  52. package/dist/providers/openai-completions.d.ts +18 -0
  53. package/dist/providers/openai-completions.js +6 -0
  54. package/dist/providers/openai-prompt-cache.d.ts +2 -0
  55. package/dist/providers/openai-prompt-cache.js +1 -0
  56. package/dist/providers/openai-responses-shared.d.ts +17 -0
  57. package/dist/providers/openai-responses-shared.js +12 -0
  58. package/dist/providers/openai-responses.d.ts +12 -0
  59. package/dist/providers/openai-responses.js +1 -0
  60. package/dist/providers/register-builtins.d.ts +34 -0
  61. package/dist/providers/register-builtins.js +1 -0
  62. package/dist/providers/simple-options.d.ts +7 -0
  63. package/dist/providers/simple-options.js +1 -0
  64. package/dist/providers/transform-messages.d.ts +7 -0
  65. package/dist/providers/transform-messages.js +1 -0
  66. package/dist/session-resources.d.ts +3 -0
  67. package/dist/session-resources.js +1 -0
  68. package/dist/stream.d.ts +7 -0
  69. package/dist/stream.js +1 -0
  70. package/dist/types.d.ts +513 -0
  71. package/dist/types.js +0 -0
  72. package/dist/utils/abort-signals.d.ts +5 -0
  73. package/dist/utils/abort-signals.js +1 -0
  74. package/dist/utils/diagnostics.d.ts +18 -0
  75. package/dist/utils/diagnostics.js +1 -0
  76. package/dist/utils/event-stream.d.ts +20 -0
  77. package/dist/utils/event-stream.js +1 -0
  78. package/dist/utils/hash.d.ts +2 -0
  79. package/dist/utils/hash.js +1 -0
  80. package/dist/utils/headers.d.ts +1 -0
  81. package/dist/utils/headers.js +1 -0
  82. package/dist/utils/json-parse.d.ts +15 -0
  83. package/dist/utils/json-parse.js +2 -0
  84. package/dist/utils/node-http-proxy.d.ts +9 -0
  85. package/dist/utils/node-http-proxy.js +1 -0
  86. package/dist/utils/oauth/anthropic.d.ts +24 -0
  87. package/dist/utils/oauth/anthropic.js +1 -0
  88. package/dist/utils/oauth/device-code.d.ts +20 -0
  89. package/dist/utils/oauth/device-code.js +1 -0
  90. package/dist/utils/oauth/github-copilot.d.ts +29 -0
  91. package/dist/utils/oauth/github-copilot.js +1 -0
  92. package/dist/utils/oauth/index.d.ts +57 -0
  93. package/dist/utils/oauth/index.js +1 -0
  94. package/dist/utils/oauth/oauth-page.d.ts +2 -0
  95. package/dist/utils/oauth/oauth-page.js +74 -0
  96. package/dist/utils/oauth/openai-codex.d.ts +42 -0
  97. package/dist/utils/oauth/openai-codex.js +1 -0
  98. package/dist/utils/oauth/pkce.d.ts +12 -0
  99. package/dist/utils/oauth/pkce.js +1 -0
  100. package/dist/utils/oauth/types.d.ts +63 -0
  101. package/dist/utils/oauth/types.js +0 -0
  102. package/dist/utils/overflow.d.ts +56 -0
  103. package/dist/utils/overflow.js +1 -0
  104. package/dist/utils/sanitize-unicode.d.ts +21 -0
  105. package/dist/utils/sanitize-unicode.js +1 -0
  106. package/dist/utils/typebox-helpers.d.ts +16 -0
  107. package/dist/utils/typebox-helpers.js +1 -0
  108. package/dist/utils/validation.d.ts +17 -0
  109. package/dist/utils/validation.js +6 -0
  110. 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
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
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};
@@ -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};
@@ -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};