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.
- package/README.md +41 -41
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1274 -59
- package/dist/agent/index.js.map +1 -1
- package/dist/cli.js +10671 -8973
- package/dist/cli.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/{index-BvIissiB.d.ts → index-D5l-DMGC.d.ts} +390 -6
- package/dist/index.d.ts +5 -5
- package/dist/index.js +10002 -8096
- package/dist/index.js.map +1 -1
- package/dist/{schema-CohdIL13.d.ts → schema-ecQSnCMz.d.ts} +41 -0
- package/dist/server/index.js +8867 -6969
- package/dist/server/index.js.map +1 -1
- package/dist/skills/default/manage-mcp.md +94 -0
- package/dist/skills/default/search-conversations.md +100 -0
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.js +111 -2
- package/dist/tools/index.js.map +1 -1
- package/package.json +5 -1
- package/src/skills/default/manage-mcp.md +94 -0
- package/src/skills/default/search-conversations.md +100 -0
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/app-path-routes-manifest.json +2 -1
- package/web/.next/standalone/web/.next/build-manifest.json +5 -5
- package/web/.next/standalone/web/.next/prerender-manifest.json +51 -3
- package/web/.next/standalone/web/.next/routes-manifest.json +13 -24
- package/web/.next/standalone/web/.next/server/app/(main)/agents/page/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/next-font-manifest.json +1 -1
- package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page.js +7 -6
- package/web/.next/standalone/web/.next/server/app/(main)/agents/page.js.nft.json +1 -0
- package/web/.next/standalone/web/.next/server/app/(main)/agents/page_client-reference-manifest.js +2 -0
- package/web/.next/standalone/web/.next/server/app/(main)/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page/build-manifest.json +18 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page/next-font-manifest.json +11 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page/react-loadable-manifest.json +1 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page/server-reference-manifest.json +4 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js +21 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js.map +5 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js.nft.json +1 -0
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page_client-reference-manifest.js +2 -0
- package/web/.next/standalone/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.html +1 -0
- package/web/.next/standalone/web/.next/server/app/agents.meta +16 -0
- package/web/.next/standalone/web/.next/server/app/agents.rsc +25 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +9 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +4 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +7 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/_full.segment.rsc +25 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/_head.segment.rsc +6 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/_index.segment.rsc +7 -0
- package/web/.next/standalone/web/.next/server/app/agents.segments/_tree.segment.rsc +5 -0
- package/web/.next/standalone/web/.next/server/app/api/config/route.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/api/health/route.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/installation/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools/page/build-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +5 -5
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.html +1 -0
- package/web/.next/standalone/web/.next/server/app/settings.meta +16 -0
- package/web/.next/standalone/web/.next/server/app/settings.rsc +25 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings/__PAGE__.segment.rsc +9 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings.segment.rsc +4 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p.segment.rsc +7 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +25 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +6 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +7 -0
- package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +5 -0
- package/web/.next/standalone/web/.next/server/app-paths-manifest.json +2 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a383a4d9._.js → 2374f_1f3f2d00._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_60d8842c._.js → 2374f_38945fd9._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_f363c084._.js → 2374f_570c34dc._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_806bd012._.js → 2374f_9c560f3a._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_b7f45fdf._.js → 2374f_a0d5caeb._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_c13c8f4f._.js → 2374f_c87abaf4._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_2801b766._.js → 2374f_d8122230._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_lucide-react_dist_esm_icons_50c2f239._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__2ea52390._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__6097da17._.js +15 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9f149e88._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__b050bb8f._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__be5e2967._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__c94db61a._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_3b9a2423._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_4fe3c244._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/{web_3c2b112b._.js → web_7ca56356._.js} +3 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_8e76ee8b._.js +8 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_90d4125e._.js +7 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_(main)_agents_page_actions_30f6e448.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_(main)_settings_page_actions_7285839d.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_b38a47ee._.js +4 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_f7cf6b63._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_page_tsx_5ac4794b._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_settings_page_tsx_eb320e07._.js +33 -0
- package/web/.next/standalone/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/standalone/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/next-font-manifest.json +8 -4
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/web/.next/static/chunks/03b5edce6d5b809e.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/29dcecc3c2ca92b0.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/344be859c2c8600b.css +1 -0
- package/web/.next/standalone/web/.next/static/chunks/4239395558fab3ef.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/60359bdd369c0c72.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/699803c4fb2dd3fc.js +5 -0
- package/web/.next/standalone/web/.next/static/chunks/735a2408c315b2f0.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/ae4bb24474ff1ed0.js +13 -0
- package/web/.next/standalone/web/.next/static/chunks/d54077a2bb8314ed.js +31 -0
- package/web/.next/standalone/web/.next/static/chunks/dc34aa94e57fa28e.js +3 -0
- package/web/.next/standalone/web/.next/static/chunks/ea89ca7892d8c557.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/f0f19357f3fb7cf8.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/f5fe518b79d1bf41.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/fbdcbd65f9a38f4b.js +7 -0
- package/web/.next/{static/chunks/turbopack-597558bb7b6982f6.js → standalone/web/.next/static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
- package/web/.next/standalone/web/.next/static/static/chunks/03b5edce6d5b809e.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/29dcecc3c2ca92b0.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/344be859c2c8600b.css +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/4239395558fab3ef.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/60359bdd369c0c72.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/699803c4fb2dd3fc.js +5 -0
- package/web/.next/standalone/web/.next/static/static/chunks/735a2408c315b2f0.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/ae4bb24474ff1ed0.js +13 -0
- package/web/.next/standalone/web/.next/static/static/chunks/d54077a2bb8314ed.js +31 -0
- package/web/.next/standalone/web/.next/static/static/chunks/dc34aa94e57fa28e.js +3 -0
- package/web/.next/standalone/web/.next/static/static/chunks/ea89ca7892d8c557.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/f0f19357f3fb7cf8.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/f5fe518b79d1bf41.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/fbdcbd65f9a38f4b.js +7 -0
- package/web/.next/standalone/web/.next/static/{chunks/turbopack-597558bb7b6982f6.js → static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
- package/web/.next/standalone/web/next.config.ts +1 -55
- package/web/.next/standalone/web/package-lock.json +7 -7
- package/web/.next/standalone/web/src/app/(main)/agents/page.tsx +222 -0
- package/web/.next/standalone/web/src/app/(main)/page.tsx +40 -1
- package/web/.next/standalone/web/src/app/(main)/session/[id]/page.tsx +9 -1
- package/web/.next/standalone/web/src/app/(main)/settings/page.tsx +1116 -0
- package/web/.next/standalone/web/src/components/ai-elements/mention-input.tsx +125 -17
- package/web/.next/standalone/web/src/components/chat-interface.tsx +205 -4
- package/web/.next/standalone/web/src/components/pending-question-banner.tsx +106 -0
- package/web/.next/standalone/web/src/components/sessions-sidebar.tsx +120 -50
- package/web/.next/standalone/web/src/lib/api.ts +43 -2
- package/web/.next/static/chunks/03b5edce6d5b809e.js +1 -0
- package/web/.next/static/chunks/29dcecc3c2ca92b0.js +1 -0
- package/web/.next/static/chunks/344be859c2c8600b.css +1 -0
- package/web/.next/static/chunks/4239395558fab3ef.js +1 -0
- package/web/.next/static/chunks/60359bdd369c0c72.js +1 -0
- package/web/.next/static/chunks/699803c4fb2dd3fc.js +5 -0
- package/web/.next/static/chunks/735a2408c315b2f0.js +1 -0
- package/web/.next/static/chunks/ae4bb24474ff1ed0.js +13 -0
- package/web/.next/static/chunks/d54077a2bb8314ed.js +31 -0
- package/web/.next/static/chunks/dc34aa94e57fa28e.js +3 -0
- package/web/.next/static/chunks/ea89ca7892d8c557.js +1 -0
- package/web/.next/static/chunks/f0f19357f3fb7cf8.js +1 -0
- package/web/.next/static/chunks/f5fe518b79d1bf41.js +1 -0
- package/web/.next/static/chunks/fbdcbd65f9a38f4b.js +7 -0
- package/web/.next/{standalone/web/.next/static/static/chunks/turbopack-597558bb7b6982f6.js → static/chunks/turbopack-2c0905c7bbebae3f.js} +1 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page/app-paths-manifest.json +0 -3
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page.js.nft.json +0 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page_client-reference-manifest.js +0 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_317b1fef._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_37dd9702._.js +0 -45
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_4d44e4ed._.js +0 -26
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_54ac917f._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_86585101._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_c59a35bb._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_fdfc7f3d._.js +0 -31
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__234f92d8._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9a826344._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9d3a7cbf._.js +0 -15
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__de76483d._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_08242997._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_123ffe97._.js +0 -8
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_5cca707f._.js +0 -7
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_935e81f5._.js +0 -7
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_99b01335._.js +0 -8
- package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_embed_[id]_page_actions_dd0b7fea.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_components_sessions-sidebar_tsx_92510070._.js +0 -3
- package/web/.next/standalone/web/.next/static/chunks/1ebba7ac024244f9.js +0 -5
- package/web/.next/standalone/web/.next/static/chunks/275e8268daf318b2.js +0 -7
- package/web/.next/standalone/web/.next/static/chunks/2bf377e04592f3c8.js +0 -13
- package/web/.next/standalone/web/.next/static/chunks/376a123113ccf5eb.js +0 -3
- package/web/.next/standalone/web/.next/static/chunks/58fd0aaa2746b444.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/61c9922b38a9569d.js +0 -3
- package/web/.next/standalone/web/.next/static/chunks/74b64476a24dd71e.css +0 -1
- package/web/.next/standalone/web/.next/static/chunks/767bcdfbabf0703e.js +0 -7
- package/web/.next/standalone/web/.next/static/chunks/9fce2ce79c4c834e.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/a888d448ceab1abe.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/b9ad1584d4e11d12.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/c6f40df16a9396b9.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/ea29be392100ab0f.js +0 -5
- package/web/.next/standalone/web/.next/static/static/chunks/1ebba7ac024244f9.js +0 -5
- package/web/.next/standalone/web/.next/static/static/chunks/275e8268daf318b2.js +0 -7
- package/web/.next/standalone/web/.next/static/static/chunks/2bf377e04592f3c8.js +0 -13
- package/web/.next/standalone/web/.next/static/static/chunks/376a123113ccf5eb.js +0 -3
- package/web/.next/standalone/web/.next/static/static/chunks/58fd0aaa2746b444.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/61c9922b38a9569d.js +0 -3
- package/web/.next/standalone/web/.next/static/static/chunks/74b64476a24dd71e.css +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/767bcdfbabf0703e.js +0 -7
- package/web/.next/standalone/web/.next/static/static/chunks/9fce2ce79c4c834e.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/a888d448ceab1abe.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/b9ad1584d4e11d12.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/c6f40df16a9396b9.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/ea29be392100ab0f.js +0 -5
- package/web/.next/standalone/web/src/app/embed/[id]/page.tsx +0 -77
- package/web/.next/standalone/web/src/lib/embed-bootstrap.ts +0 -108
- package/web/.next/static/chunks/1ebba7ac024244f9.js +0 -5
- package/web/.next/static/chunks/275e8268daf318b2.js +0 -7
- package/web/.next/static/chunks/2bf377e04592f3c8.js +0 -13
- package/web/.next/static/chunks/376a123113ccf5eb.js +0 -3
- package/web/.next/static/chunks/58fd0aaa2746b444.js +0 -1
- package/web/.next/static/chunks/61c9922b38a9569d.js +0 -3
- package/web/.next/static/chunks/74b64476a24dd71e.css +0 -1
- package/web/.next/static/chunks/767bcdfbabf0703e.js +0 -7
- package/web/.next/static/chunks/9fce2ce79c4c834e.js +0 -1
- package/web/.next/static/chunks/a888d448ceab1abe.js +0 -1
- package/web/.next/static/chunks/b9ad1584d4e11d12.js +0 -1
- package/web/.next/static/chunks/c6f40df16a9396b9.js +0 -1
- package/web/.next/static/chunks/ea29be392100ab0f.js +0 -5
- package/dist/{search-CCffrVJE.d.ts → search-DOzC4ojH.d.ts} +1 -1
- /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page/server-reference-manifest.json +0 -0
- /package/web/.next/standalone/web/.next/server/app/{embed/[id] → (main)/agents}/page.js.map +0 -0
- /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
- /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_buildManifest.js +0 -0
- /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{WCqUmRTRCgZqwBVGKQESX → eyxBRyMA8Zq36Pfen3Ylj}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useMemo, useState } from 'react';
|
|
4
|
+
import Link from 'next/link';
|
|
5
|
+
import {
|
|
6
|
+
Bot,
|
|
7
|
+
Loader2,
|
|
8
|
+
PauseCircle,
|
|
9
|
+
CheckCircle2,
|
|
10
|
+
XCircle,
|
|
11
|
+
MessageCircleQuestion,
|
|
12
|
+
PlayCircle,
|
|
13
|
+
} from 'lucide-react';
|
|
14
|
+
import { Button } from '@/components/ui/button';
|
|
15
|
+
import { useSessions } from '@/hooks/use-sessions';
|
|
16
|
+
import { cn } from '@/lib/utils';
|
|
17
|
+
import { answerAgentQuestion, type AgentStatus, type Session } from '@/lib/api';
|
|
18
|
+
import { mutateSessions } from '@/hooks/use-sessions';
|
|
19
|
+
|
|
20
|
+
const COLUMNS: { key: AgentStatus; label: string; icon: React.ComponentType<{ className?: string }>; tone: string }[] = [
|
|
21
|
+
{ key: 'running', label: 'In progress', icon: Loader2, tone: 'text-emerald-500' },
|
|
22
|
+
{ key: 'needs_attention', label: 'Needs your input', icon: MessageCircleQuestion, tone: 'text-amber-500' },
|
|
23
|
+
{ key: 'idle', label: 'Idle', icon: PauseCircle, tone: 'text-muted-foreground' },
|
|
24
|
+
{ key: 'completed', label: 'Completed', icon: CheckCircle2, tone: 'text-blue-500' },
|
|
25
|
+
{ key: 'failed', label: 'Failed', icon: XCircle, tone: 'text-rose-500' },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
function formatRelative(iso?: string): string {
|
|
29
|
+
if (!iso) return '';
|
|
30
|
+
const diff = Date.now() - new Date(iso).getTime();
|
|
31
|
+
const m = Math.floor(diff / 60_000);
|
|
32
|
+
if (m < 1) return 'just now';
|
|
33
|
+
if (m < 60) return `${m}m ago`;
|
|
34
|
+
const h = Math.floor(m / 60);
|
|
35
|
+
if (h < 24) return `${h}h ago`;
|
|
36
|
+
const d = Math.floor(h / 24);
|
|
37
|
+
return `${d}d ago`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default function AgentsBoardPage() {
|
|
41
|
+
const { sessions, isLoading } = useSessions();
|
|
42
|
+
const workers = useMemo(
|
|
43
|
+
() => sessions.filter((s) => (s.role ?? 'chat') === 'worker'),
|
|
44
|
+
[sessions],
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const grouped = useMemo(() => {
|
|
48
|
+
const g: Record<AgentStatus, Session[]> = {
|
|
49
|
+
running: [], needs_attention: [], idle: [], completed: [], failed: [],
|
|
50
|
+
};
|
|
51
|
+
for (const s of workers) {
|
|
52
|
+
const status = (s.agentStatus ?? (s.isStreaming ? 'running' : 'idle')) as AgentStatus;
|
|
53
|
+
if (g[status]) g[status].push(s);
|
|
54
|
+
}
|
|
55
|
+
return g;
|
|
56
|
+
}, [workers]);
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div className="h-full flex flex-col overflow-hidden">
|
|
60
|
+
<div className="px-6 py-4 border-b border-border/60 flex items-center justify-between">
|
|
61
|
+
<div className="flex items-center gap-2">
|
|
62
|
+
<Bot className="size-5 text-primary" />
|
|
63
|
+
<h1 className="text-lg font-semibold">Agents</h1>
|
|
64
|
+
<span className="text-xs text-muted-foreground">
|
|
65
|
+
{workers.length} {workers.length === 1 ? 'agent' : 'agents'}
|
|
66
|
+
</span>
|
|
67
|
+
</div>
|
|
68
|
+
<Link href="/" className="text-xs text-muted-foreground hover:text-foreground">Back to home</Link>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div className="flex-1 overflow-x-auto overflow-y-hidden">
|
|
72
|
+
<div className="flex h-full gap-4 p-4 min-w-max">
|
|
73
|
+
{COLUMNS.map((col) => (
|
|
74
|
+
<Column
|
|
75
|
+
key={col.key}
|
|
76
|
+
col={col}
|
|
77
|
+
sessions={grouped[col.key]}
|
|
78
|
+
loading={isLoading && workers.length === 0}
|
|
79
|
+
/>
|
|
80
|
+
))}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function Column({
|
|
88
|
+
col,
|
|
89
|
+
sessions,
|
|
90
|
+
loading,
|
|
91
|
+
}: {
|
|
92
|
+
col: { key: AgentStatus; label: string; icon: React.ComponentType<{ className?: string }>; tone: string };
|
|
93
|
+
sessions: Session[];
|
|
94
|
+
loading: boolean;
|
|
95
|
+
}) {
|
|
96
|
+
const Icon = col.icon;
|
|
97
|
+
return (
|
|
98
|
+
<div className="flex flex-col w-80 shrink-0 rounded-lg bg-card/40 border border-border/60">
|
|
99
|
+
<div className="px-3 py-2 flex items-center gap-2 border-b border-border/60">
|
|
100
|
+
<Icon className={cn('size-4', col.tone, col.key === 'running' && 'animate-spin')} />
|
|
101
|
+
<h2 className="text-sm font-medium">{col.label}</h2>
|
|
102
|
+
<span className="ml-auto text-xs text-muted-foreground tabular-nums">{sessions.length}</span>
|
|
103
|
+
</div>
|
|
104
|
+
<div className="flex-1 overflow-y-auto p-2 space-y-2">
|
|
105
|
+
{loading && sessions.length === 0 ? (
|
|
106
|
+
<p className="text-xs text-muted-foreground text-center py-6">Loading…</p>
|
|
107
|
+
) : sessions.length === 0 ? (
|
|
108
|
+
<p className="text-xs text-muted-foreground/70 text-center py-6 italic">No agents</p>
|
|
109
|
+
) : (
|
|
110
|
+
sessions.map((s) => <AgentCard key={s.id} session={s} />)
|
|
111
|
+
)}
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function AgentCard({ session }: { session: Session }) {
|
|
118
|
+
const [answer, setAnswer] = useState('');
|
|
119
|
+
const [sending, setSending] = useState(false);
|
|
120
|
+
const status = (session.agentStatus ?? 'idle') as AgentStatus;
|
|
121
|
+
const task = session.config?.task;
|
|
122
|
+
const result = task?.result as any;
|
|
123
|
+
|
|
124
|
+
const onAnswer = async () => {
|
|
125
|
+
if (!session.pendingQuestion || !answer.trim() || sending) return;
|
|
126
|
+
setSending(true);
|
|
127
|
+
try {
|
|
128
|
+
await answerAgentQuestion(session.id, session.pendingQuestion.questionId, answer.trim());
|
|
129
|
+
setAnswer('');
|
|
130
|
+
mutateSessions();
|
|
131
|
+
} finally {
|
|
132
|
+
setSending(false);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
return (
|
|
137
|
+
<Link
|
|
138
|
+
href={`/session/${session.id}`}
|
|
139
|
+
className="block rounded-md border border-border/60 bg-background hover:bg-accent/40 transition-colors p-3 group"
|
|
140
|
+
>
|
|
141
|
+
<div className="flex items-start gap-2">
|
|
142
|
+
<div className="flex-1 min-w-0">
|
|
143
|
+
<p className="text-sm font-medium truncate">{session.name || 'Untitled agent'}</p>
|
|
144
|
+
{session.lastMessagePreview && (
|
|
145
|
+
<p className="text-xs text-muted-foreground line-clamp-2 mt-0.5">
|
|
146
|
+
{session.lastMessagePreview}
|
|
147
|
+
</p>
|
|
148
|
+
)}
|
|
149
|
+
{status === 'completed' && result?.summary && (
|
|
150
|
+
<p className="text-xs text-blue-600 dark:text-blue-400 line-clamp-2 mt-1">
|
|
151
|
+
✓ {String(result.summary)}
|
|
152
|
+
</p>
|
|
153
|
+
)}
|
|
154
|
+
{status === 'failed' && task?.error && (
|
|
155
|
+
<p className="text-xs text-rose-500 line-clamp-2 mt-1">{task.error}</p>
|
|
156
|
+
)}
|
|
157
|
+
</div>
|
|
158
|
+
{status === 'running' && <Loader2 className="size-3.5 animate-spin text-emerald-500 shrink-0 mt-1" />}
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
{session.pendingQuestion && (
|
|
162
|
+
<div
|
|
163
|
+
className="mt-3 rounded border border-amber-500/30 bg-amber-500/5 p-2"
|
|
164
|
+
onClick={(e) => e.preventDefault()}
|
|
165
|
+
>
|
|
166
|
+
<p className="text-xs font-medium text-amber-700 dark:text-amber-300">
|
|
167
|
+
Question: {session.pendingQuestion.question}
|
|
168
|
+
</p>
|
|
169
|
+
{session.pendingQuestion.context && (
|
|
170
|
+
<p className="text-[11px] text-muted-foreground mt-1">{session.pendingQuestion.context}</p>
|
|
171
|
+
)}
|
|
172
|
+
{session.pendingQuestion.choices && session.pendingQuestion.choices.length > 0 && (
|
|
173
|
+
<div className="flex flex-wrap gap-1 mt-2">
|
|
174
|
+
{session.pendingQuestion.choices.map((choice) => (
|
|
175
|
+
<button
|
|
176
|
+
key={choice}
|
|
177
|
+
type="button"
|
|
178
|
+
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"
|
|
179
|
+
onClick={(e) => {
|
|
180
|
+
e.preventDefault();
|
|
181
|
+
setAnswer(choice);
|
|
182
|
+
}}
|
|
183
|
+
>
|
|
184
|
+
{choice}
|
|
185
|
+
</button>
|
|
186
|
+
))}
|
|
187
|
+
</div>
|
|
188
|
+
)}
|
|
189
|
+
<div className="flex gap-1 mt-2">
|
|
190
|
+
<input
|
|
191
|
+
type="text"
|
|
192
|
+
value={answer}
|
|
193
|
+
onChange={(e) => setAnswer(e.target.value)}
|
|
194
|
+
onKeyDown={(e) => {
|
|
195
|
+
if (e.key === 'Enter') {
|
|
196
|
+
e.preventDefault();
|
|
197
|
+
onAnswer();
|
|
198
|
+
}
|
|
199
|
+
}}
|
|
200
|
+
placeholder="Type an answer…"
|
|
201
|
+
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"
|
|
202
|
+
/>
|
|
203
|
+
<Button
|
|
204
|
+
size="sm"
|
|
205
|
+
type="button"
|
|
206
|
+
disabled={!answer.trim() || sending}
|
|
207
|
+
onClick={(e) => { e.preventDefault(); onAnswer(); }}
|
|
208
|
+
className="h-7 px-2 text-xs"
|
|
209
|
+
>
|
|
210
|
+
{sending ? '…' : 'Send'}
|
|
211
|
+
</Button>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
)}
|
|
215
|
+
|
|
216
|
+
<div className="mt-2 flex items-center gap-2 text-[10px] text-muted-foreground">
|
|
217
|
+
<PlayCircle className="size-3" />
|
|
218
|
+
<span>{formatRelative(session.updatedAt || session.createdAt)}</span>
|
|
219
|
+
</div>
|
|
220
|
+
</Link>
|
|
221
|
+
);
|
|
222
|
+
}
|
|
@@ -4,7 +4,7 @@ import { useState, useEffect, useRef, Suspense } from 'react';
|
|
|
4
4
|
import { useRouter, useSearchParams } from 'next/navigation';
|
|
5
5
|
import Image from 'next/image';
|
|
6
6
|
import Link from 'next/link';
|
|
7
|
-
import { Plus, Loader2, Key, ExternalLink, AlertCircle, MessageSquare, Clock, Trash2 } from 'lucide-react';
|
|
7
|
+
import { Plus, Loader2, Key, ExternalLink, AlertCircle, MessageSquare, Clock, Trash2, Bot } from 'lucide-react';
|
|
8
8
|
import {
|
|
9
9
|
Tooltip,
|
|
10
10
|
TooltipContent,
|
|
@@ -39,10 +39,27 @@ function formatRelativeTime(dateString: string): string {
|
|
|
39
39
|
return `${Math.floor(diffDays / 7)} weeks ago`;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
function SummaryStat({ label, value, tone }: { label: string; value: number; tone: string }) {
|
|
43
|
+
return (
|
|
44
|
+
<div className="rounded-lg border border-border/60 bg-card/50 p-2 text-center">
|
|
45
|
+
<p className={cn('text-lg font-semibold tabular-nums', tone)}>{value}</p>
|
|
46
|
+
<p className="text-[10px] text-muted-foreground uppercase tracking-wide">{label}</p>
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
42
51
|
function HomeContent() {
|
|
43
52
|
const router = useRouter();
|
|
44
53
|
const searchParams = useSearchParams();
|
|
45
54
|
const { sessions, isLoading: loadingSessions } = useSessions();
|
|
55
|
+
const workers = sessions.filter((s) => s.role === 'worker');
|
|
56
|
+
const workersByStatus = {
|
|
57
|
+
running: workers.filter((s) => s.agentStatus === 'running').length,
|
|
58
|
+
needs_attention: workers.filter((s) => s.agentStatus === 'needs_attention').length,
|
|
59
|
+
completed: workers.filter((s) => s.agentStatus === 'completed').length,
|
|
60
|
+
failed: workers.filter((s) => s.agentStatus === 'failed').length,
|
|
61
|
+
idle: workers.filter((s) => s.agentStatus === 'idle').length,
|
|
62
|
+
};
|
|
46
63
|
const [creating, setCreating] = useState(false);
|
|
47
64
|
const [config, setConfig] = useState<AppConfig | null>(null);
|
|
48
65
|
const [apiKeyInput, setApiKeyInput] = useState('');
|
|
@@ -295,6 +312,28 @@ function HomeContent() {
|
|
|
295
312
|
Press <kbd className="px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono">⌘</kbd> + <kbd className="px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono">T</kbd> to create a new session
|
|
296
313
|
</p>
|
|
297
314
|
|
|
315
|
+
{/* Agents summary */}
|
|
316
|
+
{workers.length > 0 && (
|
|
317
|
+
<div className="mt-6 text-left">
|
|
318
|
+
<div className="flex items-center justify-between mb-3">
|
|
319
|
+
<div className="flex items-center gap-2">
|
|
320
|
+
<Bot className="size-4 text-muted-foreground" />
|
|
321
|
+
<h2 className="text-sm font-medium text-muted-foreground">Agents</h2>
|
|
322
|
+
</div>
|
|
323
|
+
<Link href="/agents" className="text-xs text-muted-foreground hover:text-foreground">
|
|
324
|
+
Open board →
|
|
325
|
+
</Link>
|
|
326
|
+
</div>
|
|
327
|
+
<div className="grid grid-cols-5 gap-2">
|
|
328
|
+
<SummaryStat label="Running" value={workersByStatus.running} tone="text-emerald-500" />
|
|
329
|
+
<SummaryStat label="Needs input" value={workersByStatus.needs_attention} tone="text-amber-500" />
|
|
330
|
+
<SummaryStat label="Idle" value={workersByStatus.idle} tone="text-muted-foreground" />
|
|
331
|
+
<SummaryStat label="Done" value={workersByStatus.completed} tone="text-blue-500" />
|
|
332
|
+
<SummaryStat label="Failed" value={workersByStatus.failed} tone="text-rose-500" />
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
)}
|
|
336
|
+
|
|
298
337
|
{/* Recent Sessions */}
|
|
299
338
|
{!loadingSessions && sessions.length > 0 && (
|
|
300
339
|
<div className="mt-10 text-left">
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { use, useEffect, useState } from 'react';
|
|
4
4
|
import { useRouter } from 'next/navigation';
|
|
5
5
|
import { ChatInterface } from '@/components/chat-interface';
|
|
6
|
+
import { PendingQuestionBanner } from '@/components/pending-question-banner';
|
|
6
7
|
import { getSession, type Session } from '@/lib/api';
|
|
7
8
|
import { Loader2 } from 'lucide-react';
|
|
8
9
|
|
|
@@ -60,5 +61,12 @@ export default function SessionPage({
|
|
|
60
61
|
);
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
return
|
|
64
|
+
return (
|
|
65
|
+
<div className="flex flex-col h-full">
|
|
66
|
+
<PendingQuestionBanner sessionId={session.id} />
|
|
67
|
+
<div className="flex-1 min-h-0">
|
|
68
|
+
<ChatInterface session={session} />
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
64
72
|
}
|