forked from RooCodeInc/Roo-Code
-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathpearaiApi.ts
More file actions
138 lines (123 loc) · 3.17 KB
/
pearaiApi.ts
File metadata and controls
138 lines (123 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// CHANGE AS NEEDED FOR DEVELOPMENT
// PROD:
export const PEARAI_URL = "https://server.trypear.ai/pearai-server-api2/integrations/cline"
// DEV:
// export const PEARAI_URL = "http://localhost:8000/integrations/cline"
import {
anthropicModels,
bedrockModels,
deepSeekModels,
geminiModels,
glamaDefaultModelId,
glamaDefaultModelInfo,
mistralModels,
ModelInfo,
openAiNativeModels,
openRouterDefaultModelId,
openRouterDefaultModelInfo,
requestyDefaultModelId,
requestyDefaultModelInfo,
unboundDefaultModelId,
unboundDefaultModelInfo,
vertexModels,
} from "./api"
// PearAI
export type PearAIModelId = keyof typeof pearaiModels
export const pearaiDefaultModelId: PearAIModelId = "pearai-model"
export const pearaiDefaultModelInfo: ModelInfo = {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
description:
"PearAI Model automatically routes you to the most best / most suitable model on the market. Recommended for most users.",
}
export const pearaiModels = {
"pearai-model": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
description:
"PearAI Model automatically routes you to the most best / most suitable model on the market. Recommended for most users.",
},
} as const satisfies Record<string, ModelInfo>
export const allModels: { [key: string]: ModelInfo } = {
// Anthropic models
...Object.entries(anthropicModels).reduce(
(acc, [key, value]) => ({
...acc,
[`anthropic/${key}`]: value,
}),
{},
),
// Bedrock models
...Object.entries(bedrockModels).reduce(
(acc, [key, value]) => ({
...acc,
[`bedrock/${key}`]: value,
}),
{},
),
// Glama models (single default model)
[`glama/${glamaDefaultModelId}`]: glamaDefaultModelInfo,
// Requesty models (single default model)
[`requesty/${requestyDefaultModelId}`]: requestyDefaultModelInfo,
// OpenRouter models (single default model)
[`openrouter/${openRouterDefaultModelId}`]: openRouterDefaultModelInfo,
// Vertex models
...Object.entries(vertexModels).reduce(
(acc, [key, value]) => ({
...acc,
[`vertex_ai/${key}`]: value,
}),
{},
),
// Gemini models
...Object.entries(geminiModels).reduce(
(acc, [key, value]) => ({
...acc,
[`gemini/${key}`]: value,
}),
{},
),
// OpenAI Native models
...Object.entries(openAiNativeModels).reduce(
(acc, [key, value]) => ({
...acc,
[`openai-native/${key}`]: value,
}),
{},
),
// DeepSeek models
...Object.entries(deepSeekModels).reduce(
(acc, [key, value]) => ({
...acc,
[`deepseek/${key}`]: value,
}),
{},
),
// Mistral models
...Object.entries(mistralModels).reduce(
(acc, [key, value]) => ({
...acc,
[`mistral/${key}`]: value,
}),
{},
),
// Unbound models (single default model)
[`unbound/${unboundDefaultModelId}`]: unboundDefaultModelInfo,
} as const satisfies Record<string, ModelInfo>
export interface creatorModeConfig {
creatorMode?: boolean // Defaults to false when not set
newProjectType?: string
newProjectPath?: string
}