@chaaskit/client 0.1.0

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 (135) hide show
  1. package/dist/favicon.svg +11 -0
  2. package/dist/index.html +17 -0
  3. package/dist/lib/LoadingSkeletons-IcIC2JPq.js +132 -0
  4. package/dist/lib/LoadingSkeletons-IcIC2JPq.js.map +1 -0
  5. package/dist/lib/ServerThemeProvider-DNF0LAyk.js +42 -0
  6. package/dist/lib/ServerThemeProvider-DNF0LAyk.js.map +1 -0
  7. package/dist/lib/extensions.js +10 -0
  8. package/dist/lib/extensions.js.map +1 -0
  9. package/dist/lib/favicon.svg +11 -0
  10. package/dist/lib/index.js +74126 -0
  11. package/dist/lib/index.js.map +1 -0
  12. package/dist/lib/logo.svg +12 -0
  13. package/dist/lib/routes/AcceptInviteRoute.js +19 -0
  14. package/dist/lib/routes/AcceptInviteRoute.js.map +1 -0
  15. package/dist/lib/routes/AdminDashboardRoute.js +19 -0
  16. package/dist/lib/routes/AdminDashboardRoute.js.map +1 -0
  17. package/dist/lib/routes/AdminTeamRoute.js +19 -0
  18. package/dist/lib/routes/AdminTeamRoute.js.map +1 -0
  19. package/dist/lib/routes/AdminTeamsRoute.js +19 -0
  20. package/dist/lib/routes/AdminTeamsRoute.js.map +1 -0
  21. package/dist/lib/routes/AdminUsersRoute.js +19 -0
  22. package/dist/lib/routes/AdminUsersRoute.js.map +1 -0
  23. package/dist/lib/routes/ApiKeysRoute.js +19 -0
  24. package/dist/lib/routes/ApiKeysRoute.js.map +1 -0
  25. package/dist/lib/routes/AutomationsRoute.js +19 -0
  26. package/dist/lib/routes/AutomationsRoute.js.map +1 -0
  27. package/dist/lib/routes/ChatRoute.js +19 -0
  28. package/dist/lib/routes/ChatRoute.js.map +1 -0
  29. package/dist/lib/routes/DocumentsRoute.js +19 -0
  30. package/dist/lib/routes/DocumentsRoute.js.map +1 -0
  31. package/dist/lib/routes/OAuthConsentRoute.js +19 -0
  32. package/dist/lib/routes/OAuthConsentRoute.js.map +1 -0
  33. package/dist/lib/routes/PricingRoute.js +19 -0
  34. package/dist/lib/routes/PricingRoute.js.map +1 -0
  35. package/dist/lib/routes/PrivacyRoute.js +19 -0
  36. package/dist/lib/routes/PrivacyRoute.js.map +1 -0
  37. package/dist/lib/routes/TeamSettingsRoute.js +19 -0
  38. package/dist/lib/routes/TeamSettingsRoute.js.map +1 -0
  39. package/dist/lib/routes/TermsRoute.js +19 -0
  40. package/dist/lib/routes/TermsRoute.js.map +1 -0
  41. package/dist/lib/routes/VerifyEmailRoute.js +19 -0
  42. package/dist/lib/routes/VerifyEmailRoute.js.map +1 -0
  43. package/dist/lib/routes.js +79 -0
  44. package/dist/lib/routes.js.map +1 -0
  45. package/dist/lib/ssr-utils.js +29 -0
  46. package/dist/lib/ssr-utils.js.map +1 -0
  47. package/dist/lib/ssr.js +60 -0
  48. package/dist/lib/ssr.js.map +1 -0
  49. package/dist/lib/styles.css +2410 -0
  50. package/dist/lib/useExtensions-B5nX_8XD.js +155 -0
  51. package/dist/lib/useExtensions-B5nX_8XD.js.map +1 -0
  52. package/dist/logo.svg +12 -0
  53. package/package.json +84 -0
  54. package/src/components/AgentSelector.tsx +90 -0
  55. package/src/components/BranchModal.tsx +129 -0
  56. package/src/components/ClientOnly.tsx +27 -0
  57. package/src/components/ExportMenu.tsx +122 -0
  58. package/src/components/LoadingSkeletons.tsx +110 -0
  59. package/src/components/MCPCredentialsSection.tsx +309 -0
  60. package/src/components/MentionChip.tsx +149 -0
  61. package/src/components/MentionDropdown.tsx +175 -0
  62. package/src/components/MentionInput.tsx +293 -0
  63. package/src/components/MessageItem.tsx +300 -0
  64. package/src/components/MessageList.tsx +159 -0
  65. package/src/components/OAuthAppsSection.tsx +124 -0
  66. package/src/components/ProjectFolder.tsx +141 -0
  67. package/src/components/ProjectModal.tsx +296 -0
  68. package/src/components/SSRMessageList.tsx +153 -0
  69. package/src/components/SearchModal.tsx +173 -0
  70. package/src/components/SettingsModal.tsx +412 -0
  71. package/src/components/ShareModal.tsx +280 -0
  72. package/src/components/Sidebar.tsx +491 -0
  73. package/src/components/TeamSwitcher.tsx +273 -0
  74. package/src/components/ToolCallDisplay.tsx +473 -0
  75. package/src/components/ToolConfirmationModal.tsx +130 -0
  76. package/src/components/UsageChart.tsx +177 -0
  77. package/src/components/content/CodeBlock.tsx +69 -0
  78. package/src/components/content/MarkdownRenderer.tsx +64 -0
  79. package/src/components/content/SSRMarkdownRenderer.tsx +158 -0
  80. package/src/contexts/AuthContext.tsx +119 -0
  81. package/src/contexts/ConfigContext.tsx +214 -0
  82. package/src/contexts/ProjectContext.tsx +167 -0
  83. package/src/contexts/ServerConfigProvider.tsx +41 -0
  84. package/src/contexts/ServerThemeProvider.tsx +47 -0
  85. package/src/contexts/TeamContext.tsx +255 -0
  86. package/src/contexts/ThemeContext.tsx +113 -0
  87. package/src/extensions/index.ts +15 -0
  88. package/src/extensions/registry.ts +187 -0
  89. package/src/extensions/useExtensions.ts +52 -0
  90. package/src/hooks/useAppPath.ts +34 -0
  91. package/src/hooks/useBasePath.ts +13 -0
  92. package/src/hooks/useKeyboardShortcuts.ts +50 -0
  93. package/src/hooks/useMentionSearch.ts +106 -0
  94. package/src/index.tsx +116 -0
  95. package/src/layouts/MainLayout.tsx +98 -0
  96. package/src/pages/AcceptInvitePage.tsx +175 -0
  97. package/src/pages/AdminDashboardPage.tsx +362 -0
  98. package/src/pages/AdminTeamPage.tsx +304 -0
  99. package/src/pages/AdminTeamsPage.tsx +242 -0
  100. package/src/pages/AdminUsersPage.tsx +385 -0
  101. package/src/pages/ApiKeysPage.tsx +449 -0
  102. package/src/pages/ChatPage.tsx +310 -0
  103. package/src/pages/DocumentsPage.tsx +577 -0
  104. package/src/pages/LoginPage.tsx +232 -0
  105. package/src/pages/OAuthConsentPage.tsx +234 -0
  106. package/src/pages/PricingPage.tsx +314 -0
  107. package/src/pages/PrivacyPage.tsx +65 -0
  108. package/src/pages/RegisterPage.tsx +153 -0
  109. package/src/pages/ScheduledPromptsPage.tsx +702 -0
  110. package/src/pages/SharedThreadPage.tsx +116 -0
  111. package/src/pages/TeamSettingsPage.tsx +1085 -0
  112. package/src/pages/TermsPage.tsx +82 -0
  113. package/src/pages/VerifyEmailPage.tsx +202 -0
  114. package/src/routes/AcceptInviteRoute.tsx +24 -0
  115. package/src/routes/AdminDashboardRoute.tsx +24 -0
  116. package/src/routes/AdminTeamRoute.tsx +24 -0
  117. package/src/routes/AdminTeamsRoute.tsx +24 -0
  118. package/src/routes/AdminUsersRoute.tsx +24 -0
  119. package/src/routes/ApiKeysRoute.tsx +24 -0
  120. package/src/routes/AutomationsRoute.tsx +24 -0
  121. package/src/routes/ChatRoute.tsx +28 -0
  122. package/src/routes/DocumentsRoute.tsx +24 -0
  123. package/src/routes/OAuthConsentRoute.tsx +24 -0
  124. package/src/routes/PricingRoute.tsx +24 -0
  125. package/src/routes/PrivacyRoute.tsx +24 -0
  126. package/src/routes/TeamSettingsRoute.tsx +24 -0
  127. package/src/routes/TermsRoute.tsx +24 -0
  128. package/src/routes/VerifyEmailRoute.tsx +24 -0
  129. package/src/routes/index.ts +57 -0
  130. package/src/ssr-utils.tsx +84 -0
  131. package/src/ssr.ts +123 -0
  132. package/src/stores/chatStore.ts +670 -0
  133. package/src/styles/index.css +254 -0
  134. package/src/utils/api.ts +78 -0
  135. package/src/vite-env.d.ts +13 -0
