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
|
@@ -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 =
|
|
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=
|
|
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
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
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
|
|
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)}]);
|