@alexanderolsen/create-deepagent 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 (193) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +661 -0
  3. package/dist/index.js.map +1 -0
  4. package/package.json +59 -0
  5. package/registry/frameworks/deno/.env.example +6 -0
  6. package/registry/frameworks/deno/README.md +137 -0
  7. package/registry/frameworks/deno/client/index.html +23 -0
  8. package/registry/frameworks/deno/client/package.json +30 -0
  9. package/registry/frameworks/deno/client/public/favicon.ico +0 -0
  10. package/registry/frameworks/deno/client/src/components/Chat.tsx +124 -0
  11. package/registry/frameworks/deno/client/src/components/ChatApp.tsx +129 -0
  12. package/registry/frameworks/deno/client/src/components/Conversation.tsx +91 -0
  13. package/registry/frameworks/deno/client/src/components/MessageBubbles.tsx +88 -0
  14. package/registry/frameworks/deno/client/src/components/MessageReasoning.tsx +71 -0
  15. package/registry/frameworks/deno/client/src/components/MessageThread.tsx +135 -0
  16. package/registry/frameworks/deno/client/src/components/StreamingIndicator.tsx +36 -0
  17. package/registry/frameworks/deno/client/src/components/Subagents.tsx +120 -0
  18. package/registry/frameworks/deno/client/src/components/ThemeIcons.tsx +31 -0
  19. package/registry/frameworks/deno/client/src/components/ThreadHistory.tsx +73 -0
  20. package/registry/frameworks/deno/client/src/components/ToolCall.tsx +89 -0
  21. package/registry/frameworks/deno/client/src/lib/agent-type.ts +4 -0
  22. package/registry/frameworks/deno/client/src/lib/chat/threads-client.ts +51 -0
  23. package/registry/frameworks/deno/client/src/main.tsx +11 -0
  24. package/registry/frameworks/deno/client/src/styles/globals.css +714 -0
  25. package/registry/frameworks/deno/client/src/vite-env.d.ts +1 -0
  26. package/registry/frameworks/deno/client/tsconfig.app.json +7 -0
  27. package/registry/frameworks/deno/client/tsconfig.json +24 -0
  28. package/registry/frameworks/deno/client/tsconfig.node.json +19 -0
  29. package/registry/frameworks/deno/client/vite.config.ts +24 -0
  30. package/registry/frameworks/deno/deno.json +16 -0
  31. package/registry/frameworks/deno/main.ts +23 -0
  32. package/registry/frameworks/deno/package.json +14 -0
  33. package/registry/frameworks/deno/server/agent/index.ts +60 -0
  34. package/registry/frameworks/deno/server/agent/middleware.ts +24 -0
  35. package/registry/frameworks/deno/server/agent/tools.ts +64 -0
  36. package/registry/frameworks/deno/server/registry.ts +40 -0
  37. package/registry/frameworks/deno/server/routes.ts +114 -0
  38. package/registry/frameworks/deno/server/serialize.ts +30 -0
  39. package/registry/frameworks/deno/server/session.ts +210 -0
  40. package/registry/frameworks/deno/server/threads.ts +404 -0
  41. package/registry/frameworks/deno.ts +17 -0
  42. package/registry/frameworks/hono/.env.example +6 -0
  43. package/registry/frameworks/hono/README.md +186 -0
  44. package/registry/frameworks/hono/index.html +22 -0
  45. package/registry/frameworks/hono/package.json +42 -0
  46. package/registry/frameworks/hono/src/components/Chat.tsx +124 -0
  47. package/registry/frameworks/hono/src/components/ChatApp.tsx +129 -0
  48. package/registry/frameworks/hono/src/components/Conversation.tsx +90 -0
  49. package/registry/frameworks/hono/src/components/MessageBubbles.tsx +88 -0
  50. package/registry/frameworks/hono/src/components/MessageReasoning.tsx +71 -0
  51. package/registry/frameworks/hono/src/components/MessageThread.tsx +135 -0
  52. package/registry/frameworks/hono/src/components/StreamingIndicator.tsx +36 -0
  53. package/registry/frameworks/hono/src/components/Subagents.tsx +120 -0
  54. package/registry/frameworks/hono/src/components/ThemeIcons.tsx +31 -0
  55. package/registry/frameworks/hono/src/components/ThreadHistory.tsx +73 -0
  56. package/registry/frameworks/hono/src/components/ToolCall.tsx +89 -0
  57. package/registry/frameworks/hono/src/lib/agent/types.ts +4 -0
  58. package/registry/frameworks/hono/src/lib/chat/threads-client.ts +57 -0
  59. package/registry/frameworks/hono/src/main.tsx +11 -0
  60. package/registry/frameworks/hono/src/styles/globals.css +714 -0
  61. package/registry/frameworks/hono/src/vite-env.d.ts +1 -0
  62. package/registry/frameworks/hono/tsconfig.app.json +22 -0
  63. package/registry/frameworks/hono/tsconfig.json +7 -0
  64. package/registry/frameworks/hono/tsconfig.worker.json +18 -0
  65. package/registry/frameworks/hono/vite.config.ts +16 -0
  66. package/registry/frameworks/hono/worker/agent/index.ts +53 -0
  67. package/registry/frameworks/hono/worker/agent/middleware.ts +20 -0
  68. package/registry/frameworks/hono/worker/agent/tools.ts +55 -0
  69. package/registry/frameworks/hono/worker/durable-objects/thread-session.ts +159 -0
  70. package/registry/frameworks/hono/worker/env.d.ts +17 -0
  71. package/registry/frameworks/hono/worker/index.ts +140 -0
  72. package/registry/frameworks/hono/worker/server/registry.ts +39 -0
  73. package/registry/frameworks/hono/worker/server/runs.ts +82 -0
  74. package/registry/frameworks/hono/worker/server/serialize.ts +30 -0
  75. package/registry/frameworks/hono/worker/server/threads.ts +404 -0
  76. package/registry/frameworks/hono/worker/tsconfig.json +4 -0
  77. package/registry/frameworks/hono/wrangler.jsonc +28 -0
  78. package/registry/frameworks/hono.ts +35 -0
  79. package/registry/frameworks/next/.env.example +6 -0
  80. package/registry/frameworks/next/README.md +173 -0
  81. package/registry/frameworks/next/app/api/threads/[threadId]/commands/route.ts +21 -0
  82. package/registry/frameworks/next/app/api/threads/[threadId]/history/route.ts +35 -0
  83. package/registry/frameworks/next/app/api/threads/[threadId]/route.ts +13 -0
  84. package/registry/frameworks/next/app/api/threads/[threadId]/state/route.ts +51 -0
  85. package/registry/frameworks/next/app/api/threads/[threadId]/stream/route.ts +30 -0
  86. package/registry/frameworks/next/app/api/threads/route.ts +11 -0
  87. package/registry/frameworks/next/app/favicon.ico +0 -0
  88. package/registry/frameworks/next/app/globals.css +712 -0
  89. package/registry/frameworks/next/app/layout.tsx +34 -0
  90. package/registry/frameworks/next/app/page.tsx +5 -0
  91. package/registry/frameworks/next/components/Chat.tsx +124 -0
  92. package/registry/frameworks/next/components/ChatApp.tsx +129 -0
  93. package/registry/frameworks/next/components/Conversation.tsx +90 -0
  94. package/registry/frameworks/next/components/MessageBubbles.tsx +88 -0
  95. package/registry/frameworks/next/components/MessageReasoning.tsx +71 -0
  96. package/registry/frameworks/next/components/MessageThread.tsx +135 -0
  97. package/registry/frameworks/next/components/StreamingIndicator.tsx +36 -0
  98. package/registry/frameworks/next/components/Subagents.tsx +120 -0
  99. package/registry/frameworks/next/components/ThemeIcons.tsx +31 -0
  100. package/registry/frameworks/next/components/ThreadHistory.tsx +73 -0
  101. package/registry/frameworks/next/components/ToolCall.tsx +89 -0
  102. package/registry/frameworks/next/eslint.config.mjs +18 -0
  103. package/registry/frameworks/next/lib/agent/index.ts +95 -0
  104. package/registry/frameworks/next/lib/agent/middleware.ts +40 -0
  105. package/registry/frameworks/next/lib/agent/tools.ts +66 -0
  106. package/registry/frameworks/next/lib/chat/threads-client.ts +57 -0
  107. package/registry/frameworks/next/lib/server/registry.ts +57 -0
  108. package/registry/frameworks/next/lib/server/serialize.ts +32 -0
  109. package/registry/frameworks/next/lib/server/session.ts +212 -0
  110. package/registry/frameworks/next/lib/server/threads.ts +406 -0
  111. package/registry/frameworks/next/next.config.ts +7 -0
  112. package/registry/frameworks/next/package.json +37 -0
  113. package/registry/frameworks/next/postcss.config.mjs +7 -0
  114. package/registry/frameworks/next/public/file.svg +1 -0
  115. package/registry/frameworks/next/public/globe.svg +1 -0
  116. package/registry/frameworks/next/public/next.svg +1 -0
  117. package/registry/frameworks/next/public/vercel.svg +1 -0
  118. package/registry/frameworks/next/public/window.svg +1 -0
  119. package/registry/frameworks/next/tsconfig.json +34 -0
  120. package/registry/frameworks/next.ts +17 -0
  121. package/registry/frameworks/nuxt/.env.example +3 -0
  122. package/registry/frameworks/nuxt/README.md +133 -0
  123. package/registry/frameworks/nuxt/app/app.vue +26 -0
  124. package/registry/frameworks/nuxt/app/assets/css/main.css +707 -0
  125. package/registry/frameworks/nuxt/app/components/Chat.vue +105 -0
  126. package/registry/frameworks/nuxt/app/components/ChatApp.vue +89 -0
  127. package/registry/frameworks/nuxt/app/components/ChatThread.vue +27 -0
  128. package/registry/frameworks/nuxt/app/components/MessageBubble.vue +60 -0
  129. package/registry/frameworks/nuxt/app/components/MessageBubbles.vue +213 -0
  130. package/registry/frameworks/nuxt/app/components/MessageList.vue +51 -0
  131. package/registry/frameworks/nuxt/app/components/MessageReasoning.vue +53 -0
  132. package/registry/frameworks/nuxt/app/components/StreamingIndicator.vue +9 -0
  133. package/registry/frameworks/nuxt/app/components/SubagentDetail.vue +51 -0
  134. package/registry/frameworks/nuxt/app/components/SubagentList.vue +49 -0
  135. package/registry/frameworks/nuxt/app/components/ThemeToggle.vue +43 -0
  136. package/registry/frameworks/nuxt/app/components/ThreadHistory.vue +65 -0
  137. package/registry/frameworks/nuxt/app/components/ToolCall.vue +81 -0
  138. package/registry/frameworks/nuxt/app/components/TypingDots.vue +14 -0
  139. package/registry/frameworks/nuxt/app/composables/useTheme.ts +14 -0
  140. package/registry/frameworks/nuxt/app/utils/streaming.ts +44 -0
  141. package/registry/frameworks/nuxt/app/utils/threads.ts +57 -0
  142. package/registry/frameworks/nuxt/nuxt.config.ts +6 -0
  143. package/registry/frameworks/nuxt/package.json +28 -0
  144. package/registry/frameworks/nuxt/public/favicon.ico +0 -0
  145. package/registry/frameworks/nuxt/public/robots.txt +2 -0
  146. package/registry/frameworks/nuxt/server/agent/index.ts +89 -0
  147. package/registry/frameworks/nuxt/server/agent/middleware.ts +38 -0
  148. package/registry/frameworks/nuxt/server/agent/tools.ts +66 -0
  149. package/registry/frameworks/nuxt/server/api/threads/[threadId]/commands.post.ts +16 -0
  150. package/registry/frameworks/nuxt/server/api/threads/[threadId]/history.post.ts +37 -0
  151. package/registry/frameworks/nuxt/server/api/threads/[threadId]/index.delete.ts +12 -0
  152. package/registry/frameworks/nuxt/server/api/threads/[threadId]/state.get.ts +22 -0
  153. package/registry/frameworks/nuxt/server/api/threads/[threadId]/state.post.ts +32 -0
  154. package/registry/frameworks/nuxt/server/api/threads/[threadId]/stream.post.ts +24 -0
  155. package/registry/frameworks/nuxt/server/api/threads/index.get.ts +13 -0
  156. package/registry/frameworks/nuxt/server/utils/runtime.ts +42 -0
  157. package/registry/frameworks/nuxt/server/utils/serialize.ts +30 -0
  158. package/registry/frameworks/nuxt/server/utils/session.ts +210 -0
  159. package/registry/frameworks/nuxt/server/utils/threads.ts +404 -0
  160. package/registry/frameworks/nuxt/tsconfig.json +18 -0
  161. package/registry/frameworks/nuxt.ts +17 -0
  162. package/registry/frameworks/vite/.env.example +20 -0
  163. package/registry/frameworks/vite/README.md +149 -0
  164. package/registry/frameworks/vite/agent/index.ts +59 -0
  165. package/registry/frameworks/vite/agent/middleware.ts +24 -0
  166. package/registry/frameworks/vite/agent/tools.ts +64 -0
  167. package/registry/frameworks/vite/index.html +23 -0
  168. package/registry/frameworks/vite/langgraph.json +16 -0
  169. package/registry/frameworks/vite/package.json +39 -0
  170. package/registry/frameworks/vite/public/favicon.ico +0 -0
  171. package/registry/frameworks/vite/scripts/vite-langgraph-proxy.ts +34 -0
  172. package/registry/frameworks/vite/src/components/Chat.tsx +124 -0
  173. package/registry/frameworks/vite/src/components/ChatApp.tsx +122 -0
  174. package/registry/frameworks/vite/src/components/Conversation.tsx +91 -0
  175. package/registry/frameworks/vite/src/components/MessageBubbles.tsx +88 -0
  176. package/registry/frameworks/vite/src/components/MessageReasoning.tsx +71 -0
  177. package/registry/frameworks/vite/src/components/MessageThread.tsx +135 -0
  178. package/registry/frameworks/vite/src/components/StreamingIndicator.tsx +36 -0
  179. package/registry/frameworks/vite/src/components/Subagents.tsx +120 -0
  180. package/registry/frameworks/vite/src/components/ThemeIcons.tsx +31 -0
  181. package/registry/frameworks/vite/src/components/ThreadHistory.tsx +73 -0
  182. package/registry/frameworks/vite/src/components/ToolCall.tsx +89 -0
  183. package/registry/frameworks/vite/src/lib/agent-type.ts +4 -0
  184. package/registry/frameworks/vite/src/lib/chat/threads-client.ts +114 -0
  185. package/registry/frameworks/vite/src/main.tsx +11 -0
  186. package/registry/frameworks/vite/src/styles/globals.css +714 -0
  187. package/registry/frameworks/vite/src/vite-env.d.ts +11 -0
  188. package/registry/frameworks/vite/tsconfig.app.json +24 -0
  189. package/registry/frameworks/vite/tsconfig.json +7 -0
  190. package/registry/frameworks/vite/tsconfig.node.json +21 -0
  191. package/registry/frameworks/vite/vercel.json +3 -0
  192. package/registry/frameworks/vite/vite.config.ts +24 -0
  193. package/registry/frameworks/vite.ts +17 -0
