Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
390496f8
Unverified
提交
390496f8
authored
5月 06, 2025
作者:
Will Chen
提交者:
GitHub
5月 06, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix isAnyProvider and don't make it a hard block (#93)
上级
7c0ce1d4
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
17 行增加
和
13 行删除
+17
-13
ChatInput.tsx
src/components/chat/ChatInput.tsx
+1
-4
models.ts
src/constants/models.ts
+1
-0
useSettings.ts
src/hooks/useSettings.ts
+5
-4
schemas.ts
src/lib/schemas.ts
+10
-5
没有找到文件。
src/components/chat/ChatInput.tsx
浏览文件 @
390496f8
...
...
@@ -349,10 +349,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
)
:
(
<
button
onClick=
{
handleSubmit
}
disabled=
{
(
!
inputValue
.
trim
()
&&
attachments
.
length
===
0
)
||
!
isAnyProviderSetup
()
}
disabled=
{
!
inputValue
.
trim
()
&&
attachments
.
length
===
0
}
className=
"px-2 py-2 mt-1 mr-2 hover:bg-(--background-darkest) text-(--sidebar-accent-fg) rounded-lg disabled:opacity-50"
>
<
SendIcon
size=
{
20
}
/>
...
...
src/constants/models.ts
浏览文件 @
390496f8
...
...
@@ -131,6 +131,7 @@ export const PROVIDER_TO_ENV_VAR: Record<string, string> = {
openai
:
"OPENAI_API_KEY"
,
anthropic
:
"ANTHROPIC_API_KEY"
,
google
:
"GEMINI_API_KEY"
,
openrouter
:
"OPENROUTER_API_KEY"
,
};
export
const
ALLOWED_ENV_VARS
=
Object
.
keys
(
PROVIDER_TO_ENV_VAR
).
map
(
...
...
src/hooks/useSettings.ts
浏览文件 @
390496f8
...
...
@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback } from "react";
import
{
atom
,
useAtom
}
from
"jotai"
;
import
{
userSettingsAtom
,
envVarsAtom
}
from
"@/atoms/appAtoms"
;
import
{
IpcClient
}
from
"@/ipc/ipc_client"
;
import
type
{
UserSettings
}
from
"@/lib/schemas"
;
import
{
cloudProviders
,
type
UserSettings
}
from
"@/lib/schemas"
;
import
{
usePostHog
}
from
"posthog-js/react"
;
const
PROVIDER_TO_ENV_VAR
:
Record
<
string
,
string
>
=
{
...
...
@@ -103,9 +103,10 @@ export function useSettings() {
updateSettings
,
isProviderSetup
,
isAnyProviderSetup
:
()
=>
{
return
Object
.
keys
(
PROVIDER_TO_ENV_VAR
).
some
((
provider
)
=>
isProviderSetup
(
provider
)
);
// Technically we should check for ollama and lmstudio being setup, but
// practically most users will want to use a cloud provider (at least
// some of the time)
return
cloudProviders
.
some
((
provider
)
=>
isProviderSetup
(
provider
));
},
refreshSettings
:
()
=>
{
return
loadInitialData
();
...
...
src/lib/schemas.ts
浏览文件 @
390496f8
...
...
@@ -26,10 +26,7 @@ export type ChatSummary = z.infer<typeof ChatSummarySchema>;
*/
export
const
ChatSummariesSchema
=
z
.
array
(
ChatSummarySchema
);
/**
* Zod schema for model provider
*/
export
const
ModelProviderSchema
=
z
.
enum
([
const
providers
=
[
"openai"
,
"anthropic"
,
"google"
,
...
...
@@ -37,7 +34,15 @@ export const ModelProviderSchema = z.enum([
"openrouter"
,
"ollama"
,
"lmstudio"
,
]);
]
as
const
;
/**
* Zod schema for model provider
*/
export
const
ModelProviderSchema
=
z
.
enum
(
providers
);
export
const
cloudProviders
=
providers
.
filter
(
(
provider
)
=>
provider
!==
"ollama"
&&
provider
!==
"lmstudio"
);
/**
* Type derived from the ModelProviderSchema
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论