merge pi
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
export type UserSettings = {
|
||||
chat: {
|
||||
defaultProvider: 'claude' | 'opencode';
|
||||
defaultProvider: 'claude' | 'opencode' | 'pi-mono';
|
||||
defaultModel: string | null;
|
||||
systemPrompt: string;
|
||||
temperature: number;
|
||||
@@ -11,7 +11,7 @@ export type UserSettings = {
|
||||
enabledProviders: string[];
|
||||
};
|
||||
tasks: {
|
||||
defaultProvider: 'claude' | 'opencode';
|
||||
defaultProvider: 'claude' | 'opencode' | 'pi-mono';
|
||||
defaultModel: string | null;
|
||||
};
|
||||
appearance: {
|
||||
|
||||
@@ -15,14 +15,14 @@ export const useChatSessions = () => {
|
||||
queryFn: () => client.get<SessionEntry[]>('/sessions'),
|
||||
});
|
||||
|
||||
const getMessages = (provider: 'claude' | 'opencode', sessionId: string) =>
|
||||
const getMessages = (provider: 'claude' | 'opencode' | 'pi-mono', sessionId: string) =>
|
||||
client.get<ChatMessage[]>(`/sessions/${provider}/${sessionId}/messages`);
|
||||
|
||||
const saveMessages = (provider: 'claude' | 'opencode', sessionId: string, messages: ChatMessage[]) =>
|
||||
const saveMessages = (provider: 'claude' | 'opencode' | 'pi-mono', sessionId: string, messages: ChatMessage[]) =>
|
||||
client.put(`/sessions/${provider}/${sessionId}/messages`, messages);
|
||||
|
||||
const renameSession = async (
|
||||
provider: 'claude' | 'opencode',
|
||||
provider: 'claude' | 'opencode' | 'pi-mono',
|
||||
sessionId: string | null,
|
||||
args: string,
|
||||
): Promise<SlashCommandResult> => {
|
||||
@@ -42,12 +42,12 @@ export const useChatSessions = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const archiveSession = async (provider: 'claude' | 'opencode', sessionId: string) => {
|
||||
const archiveSession = async (provider: 'claude' | 'opencode' | 'pi-mono', sessionId: string) => {
|
||||
await client.post(`/sessions/${provider}/${sessionId}/archive`);
|
||||
queryClient.setQueryData<SessionEntry[]>(['SESSIONS'], (prev) => prev?.filter((s) => s.id !== sessionId) ?? []);
|
||||
};
|
||||
|
||||
const deleteSession = async (provider: 'claude' | 'opencode', sessionId: string) => {
|
||||
const deleteSession = async (provider: 'claude' | 'opencode' | 'pi-mono', sessionId: string) => {
|
||||
await client.delete(`/sessions/${provider}/${sessionId}`);
|
||||
queryClient.setQueryData<SessionEntry[]>(['SESSIONS'], (prev) => prev?.filter((s) => s.id !== sessionId) ?? []);
|
||||
};
|
||||
|
||||
@@ -66,3 +66,24 @@ export const useVisibleOpenCodeModels = () => {
|
||||
[models, providers, enabled],
|
||||
);
|
||||
};
|
||||
|
||||
export const usePiMonoModels = () => {
|
||||
const client = useClient();
|
||||
const { isAuthenticated } = useAuth();
|
||||
|
||||
const { data: models = [] } = useQuery<ModelOption[]>({
|
||||
queryKey: ['PI_MONO_MODELS'],
|
||||
enabled: isAuthenticated,
|
||||
queryFn: () => client.get<ModelOption[]>('/pi-mono/models'),
|
||||
staleTime: 5 * 60 * 1000,
|
||||
});
|
||||
|
||||
return models;
|
||||
};
|
||||
|
||||
export const useVisiblePiMonoModels = () => {
|
||||
const models = usePiMonoModels();
|
||||
const { settings } = useSettings();
|
||||
const enabled = settings.ai?.enabledModels ?? [];
|
||||
return useMemo(() => models.filter((m) => enabled.includes(modelKey(m))), [models, enabled]);
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ import { useClient } from 'hooks/useClient';
|
||||
type AIHarnesses = {
|
||||
claudeCode: boolean;
|
||||
opencode: boolean;
|
||||
piMono: boolean;
|
||||
};
|
||||
|
||||
type ServerSettings = {
|
||||
|
||||
Reference in New Issue
Block a user