@@ -0,0 +1,714 @@
1
+ @import "tailwindcss";
2
+
3
+ :root {
4
+ color-scheme: dark;
5
+ --font-geist-sans: "Geist", Inter, ui-sans-serif, system-ui, sans-serif;
6
+ --font-geist-mono: "Geist Mono", ui-monospace, monospace;
7
+ }
8
+
9
+ body {
10
+ margin: 0;
11
+ background: #030710;
12
+ font-family:
13
+ var(--font-geist-sans),
14
+ Inter,
15
+ ui-sans-serif,
16
+ system-ui,
17
+ -apple-system,
18
+ BlinkMacSystemFont,
19
+ "Segoe UI",
20
+ sans-serif;
21
+ }
22
+
23
+ .app-shell {
24
+ --bg-primary: #030710;
25
+ --bg-secondary: #0d1322;
26
+ --bg-card: #161f34;
27
+ --text-primary: #f2faff;
28
+ --text-secondary: #99d3ff;
29
+ --accent: #7fc8ff;
30
+ --accent-bright: #006ddd;
31
+
32
+ box-sizing: border-box;
33
+ display: flex;
34
+ flex-direction: row;
35
+ align-items: stretch;
36
+ height: 100vh;
37
+ overflow: hidden;
38
+ background: var(--bg-primary);
39
+ color: var(--text-primary);
40
+ }
41
+
42
+ .app-shell.light {
43
+ --bg-primary: #f2faff;
44
+ --bg-secondary: #e5f4ff;
45
+ --bg-card: #cce9ff;
46
+ --text-primary: #030710;
47
+ --text-secondary: #161f34;
48
+ --accent: #006ddd;
49
+ --accent-bright: #0052a8;
50
+ color-scheme: light;
51
+ }
52
+
53
+ .eyebrow {
54
+ color: var(--accent);
55
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
56
+ font-size: 0.74rem;
57
+ letter-spacing: 0.02em;
58
+ text-transform: uppercase;
59
+ }
60
+
61
+ p {
62
+ margin: 0;
63
+ }
64
+
65
+ code {
66
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
67
+ }
68
+
69
+ /* ----------------------------------------------------------------- sidebar */
70
+
71
+ .sidebar {
72
+ box-sizing: border-box;
73
+ display: flex;
74
+ flex-direction: column;
75
+ gap: 16px;
76
+ width: 280px;
77
+ flex-shrink: 0;
78
+ padding: 24px 18px;
79
+ border-right: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
80
+ background: var(--bg-secondary);
81
+ overflow: hidden;
82
+ }
83
+
84
+ .sidebar-head {
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: space-between;
88
+ }
89
+
90
+ .new-thread {
91
+ border: 0;
92
+ border-radius: 999px;
93
+ background: var(--accent);
94
+ color: #030710;
95
+ cursor: pointer;
96
+ padding: 8px 14px;
97
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
98
+ font-size: 0.74rem;
99
+ letter-spacing: -0.02em;
100
+ }
101
+
102
+ .thread-list {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 6px;
106
+ margin: 0;
107
+ padding: 0;
108
+ list-style: none;
109
+ overflow-y: auto;
110
+ }
111
+
112
+ .thread-empty {
113
+ padding: 12px;
114
+ color: var(--text-secondary);
115
+ font-size: 0.85rem;
116
+ }
117
+
118
+ .thread-item {
119
+ display: flex;
120
+ align-items: stretch;
121
+ gap: 4px;
122
+ border: 1px solid transparent;
123
+ border-radius: 14px;
124
+ }
125
+
126
+ .thread-item.active {
127
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
128
+ background: var(--bg-card);
129
+ }
130
+
131
+ .thread-open {
132
+ flex: 1;
133
+ min-width: 0;
134
+ display: flex;
135
+ flex-direction: column;
136
+ gap: 4px;
137
+ border: 0;
138
+ border-radius: 14px;
139
+ background: transparent;
140
+ color: inherit;
141
+ cursor: pointer;
142
+ padding: 10px 12px;
143
+ text-align: left;
144
+ }
145
+
146
+ .thread-title {
147
+ overflow: hidden;
148
+ font-size: 0.92rem;
149
+ text-overflow: ellipsis;
150
+ white-space: nowrap;
151
+ }
152
+
153
+ .thread-time {
154
+ color: var(--text-secondary);
155
+ font-size: 0.72rem;
156
+ }
157
+
158
+ .thread-delete {
159
+ border: 0;
160
+ border-radius: 12px;
161
+ background: transparent;
162
+ color: var(--text-secondary);
163
+ cursor: pointer;
164
+ padding: 0 12px;
165
+ font-size: 1.2rem;
166
+ line-height: 1;
167
+ }
168
+
169
+ .thread-delete:hover {
170
+ color: var(--accent);
171
+ }
172
+
173
+ /* -------------------------------------------------------------------- main */
174
+
175
+ .chat-main {
176
+ box-sizing: border-box;
177
+ display: flex;
178
+ flex-direction: column;
179
+ flex: 1;
180
+ min-width: 0;
181
+ height: 100%;
182
+ }
183
+
184
+ .breadcrumb {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 10px;
188
+ flex-shrink: 0;
189
+ min-height: 56px;
190
+ padding: 0 48px;
191
+ border-bottom: 1px solid color-mix(in srgb, var(--accent) 18%, transparent);
192
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
193
+ font-size: 0.82rem;
194
+ }
195
+
196
+ .crumb-link {
197
+ border: 0;
198
+ background: transparent;
199
+ color: var(--accent);
200
+ cursor: pointer;
201
+ padding: 0;
202
+ font: inherit;
203
+ }
204
+
205
+ .crumb-link:hover {
206
+ text-decoration: underline;
207
+ }
208
+
209
+ .crumb-sep {
210
+ color: var(--text-secondary);
211
+ }
212
+
213
+ .crumb-current {
214
+ color: var(--text-primary);
215
+ }
216
+
217
+ .conversation {
218
+ flex: 1;
219
+ min-height: 0;
220
+ overflow-y: auto;
221
+ padding: 32px 48px;
222
+ }
223
+
224
+ .conversation-inner {
225
+ display: flex;
226
+ flex-direction: column;
227
+ gap: 16px;
228
+ width: min(760px, 100%);
229
+ margin: 0 auto;
230
+ }
231
+
232
+ .reset-note {
233
+ padding: 12px 16px;
234
+ border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
235
+ border-radius: 14px;
236
+ background: var(--bg-secondary);
237
+ color: var(--text-secondary);
238
+ font-size: 0.9rem;
239
+ }
240
+
241
+ .theme-toggle {
242
+ position: fixed;
243
+ top: 8px;
244
+ right: 16px;
245
+ z-index: 10;
246
+ display: grid;
247
+ width: 40px;
248
+ height: 40px;
249
+ place-items: center;
250
+ border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
251
+ border-radius: 999px;
252
+ background: var(--bg-secondary);
253
+ color: var(--accent);
254
+ cursor: pointer;
255
+ padding: 0;
256
+ }
257
+
258
+ .theme-toggle svg {
259
+ width: 20px;
260
+ height: 20px;
261
+ }
262
+
263
+ /* --------------------------------------------------------------- messages */
264
+
265
+ .empty-state {
266
+ color: var(--text-secondary);
267
+ line-height: 1.5;
268
+ }
269
+
270
+ .empty-state.center {
271
+ display: grid;
272
+ place-items: center;
273
+ width: 100%;
274
+ height: 100%;
275
+ padding: 48px;
276
+ }
277
+
278
+ .message {
279
+ max-width: 80%;
280
+ padding: 16px 18px;
281
+ border-radius: 20px;
282
+ background: var(--bg-card);
283
+ }
284
+
285
+ .message.user {
286
+ align-self: flex-end;
287
+ background: var(--accent);
288
+ color: #030710;
289
+ }
290
+
291
+ .message.tool {
292
+ max-width: 100%;
293
+ border: 1px dashed color-mix(in srgb, var(--accent) 45%, transparent);
294
+ }
295
+
296
+ .tool-call-list {
297
+ margin: 0 0 10px;
298
+ padding-left: 18px;
299
+ color: var(--text-secondary);
300
+ font-size: 0.9rem;
301
+ line-height: 1.45;
302
+ }
303
+
304
+ .tool-call-list strong {
305
+ color: var(--accent);
306
+ font-weight: 600;
307
+ }
308
+
309
+ .message span {
310
+ display: block;
311
+ margin-bottom: 8px;
312
+ color: inherit;
313
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
314
+ font-size: 0.7rem;
315
+ text-transform: uppercase;
316
+ }
317
+
318
+ .message p {
319
+ white-space: pre-wrap;
320
+ line-height: 1.5;
321
+ }
322
+
323
+ .error {
324
+ color: var(--text-secondary);
325
+ }
326
+
327
+ /* ------------------------------------------------------------- subagents */
328
+
329
+ .subagent-list {
330
+ display: grid;
331
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
332
+ gap: 12px;
333
+ }
334
+
335
+ .subagent-chip {
336
+ display: flex;
337
+ flex-direction: column;
338
+ gap: 8px;
339
+ align-items: flex-start;
340
+ text-align: left;
341
+ padding: 14px 16px;
342
+ border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
343
+ border-radius: 16px;
344
+ background: var(--bg-card);
345
+ color: inherit;
346
+ cursor: pointer;
347
+ }
348
+
349
+ .subagent-chip:hover:not(:disabled) {
350
+ border-color: var(--accent);
351
+ }
352
+
353
+ .subagent-chip:disabled {
354
+ cursor: default;
355
+ }
356
+
357
+ .subagent-chip-head {
358
+ display: flex;
359
+ align-items: center;
360
+ justify-content: space-between;
361
+ gap: 8px;
362
+ width: 100%;
363
+ }
364
+
365
+ .subagent-chip-name {
366
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
367
+ font-size: 0.92rem;
368
+ }
369
+
370
+ .subagent-chip-task {
371
+ color: var(--text-secondary);
372
+ font-size: 0.85rem;
373
+ line-height: 1.4;
374
+ display: -webkit-box;
375
+ -webkit-line-clamp: 2;
376
+ -webkit-box-orient: vertical;
377
+ overflow: hidden;
378
+ }
379
+
380
+ .subagent-status {
381
+ border-radius: 999px;
382
+ padding: 3px 10px;
383
+ font-size: 0.66rem;
384
+ text-transform: uppercase;
385
+ letter-spacing: 0.02em;
386
+ }
387
+
388
+ .status-running {
389
+ background: color-mix(in srgb, var(--accent) 28%, transparent);
390
+ color: var(--text-primary);
391
+ }
392
+
393
+ .status-complete {
394
+ background: color-mix(in srgb, #36d399 30%, transparent);
395
+ color: var(--text-primary);
396
+ }
397
+
398
+ .status-error {
399
+ background: color-mix(in srgb, #f87272 35%, transparent);
400
+ color: var(--text-primary);
401
+ }
402
+
403
+ .subagent-prompt {
404
+ display: grid;
405
+ gap: 6px;
406
+ padding: 14px 16px;
407
+ border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
408
+ border-radius: 16px;
409
+ background: var(--bg-secondary);
410
+ }
411
+
412
+ .subagent-prompt span {
413
+ color: var(--accent);
414
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
415
+ font-size: 0.7rem;
416
+ text-transform: uppercase;
417
+ }
418
+
419
+ .subagent-prompt p {
420
+ line-height: 1.5;
421
+ }
422
+
423
+ /* ------------------------------------------------------------- reasoning */
424
+
425
+ .reasoning {
426
+ margin-bottom: 10px;
427
+ }
428
+
429
+ .reasoning-toggle {
430
+ display: inline-flex;
431
+ align-items: center;
432
+ gap: 6px;
433
+ border: 0;
434
+ background: transparent;
435
+ color: var(--text-secondary);
436
+ cursor: pointer;
437
+ padding: 0;
438
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
439
+ font-size: 0.78rem;
440
+ }
441
+
442
+ .reasoning-toggle:hover {
443
+ color: var(--accent);
444
+ }
445
+
446
+ .reasoning-caret {
447
+ font-size: 0.7rem;
448
+ transition: transform 0.15s ease;
449
+ }
450
+
451
+ .reasoning.open .reasoning-caret {
452
+ transform: rotate(90deg);
453
+ }
454
+
455
+ .reasoning-icon {
456
+ display: inline-grid;
457
+ place-items: center;
458
+ }
459
+
460
+ .reasoning-icon svg {
461
+ width: 15px;
462
+ height: 15px;
463
+ }
464
+
465
+ .reasoning-dots {
466
+ color: var(--accent);
467
+ }
468
+
469
+ .reasoning-text {
470
+ margin: 8px 0 0;
471
+ padding-left: 14px;
472
+ border-left: 2px solid color-mix(in srgb, var(--accent) 40%, transparent);
473
+ color: var(--text-secondary);
474
+ font-size: 0.86rem;
475
+ font-style: italic;
476
+ line-height: 1.5;
477
+ white-space: pre-wrap;
478
+ }
479
+
480
+ /* ------------------------------------------------------------ tool calls */
481
+
482
+ .toolcall {
483
+ border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
484
+ border-radius: 14px;
485
+ background: color-mix(in srgb, var(--bg-secondary) 70%, transparent);
486
+ overflow: hidden;
487
+ }
488
+
489
+ .toolcall-head {
490
+ display: flex;
491
+ align-items: center;
492
+ gap: 10px;
493
+ width: 100%;
494
+ border: 0;
495
+ background: transparent;
496
+ color: inherit;
497
+ cursor: pointer;
498
+ padding: 10px 14px;
499
+ text-align: left;
500
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
501
+ font-size: 0.82rem;
502
+ }
503
+
504
+ .toolcall-icon {
505
+ display: inline-grid;
506
+ place-items: center;
507
+ color: var(--accent);
508
+ }
509
+
510
+ .toolcall-icon svg {
511
+ width: 16px;
512
+ height: 16px;
513
+ }
514
+
515
+ .toolcall-name {
516
+ flex: 1;
517
+ min-width: 0;
518
+ overflow: hidden;
519
+ text-overflow: ellipsis;
520
+ white-space: nowrap;
521
+ }
522
+
523
+ .toolcall-chevron {
524
+ color: var(--text-secondary);
525
+ font-size: 0.72rem;
526
+ }
527
+
528
+ .toolcall-body {
529
+ display: grid;
530
+ gap: 10px;
531
+ padding: 0 14px 14px;
532
+ }
533
+
534
+ .toolcall-section {
535
+ display: grid;
536
+ gap: 4px;
537
+ }
538
+
539
+ .toolcall-section span {
540
+ color: var(--accent);
541
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
542
+ font-size: 0.66rem;
543
+ text-transform: uppercase;
544
+ }
545
+
546
+ .toolcall-section pre {
547
+ margin: 0;
548
+ max-height: 260px;
549
+ overflow: auto;
550
+ padding: 10px 12px;
551
+ border-radius: 10px;
552
+ background: var(--bg-primary);
553
+ color: var(--text-secondary);
554
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
555
+ font-size: 0.8rem;
556
+ line-height: 1.45;
557
+ white-space: pre-wrap;
558
+ word-break: break-word;
559
+ }
560
+
561
+ /* ----------------------------------------------------- typing indicator */
562
+
563
+ .streaming-indicator {
564
+ display: flex;
565
+ align-items: center;
566
+ min-height: 24px;
567
+ padding: 0 4px;
568
+ }
569
+
570
+ .typing-dots,
571
+ .inline-dots {
572
+ display: inline-flex;
573
+ flex-direction: row;
574
+ flex-wrap: nowrap;
575
+ gap: 5px;
576
+ align-items: center;
577
+ }
578
+
579
+ .typing-dots {
580
+ height: 24px;
581
+ }
582
+
583
+ .inline-dots {
584
+ gap: 3px;
585
+ }
586
+
587
+ .typing-dots span,
588
+ .inline-dots span {
589
+ flex-shrink: 0;
590
+ border-radius: 50%;
591
+ background: currentColor;
592
+ animation: typing-bounce 1.4s infinite ease-in-out both;
593
+ }
594
+
595
+ .typing-dots span {
596
+ width: 7px;
597
+ height: 7px;
598
+ background: var(--accent);
599
+ }
600
+
601
+ .inline-dots span {
602
+ width: 4px;
603
+ height: 4px;
604
+ }
605
+
606
+ .typing-dots span:nth-child(1),
607
+ .inline-dots span:nth-child(1) {
608
+ animation-delay: -0.32s;
609
+ }
610
+
611
+ .typing-dots span:nth-child(2),
612
+ .inline-dots span:nth-child(2) {
613
+ animation-delay: -0.16s;
614
+ }
615
+
616
+ @keyframes typing-bounce {
617
+ 0%,
618
+ 80%,
619
+ 100% {
620
+ transform: scale(0.6);
621
+ opacity: 0.4;
622
+ }
623
+ 40% {
624
+ transform: scale(1);
625
+ opacity: 1;
626
+ }
627
+ }
628
+
629
+ /* --------------------------------------------------------------- composer */
630
+
631
+ .composer-bar {
632
+ flex-shrink: 0;
633
+ padding: 16px 48px 24px;
634
+ border-top: 1px solid color-mix(in srgb, var(--accent) 18%, transparent);
635
+ }
636
+
637
+ .composer {
638
+ box-sizing: border-box;
639
+ display: flex;
640
+ align-items: flex-end;
641
+ gap: 12px;
642
+ width: min(760px, 100%);
643
+ margin: 0 auto;
644
+ padding: 10px 10px 10px 16px;
645
+ border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
646
+ border-radius: 22px;
647
+ background: var(--bg-secondary);
648
+ }
649
+
650
+ .composer textarea {
651
+ box-sizing: border-box;
652
+ flex: 1;
653
+ min-height: 24px;
654
+ max-height: 200px;
655
+ resize: none;
656
+ border: 0;
657
+ background: transparent;
658
+ color: var(--text-primary);
659
+ font: inherit;
660
+ line-height: 1.5;
661
+ padding: 8px 0;
662
+ outline: none;
663
+ }
664
+
665
+ .composer textarea::placeholder {
666
+ color: var(--text-secondary);
667
+ }
668
+
669
+ .composer button {
670
+ flex-shrink: 0;
671
+ border: 0;
672
+ border-radius: 999px;
673
+ background: var(--accent);
674
+ color: #030710;
675
+ cursor: pointer;
676
+ padding: 10px 20px;
677
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
678
+ }
679
+
680
+ .composer button:disabled {
681
+ cursor: not-allowed;
682
+ opacity: 0.55;
683
+ }
684
+
685
+ @media (max-width: 860px) {
686
+ .app-shell {
687
+ flex-direction: column;
688
+ height: auto;
689
+ min-height: 100vh;
690
+ overflow: visible;
691
+ }
692
+
693
+ .sidebar {
694
+ width: 100%;
695
+ border-right: 0;
696
+ border-bottom: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
697
+ }
698
+
699
+ .chat-main {
700
+ height: auto;
701
+ min-height: 70vh;
702
+ }
703
+
704
+ .breadcrumb,
705
+ .conversation,
706
+ .composer-bar {
707
+ padding-left: 24px;
708
+ padding-right: 24px;
709
+ }
710
+
711
+ .message {
712
+ max-width: 100%;
713
+ }
714
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "composite": true,
10
+ "esModuleInterop": true,
11
+ "module": "esnext",
12
+ "moduleResolution": "bundler",
13
+ "resolveJsonModule": true,
14
+ "isolatedModules": true,
15
+ "jsx": "react-jsx",
16
+ "paths": {
17
+ "@/*": ["./src/*"]
18
+ }
19
+ },
20
+ "include": ["src/**/*.ts", "src/**/*.tsx"],
21
+ "exclude": ["node_modules", "worker"]
22
+ }