Fix isAnyProvider and don't make it a hard block (#93)
This commit is contained in:
@@ -349,10 +349,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
|
|||||||
) : (
|
) : (
|
||||||
<button
|
<button
|
||||||
onClick={handleSubmit}
|
onClick={handleSubmit}
|
||||||
disabled={
|
disabled={!inputValue.trim() && attachments.length === 0}
|
||||||
(!inputValue.trim() && attachments.length === 0) ||
|
|
||||||
!isAnyProviderSetup()
|
|
||||||
}
|
|
||||||
className="px-2 py-2 mt-1 mr-2 hover:bg-(--background-darkest) text-(--sidebar-accent-fg) rounded-lg disabled:opacity-50"
|
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} />
|
<SendIcon size={20} />
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ export const PROVIDER_TO_ENV_VAR: Record<string, string> = {
|
|||||||
openai: "OPENAI_API_KEY",
|
openai: "OPENAI_API_KEY",
|
||||||
anthropic: "ANTHROPIC_API_KEY",
|
anthropic: "ANTHROPIC_API_KEY",
|
||||||
google: "GEMINI_API_KEY",
|
google: "GEMINI_API_KEY",
|
||||||
|
openrouter: "OPENROUTER_API_KEY",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ALLOWED_ENV_VARS = Object.keys(PROVIDER_TO_ENV_VAR).map(
|
export const ALLOWED_ENV_VARS = Object.keys(PROVIDER_TO_ENV_VAR).map(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback } from "react";
|
|||||||
import { atom, useAtom } from "jotai";
|
import { atom, useAtom } from "jotai";
|
||||||
import { userSettingsAtom, envVarsAtom } from "@/atoms/appAtoms";
|
import { userSettingsAtom, envVarsAtom } from "@/atoms/appAtoms";
|
||||||
import { IpcClient } from "@/ipc/ipc_client";
|
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";
|
import { usePostHog } from "posthog-js/react";
|
||||||
|
|
||||||
const PROVIDER_TO_ENV_VAR: Record<string, string> = {
|
const PROVIDER_TO_ENV_VAR: Record<string, string> = {
|
||||||
@@ -103,9 +103,10 @@ export function useSettings() {
|
|||||||
updateSettings,
|
updateSettings,
|
||||||
isProviderSetup,
|
isProviderSetup,
|
||||||
isAnyProviderSetup: () => {
|
isAnyProviderSetup: () => {
|
||||||
return Object.keys(PROVIDER_TO_ENV_VAR).some((provider) =>
|
// Technically we should check for ollama and lmstudio being setup, but
|
||||||
isProviderSetup(provider)
|
// practically most users will want to use a cloud provider (at least
|
||||||
);
|
// some of the time)
|
||||||
|
return cloudProviders.some((provider) => isProviderSetup(provider));
|
||||||
},
|
},
|
||||||
refreshSettings: () => {
|
refreshSettings: () => {
|
||||||
return loadInitialData();
|
return loadInitialData();
|
||||||
|
|||||||
@@ -26,10 +26,7 @@ export type ChatSummary = z.infer<typeof ChatSummarySchema>;
|
|||||||
*/
|
*/
|
||||||
export const ChatSummariesSchema = z.array(ChatSummarySchema);
|
export const ChatSummariesSchema = z.array(ChatSummarySchema);
|
||||||
|
|
||||||
/**
|
const providers = [
|
||||||
* Zod schema for model provider
|
|
||||||
*/
|
|
||||||
export const ModelProviderSchema = z.enum([
|
|
||||||
"openai",
|
"openai",
|
||||||
"anthropic",
|
"anthropic",
|
||||||
"google",
|
"google",
|
||||||
@@ -37,7 +34,15 @@ export const ModelProviderSchema = z.enum([
|
|||||||
"openrouter",
|
"openrouter",
|
||||||
"ollama",
|
"ollama",
|
||||||
"lmstudio",
|
"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
|
* Type derived from the ModelProviderSchema
|
||||||
|
|||||||
Reference in New Issue
Block a user