@better-agent/openrouter 0.2.0-beta.1
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/dist/index.d.mts +36 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +68 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +55 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { OpenAICompatibleEmbeddingProviderOptions, OpenAICompatibleProviderOptions, OpenAICompatibleProviderSettings } from "@ai-sdk/openai-compatible";
|
|
2
|
+
import { AgentCapabilities, AgentModel, EmbeddingGenerationModel, ImageGenerationModel, TextGenerationModel } from "@better-agent/core";
|
|
3
|
+
|
|
4
|
+
//#region src/model.d.ts
|
|
5
|
+
type OpenRouterModelId = string;
|
|
6
|
+
type OpenRouterEmbeddingModelId = string & {};
|
|
7
|
+
type OpenRouterImageModelId = string & {};
|
|
8
|
+
type CreateOpenRouterOptions = Omit<OpenAICompatibleProviderSettings, "baseURL" | "name"> & {
|
|
9
|
+
baseURL?: string;
|
|
10
|
+
};
|
|
11
|
+
type OpenRouterProviderOptions = {
|
|
12
|
+
openrouter?: OpenAICompatibleProviderOptions & Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
type OpenRouterTextProviderOptions = OpenRouterProviderOptions;
|
|
15
|
+
type OpenRouterEmbeddingProviderOptions = {
|
|
16
|
+
openrouter?: OpenAICompatibleEmbeddingProviderOptions & Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
type OpenRouterImageProviderOptions = {
|
|
19
|
+
openrouter?: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
type OpenRouterGenerationProviderOptions = OpenRouterProviderOptions | OpenRouterTextProviderOptions | OpenRouterEmbeddingProviderOptions | OpenRouterImageProviderOptions;
|
|
22
|
+
type OpenRouterTextModelId = OpenRouterModelId;
|
|
23
|
+
type OpenRouterModel<TModelId extends OpenRouterModelId = OpenRouterModelId> = AgentModel<AgentCapabilities, undefined, OpenRouterProviderOptions, TModelId>;
|
|
24
|
+
type OpenRouterTextModel<TModelId extends OpenRouterTextModelId = OpenRouterTextModelId> = TextGenerationModel<OpenRouterTextProviderOptions, TModelId>;
|
|
25
|
+
type OpenRouterEmbeddingModel<TModelId extends OpenRouterEmbeddingModelId = OpenRouterEmbeddingModelId> = EmbeddingGenerationModel<OpenRouterEmbeddingProviderOptions, TModelId>;
|
|
26
|
+
type OpenRouterImageModel<TModelId extends OpenRouterImageModelId = OpenRouterImageModelId> = ImageGenerationModel<OpenRouterImageProviderOptions, TModelId>;
|
|
27
|
+
type OpenRouterProvider = {
|
|
28
|
+
<TModelId extends OpenRouterModelId>(modelId: TModelId): OpenRouterModel<TModelId>;
|
|
29
|
+
text<TModelId extends OpenRouterTextModelId>(modelId: TModelId): OpenRouterTextModel<TModelId>;
|
|
30
|
+
embedding<TModelId extends OpenRouterEmbeddingModelId>(modelId: TModelId): OpenRouterEmbeddingModel<TModelId>;
|
|
31
|
+
image<TModelId extends OpenRouterImageModelId>(modelId: TModelId): OpenRouterImageModel<TModelId>;
|
|
32
|
+
};
|
|
33
|
+
declare const createOpenRouter: (options?: CreateOpenRouterOptions) => OpenRouterProvider;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { type CreateOpenRouterOptions, type OpenRouterEmbeddingModel, type OpenRouterEmbeddingModelId, type OpenRouterEmbeddingProviderOptions, type OpenRouterGenerationProviderOptions, type OpenRouterImageModel, type OpenRouterImageModelId, type OpenRouterImageProviderOptions, type OpenRouterModel, type OpenRouterModelId, type OpenRouterProvider, type OpenRouterProviderOptions, type OpenRouterTextModel, type OpenRouterTextModelId, type OpenRouterTextProviderOptions, createOpenRouter };
|
|
36
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/model.ts"],"mappings":";;;;KAsBY,iBAAA;AAAA,KAEA,0BAAA;AAAA,KACA,sBAAA;AAAA,KAIA,uBAAA,GAA0B,IAAA,CAAK,gCAAA;EACvC,OAAA;AAAA;AAAA,KAGQ,yBAAA;EACR,UAAA,GAAa,+BAAA,GAAkC,MAAA;AAAA;AAAA,KAEvC,6BAAA,GAAgC,yBAAA;AAAA,KAChC,kCAAA;EACR,UAAA,GAAa,wCAAA,GAA2C,MAAA;AAAA;AAAA,KAEhD,8BAAA;EACR,UAAA,GAAa,MAAA;AAAA;AAAA,KAEL,mCAAA,GACN,yBAAA,GACA,6BAAA,GACA,kCAAA,GACA,8BAAA;AAAA,KAEM,qBAAA,GAAwB,iBAAA;AAAA,KAExB,eAAA,kBAAiC,iBAAA,GAAoB,iBAAA,IAAqB,UAAA,CAClF,iBAAA,aAEA,yBAAA,EACA,QAAA;AAAA,KAEQ,mBAAA,kBAAqC,qBAAA,GAAwB,qBAAA,IACrE,mBAAA,CAAoB,6BAAA,EAA+B,QAAA;AAAA,KAC3C,wBAAA,kBACS,0BAAA,GAA6B,0BAAA,IAC9C,wBAAA,CAAyB,kCAAA,EAAoC,QAAA;AAAA,KACrD,oBAAA,kBAAsC,sBAAA,GAAyB,sBAAA,IACvE,oBAAA,CAAqB,8BAAA,EAAgC,QAAA;AAAA,KAE7C,kBAAA;EAAA,kBACU,iBAAA,EAAmB,OAAA,EAAS,QAAA,GAAW,eAAA,CAAgB,QAAA;EACzE,IAAA,kBAAsB,qBAAA,EAAuB,OAAA,EAAS,QAAA,GAAW,mBAAA,CAAoB,QAAA;EACrF,SAAA,kBAA2B,0BAAA,EACvB,OAAA,EAAS,QAAA,GACV,wBAAA,CAAyB,QAAA;EAC5B,KAAA,kBAAuB,sBAAA,EACnB,OAAA,EAAS,QAAA,GACV,oBAAA,CAAqB,QAAA;AAAA;AAAA,cAoGf,gBAAA,GAAgB,OAAA,GAAa,uBAAA,KAA+B,kBAAA"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
|
|
2
|
+
import { aiSdkEmbeddingModel, aiSdkImageModel, aiSdkModel, aiSdkTextModel } from "@better-agent/ai-sdk";
|
|
3
|
+
|
|
4
|
+
//#region src/model.ts
|
|
5
|
+
const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
6
|
+
const openRouterCapabilities = {
|
|
7
|
+
identity: { provider: "openrouter" },
|
|
8
|
+
transport: { streaming: true },
|
|
9
|
+
output: { supportedMimeTypes: ["text/plain", "application/json"] }
|
|
10
|
+
};
|
|
11
|
+
const createOpenAICompatibleOpenRouter = (options = {}) => {
|
|
12
|
+
return createOpenAICompatible({
|
|
13
|
+
...options,
|
|
14
|
+
name: "openrouter",
|
|
15
|
+
baseURL: options.baseURL ?? OPENROUTER_BASE_URL
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
const createAgentModel = (provider, modelId) => {
|
|
19
|
+
return aiSdkModel({
|
|
20
|
+
model: provider(modelId),
|
|
21
|
+
providerId: "openrouter",
|
|
22
|
+
modelId,
|
|
23
|
+
capabilities: openRouterCapabilities
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const createTextModel = (provider, modelId) => {
|
|
27
|
+
return aiSdkTextModel({
|
|
28
|
+
model: provider(modelId),
|
|
29
|
+
providerId: "openrouter",
|
|
30
|
+
modelId
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const createEmbeddingModel = (provider, modelId) => {
|
|
34
|
+
return aiSdkEmbeddingModel({
|
|
35
|
+
model: provider.embeddingModel(modelId),
|
|
36
|
+
providerId: "openrouter",
|
|
37
|
+
modelId
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const createImageModel = (provider, modelId) => {
|
|
41
|
+
return aiSdkImageModel({
|
|
42
|
+
model: provider.imageModel(modelId),
|
|
43
|
+
providerId: "openrouter",
|
|
44
|
+
modelId
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const createProvider = (provider) => {
|
|
48
|
+
return Object.assign((modelId) => {
|
|
49
|
+
return createAgentModel(provider, modelId);
|
|
50
|
+
}, {
|
|
51
|
+
text(modelId) {
|
|
52
|
+
return createTextModel(provider, modelId);
|
|
53
|
+
},
|
|
54
|
+
embedding(modelId) {
|
|
55
|
+
return createEmbeddingModel(provider, modelId);
|
|
56
|
+
},
|
|
57
|
+
image(modelId) {
|
|
58
|
+
return createImageModel(provider, modelId);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
const createOpenRouter = (options = {}) => {
|
|
63
|
+
return createProvider(createOpenAICompatibleOpenRouter(options));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
export { createOpenRouter };
|
|
68
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["createAiSdkOpenAICompatible"],"sources":["../src/model.ts"],"sourcesContent":["import {\n type OpenAICompatibleEmbeddingProviderOptions,\n type OpenAICompatibleProviderOptions,\n type OpenAICompatibleProviderSettings,\n createOpenAICompatible as createAiSdkOpenAICompatible,\n} from \"@ai-sdk/openai-compatible\";\nimport {\n aiSdkEmbeddingModel,\n aiSdkImageModel,\n aiSdkModel,\n aiSdkTextModel,\n} from \"@better-agent/ai-sdk\";\nimport type {\n AgentCapabilities,\n AgentModel,\n EmbeddingGenerationModel,\n ImageGenerationModel,\n TextGenerationModel,\n} from \"@better-agent/core\";\n\nconst OPENROUTER_BASE_URL = \"https://openrouter.ai/api/v1\";\n\nexport type OpenRouterModelId = string;\ntype OpenRouterCompletionModelId = string & {};\nexport type OpenRouterEmbeddingModelId = string & {};\nexport type OpenRouterImageModelId = string & {};\n\ntype AiSdkOpenRouterProvider = ReturnType<typeof createOpenAICompatibleOpenRouter>;\n\nexport type CreateOpenRouterOptions = Omit<OpenAICompatibleProviderSettings, \"baseURL\" | \"name\"> & {\n baseURL?: string;\n};\n\nexport type OpenRouterProviderOptions = {\n openrouter?: OpenAICompatibleProviderOptions & Record<string, unknown>;\n};\nexport type OpenRouterTextProviderOptions = OpenRouterProviderOptions;\nexport type OpenRouterEmbeddingProviderOptions = {\n openrouter?: OpenAICompatibleEmbeddingProviderOptions & Record<string, unknown>;\n};\nexport type OpenRouterImageProviderOptions = {\n openrouter?: Record<string, unknown>;\n};\nexport type OpenRouterGenerationProviderOptions =\n | OpenRouterProviderOptions\n | OpenRouterTextProviderOptions\n | OpenRouterEmbeddingProviderOptions\n | OpenRouterImageProviderOptions;\n\nexport type OpenRouterTextModelId = OpenRouterModelId;\n\nexport type OpenRouterModel<TModelId extends OpenRouterModelId = OpenRouterModelId> = AgentModel<\n AgentCapabilities,\n undefined,\n OpenRouterProviderOptions,\n TModelId\n>;\nexport type OpenRouterTextModel<TModelId extends OpenRouterTextModelId = OpenRouterTextModelId> =\n TextGenerationModel<OpenRouterTextProviderOptions, TModelId>;\nexport type OpenRouterEmbeddingModel<\n TModelId extends OpenRouterEmbeddingModelId = OpenRouterEmbeddingModelId,\n> = EmbeddingGenerationModel<OpenRouterEmbeddingProviderOptions, TModelId>;\nexport type OpenRouterImageModel<TModelId extends OpenRouterImageModelId = OpenRouterImageModelId> =\n ImageGenerationModel<OpenRouterImageProviderOptions, TModelId>;\n\nexport type OpenRouterProvider = {\n <TModelId extends OpenRouterModelId>(modelId: TModelId): OpenRouterModel<TModelId>;\n text<TModelId extends OpenRouterTextModelId>(modelId: TModelId): OpenRouterTextModel<TModelId>;\n embedding<TModelId extends OpenRouterEmbeddingModelId>(\n modelId: TModelId,\n ): OpenRouterEmbeddingModel<TModelId>;\n image<TModelId extends OpenRouterImageModelId>(\n modelId: TModelId,\n ): OpenRouterImageModel<TModelId>;\n};\n\nconst openRouterCapabilities = {\n identity: {\n provider: \"openrouter\",\n },\n transport: {\n streaming: true,\n },\n output: {\n supportedMimeTypes: [\"text/plain\", \"application/json\"],\n },\n} as const satisfies AgentCapabilities;\n\nconst createOpenAICompatibleOpenRouter = (options: CreateOpenRouterOptions = {}) => {\n return createAiSdkOpenAICompatible<\n OpenRouterModelId,\n OpenRouterCompletionModelId,\n OpenRouterEmbeddingModelId,\n OpenRouterImageModelId\n >({\n ...options,\n name: \"openrouter\",\n baseURL: options.baseURL ?? OPENROUTER_BASE_URL,\n });\n};\n\nconst createAgentModel = <TModelId extends OpenRouterModelId>(\n provider: AiSdkOpenRouterProvider,\n modelId: TModelId,\n): OpenRouterModel<TModelId> => {\n return aiSdkModel<AgentCapabilities, OpenRouterProviderOptions, TModelId>({\n model: provider(modelId),\n providerId: \"openrouter\",\n modelId,\n capabilities: openRouterCapabilities,\n });\n};\n\nconst createTextModel = <TModelId extends OpenRouterTextModelId>(\n provider: AiSdkOpenRouterProvider,\n modelId: TModelId,\n): OpenRouterTextModel<TModelId> => {\n return aiSdkTextModel<OpenRouterTextProviderOptions, TModelId>({\n model: provider(modelId),\n providerId: \"openrouter\",\n modelId,\n });\n};\n\nconst createEmbeddingModel = <TModelId extends OpenRouterEmbeddingModelId>(\n provider: AiSdkOpenRouterProvider,\n modelId: TModelId,\n): OpenRouterEmbeddingModel<TModelId> => {\n return aiSdkEmbeddingModel<OpenRouterEmbeddingProviderOptions, TModelId>({\n model: provider.embeddingModel(modelId),\n providerId: \"openrouter\",\n modelId,\n });\n};\n\nconst createImageModel = <TModelId extends OpenRouterImageModelId>(\n provider: AiSdkOpenRouterProvider,\n modelId: TModelId,\n): OpenRouterImageModel<TModelId> => {\n return aiSdkImageModel<OpenRouterImageProviderOptions, TModelId>({\n model: provider.imageModel(modelId),\n providerId: \"openrouter\",\n modelId,\n });\n};\n\nconst createProvider = (provider: AiSdkOpenRouterProvider): OpenRouterProvider => {\n const createOpenRouterModel: OpenRouterProvider = Object.assign(\n <TModelId extends OpenRouterModelId>(modelId: TModelId): OpenRouterModel<TModelId> => {\n return createAgentModel(provider, modelId);\n },\n {\n text<TModelId extends OpenRouterTextModelId>(\n modelId: TModelId,\n ): OpenRouterTextModel<TModelId> {\n return createTextModel(provider, modelId);\n },\n embedding<TModelId extends OpenRouterEmbeddingModelId>(\n modelId: TModelId,\n ): OpenRouterEmbeddingModel<TModelId> {\n return createEmbeddingModel(provider, modelId);\n },\n image<TModelId extends OpenRouterImageModelId>(\n modelId: TModelId,\n ): OpenRouterImageModel<TModelId> {\n return createImageModel(provider, modelId);\n },\n },\n );\n\n return createOpenRouterModel;\n};\n\nexport const createOpenRouter = (options: CreateOpenRouterOptions = {}): OpenRouterProvider => {\n return createProvider(createOpenAICompatibleOpenRouter(options));\n};\n"],"mappings":";;;;AAoBA,MAAM,sBAAsB;AAwD5B,MAAM,yBAAyB;CAC3B,UAAU,EACN,UAAU,cACb;CACD,WAAW,EACP,WAAW,MACd;CACD,QAAQ,EACJ,oBAAoB,CAAC,cAAc,mBAAmB,EACzD;CACJ;AAED,MAAM,oCAAoC,UAAmC,EAAE,KAAK;AAChF,QAAOA,uBAKL;EACE,GAAG;EACH,MAAM;EACN,SAAS,QAAQ,WAAW;EAC/B,CAAC;;AAGN,MAAM,oBACF,UACA,YAC4B;AAC5B,QAAO,WAAmE;EACtE,OAAO,SAAS,QAAQ;EACxB,YAAY;EACZ;EACA,cAAc;EACjB,CAAC;;AAGN,MAAM,mBACF,UACA,YACgC;AAChC,QAAO,eAAwD;EAC3D,OAAO,SAAS,QAAQ;EACxB,YAAY;EACZ;EACH,CAAC;;AAGN,MAAM,wBACF,UACA,YACqC;AACrC,QAAO,oBAAkE;EACrE,OAAO,SAAS,eAAe,QAAQ;EACvC,YAAY;EACZ;EACH,CAAC;;AAGN,MAAM,oBACF,UACA,YACiC;AACjC,QAAO,gBAA0D;EAC7D,OAAO,SAAS,WAAW,QAAQ;EACnC,YAAY;EACZ;EACH,CAAC;;AAGN,MAAM,kBAAkB,aAA0D;AAwB9E,QAvBkD,OAAO,QAChB,YAAiD;AAClF,SAAO,iBAAiB,UAAU,QAAQ;IAE9C;EACI,KACI,SAC6B;AAC7B,UAAO,gBAAgB,UAAU,QAAQ;;EAE7C,UACI,SACkC;AAClC,UAAO,qBAAqB,UAAU,QAAQ;;EAElD,MACI,SAC8B;AAC9B,UAAO,iBAAiB,UAAU,QAAQ;;EAEjD,CACJ;;AAKL,MAAa,oBAAoB,UAAmC,EAAE,KAAyB;AAC3F,QAAO,eAAe,iCAAiC,QAAQ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@better-agent/openrouter",
|
|
3
|
+
"version": "0.2.0-beta.1",
|
|
4
|
+
"description": "Better Agent OpenRouter provider",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/better-agent/better-agent.git",
|
|
9
|
+
"directory": "packages/openrouter"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/better-agent/better-agent/tree/main/packages/openrouter",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/better-agent/better-agent/issues"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"bun": ">=1.3.3",
|
|
17
|
+
"node": ">=20"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"types": "./dist/index.d.mts",
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/index.d.mts",
|
|
25
|
+
"import": "./dist/index.mjs"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "bunx tsdown",
|
|
30
|
+
"dev": "bunx tsdown --watch --no-clean",
|
|
31
|
+
"lint:package": "bunx publint run --strict",
|
|
32
|
+
"lint:types": "npm_config_cache=../../.npm-cache bunx attw --profile esm-only --pack .",
|
|
33
|
+
"lint": "bunx biome check .",
|
|
34
|
+
"typecheck": "bunx tsc -p tsconfig.json --noEmit",
|
|
35
|
+
"format": "bunx biome format --write .",
|
|
36
|
+
"clean": "bunx rimraf dist"
|
|
37
|
+
},
|
|
38
|
+
"files": ["dist"],
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@ai-sdk/openai-compatible": "^2.0.41",
|
|
44
|
+
"@better-agent/ai-sdk": "0.2.0-beta.1",
|
|
45
|
+
"ai": "^6.0.168"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@better-agent/core": "0.2.0-beta.1",
|
|
49
|
+
"@types/bun": "^1.3.12",
|
|
50
|
+
"@types/node": "^22.19.17"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@better-agent/core": "0.2.0-beta.1"
|
|
54
|
+
}
|
|
55
|
+
}
|