@townco/ui 0.1.7 → 0.1.9

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 (243) hide show
  1. package/dist/core/hooks/index.d.ts +1 -0
  2. package/dist/core/hooks/index.d.ts.map +1 -0
  3. package/dist/core/hooks/index.js +1 -0
  4. package/dist/core/hooks/index.js.map +1 -0
  5. package/dist/core/hooks/use-chat-input.d.ts +17 -17
  6. package/dist/core/hooks/use-chat-input.d.ts.map +1 -0
  7. package/dist/core/hooks/use-chat-input.js +64 -55
  8. package/dist/core/hooks/use-chat-input.js.map +1 -0
  9. package/dist/core/hooks/use-chat-messages.d.ts +11 -11
  10. package/dist/core/hooks/use-chat-messages.d.ts.map +1 -0
  11. package/dist/core/hooks/use-chat-messages.js +121 -114
  12. package/dist/core/hooks/use-chat-messages.js.map +1 -0
  13. package/dist/core/hooks/use-chat-session.d.ts +5 -5
  14. package/dist/core/hooks/use-chat-session.d.ts.map +1 -0
  15. package/dist/core/hooks/use-chat-session.js +78 -80
  16. package/dist/core/hooks/use-chat-session.js.map +1 -0
  17. package/dist/core/hooks/use-media-query.d.ts +39 -0
  18. package/dist/core/hooks/use-media-query.js +84 -0
  19. package/dist/core/index.d.ts.map +1 -0
  20. package/dist/core/index.js.map +1 -0
  21. package/dist/core/schemas/chat.d.ts +83 -56
  22. package/dist/core/schemas/chat.d.ts.map +1 -0
  23. package/dist/core/schemas/chat.js +27 -25
  24. package/dist/core/schemas/chat.js.map +1 -0
  25. package/dist/core/schemas/index.d.ts.map +1 -0
  26. package/dist/core/schemas/index.js.map +1 -0
  27. package/dist/core/store/chat-store.d.ts +28 -22
  28. package/dist/core/store/chat-store.d.ts.map +1 -0
  29. package/dist/core/store/chat-store.js +59 -50
  30. package/dist/core/store/chat-store.js.map +1 -0
  31. package/dist/gui/components/Button.d.ts +23 -7
  32. package/dist/gui/components/Button.d.ts.map +1 -0
  33. package/dist/gui/components/Button.js +40 -27
  34. package/dist/gui/components/Button.js.map +1 -0
  35. package/dist/gui/components/Card.d.ts +26 -7
  36. package/dist/gui/components/Card.d.ts.map +1 -0
  37. package/dist/gui/components/Card.js +54 -8
  38. package/dist/gui/components/Card.js.map +1 -0
  39. package/dist/gui/components/ChatHeader.d.ts +38 -0
  40. package/dist/gui/components/ChatHeader.js +86 -0
  41. package/dist/gui/components/ChatInput.d.ts +19 -1
  42. package/dist/gui/components/ChatInput.d.ts.map +1 -0
  43. package/dist/gui/components/ChatInput.js +94 -11
  44. package/dist/gui/components/ChatInput.js.map +1 -0
  45. package/dist/gui/components/ChatInputCommandMenu.d.ts +20 -0
  46. package/dist/gui/components/ChatInputCommandMenu.js +62 -0
  47. package/dist/gui/components/ChatInterface.d.ts +12 -0
  48. package/dist/gui/components/ChatInterface.d.ts.map +1 -0
  49. package/dist/gui/components/ChatInterface.js +204 -0
  50. package/dist/gui/components/ChatInterface.js.map +1 -0
  51. package/dist/gui/components/ChatLayout.d.ts +52 -0
  52. package/dist/gui/components/ChatLayout.js +105 -0
  53. package/dist/gui/components/ChatPanelTabContent.d.ts +18 -0
  54. package/dist/gui/components/ChatPanelTabContent.js +15 -0
  55. package/dist/gui/components/ChatPreview.d.ts +12 -0
  56. package/dist/gui/components/ChatPreview.d.ts.map +1 -0
  57. package/dist/gui/components/ChatPreview.js +214 -0
  58. package/dist/gui/components/ChatPreview.js.map +1 -0
  59. package/dist/gui/components/ChatSecondaryPanel.d.ts +14 -11
  60. package/dist/gui/components/ChatSecondaryPanel.d.ts.map +1 -0
  61. package/dist/gui/components/ChatSecondaryPanel.js +115 -38
  62. package/dist/gui/components/ChatSecondaryPanel.js.map +1 -0
  63. package/dist/gui/components/ChatSidebar.d.ts +14 -0
  64. package/dist/gui/components/ChatSidebar.js +23 -0
  65. package/dist/gui/components/ChatStatus.d.ts +4 -2
  66. package/dist/gui/components/ChatStatus.d.ts.map +1 -0
  67. package/dist/gui/components/ChatStatus.js +45 -34
  68. package/dist/gui/components/ChatStatus.js.map +1 -0
  69. package/dist/gui/components/ChatView.d.ts +8 -0
  70. package/dist/gui/components/ChatView.d.ts.map +1 -0
  71. package/dist/gui/components/ChatView.js +42 -0
  72. package/dist/gui/components/ChatView.js.map +1 -0
  73. package/dist/gui/components/ConfigPanel.d.ts +20 -0
  74. package/dist/gui/components/ConfigPanel.d.ts.map +1 -0
  75. package/dist/gui/components/ConfigPanel.js +225 -0
  76. package/dist/gui/components/ConfigPanel.js.map +1 -0
  77. package/dist/gui/components/Conversation.d.ts +17 -14
  78. package/dist/gui/components/Conversation.d.ts.map +1 -0
  79. package/dist/gui/components/Conversation.js +143 -83
  80. package/dist/gui/components/Conversation.js.map +1 -0
  81. package/dist/gui/components/Dialog.d.ts +57 -11
  82. package/dist/gui/components/Dialog.d.ts.map +1 -0
  83. package/dist/gui/components/Dialog.js +84 -8
  84. package/dist/gui/components/Dialog.js.map +1 -0
  85. package/dist/gui/components/DropdownMenu.d.ts +27 -0
  86. package/dist/gui/components/DropdownMenu.js +68 -0
  87. package/dist/gui/components/HeightTransition.d.ts +12 -7
  88. package/dist/gui/components/HeightTransition.d.ts.map +1 -0
  89. package/dist/gui/components/HeightTransition.js +88 -77
  90. package/dist/gui/components/HeightTransition.js.map +1 -0
  91. package/dist/gui/components/Input.d.ts +13 -6
  92. package/dist/gui/components/Input.d.ts.map +1 -0
  93. package/dist/gui/components/Input.js +27 -16
  94. package/dist/gui/components/Input.js.map +1 -0
  95. package/dist/gui/components/InputBox.d.ts +21 -0
  96. package/dist/gui/components/InputBox.d.ts.map +1 -0
  97. package/dist/gui/components/InputBox.js +90 -0
  98. package/dist/gui/components/InputBox.js.map +1 -0
  99. package/dist/gui/components/Label.d.ts +7 -1
  100. package/dist/gui/components/Label.d.ts.map +1 -0
  101. package/dist/gui/components/Label.js +12 -2
  102. package/dist/gui/components/Label.js.map +1 -0
  103. package/dist/gui/components/MarkdownRenderer.d.ts +6 -4
  104. package/dist/gui/components/MarkdownRenderer.d.ts.map +1 -0
  105. package/dist/gui/components/MarkdownRenderer.js +178 -81
  106. package/dist/gui/components/MarkdownRenderer.js.map +1 -0
  107. package/dist/gui/components/Message.d.ts +4 -0
  108. package/dist/gui/components/Message.d.ts.map +1 -0
  109. package/dist/gui/components/Message.js +77 -3
  110. package/dist/gui/components/Message.js.map +1 -0
  111. package/dist/gui/components/MessageContent.d.ts +29 -22
  112. package/dist/gui/components/MessageContent.d.ts.map +1 -0
  113. package/dist/gui/components/MessageContent.js +1 -1
  114. package/dist/gui/components/MessageContent.js.map +1 -0
  115. package/dist/gui/components/MessageList.d.ts.map +1 -0
  116. package/dist/gui/components/MessageList.js.map +1 -0
  117. package/dist/gui/components/PlaygroundLayout.d.ts +14 -0
  118. package/dist/gui/components/PlaygroundLayout.d.ts.map +1 -0
  119. package/dist/gui/components/PlaygroundLayout.js +49 -0
  120. package/dist/gui/components/PlaygroundLayout.js.map +1 -0
  121. package/dist/gui/components/Reasoning.d.ts +30 -24
  122. package/dist/gui/components/Reasoning.d.ts.map +1 -0
  123. package/dist/gui/components/Reasoning.js +187 -60
  124. package/dist/gui/components/Reasoning.js.map +1 -0
  125. package/dist/gui/components/Response.d.ts +11 -9
  126. package/dist/gui/components/Response.d.ts.map +1 -0
  127. package/dist/gui/components/Response.js +229 -90
  128. package/dist/gui/components/Response.js.map +1 -0
  129. package/dist/gui/components/Select.d.ts +69 -10
  130. package/dist/gui/components/Select.d.ts.map +1 -0
  131. package/dist/gui/components/Select.js +118 -12
  132. package/dist/gui/components/Select.js.map +1 -0
  133. package/dist/gui/components/Sonner.d.ts +5 -0
  134. package/dist/gui/components/Sonner.js +23 -0
  135. package/dist/gui/components/StatusBar.d.ts +12 -0
  136. package/dist/gui/components/StatusBar.d.ts.map +1 -0
  137. package/dist/gui/components/StatusBar.js +58 -0
  138. package/dist/gui/components/StatusBar.js.map +1 -0
  139. package/dist/gui/components/Tabs.d.ts +24 -4
  140. package/dist/gui/components/Tabs.d.ts.map +1 -0
  141. package/dist/gui/components/Tabs.js +32 -4
  142. package/dist/gui/components/Tabs.js.map +1 -0
  143. package/dist/gui/components/Task.d.ts +28 -24
  144. package/dist/gui/components/Task.d.ts.map +1 -0
  145. package/dist/gui/components/Task.js +164 -31
  146. package/dist/gui/components/Task.js.map +1 -0
  147. package/dist/gui/components/Textarea.d.ts +15 -7
  148. package/dist/gui/components/Textarea.d.ts.map +1 -0
  149. package/dist/gui/components/Textarea.js +63 -46
  150. package/dist/gui/components/Textarea.js.map +1 -0
  151. package/dist/gui/components/ThinkingBlock.d.ts +20 -10
  152. package/dist/gui/components/ThinkingBlock.d.ts.map +1 -0
  153. package/dist/gui/components/ThinkingBlock.js +134 -35
  154. package/dist/gui/components/ThinkingBlock.js.map +1 -0
  155. package/dist/gui/components/TodoList.d.ts +12 -10
  156. package/dist/gui/components/TodoList.d.ts.map +1 -0
  157. package/dist/gui/components/TodoList.js +22 -7
  158. package/dist/gui/components/TodoList.js.map +1 -0
  159. package/dist/gui/components/TodoListItem.d.ts +9 -6
  160. package/dist/gui/components/TodoListItem.d.ts.map +1 -0
  161. package/dist/gui/components/TodoListItem.js +18 -4
  162. package/dist/gui/components/TodoListItem.js.map +1 -0
  163. package/dist/gui/components/index.d.ts +9 -1
  164. package/dist/gui/components/index.d.ts.map +1 -0
  165. package/dist/gui/components/index.js +11 -1
  166. package/dist/gui/components/index.js.map +1 -0
  167. package/dist/gui/index.d.ts.map +1 -0
  168. package/dist/gui/index.js.map +1 -0
  169. package/dist/gui/lib/utils.d.ts.map +1 -0
  170. package/dist/gui/lib/utils.js +1 -1
  171. package/dist/gui/lib/utils.js.map +1 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/index.test.js +0 -1
  175. package/dist/sdk/client/acp-client.d.ts +88 -76
  176. package/dist/sdk/client/acp-client.d.ts.map +1 -0
  177. package/dist/sdk/client/acp-client.js +215 -217
  178. package/dist/sdk/client/acp-client.js.map +1 -0
  179. package/dist/sdk/client/index.d.ts.map +1 -0
  180. package/dist/sdk/client/index.js.map +1 -0
  181. package/dist/sdk/index.d.ts.map +1 -0
  182. package/dist/sdk/index.js.map +1 -0
  183. package/dist/sdk/schemas/agent.d.ts +111 -64
  184. package/dist/sdk/schemas/agent.d.ts.map +1 -0
  185. package/dist/sdk/schemas/agent.js +24 -24
  186. package/dist/sdk/schemas/agent.js.map +1 -0
  187. package/dist/sdk/schemas/index.d.ts.map +1 -0
  188. package/dist/sdk/schemas/index.js.map +1 -0
  189. package/dist/sdk/schemas/message.d.ts +245 -147
  190. package/dist/sdk/schemas/message.d.ts.map +1 -0
  191. package/dist/sdk/schemas/message.js +40 -40
  192. package/dist/sdk/schemas/message.js.map +1 -0
  193. package/dist/sdk/schemas/session.d.ts +219 -135
  194. package/dist/sdk/schemas/session.d.ts.map +1 -0
  195. package/dist/sdk/schemas/session.js +27 -27
  196. package/dist/sdk/schemas/session.js.map +1 -0
  197. package/dist/sdk/transports/http.d.ts +55 -55
  198. package/dist/sdk/transports/http.d.ts.map +1 -0
  199. package/dist/sdk/transports/http.js +472 -469
  200. package/dist/sdk/transports/http.js.map +1 -0
  201. package/dist/sdk/transports/index.d.ts.map +1 -0
  202. package/dist/sdk/transports/index.js.map +1 -0
  203. package/dist/sdk/transports/stdio.d.ts +20 -20
  204. package/dist/sdk/transports/stdio.d.ts.map +1 -0
  205. package/dist/sdk/transports/stdio.js.map +1 -0
  206. package/dist/sdk/transports/types.d.ts +42 -42
  207. package/dist/sdk/transports/types.d.ts.map +1 -0
  208. package/dist/sdk/transports/types.js.map +1 -0
  209. package/dist/sdk/transports/websocket.d.ts +12 -12
  210. package/dist/sdk/transports/websocket.d.ts.map +1 -0
  211. package/dist/sdk/transports/websocket.js +52 -46
  212. package/dist/sdk/transports/websocket.js.map +1 -0
  213. package/dist/tui/components/ChatView.d.ts +4 -2
  214. package/dist/tui/components/ChatView.d.ts.map +1 -0
  215. package/dist/tui/components/ChatView.js +51 -18
  216. package/dist/tui/components/ChatView.js.map +1 -0
  217. package/dist/tui/components/GameOfLife.d.ts.map +1 -0
  218. package/dist/tui/components/GameOfLife.js +64 -35
  219. package/dist/tui/components/GameOfLife.js.map +1 -0
  220. package/dist/tui/components/InputBox.d.ts +18 -11
  221. package/dist/tui/components/InputBox.d.ts.map +1 -0
  222. package/dist/tui/components/InputBox.js +70 -10
  223. package/dist/tui/components/InputBox.js.map +1 -0
  224. package/dist/tui/components/MessageList.d.ts +4 -2
  225. package/dist/tui/components/MessageList.d.ts.map +1 -0
  226. package/dist/tui/components/MessageList.js +37 -10
  227. package/dist/tui/components/MessageList.js.map +1 -0
  228. package/dist/tui/components/ReadlineInput.d.ts +12 -6
  229. package/dist/tui/components/ReadlineInput.d.ts.map +1 -0
  230. package/dist/tui/components/ReadlineInput.js +252 -237
  231. package/dist/tui/components/ReadlineInput.js.map +1 -0
  232. package/dist/tui/components/SingleSelect.d.ts +15 -9
  233. package/dist/tui/components/SingleSelect.js +84 -43
  234. package/dist/tui/components/StatusBar.d.ts +11 -6
  235. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  236. package/dist/tui/components/StatusBar.js +102 -67
  237. package/dist/tui/components/StatusBar.js.map +1 -0
  238. package/dist/tui/components/index.d.ts.map +1 -0
  239. package/dist/tui/components/index.js.map +1 -0
  240. package/dist/tui/index.d.ts.map +1 -0
  241. package/dist/tui/index.js.map +1 -0
  242. package/package.json +6 -4
  243. package/src/styles/global.css +2 -0
