@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.
Files changed (39) hide show
  1. package/dist/app/LlmProviders.d.ts +1 -0
  2. package/dist/assets/LlmIcon.d.ts +6 -0
  3. package/dist/assets/McpIcon.d.ts +3 -0
  4. package/dist/components/base/Badge.d.ts +9 -0
  5. package/dist/components/base/EditableTitle.d.ts +9 -0
  6. package/dist/components/base/LoadingSpinner.d.ts +1 -0
  7. package/dist/components/base/Modal.d.ts +9 -0
  8. package/dist/components/base/Switch.d.ts +9 -0
  9. package/dist/components/features/AuthStatus.d.ts +5 -0
  10. package/dist/components/features/index.d.ts +1 -0
  11. package/dist/components/layouts/XyzenAgent.d.ts +2 -2
  12. package/dist/components/layouts/components/ChatInput.d.ts +1 -1
  13. package/dist/components/layouts/components/ChatToolbar.d.ts +6 -0
  14. package/dist/components/layouts/components/SessionHistory.d.ts +7 -0
  15. package/dist/components/modals/AddLlmProviderModal.d.ts +1 -0
  16. package/dist/components/modals/AddMcpServerModal.d.ts +1 -0
  17. package/dist/components/modals/McpServerItem.d.ts +9 -0
  18. package/dist/hooks/useAuth.d.ts +14 -0
  19. package/dist/index.d.ts +1 -1
  20. package/dist/service/authService.d.ts +52 -0
  21. package/dist/service/llmProviderService.d.ts +15 -0
  22. package/dist/service/mcpService.d.ts +2 -2
  23. package/dist/service/xyzenService.d.ts +1 -1
  24. package/dist/store/index.d.ts +15 -0
  25. package/dist/store/slices/agentSlice.d.ts +15 -0
  26. package/dist/store/slices/authSlice.d.ts +14 -0
  27. package/dist/store/slices/chatSlice.d.ts +21 -0
  28. package/dist/store/slices/index.d.ts +6 -0
  29. package/dist/store/slices/mcpSlice.d.ts +16 -0
  30. package/dist/store/slices/providerSlice.d.ts +16 -0
  31. package/dist/store/slices/uiSlice.d.ts +26 -0
  32. package/dist/store/types.d.ts +44 -0
  33. package/dist/types/llmProvider.d.ts +34 -0
  34. package/dist/types/mcp.d.ts +1 -1
  35. package/dist/xyzen.es.js +16239 -14331
  36. package/dist/xyzen.umd.js +77 -67
  37. package/package.json +1 -1
  38. package/dist/context/XyzenProvider.d.ts +0 -1
  39. 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,6 @@
1
+ import { default as React } from 'react';
2
+ interface LlmIconProps {
3
+ className?: string;
4
+ }
5
+ declare const LlmIcon: React.FC<LlmIconProps>;
6
+ export default LlmIcon;
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ declare const McpIcon: React.FC<React.SVGProps<SVGSVGElement>>;
3
+ export default McpIcon;
@@ -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,9 @@
1
+ import { default as React } from 'react';
2
+ interface SwitchProps {
3
+ checked: boolean;
4
+ onChange: (checked: boolean) => void;
5
+ className?: string;
6
+ disabled?: boolean;
7
+ }
8
+ export declare const Switch: React.FC<SwitchProps>;
9
+ export {};
@@ -0,0 +1,5 @@
1
+ export interface AuthStatusProps {
2
+ onTokenInput?: (token: string) => void;
3
+ className?: string;
4
+ }
5
+ export declare function AuthStatus({ onTokenInput, className }: AuthStatusProps): import("react/jsx-runtime").JSX.Element;
@@ -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: number;
7
+ id: string;
8
8
  }[];
9
- mcp_server_ids?: number[];
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
- onHeightChange?: (height: number) => void;
6
+ height?: number;
7
7
  }
8
8
  export declare const ChatInput: React.FC<ChatInputProps>;
9
9
  export default ChatInput;
@@ -0,0 +1,6 @@
1
+ interface ChatToolbarProps {
2
+ onShowHistory: () => void;
3
+ onHeightChange?: (height: number) => void;
4
+ }
5
+ export default function ChatToolbar({ onShowHistory, onHeightChange, }: ChatToolbarProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -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
@@ -1,4 +1,4 @@
1
1
  export { Xyzen, type XyzenProps } from './app/App';
2
2
  export { default as useTheme } from './hooks/useTheme';
3
3
  export { default as xyzenService } from './service/xyzenService';
4
- export { useXyzen } from './store/xyzenStore';
4
+ export { useXyzen } from './store';
@@ -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: number, server: Partial<McpServerCreate>): Promise<McpServer>;
6
- deleteMcpServer(id: number): Promise<void>;
5
+ updateMcpServer(id: string, server: Partial<McpServerCreate>): Promise<McpServer>;
6
+ deleteMcpServer(id: string): Promise<void>;
7
7
  };
@@ -1,4 +1,4 @@
1
- import { Message } from '../store/xyzenStore';
1
+ import { Message } from '../store/types';
2
2
  interface StatusChangePayload {
3
3
  connected: boolean;
4
4
  error: string | null;
@@ -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,6 @@
1
+ export * from './agentSlice';
2
+ export * from './authSlice';
3
+ export * from './chatSlice';
4
+ export * from './mcpSlice';
5
+ export * from './providerSlice';
6
+ export * from './uiSlice';
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  export interface McpServer {
2
- id: number;
2
+ id: string;
3
3
  name: string;
4
4
  description?: string;
5
5
  url: string;