@sciol/xyzen 0.1.12 → 0.1.14
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/app/LlmProviders.d.ts +1 -0
- package/dist/assets/LlmIcon.d.ts +6 -0
- package/dist/assets/McpIcon.d.ts +3 -0
- package/dist/components/base/Badge.d.ts +9 -0
- package/dist/components/base/EditableTitle.d.ts +9 -0
- package/dist/components/base/LoadingSpinner.d.ts +1 -0
- package/dist/components/base/Modal.d.ts +9 -0
- package/dist/components/base/Switch.d.ts +9 -0
- package/dist/components/features/AuthStatus.d.ts +5 -0
- package/dist/components/features/index.d.ts +1 -0
- package/dist/components/layouts/XyzenAgent.d.ts +2 -2
- package/dist/components/layouts/components/ChatInput.d.ts +1 -1
- package/dist/components/layouts/components/ChatToolbar.d.ts +6 -0
- package/dist/components/layouts/components/SessionHistory.d.ts +7 -0
- package/dist/components/modals/AddLlmProviderModal.d.ts +1 -0
- package/dist/components/modals/AddMcpServerModal.d.ts +1 -0
- package/dist/components/modals/McpServerItem.d.ts +9 -0
- package/dist/hooks/useAuth.d.ts +14 -0
- package/dist/index.d.ts +1 -1
- package/dist/service/authService.d.ts +52 -0
- package/dist/service/llmProviderService.d.ts +15 -0
- package/dist/service/mcpService.d.ts +2 -2
- package/dist/service/xyzenService.d.ts +1 -1
- package/dist/store/index.d.ts +15 -0
- package/dist/store/slices/agentSlice.d.ts +15 -0
- package/dist/store/slices/authSlice.d.ts +14 -0
- package/dist/store/slices/chatSlice.d.ts +21 -0
- package/dist/store/slices/index.d.ts +6 -0
- package/dist/store/slices/mcpSlice.d.ts +16 -0
- package/dist/store/slices/providerSlice.d.ts +16 -0
- package/dist/store/slices/uiSlice.d.ts +26 -0
- package/dist/store/types.d.ts +44 -0
- package/dist/types/llmProvider.d.ts +34 -0
- package/dist/types/mcp.d.ts +1 -1
- package/dist/xyzen.es.js +16239 -14331
- package/dist/xyzen.umd.js +77 -67
- package/package.json +1 -1
- package/dist/context/XyzenProvider.d.ts +0 -1
- package/dist/store/xyzenStore.d.ts +0 -87
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function LlmProviders(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface BadgeProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
variant?: "default" | "blue" | "green" | "yellow" | "red" | "gray";
|
|
5
|
+
size?: "sm" | "md";
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const Badge: React.FC<BadgeProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface EditableTitleProps {
|
|
2
|
+
title: string;
|
|
3
|
+
onSave: (newTitle: string) => Promise<void>;
|
|
4
|
+
className?: string;
|
|
5
|
+
textClassName?: string;
|
|
6
|
+
maxLength?: number;
|
|
7
|
+
}
|
|
8
|
+
export default function EditableTitle({ title, onSave, className, textClassName, maxLength, }: EditableTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function LoadingSpinner(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface ModalProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title: string;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Modal({ isOpen, onClose, title, children }: ModalProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AuthStatus } from './AuthStatus';
|
|
@@ -4,9 +4,9 @@ export type Agent = {
|
|
|
4
4
|
description: string;
|
|
5
5
|
prompt: string;
|
|
6
6
|
mcp_servers: {
|
|
7
|
-
id:
|
|
7
|
+
id: string;
|
|
8
8
|
}[];
|
|
9
|
-
mcp_server_ids?:
|
|
9
|
+
mcp_server_ids?: string[];
|
|
10
10
|
user_id: string;
|
|
11
11
|
};
|
|
12
12
|
export default function XyzenAgent(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,7 +3,7 @@ interface ChatInputProps {
|
|
|
3
3
|
onSendMessage: (message: string) => void;
|
|
4
4
|
disabled?: boolean;
|
|
5
5
|
placeholder?: string;
|
|
6
|
-
|
|
6
|
+
height?: number;
|
|
7
7
|
}
|
|
8
8
|
export declare const ChatInput: React.FC<ChatInputProps>;
|
|
9
9
|
export default ChatInput;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface SessionHistoryProps {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onSelectTopic?: (topicId: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export default function SessionHistory({ isOpen, onClose, onSelectTopic, }: SessionHistoryProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function AddLlmProviderModal(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function AddMcpServerModal(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from '../../types/mcp';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
interface McpServerItemProps {
|
|
4
|
+
mcp: McpServer;
|
|
5
|
+
isSelected: boolean;
|
|
6
|
+
onSelectionChange: (selected: boolean) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const McpServerItem: React.FC<McpServerItemProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UserInfo, AuthState } from '../service/authService';
|
|
2
|
+
export interface UseAuthReturn {
|
|
3
|
+
authState: AuthState;
|
|
4
|
+
user: UserInfo | undefined;
|
|
5
|
+
message: string;
|
|
6
|
+
provider: string | undefined;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
isAuthenticated: boolean;
|
|
9
|
+
isConfigured: boolean;
|
|
10
|
+
login: (token: string) => Promise<void>;
|
|
11
|
+
logout: () => void;
|
|
12
|
+
checkAuth: (force?: boolean) => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare function useAuth(): UseAuthReturn;
|
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface AuthStatus {
|
|
2
|
+
is_configured: boolean;
|
|
3
|
+
provider?: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export interface UserInfo {
|
|
7
|
+
id: string;
|
|
8
|
+
username: string;
|
|
9
|
+
email?: string;
|
|
10
|
+
display_name?: string;
|
|
11
|
+
avatar_url?: string;
|
|
12
|
+
roles?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface AuthValidationResponse {
|
|
15
|
+
success: boolean;
|
|
16
|
+
user_info?: UserInfo;
|
|
17
|
+
error_message?: string;
|
|
18
|
+
error_code?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare enum AuthState {
|
|
21
|
+
NOT_CONFIGURED = "not_configured",
|
|
22
|
+
NOT_AUTHENTICATED = "not_authenticated",
|
|
23
|
+
AUTHENTICATED = "authenticated",
|
|
24
|
+
ERROR = "error"
|
|
25
|
+
}
|
|
26
|
+
export interface AuthResult {
|
|
27
|
+
state: AuthState;
|
|
28
|
+
user?: UserInfo;
|
|
29
|
+
message: string;
|
|
30
|
+
provider?: string;
|
|
31
|
+
}
|
|
32
|
+
declare class AuthService {
|
|
33
|
+
private static readonly TOKEN_KEY;
|
|
34
|
+
private authCheckPromise;
|
|
35
|
+
private listeners;
|
|
36
|
+
getToken(): string | null;
|
|
37
|
+
setToken(token: string): void;
|
|
38
|
+
removeToken(): void;
|
|
39
|
+
addAuthStateListener(listener: (result: AuthResult) => void): void;
|
|
40
|
+
removeAuthStateListener(listener: (result: AuthResult) => void): void;
|
|
41
|
+
private notifyListeners;
|
|
42
|
+
getAuthStatus(): Promise<AuthStatus>;
|
|
43
|
+
validateToken(token?: string): Promise<AuthValidationResponse>;
|
|
44
|
+
getCurrentUser(): Promise<UserInfo | null>;
|
|
45
|
+
checkAuthState(force?: boolean): Promise<AuthResult>;
|
|
46
|
+
private _performAuthCheck;
|
|
47
|
+
autoLogin(): Promise<AuthResult>;
|
|
48
|
+
login(token: string): Promise<AuthResult>;
|
|
49
|
+
logout(): void;
|
|
50
|
+
}
|
|
51
|
+
export declare const authService: AuthService;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LlmProviderCreate, LlmProviderResponse, SupportedProviderType, SwitchProviderRequest } from '../types/llmProvider';
|
|
2
|
+
declare class LlmProviderService {
|
|
3
|
+
private getBackendUrl;
|
|
4
|
+
getLlmProviders(): Promise<LlmProviderResponse[]>;
|
|
5
|
+
createLlmProvider(provider: LlmProviderCreate): Promise<LlmProviderResponse>;
|
|
6
|
+
getLlmProvider(id: number): Promise<LlmProviderResponse>;
|
|
7
|
+
updateLlmProvider(id: number, provider: Partial<LlmProviderCreate>): Promise<LlmProviderResponse>;
|
|
8
|
+
deleteLlmProvider(id: number): Promise<void>;
|
|
9
|
+
switchActiveProvider(request: SwitchProviderRequest): Promise<{
|
|
10
|
+
message: string;
|
|
11
|
+
}>;
|
|
12
|
+
getSupportedTypes(): Promise<SupportedProviderType[]>;
|
|
13
|
+
}
|
|
14
|
+
export declare const llmProviderService: LlmProviderService;
|
|
15
|
+
export {};
|
|
@@ -2,6 +2,6 @@ import { McpServer, McpServerCreate } from '../types/mcp';
|
|
|
2
2
|
export declare const mcpService: {
|
|
3
3
|
getMcpServers(): Promise<McpServer[]>;
|
|
4
4
|
createMcpServer(server: McpServerCreate): Promise<McpServer>;
|
|
5
|
-
updateMcpServer(id:
|
|
6
|
-
deleteMcpServer(id:
|
|
5
|
+
updateMcpServer(id: string, server: Partial<McpServerCreate>): Promise<McpServer>;
|
|
6
|
+
deleteMcpServer(id: string): Promise<void>;
|
|
7
7
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { XyzenState } from './types';
|
|
2
|
+
export declare const useXyzen: import('zustand').UseBoundStore<Omit<Omit<import('zustand').StoreApi<XyzenState>, "persist"> & {
|
|
3
|
+
persist: {
|
|
4
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<XyzenState, unknown>>) => void;
|
|
5
|
+
clearStorage: () => void;
|
|
6
|
+
rehydrate: () => Promise<void> | void;
|
|
7
|
+
hasHydrated: () => boolean;
|
|
8
|
+
onHydrate: (fn: (state: XyzenState) => void) => () => void;
|
|
9
|
+
onFinishHydration: (fn: (state: XyzenState) => void) => () => void;
|
|
10
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<XyzenState, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
}, "setState"> & {
|
|
13
|
+
setState(nextStateOrUpdater: XyzenState | Partial<XyzenState> | ((state: import('immer').WritableDraft<XyzenState>) => void), shouldReplace?: false): void;
|
|
14
|
+
setState(nextStateOrUpdater: XyzenState | ((state: import('immer').WritableDraft<XyzenState>) => void), shouldReplace: true): void;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Agent } from '../../components/layouts/XyzenAgent';
|
|
2
|
+
import { StateCreator } from 'zustand';
|
|
3
|
+
import { XyzenState } from '../types';
|
|
4
|
+
export interface AgentSlice {
|
|
5
|
+
agents: Agent[];
|
|
6
|
+
agentsLoading: boolean;
|
|
7
|
+
fetchAgents: () => Promise<void>;
|
|
8
|
+
createAgent: (agent: Omit<Agent, "id">) => Promise<void>;
|
|
9
|
+
updateAgent: (agent: Agent) => Promise<void>;
|
|
10
|
+
deleteAgent: (id: string) => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare const createAgentSlice: StateCreator<XyzenState, [
|
|
13
|
+
["zustand/immer", never]
|
|
14
|
+
], [
|
|
15
|
+
], AgentSlice>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StateCreator } from 'zustand';
|
|
2
|
+
import { User, XyzenState } from '../types';
|
|
3
|
+
export interface AuthSlice {
|
|
4
|
+
user: User | null;
|
|
5
|
+
token: string | null;
|
|
6
|
+
status: "idle" | "loading" | "succeeded" | "failed";
|
|
7
|
+
login: (token: string) => Promise<void>;
|
|
8
|
+
logout: () => void;
|
|
9
|
+
fetchUserByToken: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const createAuthSlice: StateCreator<XyzenState, [
|
|
12
|
+
["zustand/immer", never]
|
|
13
|
+
], [
|
|
14
|
+
], AuthSlice>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StateCreator } from 'zustand';
|
|
2
|
+
import { ChatChannel, ChatHistoryItem, XyzenState } from '../types';
|
|
3
|
+
export interface ChatSlice {
|
|
4
|
+
activeChatChannel: string | null;
|
|
5
|
+
chatHistory: ChatHistoryItem[];
|
|
6
|
+
chatHistoryLoading: boolean;
|
|
7
|
+
channels: Record<string, ChatChannel>;
|
|
8
|
+
setActiveChatChannel: (channelUUID: string | null) => void;
|
|
9
|
+
fetchChatHistory: () => Promise<void>;
|
|
10
|
+
togglePinChat: (chatId: string) => void;
|
|
11
|
+
activateChannel: (topicId: string) => Promise<void>;
|
|
12
|
+
connectToChannel: (sessionId: string, topicId: string) => void;
|
|
13
|
+
disconnectFromChannel: () => void;
|
|
14
|
+
sendMessage: (message: string) => void;
|
|
15
|
+
createDefaultChannel: (agentId?: string) => Promise<void>;
|
|
16
|
+
updateTopicName: (topicId: string, newName: string) => Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare const createChatSlice: StateCreator<XyzenState, [
|
|
19
|
+
["zustand/immer", never]
|
|
20
|
+
], [
|
|
21
|
+
], ChatSlice>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { McpServer, McpServerCreate } from '../../types/mcp';
|
|
2
|
+
import { StateCreator } from 'zustand';
|
|
3
|
+
import { XyzenState } from '../types';
|
|
4
|
+
export interface McpSlice {
|
|
5
|
+
mcpServers: McpServer[];
|
|
6
|
+
mcpServersLoading: boolean;
|
|
7
|
+
fetchMcpServers: () => Promise<void>;
|
|
8
|
+
addMcpServer: (server: McpServerCreate) => Promise<void>;
|
|
9
|
+
editMcpServer: (id: string, server: Partial<McpServerCreate>) => Promise<void>;
|
|
10
|
+
removeMcpServer: (id: string) => Promise<void>;
|
|
11
|
+
updateMcpServerInList: (server: McpServer) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const createMcpSlice: StateCreator<XyzenState, [
|
|
14
|
+
["zustand/immer", never]
|
|
15
|
+
], [
|
|
16
|
+
], McpSlice>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LlmProviderCreate, LlmProviderResponse } from '../../types/llmProvider';
|
|
2
|
+
import { StateCreator } from 'zustand';
|
|
3
|
+
import { XyzenState } from '../types';
|
|
4
|
+
export interface ProviderSlice {
|
|
5
|
+
llmProviders: LlmProviderResponse[];
|
|
6
|
+
llmProvidersLoading: boolean;
|
|
7
|
+
fetchLlmProviders: () => Promise<void>;
|
|
8
|
+
addLlmProvider: (provider: LlmProviderCreate) => Promise<void>;
|
|
9
|
+
editLlmProvider: (id: number, provider: Partial<LlmProviderCreate>) => Promise<void>;
|
|
10
|
+
removeLlmProvider: (id: number) => Promise<void>;
|
|
11
|
+
switchActiveProvider: (id: number) => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare const createProviderSlice: StateCreator<XyzenState, [
|
|
14
|
+
["zustand/immer", never]
|
|
15
|
+
], [
|
|
16
|
+
], ProviderSlice>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { StateCreator } from 'zustand';
|
|
2
|
+
import { Theme, XyzenState } from '../types';
|
|
3
|
+
export interface UiSlice {
|
|
4
|
+
backendUrl: string;
|
|
5
|
+
isXyzenOpen: boolean;
|
|
6
|
+
panelWidth: number;
|
|
7
|
+
activeTabIndex: number;
|
|
8
|
+
theme: Theme;
|
|
9
|
+
isAddMcpServerModalOpen: boolean;
|
|
10
|
+
isAddLlmProviderModalOpen: boolean;
|
|
11
|
+
toggleXyzen: () => void;
|
|
12
|
+
openXyzen: () => void;
|
|
13
|
+
closeXyzen: () => void;
|
|
14
|
+
setPanelWidth: (width: number) => void;
|
|
15
|
+
setTabIndex: (index: number) => void;
|
|
16
|
+
setTheme: (theme: Theme) => void;
|
|
17
|
+
setBackendUrl: (url: string) => void;
|
|
18
|
+
openAddMcpServerModal: () => void;
|
|
19
|
+
closeAddMcpServerModal: () => void;
|
|
20
|
+
openAddLlmProviderModal: () => void;
|
|
21
|
+
closeAddLlmProviderModal: () => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const createUiSlice: StateCreator<XyzenState, [
|
|
24
|
+
["zustand/immer", never]
|
|
25
|
+
], [
|
|
26
|
+
], UiSlice>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AgentSlice, AuthSlice, ChatSlice, McpSlice, ProviderSlice, UiSlice } from './slices';
|
|
2
|
+
export interface Message {
|
|
3
|
+
id: string;
|
|
4
|
+
content: string;
|
|
5
|
+
role: "user" | "assistant" | "system" | "tool";
|
|
6
|
+
created_at: string;
|
|
7
|
+
sender?: "user" | "assistant" | "system";
|
|
8
|
+
timestamp?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ChatChannel {
|
|
11
|
+
id: string;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
title: string;
|
|
14
|
+
messages: Message[];
|
|
15
|
+
assistantId?: string;
|
|
16
|
+
connected: boolean;
|
|
17
|
+
error: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface ChatHistoryItem {
|
|
20
|
+
id: string;
|
|
21
|
+
title: string;
|
|
22
|
+
updatedAt: string;
|
|
23
|
+
assistantTitle: string;
|
|
24
|
+
lastMessage?: string;
|
|
25
|
+
isPinned: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface User {
|
|
28
|
+
id?: string;
|
|
29
|
+
username: string;
|
|
30
|
+
avatar: string;
|
|
31
|
+
}
|
|
32
|
+
export type Theme = "light" | "dark" | "system";
|
|
33
|
+
export interface TopicResponse {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
updated_at: string;
|
|
37
|
+
}
|
|
38
|
+
export interface SessionResponse {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
user_id: string;
|
|
42
|
+
topics: TopicResponse[];
|
|
43
|
+
}
|
|
44
|
+
export type XyzenState = UiSlice & ChatSlice & AgentSlice & McpSlice & ProviderSlice & AuthSlice;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface LlmProvider {
|
|
2
|
+
id: number;
|
|
3
|
+
Name: string;
|
|
4
|
+
Api: string;
|
|
5
|
+
Key: string;
|
|
6
|
+
Model: string;
|
|
7
|
+
MaxTokens: number | null;
|
|
8
|
+
Temperature: number | null;
|
|
9
|
+
Timeout: number | null;
|
|
10
|
+
is_active?: boolean;
|
|
11
|
+
is_available?: boolean;
|
|
12
|
+
provider_type?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface LlmProviderCreate {
|
|
15
|
+
Name: string;
|
|
16
|
+
Api: string;
|
|
17
|
+
Key: string;
|
|
18
|
+
Model: string;
|
|
19
|
+
MaxTokens?: number | null;
|
|
20
|
+
Temperature?: number | null;
|
|
21
|
+
Timeout?: number | null;
|
|
22
|
+
}
|
|
23
|
+
export interface LlmProviderResponse extends LlmProvider {
|
|
24
|
+
is_active: boolean;
|
|
25
|
+
is_available: boolean;
|
|
26
|
+
provider_type: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SwitchProviderRequest {
|
|
29
|
+
provider_id: number;
|
|
30
|
+
}
|
|
31
|
+
export interface SupportedProviderType {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}
|
package/dist/types/mcp.d.ts
CHANGED