@@ -4,84 +4,82 @@ import { useChatStore } from "../store/chat-store.js";
4
4
  * Hook for managing chat session lifecycle
5
5
  */
6
6
  export function useChatSession(client) {
7
- const connectionStatus = useChatStore((state) => state.connectionStatus);
8
- const sessionId = useChatStore((state) => state.sessionId);
9
- const setConnectionStatus = useChatStore((state) => state.setConnectionStatus);
10
- const setSessionId = useChatStore((state) => state.setSessionId);
11
- const setError = useChatStore((state) => state.setError);
12
- const clearMessages = useChatStore((state) => state.clearMessages);
13
- /**
14
- * Connect to the agent
15
- */
16
- const connect = useCallback(async () => {
17
- if (!client) {
18
- setError("No client available");
19
- return;
20
- }
21
- try {
22
- setConnectionStatus("connecting");
23
- setError(null);
24
- await client.connect();
25
- setConnectionStatus("connected");
26
- }
27
- catch (error) {
28
- console.log(error);
29
- const message = error instanceof Error ? error.message : String(error);
30
- setError(message);
31
- setConnectionStatus("error");
32
- }
33
- }, [client, setConnectionStatus, setError]);
34
- /**
35
- * Start a new session
36
- */
37
- const startSession = useCallback(async () => {
38
- if (!client) {
39
- setError("No client available");
40
- return;
41
- }
42
- try {
43
- const id = await client.startSession();
44
- setSessionId(id);
45
- clearMessages();
46
- }
47
- catch (error) {
48
- const message = error instanceof Error ? error.message : String(error);
49
- setError(message);
50
- }
51
- }, [client, setSessionId, setError, clearMessages]);
52
- /**
53
- * Disconnect from the agent
54
- */
55
- const disconnect = useCallback(async () => {
56
- if (!client)
57
- return;
58
- try {
59
- await client.disconnect();
60
- setConnectionStatus("disconnected");
61
- setSessionId(null);
62
- }
63
- catch (error) {
64
- const message = error instanceof Error ? error.message : String(error);
65
- setError(message);
66
- }
67
- }, [client, setConnectionStatus, setSessionId, setError]);
68
- // Auto-connect on mount if client is available
69
- useEffect(() => {
70
- if (client && connectionStatus === "disconnected") {
71
- connect();
72
- }
73
- }, [client, connectionStatus, connect]);
74
- // Auto-start session after connecting
75
- useEffect(() => {
76
- if (connectionStatus === "connected" && !sessionId) {
77
- startSession();
78
- }
79
- }, [connectionStatus, sessionId, startSession]);
80
- return {
81
- connectionStatus,
82
- sessionId,
83
- connect,
84
- startSession,
85
- disconnect,
86
- };
7
+ const connectionStatus = useChatStore((state) => state.connectionStatus);
8
+ const sessionId = useChatStore((state) => state.sessionId);
9
+ const setConnectionStatus = useChatStore(
10
+ (state) => state.setConnectionStatus,
11
+ );
12
+ const setSessionId = useChatStore((state) => state.setSessionId);
13
+ const setError = useChatStore((state) => state.setError);
14
+ const clearMessages = useChatStore((state) => state.clearMessages);
15
+ /**
16
+ * Connect to the agent
17
+ */
18
+ const connect = useCallback(async () => {
19
+ if (!client) {
20
+ setError("No client available");
21
+ return;
22
+ }
23
+ try {
24
+ setConnectionStatus("connecting");
25
+ setError(null);
26
+ await client.connect();
27
+ setConnectionStatus("connected");
28
+ } catch (error) {
29
+ console.log(error);
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ setError(message);
32
+ setConnectionStatus("error");
33
+ }
34
+ }, [client, setConnectionStatus, setError]);
35
+ /**
36
+ * Start a new session
37
+ */
38
+ const startSession = useCallback(async () => {
39
+ if (!client) {
40
+ setError("No client available");
41
+ return;
42
+ }
43
+ try {
44
+ const id = await client.startSession();
45
+ setSessionId(id);
46
+ clearMessages();
47
+ } catch (error) {
48
+ const message = error instanceof Error ? error.message : String(error);
49
+ setError(message);
50
+ }
51
+ }, [client, setSessionId, setError, clearMessages]);
52
+ /**
53
+ * Disconnect from the agent
54
+ */
55
+ const disconnect = useCallback(async () => {
56
+ if (!client) return;
57
+ try {
58
+ await client.disconnect();
59
+ setConnectionStatus("disconnected");
60
+ setSessionId(null);
61
+ } catch (error) {
62
+ const message = error instanceof Error ? error.message : String(error);
63
+ setError(message);
64
+ }
65
+ }, [client, setConnectionStatus, setSessionId, setError]);
66
+ // Auto-connect on mount if client is available
67
+ useEffect(() => {
68
+ if (client && connectionStatus === "disconnected") {
69
+ connect();
70
+ }
71
+ }, [client, connectionStatus, connect]);
72
+ // Auto-start session after connecting
73
+ useEffect(() => {
74
+ if (connectionStatus === "connected" && !sessionId) {
75
+ startSession();
76
+ }
77
+ }, [connectionStatus, sessionId, startSession]);
78
+ return {
79
+ connectionStatus,
80
+ sessionId,
81
+ connect,
82
+ startSession,
83
+ disconnect,
84
+ };
87
85
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chat-session.js","sourceRoot":"","sources":["../../../src/core/hooks/use-chat-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Custom hook for responsive breakpoints with SSR-safe implementation
3
+ *
4
+ * @param query - Media query string (e.g., "(min-width: 768px)")
5
+ * @returns boolean indicating if the media query matches
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * const isMobile = useMediaQuery("(max-width: 640px)");
10
+ * const isDesktop = useMediaQuery("(min-width: 1024px)");
11
+ *
12
+ * return (
13
+ * <div>
14
+ * {isMobile && <MobileMenu />}
15
+ * {isDesktop && <DesktopSidebar />}
16
+ * </div>
17
+ * );
18
+ * ```
19
+ */
20
+ export declare function useMediaQuery(query: string): boolean;
21
+ /**
22
+ * Common breakpoint presets for convenience
23
+ */
24
+ export declare const breakpoints: {
25
+ readonly sm: "(min-width: 640px)";
26
+ readonly md: "(min-width: 768px)";
27
+ readonly lg: "(min-width: 1024px)";
28
+ readonly xl: "(min-width: 1280px)";
29
+ readonly "2xl": "(min-width: 1536px)";
30
+ };
31
+ /**
32
+ * Convenience hooks for common breakpoints
33
+ */
34
+ export declare function useIsSmallScreen(): boolean;
35
+ export declare function useIsMediumScreen(): boolean;
36
+ export declare function useIsLargeScreen(): boolean;
37
+ export declare function useIsDesktop(): boolean;
38
+ export declare function useIsMobile(): boolean;
39
+ export declare function useIsTablet(): boolean;
@@ -0,0 +1,84 @@
1
+ import { useEffect, useState } from "react";
2
+ /**
3
+ * Custom hook for responsive breakpoints with SSR-safe implementation
4
+ *
5
+ * @param query - Media query string (e.g., "(min-width: 768px)")
6
+ * @returns boolean indicating if the media query matches
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const isMobile = useMediaQuery("(max-width: 640px)");
11
+ * const isDesktop = useMediaQuery("(min-width: 1024px)");
12
+ *
13
+ * return (
14
+ * <div>
15
+ * {isMobile && <MobileMenu />}
16
+ * {isDesktop && <DesktopSidebar />}
17
+ * </div>
18
+ * );
19
+ * ```
20
+ */
21
+ export function useMediaQuery(query) {
22
+ const [matches, setMatches] = useState(() => {
23
+ // SSR-safe: return false on server, check on client
24
+ if (typeof window === "undefined") {
25
+ return false;
26
+ }
27
+ return window.matchMedia(query).matches;
28
+ });
29
+ useEffect(() => {
30
+ // SSR guard
31
+ if (typeof window === "undefined") {
32
+ return;
33
+ }
34
+ const mediaQueryList = window.matchMedia(query);
35
+ // Update state if query evaluation changes
36
+ const handleChange = (event) => {
37
+ setMatches(event.matches);
38
+ };
39
+ // Set initial value
40
+ setMatches(mediaQueryList.matches);
41
+ // Listen for changes
42
+ mediaQueryList.addEventListener("change", handleChange);
43
+ // Cleanup
44
+ return () => {
45
+ mediaQueryList.removeEventListener("change", handleChange);
46
+ };
47
+ }, [query]);
48
+ return matches;
49
+ }
50
+ /**
51
+ * Common breakpoint presets for convenience
52
+ */
53
+ export const breakpoints = {
54
+ sm: "(min-width: 640px)",
55
+ md: "(min-width: 768px)",
56
+ lg: "(min-width: 1024px)",
57
+ xl: "(min-width: 1280px)",
58
+ "2xl": "(min-width: 1536px)",
59
+ };
60
+ /**
61
+ * Convenience hooks for common breakpoints
62
+ */
63
+ export function useIsSmallScreen() {
64
+ const isSm = useMediaQuery(breakpoints.sm);
65
+ return !isSm;
66
+ }
67
+ export function useIsMediumScreen() {
68
+ return useMediaQuery(breakpoints.md);
69
+ }
70
+ export function useIsLargeScreen() {
71
+ return useMediaQuery(breakpoints.lg);
72
+ }
73
+ export function useIsDesktop() {
74
+ return useMediaQuery(breakpoints.lg);
75
+ }
76
+ export function useIsMobile() {
77
+ const isMd = useMediaQuery(breakpoints.md);
78
+ return !isMd;
79
+ }
80
+ export function useIsTablet() {
81
+ const isMd = useMediaQuery(breakpoints.md);
82
+ const isLg = useMediaQuery(breakpoints.lg);
83
+ return isMd && !isLg;
84
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -5,74 +5,101 @@ import { z } from "zod";
5
5
  /**
6
6
  * Display message schema (UI representation of messages)
7
7
  */
8
- export declare const DisplayMessage: z.ZodObject<{
9
- id: z.ZodString;
10
- role: z.ZodEnum<{
11
- user: "user";
12
- assistant: "assistant";
13
- system: "system";
14
- }>;
15
- content: z.ZodString;
16
- timestamp: z.ZodISODateTime;
17
- isStreaming: z.ZodDefault<z.ZodBoolean>;
18
- streamingStartTime: z.ZodOptional<z.ZodNumber>;
19
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
- }, z.core.$strip>;
8
+ export declare const DisplayMessage: z.ZodObject<
9
+ {
10
+ id: z.ZodString;
11
+ role: z.ZodEnum<{
12
+ user: "user";
13
+ assistant: "assistant";
14
+ system: "system";
15
+ }>;
16
+ content: z.ZodString;
17
+ timestamp: z.ZodISODateTime;
18
+ isStreaming: z.ZodDefault<z.ZodBoolean>;
19
+ streamingStartTime: z.ZodOptional<z.ZodNumber>;
20
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
21
+ },
22
+ z.core.$strip
23
+ >;
21
24
  export type DisplayMessage = z.infer<typeof DisplayMessage>;
22
25
  /**
23
26
  * Input state schema
24
27
  */
25
- export declare const InputState: z.ZodObject<{
26
- value: z.ZodString;
27
- isSubmitting: z.ZodBoolean;
28
- attachedFiles: z.ZodArray<z.ZodObject<{
29
- name: z.ZodString;
30
- path: z.ZodString;
31
- size: z.ZodNumber;
32
- mimeType: z.ZodString;
33
- }, z.core.$strip>>;
34
- }, z.core.$strip>;
28
+ export declare const InputState: z.ZodObject<
29
+ {
30
+ value: z.ZodString;
31
+ isSubmitting: z.ZodBoolean;
32
+ attachedFiles: z.ZodArray<
33
+ z.ZodObject<
34
+ {
35
+ name: z.ZodString;
36
+ path: z.ZodString;
37
+ size: z.ZodNumber;
38
+ mimeType: z.ZodString;
39
+ },
40
+ z.core.$strip
41
+ >
42
+ >;
43
+ },
44
+ z.core.$strip
45
+ >;
35
46
  export type InputState = z.infer<typeof InputState>;
36
47
  /**
37
48
  * Chat session UI state
38
49
  */
39
- export declare const ChatSessionState: z.ZodObject<{
40
- sessionId: z.ZodNullable<z.ZodString>;
41
- isConnected: z.ZodBoolean;
42
- isStreaming: z.ZodBoolean;
43
- messages: z.ZodArray<z.ZodObject<{
44
- id: z.ZodString;
45
- role: z.ZodEnum<{
46
- user: "user";
47
- assistant: "assistant";
48
- system: "system";
49
- }>;
50
- content: z.ZodString;
51
- timestamp: z.ZodISODateTime;
52
- isStreaming: z.ZodDefault<z.ZodBoolean>;
53
- streamingStartTime: z.ZodOptional<z.ZodNumber>;
54
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
55
- }, z.core.$strip>>;
56
- input: z.ZodObject<{
57
- value: z.ZodString;
58
- isSubmitting: z.ZodBoolean;
59
- attachedFiles: z.ZodArray<z.ZodObject<{
60
- name: z.ZodString;
61
- path: z.ZodString;
62
- size: z.ZodNumber;
63
- mimeType: z.ZodString;
64
- }, z.core.$strip>>;
65
- }, z.core.$strip>;
66
- error: z.ZodNullable<z.ZodString>;
67
- }, z.core.$strip>;
50
+ export declare const ChatSessionState: z.ZodObject<
51
+ {
52
+ sessionId: z.ZodNullable<z.ZodString>;
53
+ isConnected: z.ZodBoolean;
54
+ isStreaming: z.ZodBoolean;
55
+ messages: z.ZodArray<
56
+ z.ZodObject<
57
+ {
58
+ id: z.ZodString;
59
+ role: z.ZodEnum<{
60
+ user: "user";
61
+ assistant: "assistant";
62
+ system: "system";
63
+ }>;
64
+ content: z.ZodString;
65
+ timestamp: z.ZodISODateTime;
66
+ isStreaming: z.ZodDefault<z.ZodBoolean>;
67
+ streamingStartTime: z.ZodOptional<z.ZodNumber>;
68
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
69
+ },
70
+ z.core.$strip
71
+ >
72
+ >;
73
+ input: z.ZodObject<
74
+ {
75
+ value: z.ZodString;
76
+ isSubmitting: z.ZodBoolean;
77
+ attachedFiles: z.ZodArray<
78
+ z.ZodObject<
79
+ {
80
+ name: z.ZodString;
81
+ path: z.ZodString;
82
+ size: z.ZodNumber;
83
+ mimeType: z.ZodString;
84
+ },
85
+ z.core.$strip
86
+ >
87
+ >;
88
+ },
89
+ z.core.$strip
90
+ >;
91
+ error: z.ZodNullable<z.ZodString>;
92
+ },
93
+ z.core.$strip
94
+ >;
68
95
  export type ChatSessionState = z.infer<typeof ChatSessionState>;
69
96
  /**
70
97
  * Connection status
71
98
  */
72
99
  export declare const ConnectionStatus: z.ZodEnum<{
73
- error: "error";
74
- connecting: "connecting";
75
- connected: "connected";
76
- disconnected: "disconnected";
100
+ error: "error";
101
+ disconnected: "disconnected";
102
+ connecting: "connecting";
103
+ connected: "connected";
77
104
  }>;
78
105
  export type ConnectionStatus = z.infer<typeof ConnectionStatus>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,gBAAgB,iEAK3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -6,44 +6,46 @@ import { z } from "zod";
6
6
  * Display message schema (UI representation of messages)
7
7
  */
8
8
  export const DisplayMessage = z.object({
9
- id: z.string(),
10
- role: z.enum(["user", "assistant", "system"]),
11
- content: z.string(),
12
- timestamp: z.iso.datetime(),
13
- isStreaming: z.boolean().default(false),
14
- streamingStartTime: z.number().optional(), // Unix timestamp when streaming started
15
- metadata: z.record(z.string(), z.unknown()).optional(),
9
+ id: z.string(),
10
+ role: z.enum(["user", "assistant", "system"]),
11
+ content: z.string(),
12
+ timestamp: z.iso.datetime(),
13
+ isStreaming: z.boolean().default(false),
14
+ streamingStartTime: z.number().optional(), // Unix timestamp when streaming started
15
+ metadata: z.record(z.string(), z.unknown()).optional(),
16
16
  });
17
17
  /**
18
18
  * Input state schema
19
19
  */
20
20
  export const InputState = z.object({
21
- value: z.string(),
22
- isSubmitting: z.boolean(),
23
- attachedFiles: z.array(z.object({
24
- name: z.string(),
25
- path: z.string(),
26
- size: z.number(),
27
- mimeType: z.string(),
28
- })),
21
+ value: z.string(),
22
+ isSubmitting: z.boolean(),
23
+ attachedFiles: z.array(
24
+ z.object({
25
+ name: z.string(),
26
+ path: z.string(),
27
+ size: z.number(),
28
+ mimeType: z.string(),
29
+ }),
30
+ ),
29
31
  });
30
32
  /**
31
33
  * Chat session UI state
32
34
  */
33
35
  export const ChatSessionState = z.object({
34
- sessionId: z.string().nullable(),
35
- isConnected: z.boolean(),
36
- isStreaming: z.boolean(),
37
- messages: z.array(DisplayMessage),
38
- input: InputState,
39
- error: z.string().nullable(),
36
+ sessionId: z.string().nullable(),
37
+ isConnected: z.boolean(),
38
+ isStreaming: z.boolean(),
39
+ messages: z.array(DisplayMessage),
40
+ input: InputState,
41
+ error: z.string().nullable(),
40
42
  });
41
43
  /**
42
44
  * Connection status
43
45
  */
44
46
  export const ConnectionStatus = z.enum([
45
- "disconnected",
46
- "connecting",
47
- "connected",
48
- "error",
47
+ "disconnected",
48
+ "connecting",
49
+ "connected",
50
+ "error",
49
51
  ]);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/core/schemas/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,wCAAwC;IACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,aAAa,EAAE,CAAC,CAAC,KAAK,CACpB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB,CAAC,CACH;CACF,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACjC,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,cAAc;IACd,YAAY;IACZ,WAAW;IACX,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC"}
@@ -1,30 +1,36 @@
1
- import type { ConnectionStatus, DisplayMessage, InputState } from "../schemas/index.js";
1
+ import type {
2
+ ConnectionStatus,
3
+ DisplayMessage,
4
+ InputState,
5
+ } from "../schemas/index.js";
2
6
  /**
3
7
  * Chat store state
4
8
  */
5
9
  export interface ChatStore {
6
- connectionStatus: ConnectionStatus;
7
- sessionId: string | null;
8
- error: string | null;
9
- messages: DisplayMessage[];
10
- isStreaming: boolean;
11
- streamingStartTime: number | null;
12
- input: InputState;
13
- setConnectionStatus: (status: ConnectionStatus) => void;
14
- setSessionId: (id: string | null) => void;
15
- setError: (error: string | null) => void;
16
- addMessage: (message: DisplayMessage) => void;
17
- updateMessage: (id: string, updates: Partial<DisplayMessage>) => void;
18
- clearMessages: () => void;
19
- setIsStreaming: (streaming: boolean) => void;
20
- setStreamingStartTime: (time: number | null) => void;
21
- setInputValue: (value: string) => void;
22
- setInputSubmitting: (submitting: boolean) => void;
23
- addFileAttachment: (file: InputState["attachedFiles"][number]) => void;
24
- removeFileAttachment: (index: number) => void;
25
- clearInput: () => void;
10
+ connectionStatus: ConnectionStatus;
11
+ sessionId: string | null;
12
+ error: string | null;
13
+ messages: DisplayMessage[];
14
+ isStreaming: boolean;
15
+ streamingStartTime: number | null;
16
+ input: InputState;
17
+ setConnectionStatus: (status: ConnectionStatus) => void;
18
+ setSessionId: (id: string | null) => void;
19
+ setError: (error: string | null) => void;
20
+ addMessage: (message: DisplayMessage) => void;
21
+ updateMessage: (id: string, updates: Partial<DisplayMessage>) => void;
22
+ clearMessages: () => void;
23
+ setIsStreaming: (streaming: boolean) => void;
24
+ setStreamingStartTime: (time: number | null) => void;
25
+ setInputValue: (value: string) => void;
26
+ setInputSubmitting: (submitting: boolean) => void;
27
+ addFileAttachment: (file: InputState["attachedFiles"][number]) => void;
28
+ removeFileAttachment: (index: number) => void;
29
+ clearInput: () => void;
26
30
  }
27
31
  /**
28
32
  * Create chat store
29
33
  */
30
- export declare const useChatStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ChatStore>>;
34
+ export declare const useChatStore: import("zustand").UseBoundStore<
35
+ import("zustand").StoreApi<ChatStore>
36
+ >;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/chat-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,SAAS;IAExB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGlC,KAAK,EAAE,UAAU,CAAC;IAGlB,mBAAmB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,qBAAqB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACvE,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,wEAyEtB,CAAC"}