@@ -0,0 +1,254 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* Default theme variables (Light) */
6
+ :root {
7
+ --color-primary: 99 102 241;
8
+ --color-primary-hover: 79 70 229;
9
+ --color-secondary: 139 92 246;
10
+
11
+ --color-background: 255 255 255;
12
+ --color-background-secondary: 249 250 251;
13
+ --color-sidebar: 243 244 246;
14
+
15
+ --color-text-primary: 17 24 39;
16
+ --color-text-secondary: 107 114 128;
17
+ --color-text-muted: 156 163 175;
18
+
19
+ --color-border: 229 231 235;
20
+ --color-input-background: 255 255 255;
21
+ --color-input-border: 209 213 219;
22
+
23
+ --color-user-message-bg: 99 102 241;
24
+ --color-user-message-text: 255 255 255;
25
+ --color-assistant-message-bg: 243 244 246;
26
+ --color-assistant-message-text: 17 24 39;
27
+
28
+ --color-success: 16 185 129;
29
+ --color-warning: 245 158 11;
30
+ --color-error: 239 68 68;
31
+
32
+ --font-sans: 'Inter', system-ui, sans-serif;
33
+ --font-mono: 'JetBrains Mono', Menlo, monospace;
34
+
35
+ --radius-sm: 0.25rem;
36
+ --radius-md: 0.5rem;
37
+ --radius-lg: 0.75rem;
38
+ --radius-full: 9999px;
39
+ }
40
+
41
+ /* Dark theme */
42
+ [data-theme="dark"] {
43
+ --color-primary: 129 140 248;
44
+ --color-primary-hover: 165 180 252;
45
+ --color-secondary: 167 139 250;
46
+
47
+ --color-background: 17 24 39;
48
+ --color-background-secondary: 31 41 55;
49
+ --color-sidebar: 15 23 42;
50
+
51
+ --color-text-primary: 249 250 251;
52
+ --color-text-secondary: 209 213 219;
53
+ --color-text-muted: 107 114 128;
54
+
55
+ --color-border: 55 65 81;
56
+ --color-input-background: 31 41 55;
57
+ --color-input-border: 75 85 99;
58
+
59
+ --color-user-message-bg: 79 70 229;
60
+ --color-user-message-text: 255 255 255;
61
+ --color-assistant-message-bg: 31 41 55;
62
+ --color-assistant-message-text: 249 250 251;
63
+
64
+ --color-success: 52 211 153;
65
+ --color-warning: 251 191 36;
66
+ --color-error: 248 113 113;
67
+ }
68
+
69
+ /* Base styles */
70
+ html {
71
+ font-family: var(--font-sans);
72
+ }
73
+
74
+ body {
75
+ @apply bg-background text-text-primary;
76
+ }
77
+
78
+ /* Mobile viewport height fix - use dvh where supported */
79
+ @supports (height: 100dvh) {
80
+ .h-screen-safe {
81
+ height: 100dvh;
82
+ }
83
+ }
84
+
85
+ @supports not (height: 100dvh) {
86
+ .h-screen-safe {
87
+ height: 100vh;
88
+ }
89
+ }
90
+
91
+ /* Fallback for older browsers */
92
+ .h-screen-safe {
93
+ height: 100vh;
94
+ height: 100dvh;
95
+ }
96
+
97
+ /* Scrollbar styling */
98
+ ::-webkit-scrollbar {
99
+ width: 8px;
100
+ height: 8px;
101
+ }
102
+
103
+ ::-webkit-scrollbar-track {
104
+ @apply bg-transparent;
105
+ }
106
+
107
+ ::-webkit-scrollbar-thumb {
108
+ @apply bg-border rounded-full;
109
+ }
110
+
111
+ ::-webkit-scrollbar-thumb:hover {
112
+ @apply bg-text-muted;
113
+ }
114
+
115
+ /* Code block styling */
116
+ pre {
117
+ @apply font-mono text-sm;
118
+ }
119
+
120
+ code {
121
+ @apply font-mono;
122
+ }
123
+
124
+ /* Markdown content styling */
125
+ .markdown-content {
126
+ @apply leading-relaxed;
127
+ }
128
+
129
+ .markdown-content h1 {
130
+ @apply text-2xl font-bold mt-6 mb-4;
131
+ }
132
+
133
+ .markdown-content h2 {
134
+ @apply text-xl font-bold mt-5 mb-3;
135
+ }
136
+
137
+ .markdown-content h3 {
138
+ @apply text-lg font-semibold mt-4 mb-2;
139
+ }
140
+
141
+ .markdown-content p {
142
+ @apply mb-4;
143
+ }
144
+
145
+ .markdown-content ul,
146
+ .markdown-content ol {
147
+ @apply mb-4 pl-6;
148
+ }
149
+
150
+ .markdown-content ul {
151
+ @apply list-disc;
152
+ }
153
+
154
+ .markdown-content ol {
155
+ @apply list-decimal;
156
+ }
157
+
158
+ .markdown-content li {
159
+ @apply mb-1;
160
+ }
161
+
162
+ .markdown-content blockquote {
163
+ @apply border-l-4 border-border pl-4 italic my-4;
164
+ }
165
+
166
+ .markdown-content a {
167
+ @apply text-primary hover:underline;
168
+ }
169
+
170
+ .markdown-content table {
171
+ @apply w-full border-collapse my-4;
172
+ }
173
+
174
+ .markdown-content th,
175
+ .markdown-content td {
176
+ @apply border border-border px-4 py-2 text-left;
177
+ }
178
+
179
+ .markdown-content th {
180
+ @apply bg-background-secondary font-semibold;
181
+ }
182
+
183
+ .markdown-content hr {
184
+ @apply my-6 border-border;
185
+ }
186
+
187
+ /* Animation utilities */
188
+ @keyframes fade-in {
189
+ from {
190
+ opacity: 0;
191
+ }
192
+ to {
193
+ opacity: 1;
194
+ }
195
+ }
196
+
197
+ @keyframes slide-up {
198
+ from {
199
+ transform: translateY(10px);
200
+ opacity: 0;
201
+ }
202
+ to {
203
+ transform: translateY(0);
204
+ opacity: 1;
205
+ }
206
+ }
207
+
208
+ .animate-fade-in {
209
+ animation: fade-in 0.2s ease-out;
210
+ }
211
+
212
+ .animate-slide-up {
213
+ animation: slide-up 0.2s ease-out;
214
+ }
215
+
216
+ /* Typing animation for assistant messages */
217
+ @keyframes typing {
218
+ 0%, 60%, 100% {
219
+ opacity: 1;
220
+ }
221
+ 30% {
222
+ opacity: 0.3;
223
+ }
224
+ }
225
+
226
+ .typing-indicator span {
227
+ animation: typing 1s infinite;
228
+ }
229
+
230
+ .typing-indicator span:nth-child(2) {
231
+ animation-delay: 0.2s;
232
+ }
233
+
234
+ .typing-indicator span:nth-child(3) {
235
+ animation-delay: 0.4s;
236
+ }
237
+
238
+ /* Search highlight styling */
239
+ mark {
240
+ @apply bg-warning/30 text-text-primary rounded px-0.5;
241
+ }
242
+
243
+ /* Line clamp utility */
244
+ .line-clamp-2 {
245
+ display: -webkit-box;
246
+ -webkit-line-clamp: 2;
247
+ -webkit-box-orient: vertical;
248
+ overflow: hidden;
249
+ }
250
+
251
+ /* Keyboard shortcut styling */
252
+ kbd {
253
+ @apply font-sans;
254
+ }
@@ -0,0 +1,78 @@
1
+ class ApiError extends Error {
2
+ constructor(
3
+ public status: number,
4
+ message: string,
5
+ public code?: string
6
+ ) {
7
+ super(message);
8
+ this.name = 'ApiError';
9
+ }
10
+ }
11
+
12
+ interface ApiOptions {
13
+ headers?: Record<string, string>;
14
+ }
15
+
16
+ async function request<T>(
17
+ url: string,
18
+ options: RequestInit & ApiOptions = {}
19
+ ): Promise<T> {
20
+ const { headers, ...rest } = options;
21
+
22
+ const response = await fetch(url, {
23
+ ...rest,
24
+ headers: {
25
+ 'Content-Type': 'application/json',
26
+ ...headers,
27
+ },
28
+ credentials: 'include',
29
+ });
30
+
31
+ if (!response.ok) {
32
+ const error = await response.json().catch(() => ({ message: 'Request failed' }));
33
+ throw new ApiError(response.status, error.error?.message || error.message, error.error?.code);
34
+ }
35
+
36
+ // Handle 204 No Content
37
+ if (response.status === 204) {
38
+ return undefined as T;
39
+ }
40
+
41
+ return response.json();
42
+ }
43
+
44
+ export const api = {
45
+ get<T>(url: string, options?: ApiOptions): Promise<T> {
46
+ return request<T>(url, { method: 'GET', ...options });
47
+ },
48
+
49
+ post<T>(url: string, data: unknown, options?: ApiOptions): Promise<T> {
50
+ return request<T>(url, {
51
+ method: 'POST',
52
+ body: JSON.stringify(data),
53
+ ...options,
54
+ });
55
+ },
56
+
57
+ patch<T>(url: string, data: unknown, options?: ApiOptions): Promise<T> {
58
+ return request<T>(url, {
59
+ method: 'PATCH',
60
+ body: JSON.stringify(data),
61
+ ...options,
62
+ });
63
+ },
64
+
65
+ put<T>(url: string, data: unknown, options?: ApiOptions): Promise<T> {
66
+ return request<T>(url, {
67
+ method: 'PUT',
68
+ body: JSON.stringify(data),
69
+ ...options,
70
+ });
71
+ },
72
+
73
+ delete<T>(url: string, options?: ApiOptions): Promise<T> {
74
+ return request<T>(url, { method: 'DELETE', ...options });
75
+ },
76
+ };
77
+
78
+ export { ApiError };
@@ -0,0 +1,13 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ interface ImportMetaEnv {
4
+ readonly VITE_API_URL?: string;
5
+ readonly DEV: boolean;
6
+ readonly PROD: boolean;
7
+ readonly MODE: string;
8
+ readonly BASE_URL: string;
9
+ }
10
+
11
+ interface ImportMeta {
12
+ readonly env: ImportMetaEnv;
13
+ }