sparkecoder 0.1.98 → 0.1.100

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 (305) hide show
  1. package/README.md +41 -41
  2. package/dist/agent/index.d.ts +3 -3
  3. package/dist/agent/index.js +1274 -59
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/cli.js +10671 -8973
  6. package/dist/cli.js.map +1 -1
  7. package/dist/db/index.d.ts +2 -2
  8. package/dist/{index-BvIissiB.d.ts → index-D5l-DMGC.d.ts} +390 -6
  9. package/dist/index.d.ts +5 -5
  10. package/dist/index.js +10002 -8096
  11. package/dist/index.js.map +1 -1
  12. package/dist/{schema-CohdIL13.d.ts → schema-ecQSnCMz.d.ts} +41 -0
  13. package/dist/server/index.js +8867 -6969
  14. package/dist/server/index.js.map +1 -1
  15. package/dist/skills/default/manage-mcp.md +94 -0
  16. package/dist/skills/default/search-conversations.md +100 -0
  17. package/dist/tools/index.d.ts +2 -2
  18. package/dist/tools/index.js +111 -2
  19. package/dist/tools/index.js.map +1 -1
  20. package/package.json +5 -1
  21. package/src/skills/default/manage-mcp.md +94 -0
  22. package/src/skills/default/search-conversations.md +100 -0
  23. package/web/.next/BUILD_ID +1 -1
  24. package/web/.next/standalone/web/.next/BUILD_ID +1 -1
  25. package/web/.next/standalone/web/.next/app-path-routes-manifest.json +2 -1
  26. package/web/.next/standalone/web/.next/build-manifest.json +5 -5
  27. package/web/.next/standalone/web/.next/prerender-manifest.json +51 -3
  28. package/web/.next/standalone/web/.next/routes-manifest.json +13 -24
  29. package/web/.next/standalone/web/.next/server/app/(main)/agents/page/app-paths-manifest.json +3 -0
  30. package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/build-manifest.json +3 -3
  31. package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/next-font-manifest.json +1 -1
  32. package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page.js +7 -6
  33. package/web/.next/standalone/web/.next/server/app/(main)/agents/page.js.nft.json +1 -0
  34. package/web/.next/standalone/web/.next/server/app/(main)/agents/page_client-reference-manifest.js +2 -0
  35. package/web/.next/standalone/web/.next/server/app/(main)/page/build-manifest.json +3 -3
  36. package/web/.next/standalone/web/.next/server/app/(main)/page.js.nft.json +1 -1
  37. package/web/.next/standalone/web/.next/server/app/(main)/page_client-reference-manifest.js +1 -1
  38. package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page/build-manifest.json +3 -3
  39. package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page.js.nft.json +1 -1
  40. package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page_client-reference-manifest.js +1 -1
  41. package/web/.next/standalone/web/.next/server/app/(main)/settings/page/app-paths-manifest.json +3 -0
  42. package/web/.next/standalone/web/.next/server/app/(main)/settings/page/build-manifest.json +18 -0
  43. package/web/.next/standalone/web/.next/server/app/(main)/settings/page/next-font-manifest.json +11 -0
  44. package/web/.next/standalone/web/.next/server/app/(main)/settings/page/react-loadable-manifest.json +1 -0
  45. package/web/.next/standalone/web/.next/server/app/(main)/settings/page/server-reference-manifest.json +4 -0
  46. package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js +21 -0
  47. package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js.map +5 -0
  48. package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js.nft.json +1 -0
  49. package/web/.next/standalone/web/.next/server/app/(main)/settings/page_client-reference-manifest.js +2 -0
  50. package/web/.next/standalone/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  51. package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
  52. package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
  53. package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  54. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  55. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  56. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  57. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  58. package/web/.next/standalone/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  59. package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  60. package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
  61. package/web/.next/standalone/web/.next/server/app/_not-found.rsc +3 -3
  62. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  63. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  64. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  65. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  66. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  67. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  68. package/web/.next/standalone/web/.next/server/app/agents.html +1 -0
  69. package/web/.next/standalone/web/.next/server/app/agents.meta +16 -0
  70. package/web/.next/standalone/web/.next/server/app/agents.rsc +25 -0
  71. package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +9 -0
  72. package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +4 -0
  73. package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +7 -0
  74. package/web/.next/standalone/web/.next/server/app/agents.segments/_full.segment.rsc +25 -0
  75. package/web/.next/standalone/web/.next/server/app/agents.segments/_head.segment.rsc +6 -0
  76. package/web/.next/standalone/web/.next/server/app/agents.segments/_index.segment.rsc +7 -0
  77. package/web/.next/standalone/web/.next/server/app/agents.segments/_tree.segment.rsc +5 -0
  78. package/web/.next/standalone/web/.next/server/app/api/config/route.js.nft.json +1 -1
  79. package/web/.next/standalone/web/.next/server/app/api/health/route.js.nft.json +1 -1
  80. package/web/.next/standalone/web/.next/server/app/docs/installation/page/build-manifest.json +3 -3
  81. package/web/.next/standalone/web/.next/server/app/docs/installation/page_client-reference-manifest.js +1 -1
  82. package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
  83. package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +4 -4
  84. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +4 -4
  85. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
  86. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +3 -3
  87. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +2 -2
  88. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +2 -2
  89. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
  90. package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +2 -2
  91. package/web/.next/standalone/web/.next/server/app/docs/page/build-manifest.json +3 -3
  92. package/web/.next/standalone/web/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  93. package/web/.next/standalone/web/.next/server/app/docs/skills/page/build-manifest.json +3 -3
  94. package/web/.next/standalone/web/.next/server/app/docs/skills/page_client-reference-manifest.js +1 -1
  95. package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
  96. package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +4 -4
  97. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +4 -4
  98. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
  99. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +3 -3
  100. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +2 -2
  101. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
  102. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
  103. package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +2 -2
  104. package/web/.next/standalone/web/.next/server/app/docs/tools/page/build-manifest.json +3 -3
  105. package/web/.next/standalone/web/.next/server/app/docs/tools/page_client-reference-manifest.js +1 -1
  106. package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
  107. package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +4 -4
  108. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +4 -4
  109. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
  110. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +3 -3
  111. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +2 -2
  112. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +2 -2
  113. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
  114. package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +2 -2
  115. package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
  116. package/web/.next/standalone/web/.next/server/app/docs.rsc +4 -4
  117. package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +4 -4
  118. package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  119. package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +3 -3
  120. package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  121. package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  122. package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +2 -2
  123. package/web/.next/standalone/web/.next/server/app/index.html +1 -1
  124. package/web/.next/standalone/web/.next/server/app/index.rsc +5 -5
  125. package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +2 -2
  126. package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +2 -2
  127. package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +5 -5
  128. package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  129. package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
  130. package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  131. package/web/.next/standalone/web/.next/server/app/settings.html +1 -0
  132. package/web/.next/standalone/web/.next/server/app/settings.meta +16 -0
  133. package/web/.next/standalone/web/.next/server/app/settings.rsc +25 -0
  134. package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings/__PAGE__.segment.rsc +9 -0
  135. package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings.segment.rsc +4 -0
  136. package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p.segment.rsc +7 -0
  137. package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +25 -0
  138. package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +6 -0
  139. package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +7 -0
  140. package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +5 -0
  141. package/web/.next/standalone/web/.next/server/app-paths-manifest.json +2 -1
  142. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a383a4d9._.js → 2374f_1f3f2d00._.js} +1 -1
  143. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_60d8842c._.js → 2374f_38945fd9._.js} +1 -1
  144. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_f363c084._.js → 2374f_570c34dc._.js} +1 -1
  145. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_806bd012._.js → 2374f_9c560f3a._.js} +1 -1
  146. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_b7f45fdf._.js → 2374f_a0d5caeb._.js} +1 -1
  147. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_c13c8f4f._.js → 2374f_c87abaf4._.js} +1 -1
  148. package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_2801b766._.js → 2374f_d8122230._.js} +1 -1
  149. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_lucide-react_dist_esm_icons_50c2f239._.js +3 -0
  150. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__2ea52390._.js +3 -0
  151. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__6097da17._.js +15 -0
  152. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9f149e88._.js +3 -0
  153. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__b050bb8f._.js +1 -1
  154. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__be5e2967._.js +1 -1
  155. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__c94db61a._.js +3 -0
  156. package/web/.next/standalone/web/.next/server/chunks/ssr/web_3b9a2423._.js +3 -0
  157. package/web/.next/standalone/web/.next/server/chunks/ssr/web_4fe3c244._.js +3 -0
  158. package/web/.next/standalone/web/.next/server/chunks/ssr/{web_3c2b112b._.js → web_7ca56356._.js} +3 -3
  159. package/web/.next/standalone/web/.next/server/chunks/ssr/web_8e76ee8b._.js +8 -0
  160. package/web/.next/standalone/web/.next/server/chunks/ssr/web_90d4125e._.js +7 -0
  161. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_(main)_agents_page_actions_30f6e448.js +3 -0
  162. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_(main)_settings_page_actions_7285839d.js +3 -0
  163. package/web/.next/standalone/web/.next/server/chunks/ssr/web_b38a47ee._.js +4 -0
  164. package/web/.next/standalone/web/.next/server/chunks/ssr/web_f7cf6b63._.js +3 -0
  165. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js +3 -0
  166. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_page_tsx_5ac4794b._.js +1 -1
  167. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_settings_page_tsx_eb320e07._.js +33 -0
  168. package/web/.next/standalone/web/.next/server/middleware-build-manifest.js +3 -3
  169. package/web/.next/standalone/web/.next/server/next-font-manifest.js +1 -1
  170. package/web/.next/standalone/web/.next/server/next-font-manifest.json +8 -4
  171. package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
  172. package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
  173. package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
  174. package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
  175. package/web/.next/standalone/web/.next/static/chunks/03b5edce6d5b809e.js +1 -0
  176. package/web/.next/standalone/web/.next/static/chunks/29dcecc3c2ca92b0.js +1 -0
  177. package/web/.next/standalone/web/.next/static/chunks/344be859c2c8600b.css +1 -0
  178. package/web/.next/standalone/web/.next/static/chunks/4239395558fab3ef.js +1 -0
  179. package/web/.next/standalone/web/.next/static/chunks/60359bdd369c0c72.js +1 -0
  180. package/web/.next/standalone/web/.next/static/chunks/699803c4fb2dd3fc.js +5 -0
  181. package/web/.next/standalone/web/.next/static/chunks/735a2408c315b2f0.js +1 -0
  182. package/web/.next/standalone/web/.next/static/chunks/ae4bb24474ff1ed0.js +13 -0
  183. package/web/.next/standalone/web/.next/static/chunks/d54077a2bb8314ed.js +31 -0
  184. package/web/.next/standalone/web/.next/static/chunks/dc34aa94e57fa28e.js +3 -0
  185. package/web/.next/standalone/web/.next/static/chunks/ea89ca7892d8c557.js +1 -0
  186. package/web/.next/standalone/web/.next/static/chunks/f0f19357f3fb7cf8.js +1 -0
  187. package/web/.next/standalone/web/.next/static/chunks/f5fe518b79d1bf41.js +1 -0
  188. package/web/.next/standalone/web/.next/static/chunks/fbdcbd65f9a38f4b.js +7 -0
  189. package/web/.next/{static/chunks/turbopack-597558bb7b6982f6.js → standalone/web/.next/static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
  190. package/web/.next/standalone/web/.next/static/static/chunks/03b5edce6d5b809e.js +1 -0
  191. package/web/.next/standalone/web/.next/static/static/chunks/29dcecc3c2ca92b0.js +1 -0
  192. package/web/.next/standalone/web/.next/static/static/chunks/344be859c2c8600b.css +1 -0
  193. package/web/.next/standalone/web/.next/static/static/chunks/4239395558fab3ef.js +1 -0
  194. package/web/.next/standalone/web/.next/static/static/chunks/60359bdd369c0c72.js +1 -0
  195. package/web/.next/standalone/web/.next/static/static/chunks/699803c4fb2dd3fc.js +5 -0
  196. package/web/.next/standalone/web/.next/static/static/chunks/735a2408c315b2f0.js +1 -0
  197. package/web/.next/standalone/web/.next/static/static/chunks/ae4bb24474ff1ed0.js +13 -0
  198. package/web/.next/standalone/web/.next/static/static/chunks/d54077a2bb8314ed.js +31 -0
  199. package/web/.next/standalone/web/.next/static/static/chunks/dc34aa94e57fa28e.js +3 -0
  200. package/web/.next/standalone/web/.next/static/static/chunks/ea89ca7892d8c557.js +1 -0
  201. package/web/.next/standalone/web/.next/static/static/chunks/f0f19357f3fb7cf8.js +1 -0
  202. package/web/.next/standalone/web/.next/static/static/chunks/f5fe518b79d1bf41.js +1 -0
  203. package/web/.next/standalone/web/.next/static/static/chunks/fbdcbd65f9a38f4b.js +7 -0
  204. package/web/.next/standalone/web/.next/static/{chunks/turbopack-597558bb7b6982f6.js → static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
  205. package/web/.next/standalone/web/next.config.ts +1 -55
  206. package/web/.next/standalone/web/package-lock.json +7 -7
  207. package/web/.next/standalone/web/src/app/(main)/agents/page.tsx +222 -0
  208. package/web/.next/standalone/web/src/app/(main)/page.tsx +40 -1
  209. package/web/.next/standalone/web/src/app/(main)/session/[id]/page.tsx +9 -1
  210. package/web/.next/standalone/web/src/app/(main)/settings/page.tsx +1116 -0
  211. package/web/.next/standalone/web/src/components/ai-elements/mention-input.tsx +125 -17
  212. package/web/.next/standalone/web/src/components/chat-interface.tsx +205 -4
  213. package/web/.next/standalone/web/src/components/pending-question-banner.tsx +106 -0
  214. package/web/.next/standalone/web/src/components/sessions-sidebar.tsx +120 -50
  215. package/web/.next/standalone/web/src/lib/api.ts +43 -2
  216. package/web/.next/static/chunks/03b5edce6d5b809e.js +1 -0
  217. package/web/.next/static/chunks/29dcecc3c2ca92b0.js +1 -0
  218. package/web/.next/static/chunks/344be859c2c8600b.css +1 -0
  219. package/web/.next/static/chunks/4239395558fab3ef.js +1 -0
  220. package/web/.next/static/chunks/60359bdd369c0c72.js +1 -0
  221. package/web/.next/static/chunks/699803c4fb2dd3fc.js +5 -0
  222. package/web/.next/static/chunks/735a2408c315b2f0.js +1 -0
  223. package/web/.next/static/chunks/ae4bb24474ff1ed0.js +13 -0
  224. package/web/.next/static/chunks/d54077a2bb8314ed.js +31 -0
  225. package/web/.next/static/chunks/dc34aa94e57fa28e.js +3 -0
  226. package/web/.next/static/chunks/ea89ca7892d8c557.js +1 -0
  227. package/web/.next/static/chunks/f0f19357f3fb7cf8.js +1 -0
  228. package/web/.next/static/chunks/f5fe518b79d1bf41.js +1 -0
  229. package/web/.next/static/chunks/fbdcbd65f9a38f4b.js +7 -0
  230. package/web/.next/{standalone/web/.next/static/static/chunks/turbopack-597558bb7b6982f6.js → static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
  231. package/web/.next/standalone/web/.next/server/app/embed/[id]/page/app-paths-manifest.json +0 -3
  232. package/web/.next/standalone/web/.next/server/app/embed/[id]/page.js.nft.json +0 -1
  233. package/web/.next/standalone/web/.next/server/app/embed/[id]/page_client-reference-manifest.js +0 -2
  234. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_317b1fef._.js +0 -3
  235. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_37dd9702._.js +0 -45
  236. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_4d44e4ed._.js +0 -26
  237. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_54ac917f._.js +0 -3
  238. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_86585101._.js +0 -3
  239. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_c59a35bb._.js +0 -3
  240. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_fdfc7f3d._.js +0 -31
  241. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__234f92d8._.js +0 -3
  242. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9a826344._.js +0 -3
  243. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9d3a7cbf._.js +0 -15
  244. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__de76483d._.js +0 -3
  245. package/web/.next/standalone/web/.next/server/chunks/ssr/web_08242997._.js +0 -3
  246. package/web/.next/standalone/web/.next/server/chunks/ssr/web_123ffe97._.js +0 -8
  247. package/web/.next/standalone/web/.next/server/chunks/ssr/web_5cca707f._.js +0 -7
  248. package/web/.next/standalone/web/.next/server/chunks/ssr/web_935e81f5._.js +0 -7
  249. package/web/.next/standalone/web/.next/server/chunks/ssr/web_99b01335._.js +0 -8
  250. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_embed_[id]_page_actions_dd0b7fea.js +0 -3
  251. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_components_sessions-sidebar_tsx_92510070._.js +0 -3
  252. package/web/.next/standalone/web/.next/static/chunks/1ebba7ac024244f9.js +0 -5
  253. package/web/.next/standalone/web/.next/static/chunks/275e8268daf318b2.js +0 -7
  254. package/web/.next/standalone/web/.next/static/chunks/2bf377e04592f3c8.js +0 -13
  255. package/web/.next/standalone/web/.next/static/chunks/376a123113ccf5eb.js +0 -3
  256. package/web/.next/standalone/web/.next/static/chunks/58fd0aaa2746b444.js +0 -1
  257. package/web/.next/standalone/web/.next/static/chunks/61c9922b38a9569d.js +0 -3
  258. package/web/.next/standalone/web/.next/static/chunks/74b64476a24dd71e.css +0 -1
  259. package/web/.next/standalone/web/.next/static/chunks/767bcdfbabf0703e.js +0 -7
  260. package/web/.next/standalone/web/.next/static/chunks/9fce2ce79c4c834e.js +0 -1
  261. package/web/.next/standalone/web/.next/static/chunks/a888d448ceab1abe.js +0 -1
  262. package/web/.next/standalone/web/.next/static/chunks/b9ad1584d4e11d12.js +0 -1
  263. package/web/.next/standalone/web/.next/static/chunks/c6f40df16a9396b9.js +0 -1
  264. package/web/.next/standalone/web/.next/static/chunks/ea29be392100ab0f.js +0 -5
  265. package/web/.next/standalone/web/.next/static/static/chunks/1ebba7ac024244f9.js +0 -5
  266. package/web/.next/standalone/web/.next/static/static/chunks/275e8268daf318b2.js +0 -7
  267. package/web/.next/standalone/web/.next/static/static/chunks/2bf377e04592f3c8.js +0 -13
  268. package/web/.next/standalone/web/.next/static/static/chunks/376a123113ccf5eb.js +0 -3
  269. package/web/.next/standalone/web/.next/static/static/chunks/58fd0aaa2746b444.js +0 -1
  270. package/web/.next/standalone/web/.next/static/static/chunks/61c9922b38a9569d.js +0 -3
  271. package/web/.next/standalone/web/.next/static/static/chunks/74b64476a24dd71e.css +0 -1
  272. package/web/.next/standalone/web/.next/static/static/chunks/767bcdfbabf0703e.js +0 -7
  273. package/web/.next/standalone/web/.next/static/static/chunks/9fce2ce79c4c834e.js +0 -1
  274. package/web/.next/standalone/web/.next/static/static/chunks/a888d448ceab1abe.js +0 -1
  275. package/web/.next/standalone/web/.next/static/static/chunks/b9ad1584d4e11d12.js +0 -1
  276. package/web/.next/standalone/web/.next/static/static/chunks/c6f40df16a9396b9.js +0 -1
  277. package/web/.next/standalone/web/.next/static/static/chunks/ea29be392100ab0f.js +0 -5
  278. package/web/.next/standalone/web/src/app/embed/[id]/page.tsx +0 -77
  279. package/web/.next/standalone/web/src/lib/embed-bootstrap.ts +0 -108
  280. package/web/.next/static/chunks/1ebba7ac024244f9.js +0 -5
  281. package/web/.next/static/chunks/275e8268daf318b2.js +0 -7
  282. package/web/.next/static/chunks/2bf377e04592f3c8.js +0 -13
  283. package/web/.next/static/chunks/376a123113ccf5eb.js +0 -3
  284. package/web/.next/static/chunks/58fd0aaa2746b444.js +0 -1
  285. package/web/.next/static/chunks/61c9922b38a9569d.js +0 -3
  286. package/web/.next/static/chunks/74b64476a24dd71e.css +0 -1
  287. package/web/.next/static/chunks/767bcdfbabf0703e.js +0 -7
  288. package/web/.next/static/chunks/9fce2ce79c4c834e.js +0 -1
  289. package/web/.next/static/chunks/a888d448ceab1abe.js +0 -1
  290. package/web/.next/static/chunks/b9ad1584d4e11d12.js +0 -1
  291. package/web/.next/static/chunks/c6f40df16a9396b9.js +0 -1
  292. package/web/.next/static/chunks/ea29be392100ab0f.js +0 -5
  293. package/dist/{search-CCffrVJE.d.ts → search-DOzC4ojH.d.ts} +1 -1
  294. /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/react-loadable-manifest.json +0 -0
  295. /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/server-reference-manifest.json +0 -0
  296. /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page.js.map +0 -0
  297. /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
  298. /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
  299. /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
  300. /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
  301. /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
  302. /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
  303. /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
  304. /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
  305. /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ import { useState, useEffect, useRef } from 'react';
4
4
  import { useRouter, usePathname } from 'next/navigation';
5
5
  import Link from 'next/link';
6
6
  import Image from 'next/image';
7
- import { Plus, MessageSquare, Trash2, Loader2, Settings, PanelLeftClose, PanelLeft, Key, Check, X, Eye, EyeOff, Volume2, ListChecks, ChevronDown } from 'lucide-react';
7
+ import { Plus, MessageSquare, Trash2, Loader2, Settings, PanelLeftClose, PanelLeft, Key, Check, X, Eye, EyeOff, Volume2, ListChecks, ChevronDown, Bot, LayoutGrid, Sliders } from 'lucide-react';
8
8
  import { Badge } from '@/components/ui/badge';
9
9
  import {
10
10
  Sidebar,
@@ -106,18 +106,13 @@ export function SessionsSidebar() {
106
106
  // Notification sound setting
107
107
  const { enabled: soundEnabled, setEnabled: setSoundEnabled } = useNotificationSound();
108
108
 
109
- // Detect if we're in embed mode
110
- const isEmbedMode = pathname.startsWith('/embed/');
111
-
112
109
  // Get current session ID from pathname
113
- const currentSessionId = pathname.startsWith('/session/')
114
- ? pathname.split('/session/')[1]
115
- : pathname.startsWith('/embed/')
116
- ? pathname.split('/embed/')[1]
110
+ const currentSessionId = pathname.startsWith('/session/')
111
+ ? pathname.split('/session/')[1]
117
112
  : null;
118
-
113
+
119
114
  // Base path for session links
120
- const sessionBasePath = isEmbedMode ? '/embed' : '/session';
115
+ const sessionBasePath = '/session';
121
116
 
122
117
  // Determine if any session is actively running (for mascot animation)
123
118
  const isThinking = sessions.some(s => s.isStreaming);
@@ -306,7 +301,7 @@ export function SessionsSidebar() {
306
301
  const isCollapsed = state === 'collapsed';
307
302
 
308
303
  return (
309
- <Sidebar collapsible={isEmbedMode ? "offcanvas" : "icon"} className="border-r border-border/50">
304
+ <Sidebar collapsible="icon" className="border-r border-border/50">
310
305
  {/* Header */}
311
306
  <SidebarHeader className={cn(isCollapsed ? "p-2 space-y-2" : "p-3 space-y-3")}>
312
307
  {/* Expanded: Full header */}
@@ -359,6 +354,63 @@ export function SessionsSidebar() {
359
354
  </div>
360
355
  </div>
361
356
 
357
+ {(() => {
358
+ const orchestrator = sessions.find((s) => s.role === 'orchestrator');
359
+ const workers = sessions.filter((s) => s.role === 'worker');
360
+ const needsAttention = workers.filter((s) => s.agentStatus === 'needs_attention').length;
361
+ const running = workers.filter((s) => s.agentStatus === 'running').length;
362
+ return (
363
+ <div className="flex flex-col gap-1 w-full">
364
+ <Link
365
+ href={orchestrator ? `/session/${orchestrator.id}` : '#'}
366
+ className={cn(
367
+ 'flex items-center gap-2 px-2 py-1.5 rounded-md text-sm transition-colors',
368
+ pathname.startsWith('/session/') && orchestrator && pathname.includes(orchestrator.id)
369
+ ? 'bg-accent text-foreground'
370
+ : 'hover:bg-accent/60 text-foreground/80',
371
+ )}
372
+ >
373
+ <Bot className="size-4 text-primary shrink-0" />
374
+ <span className="flex-1 truncate">Orchestrator</span>
375
+ {orchestrator?.isStreaming && (
376
+ <span className="size-1.5 rounded-full bg-emerald-500 animate-pulse" />
377
+ )}
378
+ </Link>
379
+ <Link
380
+ href="/agents"
381
+ className={cn(
382
+ 'flex items-center gap-2 px-2 py-1.5 rounded-md text-sm transition-colors',
383
+ pathname === '/agents' ? 'bg-accent text-foreground' : 'hover:bg-accent/60 text-foreground/80',
384
+ )}
385
+ >
386
+ <LayoutGrid className="size-4 text-muted-foreground shrink-0" />
387
+ <span className="flex-1 truncate">Agents</span>
388
+ <span className="text-[10px] text-muted-foreground tabular-nums">
389
+ {workers.length}
390
+ </span>
391
+ {needsAttention > 0 && (
392
+ <span className="text-[10px] px-1 rounded bg-amber-500/20 text-amber-600 dark:text-amber-300 tabular-nums">
393
+ {needsAttention}!
394
+ </span>
395
+ )}
396
+ {running > 0 && needsAttention === 0 && (
397
+ <span className="size-1.5 rounded-full bg-emerald-500 animate-pulse" />
398
+ )}
399
+ </Link>
400
+ <Link
401
+ href="/settings"
402
+ className={cn(
403
+ 'flex items-center gap-2 px-2 py-1.5 rounded-md text-sm transition-colors',
404
+ pathname === '/settings' ? 'bg-accent text-foreground' : 'hover:bg-accent/60 text-foreground/80',
405
+ )}
406
+ >
407
+ <Sliders className="size-4 text-muted-foreground shrink-0" />
408
+ <span className="flex-1 truncate">Settings</span>
409
+ </Link>
410
+ </div>
411
+ );
412
+ })()}
413
+
362
414
  <div className="flex gap-2 w-full">
363
415
  <Button
364
416
  onClick={handleQuickCreate}
@@ -456,6 +508,56 @@ export function SessionsSidebar() {
456
508
  </Tooltip>
457
509
  </TooltipProvider>
458
510
 
511
+ {/* Orchestrator icon (collapsed) */}
512
+ {(() => {
513
+ const orchestrator = sessions.find((s) => s.role === 'orchestrator');
514
+ return (
515
+ <TooltipProvider>
516
+ <Tooltip>
517
+ <TooltipTrigger asChild>
518
+ <Link
519
+ href={orchestrator ? `/session/${orchestrator.id}` : '#'}
520
+ className="size-8 mx-auto inline-flex items-center justify-center rounded-md hover:bg-accent"
521
+ >
522
+ <Bot className="size-4 text-primary" />
523
+ </Link>
524
+ </TooltipTrigger>
525
+ <TooltipContent side="right">Orchestrator</TooltipContent>
526
+ </Tooltip>
527
+ </TooltipProvider>
528
+ );
529
+ })()}
530
+
531
+ {/* Agents board icon (collapsed) */}
532
+ <TooltipProvider>
533
+ <Tooltip>
534
+ <TooltipTrigger asChild>
535
+ <Link
536
+ href="/agents"
537
+ className="size-8 mx-auto inline-flex items-center justify-center rounded-md hover:bg-accent"
538
+ >
539
+ <LayoutGrid className="size-4" />
540
+ </Link>
541
+ </TooltipTrigger>
542
+ <TooltipContent side="right">Agents board</TooltipContent>
543
+ </Tooltip>
544
+ </TooltipProvider>
545
+
546
+ {/* Settings icon (collapsed) */}
547
+ <TooltipProvider>
548
+ <Tooltip>
549
+ <TooltipTrigger asChild>
550
+ <Link
551
+ href="/settings"
552
+ className="size-8 mx-auto inline-flex items-center justify-center rounded-md hover:bg-accent"
553
+ >
554
+ <Sliders className="size-4" />
555
+ </Link>
556
+ </TooltipTrigger>
557
+ <TooltipContent side="right">Settings</TooltipContent>
558
+ </Tooltip>
559
+ </TooltipProvider>
560
+
459
561
  {/* New Task button */}
460
562
  <TooltipProvider>
461
563
  <Tooltip>
@@ -711,7 +813,7 @@ export function SessionsSidebar() {
711
813
  <div className="flex justify-center py-8">
712
814
  <Loader2 className="size-5 animate-spin text-muted-foreground" />
713
815
  </div>
714
- ) : sessions.length === 0 ? (
816
+ ) : sessions.filter((s) => s.role !== 'orchestrator').length === 0 ? (
715
817
  !isCollapsed && (
716
818
  <div className="text-center py-8 px-4">
717
819
  <div className="relative overflow-hidden rounded-xl size-12 mx-auto mb-3 shadow-md ring-1 ring-white/10">
@@ -738,7 +840,7 @@ export function SessionsSidebar() {
738
840
  </div>
739
841
  )
740
842
  ) : (
741
- sessions.map((session) => {
843
+ sessions.filter((s) => s.role !== 'orchestrator').map((session) => {
742
844
  const isActive = session.id === currentSessionId;
743
845
  const isHovered = hoveredSession === session.id;
744
846
  const isRunning = session.isStreaming === true;
@@ -891,24 +993,11 @@ export function SessionsSidebar() {
891
993
  <span className="text-muted-foreground">{sessions.length}</span>
892
994
  </div>
893
995
 
894
- {/* Settings button */}
895
- <Dialog open={settingsOpen} onOpenChange={setSettingsOpen}>
896
- <TooltipProvider>
897
- <Tooltip>
898
- <TooltipTrigger asChild>
899
- <DialogTrigger asChild>
900
- <Button
901
- size="icon"
902
- variant="ghost"
903
- className="size-7 hover:bg-accent transition-colors"
904
- >
905
- <Settings className="size-4" />
906
- </Button>
907
- </DialogTrigger>
908
- </TooltipTrigger>
909
- <TooltipContent side="top">Settings</TooltipContent>
910
- </Tooltip>
911
- </TooltipProvider>
996
+ {/* The Settings page lives at /settings — accessed via the
997
+ top sidebar nav link. The legacy bottom-right gear is gone.
998
+ This hidden Dialog block remains only to preserve handlers
999
+ the rest of the file still references. */}
1000
+ <Dialog open={false} onOpenChange={setSettingsOpen}>
912
1001
  <DialogContent className="sm:max-w-md">
913
1002
  <DialogHeader>
914
1003
  <DialogTitle className="flex items-center gap-2">
@@ -1109,25 +1198,6 @@ export function SessionsSidebar() {
1109
1198
  </Tooltip>
1110
1199
  </TooltipProvider>
1111
1200
 
1112
- {/* Settings button collapsed */}
1113
- <Dialog open={settingsOpen} onOpenChange={setSettingsOpen}>
1114
- <TooltipProvider>
1115
- <Tooltip>
1116
- <TooltipTrigger asChild>
1117
- <DialogTrigger asChild>
1118
- <Button
1119
- size="icon"
1120
- variant="ghost"
1121
- className="size-8"
1122
- >
1123
- <Settings className="size-4" />
1124
- </Button>
1125
- </DialogTrigger>
1126
- </TooltipTrigger>
1127
- <TooltipContent side="right">Settings</TooltipContent>
1128
- </Tooltip>
1129
- </TooltipProvider>
1130
- </Dialog>
1131
1201
  </div>
1132
1202
  )}
1133
1203
  </div>
@@ -22,6 +22,17 @@ export interface SessionConfig {
22
22
  task?: TaskConfig;
23
23
  }
24
24
 
25
+ export type AgentStatus = 'running' | 'needs_attention' | 'completed' | 'failed' | 'idle';
26
+ export type SessionRole = 'orchestrator' | 'worker' | 'chat';
27
+
28
+ export interface PendingQuestion {
29
+ questionId: string;
30
+ question: string;
31
+ context?: string;
32
+ choices?: string[];
33
+ createdAt: string;
34
+ }
35
+
25
36
  export interface Session {
26
37
  id: string;
27
38
  name: string;
@@ -29,6 +40,10 @@ export interface Session {
29
40
  workingDirectory: string;
30
41
  status: 'active' | 'waiting' | 'completed' | 'error';
31
42
  isStreaming?: boolean;
43
+ role?: SessionRole;
44
+ agentStatus?: AgentStatus;
45
+ pendingQuestion?: PendingQuestion | null;
46
+ lastMessagePreview?: string | null;
32
47
  config?: SessionConfig;
33
48
  createdAt: string;
34
49
  updatedAt?: string;
@@ -136,8 +151,9 @@ export interface TodosResponse {
136
151
  }
137
152
 
138
153
  // Sessions API
139
- export async function getSessions(): Promise<Session[]> {
140
- const res = await fetch(`${getApiBase()}/sessions`);
154
+ export async function getSessions(options?: { role?: SessionRole | 'all' }): Promise<Session[]> {
155
+ const qs = options?.role ? `?role=${options.role}` : '';
156
+ const res = await fetch(`${getApiBase()}/sessions${qs}`);
141
157
  if (!res.ok) {
142
158
  // 401 / 500 / etc — return an empty list rather than letting an
143
159
  // error JSON masquerade as `{ sessions: [...] }`.
@@ -147,6 +163,30 @@ export async function getSessions(): Promise<Session[]> {
147
163
  return data.sessions || [];
148
164
  }
149
165
 
166
+ export async function answerAgentQuestion(
167
+ sessionId: string,
168
+ questionId: string,
169
+ answer: string,
170
+ ): Promise<void> {
171
+ await fetch(`${getApiBase()}/tasks/${sessionId}/questions/${questionId}/answer`, {
172
+ method: 'POST',
173
+ headers: { 'Content-Type': 'application/json' },
174
+ body: JSON.stringify({ answer, answeredBy: 'user' }),
175
+ });
176
+ }
177
+
178
+ export async function messageSession(
179
+ sessionId: string,
180
+ text: string,
181
+ options?: { force?: boolean; source?: 'orchestrator' | 'user' | 'system' },
182
+ ): Promise<void> {
183
+ await fetch(`${getApiBase()}/sessions/${sessionId}/messages`, {
184
+ method: 'POST',
185
+ headers: { 'Content-Type': 'application/json' },
186
+ body: JSON.stringify({ text, source: options?.source ?? 'user', force: !!options?.force }),
187
+ });
188
+ }
189
+
150
190
  export async function getSession(id: string): Promise<Session | null> {
151
191
  // Guard against `undefined` / empty-string ids slipping through from
152
192
  // a partial render — without this the URL becomes `/sessions/undefined`
@@ -167,6 +207,7 @@ export async function createSession(params: {
167
207
  model?: string;
168
208
  workingDirectory?: string;
169
209
  toolApprovals?: Record<string, boolean>;
210
+ role?: SessionRole;
170
211
  }): Promise<Session> {
171
212
  const res = await fetch(`${getApiBase()}/sessions`, {
172
213
  method: 'POST',
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,29343,280105,e=>{"use strict";let t=(0,e.i(292511).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["default",()=>t],280105),e.s(["CheckCircle2",()=>t],29343)},715786,e=>{"use strict";let t=(0,e.i(292511).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["default",()=>t])},573656,482079,e=>{"use strict";var t=e.i(715786);e.s(["XCircle",()=>t.default],573656);let s=(0,e.i(292511).default)("message-circle-question-mark",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["MessageCircleQuestion",()=>s],482079)},455138,e=>{"use strict";var t=e.i(414294),s=e.i(430878),n=e.i(504561),r=e.i(266514),a=e.i(461957),l=e.i(292511);let i=(0,l.default)("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);var o=e.i(29343),d=e.i(573656),c=e.i(482079);let x=(0,l.default)("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var u=e.i(666904),m=e.i(300739),p=e.i(555552),g=e.i(524741);let h=[{key:"running",label:"In progress",icon:a.Loader2,tone:"text-emerald-500"},{key:"needs_attention",label:"Needs your input",icon:c.MessageCircleQuestion,tone:"text-amber-500"},{key:"idle",label:"Idle",icon:i,tone:"text-muted-foreground"},{key:"completed",label:"Completed",icon:o.CheckCircle2,tone:"text-blue-500"},{key:"failed",label:"Failed",icon:d.XCircle,tone:"text-rose-500"}];function f(){let{sessions:e,isLoading:a}=(0,m.useSessions)(),l=(0,s.useMemo)(()=>e.filter(e=>(e.role??"chat")==="worker"),[e]),i=(0,s.useMemo)(()=>{let e={running:[],needs_attention:[],idle:[],completed:[],failed:[]};for(let t of l){let s=t.agentStatus??(t.isStreaming?"running":"idle");e[s]&&e[s].push(t)}return e},[l]);return(0,t.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"px-6 py-4 border-b border-border/60 flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(r.Bot,{className:"size-5 text-primary"}),(0,t.jsx)("h1",{className:"text-lg font-semibold",children:"Agents"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:[l.length," ",1===l.length?"agent":"agents"]})]}),(0,t.jsx)(n.default,{href:"/",className:"text-xs text-muted-foreground hover:text-foreground",children:"Back to home"})]}),(0,t.jsx)("div",{className:"flex-1 overflow-x-auto overflow-y-hidden",children:(0,t.jsx)("div",{className:"flex h-full gap-4 p-4 min-w-max",children:h.map(e=>(0,t.jsx)(b,{col:e,sessions:i[e.key],loading:a&&0===l.length},e.key))})})]})}function b({col:e,sessions:s,loading:n}){let r=e.icon;return(0,t.jsxs)("div",{className:"flex flex-col w-80 shrink-0 rounded-lg bg-card/40 border border-border/60",children:[(0,t.jsxs)("div",{className:"px-3 py-2 flex items-center gap-2 border-b border-border/60",children:[(0,t.jsx)(r,{className:(0,p.cn)("size-4",e.tone,"running"===e.key&&"animate-spin")}),(0,t.jsx)("h2",{className:"text-sm font-medium",children:e.label}),(0,t.jsx)("span",{className:"ml-auto text-xs text-muted-foreground tabular-nums",children:s.length})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-2 space-y-2",children:n&&0===s.length?(0,t.jsx)("p",{className:"text-xs text-muted-foreground text-center py-6",children:"Loading…"}):0===s.length?(0,t.jsx)("p",{className:"text-xs text-muted-foreground/70 text-center py-6 italic",children:"No agents"}):s.map(e=>(0,t.jsx)(y,{session:e},e.id))})]})}function y({session:e}){let[r,l]=(0,s.useState)(""),[i,o]=(0,s.useState)(!1),d=e.agentStatus??"idle",c=e.config?.task,p=c?.result,h=async()=>{if(e.pendingQuestion&&r.trim()&&!i){o(!0);try{await (0,g.answerAgentQuestion)(e.id,e.pendingQuestion.questionId,r.trim()),l(""),(0,m.mutateSessions)()}finally{o(!1)}}};return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:"block rounded-md border border-border/60 bg-background hover:bg-accent/40 transition-colors p-3 group",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e.name||"Untitled agent"}),e.lastMessagePreview&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-2 mt-0.5",children:e.lastMessagePreview}),"completed"===d&&p?.summary&&(0,t.jsxs)("p",{className:"text-xs text-blue-600 dark:text-blue-400 line-clamp-2 mt-1",children:["✓ ",String(p.summary)]}),"failed"===d&&c?.error&&(0,t.jsx)("p",{className:"text-xs text-rose-500 line-clamp-2 mt-1",children:c.error})]}),"running"===d&&(0,t.jsx)(a.Loader2,{className:"size-3.5 animate-spin text-emerald-500 shrink-0 mt-1"})]}),e.pendingQuestion&&(0,t.jsxs)("div",{className:"mt-3 rounded border border-amber-500/30 bg-amber-500/5 p-2",onClick:e=>e.preventDefault(),children:[(0,t.jsxs)("p",{className:"text-xs font-medium text-amber-700 dark:text-amber-300",children:["Question: ",e.pendingQuestion.question]}),e.pendingQuestion.context&&(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground mt-1",children:e.pendingQuestion.context}),e.pendingQuestion.choices&&e.pendingQuestion.choices.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1 mt-2",children:e.pendingQuestion.choices.map(e=>(0,t.jsx)("button",{type:"button",className:"text-[11px] px-1.5 py-0.5 rounded bg-amber-500/10 hover:bg-amber-500/20 text-amber-700 dark:text-amber-200",onClick:t=>{t.preventDefault(),l(e)},children:e},e))}),(0,t.jsxs)("div",{className:"flex gap-1 mt-2",children:[(0,t.jsx)("input",{type:"text",value:r,onChange:e=>l(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h())},placeholder:"Type an answer…",className:"flex-1 px-2 py-1 text-xs rounded border border-border/60 bg-background focus:outline-none focus:ring-1 focus:ring-amber-500/60"}),(0,t.jsx)(u.Button,{size:"sm",type:"button",disabled:!r.trim()||i,onClick:e=>{e.preventDefault(),h()},className:"h-7 px-2 text-xs",children:i?"…":"Send"})]})]}),(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,t.jsx)(x,{className:"size-3"}),(0,t.jsx)("span",{children:function(e){if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let n=Math.floor(s/24);return`${n}d ago`}(e.updatedAt||e.createdAt)})]})]})}e.s(["default",()=>f],455138)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,819609,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},215232,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=e.r(430878);function i(e,t){let r=(0,n.useRef)(null),i=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=o(e,n)),t&&(i.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},325203,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return u},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return l}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,a(e));else t.set(r,a(n));return t}function u(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},971746,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return s},urlObjectKeys:function(){return u}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=e.r(279510)._(e.r(325203)),a=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",i=e.pathname||"",l=e.hash||"",u=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(s+=":"+e.port)),u&&"object"==typeof u&&(u=String(o.urlQueryToSearchParams(u)));let c=e.search||u&&`?${u}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==s?(s="//"+(s||""),i&&"/"!==i[0]&&(i="/"+i)):s||(s=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),i=i.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${s}${i}${c}${l}`}let u=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function s(e){return l(e)}},309008,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return k},MissingStaticPage:function(){return x},NormalizeError:function(){return m},PageNotFoundError:function(){return b},SP:function(){return h},ST:function(){return v},WEB_VITALS:function(){return o},execOnce:function(){return a},getDisplayName:function(){return d},getLocationOrigin:function(){return s},getURL:function(){return c},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return y},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return w}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>l.test(e);function s(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=s();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function y(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await y(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let h="u">typeof performance,v=h&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class m extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class x extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class k extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function w(e){return JSON.stringify({message:e.message,stack:e.stack})}},868988,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(309008),i=e.r(698018);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,i.hasBasePath)(r.pathname)}catch(e){return!1}}},312491,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},504561,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},useLinkStatus:function(){return b}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=e.r(279510),a=e.r(414294),l=o._(e.r(430878)),u=e.r(971746),s=e.r(369168),c=e.r(215232),d=e.r(309008),f=e.r(869343);e.r(819609);let p=e.r(93505),y=e.r(868988),h=e.r(291544);function v(e){return"string"==typeof e?e:(0,u.formatUrl)(e)}function g(t){var r;let n,i,o,[u,g]=(0,l.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,l.useRef)(null),{href:x,as:k,children:w,prefetch:j=null,passHref:P,replace:_,shallow:O,scroll:E,onClick:M,onMouseEnter:C,onTouchStart:S,legacyBehavior:R=!1,onNavigate:N,ref:T,unstable_dynamicOnHover:$,...A}=t;n=w,R&&("string"==typeof n||"number"==typeof n)&&(n=(0,a.jsx)("a",{children:n}));let L=l.default.useContext(s.AppRouterContext),z=!1!==j,U=!1!==j?null===(r=j)||"auto"===r?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,{href:I,as:D}=l.default.useMemo(()=>{let e=v(x);return{href:e,as:k?v(k):e}},[x,k]);if(R){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});i=l.default.Children.only(n)}let B=R?i&&"object"==typeof i&&i.ref:T,F=l.default.useCallback(e=>(null!==L&&(b.current=(0,p.mountLinkInstance)(e,I,L,U,z,g)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[z,I,L,U,g]),V={ref:(0,c.useMergedRef)(F,B),onClick(t){R||"function"!=typeof M||M(t),R&&i.props&&"function"==typeof i.props.onClick&&i.props.onClick(t),!L||t.defaultPrevented||function(t,r,n,i,o,a,u){if("u">typeof window){let s,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((s=t.currentTarget.getAttribute("target"))&&"_self"!==s||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,y.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),u){let e=!1;if(u({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(389867);l.default.startTransition(()=>{d(n||r,o?"replace":"push",a??!0,i.current)})}}(t,I,D,b,_,E,N)},onMouseEnter(e){R||"function"!=typeof C||C(e),R&&i.props&&"function"==typeof i.props.onMouseEnter&&i.props.onMouseEnter(e),L&&z&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)},onTouchStart:function(e){R||"function"!=typeof S||S(e),R&&i.props&&"function"==typeof i.props.onTouchStart&&i.props.onTouchStart(e),L&&z&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)}};return(0,d.isAbsoluteUrl)(D)?V.href=D:R&&!P&&("a"!==i.type||"href"in i.props)||(V.href=(0,f.addBasePath)(D)),o=R?l.default.cloneElement(i,V):(0,a.jsx)("a",{...A,...V,children:n}),(0,a.jsx)(m.Provider,{value:u,children:o})}e.r(312491);let m=(0,l.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,l.useContext)(m);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},408744,e=>{"use strict";var t=e.i(430878);e.i(773340);var r=e.i(392295),n=e.i(414294),i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,i)=>{let o=(0,r.createSlot)(`Primitive.${i}`),a=t.forwardRef((e,t)=>{let{asChild:r,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,n.jsx)(r?o:i,{...a,ref:t})});return a.displayName=`Primitive.${i}`,{...e,[i]:a}},{});e.s(["Primitive",()=>i])},493740,e=>{"use strict";let t=(0,e.i(292511).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["default",()=>t])},719583,468632,e=>{"use strict";let t=(0,e.i(292511).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],468632),e.s(["Check",()=>t],719583)},707387,e=>{"use strict";var t=e.i(493740);e.s(["X",()=>t.default])},481298,e=>{"use strict";let t=(0,e.i(292511).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["default",()=>t])},634066,e=>{"use strict";var t=e.i(414294),r=e.i(430878),n=e.i(408744),i=r.forwardRef((e,r)=>(0,t.jsx)(n.Primitive.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));i.displayName="Label";var o=e.i(555552);function a({className:e,...r}){return(0,t.jsx)(i,{"data-slot":"label",className:(0,o.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...r})}e.s(["Label",()=>a],634066)},991234,775377,e=>{"use strict";var t=e.i(481298);e.s(["Eye",()=>t.default],991234);let r=(0,e.i(292511).default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",()=>r],775377)},996720,846193,e=>{"use strict";var t=e.i(257868);e.s(["Plus",()=>t.default],996720);let r=(0,e.i(292511).default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);e.s(["Key",()=>r],846193)},77982,e=>{"use strict";var t=e.i(414294),r=e.i(555552);function n({className:e,type:n,...i}){return(0,t.jsx)("input",{type:n,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-all duration-200 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-primary focus-visible:ring-primary/20 focus-visible:ring-[3px]","hover:border-primary/50","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...i})}e.s(["Input",()=>n])},257868,e=>{"use strict";let t=(0,e.i(292511).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["default",()=>t])},904781,231181,e=>{"use strict";let t=(0,e.i(292511).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["default",()=>t],231181),e.s(["Trash2",()=>t],904781)},309945,e=>{"use strict";var t=e.i(430878);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,i=e.map(e=>{let i=r(e,t);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];"function"==typeof n?n():r(e[t],null)}}}}function i(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>i])},392295,770008,e=>{"use strict";var t=e.i(430878),r=e.i(309945),n=e.i(414294),i=Symbol.for("react.lazy"),o=t[" use ".trim().toString()];function a(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function l(e){var i;let l,u=(i=e,(l=t.forwardRef((e,n)=>{let{children:i,...l}=e;if(a(i)&&"function"==typeof o&&(i=o(i._payload)),t.isValidElement(i)){var u;let e,o,a=(u=i,(o=(e=Object.getOwnPropertyDescriptor(u.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?u.ref:(o=(e=Object.getOwnPropertyDescriptor(u,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?u.props.ref:u.props.ref||u.ref),s=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(l,i.props);return i.type!==t.Fragment&&(s.ref=n?(0,r.composeRefs)(n,a):a),t.cloneElement(i,s)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${i}.SlotClone`,l),s=t.forwardRef((e,r)=>{let{children:i,...l}=e;a(i)&&"function"==typeof o&&(i=o(i._payload));let s=t.Children.toArray(i),d=s.find(c);if(d){let e=d.props.children,i=s.map(r=>r!==d?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,n.jsx)(u,{...l,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,i):null})}return(0,n.jsx)(u,{...l,ref:r,children:i})});return s.displayName=`${e}.Slot`,s}var u=l("Slot"),s=Symbol("radix.slottable");function c(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}e.s(["Slot",()=>u,"createSlot",()=>l],392295);var d=e.i(630279);let f=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,p=d.clsx;e.s(["cva",0,(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return p(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:o}=t,a=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],n=null==o?void 0:o[e];if(null===t)return null;let a=f(t)||f(n);return i[e][a]}),l=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return p(e,a,null==t||null==(n=t.compoundVariants)?void 0:n.reduce((e,t)=>{let{class:r,className:n,...i}=t;return Object.entries(i).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...l}[t]):({...o,...l})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}],770008)},292511,e=>{"use strict";var t=e.i(430878);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),n=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,t.forwardRef)(({color:e="currentColor",size:n=24,strokeWidth:o=2,absoluteStrokeWidth:a,className:l="",children:u,iconNode:s,...c},d)=>(0,t.createElement)("svg",{ref:d,...i,width:n,height:n,stroke:e,strokeWidth:a?24*Number(o)/Number(n):o,className:r("lucide",l),...!u&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...s.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(u)?u:[u]])),a=(e,i)=>{let a=(0,t.forwardRef)(({className:a,...l},u)=>(0,t.createElement)(o,{ref:u,iconNode:i,className:r(`lucide-${n(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,a),...l}));return a.displayName=n(e),a};e.s(["default",()=>a],292511)},555552,e=>{"use strict";var t=e.i(630279),r=e.i(678497);function n(...e){return(0,r.twMerge)((0,t.clsx)(e))}e.s(["cn",()=>n])},666904,e=>{"use strict";var t=e.i(414294),r=e.i(392295),n=e.i(770008),i=e.i(555552);let o=(0,n.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive active:scale-[0.98]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function a({className:e,variant:n="default",size:a="default",asChild:l=!1,...u}){let s=l?r.Slot:"button";return(0,t.jsx)(s,{"data-slot":"button","data-variant":n,"data-size":a,className:(0,i.cn)(o({variant:n,size:a,className:e})),...u})}e.s(["Button",()=>a])},461957,675182,e=>{"use strict";let t=(0,e.i(292511).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",()=>t],675182),e.s(["Loader2",()=>t],461957)},266514,e=>{"use strict";let t=(0,e.i(292511).default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);e.s(["Bot",()=>t],266514)},667249,e=>{"use strict";let t=(0,e.i(292511).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",()=>t],667249)}]);