@mndrk/agx 2.0.1 → 2.0.3
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/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-path-routes-manifest.json +2 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/prerender-manifest.json +27 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/routes-manifest.json +6 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/health/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/learnings/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/memories/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/system/db-status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/pause/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/heartbeat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/stream/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/stream/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/user-settings/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.html +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page.js +15 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page.js.map +5 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.html +9 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.meta +15 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.rsc +23 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_full.segment.rsc +23 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_head.segment.rsc +5 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_index.segment.rsc +9 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_tree.segment.rsc +5 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +9 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome.segment.rsc +4 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app-paths-manifest.json +2 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/7e210_Agents_agx-cloud__next-internal_server_app_welcome_page_actions_5176f4d4.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_304dc58c._.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_aaa774d8._.js +4 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_components_chat-ui_f59beea5._.js +95 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{Projects_Agents_agx-cloud_e1b68242._.js → Projects_Agents_agx-cloud_d54d1b77._.js} +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_ef78b9d7._.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__9d72d782._.js → [root-of-the-server]__00507cd5._.js} +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__24a978df._.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__8b322dc4._.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__657b446b._.js → [root-of-the-server]__99fa92e8._.js} +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__a4a5c57b._.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__1e273070._.js → [root-of-the-server]__a73fd1ea._.js} +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/ae43b_@dnd-kit_core_dist_core_esm_e4fe20d7.js +3 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/next-font-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/next-font-manifest.json +4 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/404.html +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/04612fc0fdf7b4ef.css +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/0804e1cf36ac4c40.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{1e899e8bb554fde8.js → 122dafa7cd2594e4.js} +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/38cf24cf2de25782.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/55e870d6246760c7.js +93 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{4256a16941bc22fb.js → 60a9c7b6ddb4f3f5.js} +2 -2
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/7d2c10033c8a8554.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/870ea0d4e47d21ce.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{0a0d449e527ef5e2.js → a56604cde5f45ff6.js} +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/ae26536f21ac3989.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/b3af23a09f4d9204.js +1 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{4926ceb649af0e91.js → cdd364319efbfb0a.js} +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/welcome/page.tsx +117 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/ChatPreview.tsx +85 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/demo-threads.ts +76 -0
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/scripts/fix-turbopack-externals.mjs +94 -0
- package/package.json +1 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_37dc866e._.js +0 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_a7533794._.js +0 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__13df20fe._.js +0 -95
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/ae43b_lucide-react_dist_esm_icons_search_04b9412a.js +0 -3
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/09c6c56e4afc8647.js +0 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/0d58db99a936501d.js +0 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/652b21250c785942.css +0 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/dc534541f2bd6342.js +0 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/e4e1f0e19efe31cb.js +0 -1
- package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/fb502daefdaec131.js +0 -93
- /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{p6iXuzPGIvO0r6q6D_FuE → NUZvhyZNQzdxfq6-qS6F_}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{p6iXuzPGIvO0r6q6D_FuE → NUZvhyZNQzdxfq6-qS6F_}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{p6iXuzPGIvO0r6q6D_FuE → NUZvhyZNQzdxfq6-qS6F_}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,56631,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},72431,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={assign:function(){return l},searchParamsToUrlQuery:function(){return n},urlQueryToSearchParams:function(){return o}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});function n(e){let t={};for(let[r,a]of e.entries()){let e=t[r];void 0===e?t[r]=a:Array.isArray(e)?e.push(a):t[r]=[e,a]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e))if(Array.isArray(a))for(let e of a)t.append(r,i(e));else t.set(r,i(a));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,a]of r.entries())e.append(t,a)}return e}},43910,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return o},formatWithValidation:function(){return d},urlObjectKeys:function(){return l}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(42690)._(e.r(72431)),i=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,a=e.protocol||"",s=e.pathname||"",o=e.hash||"",l=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||i.test(a))&&!1!==d?(d="//"+(d||""),s&&"/"!==s[0]&&(s="/"+s)):d||(d=""),o&&"#"!==o[0]&&(o="#"+o),c&&"?"!==c[0]&&(c="?"+c),s=s.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${a}${d}${s}${c}${o}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return o(e)}},95267,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let a=e.r(95459);function s(e,t){let r=(0,a.useRef)(null),s=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=n(e,a)),t&&(s.current=n(t,a))},[e,t])}function n(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)},44643,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return j},SP:function(){return m},ST:function(){return x},WEB_VITALS:function(){return n},execOnce:function(){return i},getDisplayName:function(){return u},getLocationOrigin:function(){return d},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return h},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return w}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>o.test(e);function d(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=d();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function h(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&h(r))return a;if(!a)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}let m="u">typeof performance,x=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class b extends Error{}class j extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y 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})}},53284,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let a=e.r(44643),s=e.r(68817);function n(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},26100,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},61606,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return g},useLinkStatus:function(){return j}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(42690),i=e.r(72218),o=n._(e.r(95459)),l=e.r(43910),d=e.r(92821),c=e.r(95267),u=e.r(44643),h=e.r(36202);e.r(56631);let f=e.r(23807),p=e.r(53284),m=e.r(94840);function x(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function g(t){var r;let a,s,n,[l,g]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),j=(0,o.useRef)(null),{href:v,as:y,children:w,prefetch:k=null,passHref:C,replace:N,shallow:_,scroll:S,onClick:P,onMouseEnter:T,onTouchStart:A,legacyBehavior:E=!1,onNavigate:M,ref:O,unstable_dynamicOnHover:L,...R}=t;a=w,E&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let F=o.default.useContext(d.AppRouterContext),I=!1!==k,$=!1!==k?null===(r=k)||"auto"===r?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:U,as:z}=o.default.useMemo(()=>{let e=x(v);return{href:e,as:y?x(y):e}},[v,y]);if(E){if(a?.$$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});s=o.default.Children.only(a)}let D=E?s&&"object"==typeof s&&s.ref:O,B=o.default.useCallback(e=>(null!==F&&(j.current=(0,f.mountLinkInstance)(e,U,F,$,I,g)),()=>{j.current&&((0,f.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,f.unmountPrefetchableInstance)(e)}),[I,U,F,$,g]),W={ref:(0,c.useMergedRef)(B,D),onClick(t){E||"function"!=typeof P||P(t),E&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!F||t.defaultPrevented||function(t,r,a,s,n,i,l){if("u">typeof window){let d,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(20263);o.default.startTransition(()=>{u(a||r,n?"replace":"push",i??!0,s.current)})}}(t,U,z,j,N,S,M)},onMouseEnter(e){E||"function"!=typeof T||T(e),E&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),F&&I&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)},onTouchStart:function(e){E||"function"!=typeof A||A(e),E&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),F&&I&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)}};return(0,u.isAbsoluteUrl)(z)?W.href=z:E&&!C&&("a"!==s.type||"href"in s.props)||(W.href=(0,h.addBasePath)(z)),n=E?o.default.cloneElement(s,W):(0,i.jsx)("a",{...R,...W,children:a}),(0,i.jsx)(b.Provider,{value:l,children:n})}e.r(26100);let b=(0,o.createContext)(f.IDLE_LINK_STATUS),j=()=>(0,o.useContext)(b);("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)},63558,(e,t,r)=>{t.exports=e.r(97131)},34285,e=>{"use strict";var t=e.i(95459);function r(){let[e,r]=(0,t.useState)([]),[a,s]=(0,t.useState)(!1),[n,i]=(0,t.useState)(null),o=(0,t.useCallback)(async()=>{s(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),i(null)}catch(e){i(e instanceof Error?e:Error("Unknown error"))}finally{s(!1)}},[]);(0,t.useEffect)(()=>{o()},[o]);let l=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:n,refetch:o,createProject:l,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let s=(await a.json()).project;return r(t=>t.map(t=>t.id===e?s:t)),s},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}}e.s(["useProjects",()=>r])},92463,e=>{"use strict";var t=e.i(72218),r=e.i(95459);let a={name:"",description:""},s={name:"",path:"",notes:""};function n(){let[e,t]=(0,r.useState)(a),[n,i]=(0,r.useState)([s]),[o,l]=(0,r.useState)(!1),[d,c]=(0,r.useState)(null),u=(0,r.useCallback)((e,t,r)=>{i(a=>a.map((a,s)=>s===e?{...a,[t]:r}:a))},[]),h=(0,r.useCallback)(()=>{i(e=>[...e,{...s}])},[]),f=(0,r.useCallback)(e=>{i(t=>t.filter((t,r)=>r!==e))},[]),p=(0,r.useCallback)(()=>{t(a),i([s]),c(null)},[]),m=(0,r.useCallback)(e=>{t({name:e.name||"",description:e.description||""}),e.repos&&e.repos.length>0?i(e.repos.map(e=>({name:e.name||"",path:e.path||"",notes:e.notes||""}))):i([s]),c(null)},[]);return{form:e,setForm:t,repos:n,handleRepoChange:u,addRepo:h,removeRepo:f,resetForm:p,hydrateFromProject:m,isSubmitting:o,setIsSubmitting:l,formError:d,setFormError:c}}function i(e,t){let r=t.filter(e=>e.name.trim()&&e.path.trim()).map(e=>({name:e.name.trim(),path:e.path.trim(),notes:e.notes.trim()||void 0}));return{name:e.name.trim(),description:e.description.trim()||void 0,repos:r.length?r:void 0}}function o({form:e,repos:r,isSubmitting:a,onFieldChange:s,onRepoChange:n,onAddRepo:i,onRemoveRepo:o}){return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,t.jsx)("input",{value:e.name,onChange:e=>s("name",e.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:a})]})}),(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,t.jsx)("textarea",{value:e.description,onChange:e=>s("description",e.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:a})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Repositories"}),(0,t.jsx)("button",{type:"button",onClick:i,className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:a,children:"+ Add Repository"})]}),(0,t.jsx)("div",{className:"space-y-4",children:r.map((e,s)=>(0,t.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Repo #",s+1]}),r.length>1&&(0,t.jsx)("button",{type:"button",onClick:()=>o(s),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:a,children:"Remove"})]}),(0,t.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,t.jsx)("input",{value:e.name,onChange:e=>n(s,"name",e.target.value),placeholder:"Name (e.g. Frontend)",className:"input text-sm",disabled:a}),(0,t.jsx)("input",{value:e.path,onChange:e=>n(s,"path",e.target.value),placeholder:"Local path (mandatory)",className:"input text-sm",disabled:a}),(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)("input",{value:e.notes,onChange:e=>n(s,"notes",e.target.value),placeholder:"Notes/Instructions",className:"input text-sm w-full",disabled:a})})]})]},s))})]})]})}function l({isOpen:e,onClose:r,onSubmit:a,editingProject:s,form:n,repos:i,isSubmitting:l,formError:d,onFieldChange:c,onRepoChange:u,onAddRepo:h,onRemoveRepo:f}){return e?(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-bold",children:s?"Edit Project":"Create New Project"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:s?"Update your project settings and repositories.":"Define a new project and connect repositories."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[(0,t.jsx)(o,{form:n,repos:i,isSubmitting:l,onFieldChange:c,onRepoChange:u,onAddRepo:h,onRemoveRepo:f}),d&&(0,t.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:d})]}),(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,t.jsx)("button",{onClick:a,disabled:l,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:l?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):s?"Save Changes":"Create Project"})]})]})}):null}e.s(["createProjectPayload",()=>i,"default",()=>l,"useProjectFormState",()=>n])},41157,e=>{"use strict";var t=e.i(95459);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=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 s={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 n=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:n=2,absoluteStrokeWidth:i,className:o="",children:l,iconNode:d,...c},u)=>(0,t.createElement)("svg",{ref:u,...s,width:a,height:a,stroke:e,strokeWidth:i?24*Number(n)/Number(a):n,className:r("lucide",o),...!l&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...d.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(l)?l:[l]])),i=(e,s)=>{let i=(0,t.forwardRef)(({className:i,...o},l)=>(0,t.createElement)(n,{ref:l,iconNode:s,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...o}));return i.displayName=a(e),i};e.s(["default",()=>i],41157)},66638,e=>{"use strict";let t=(0,e.i(41157).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],66638)},10971,e=>{"use strict";let t=(0,e.i(41157).default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>t],10971)},59853,23362,e=>{"use strict";var t=e.i(41157);let r=(0,t.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);e.s(["Hash",()=>r],59853);let a=(0,t.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["Minus",()=>a],23362)},89934,e=>{"use strict";var t=e.i(95459);let r="agx-chat:threads";function a(){let e=globalThis.localStorage;if(!e)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return e}function s(){let e=a().getItem(r);if(!e)return{threads:{}};try{let t=JSON.parse(e);if(t&&"object"==typeof t&&t.threads&&"object"==typeof t.threads)return{threads:Object.fromEntries(Object.entries(t.threads).map(([e,t])=>{var r,a;return[e,(r=e,a=t,{id:r,title:a?.title,messages:Array.isArray(a?.messages)?[...a.messages]:[],createdAt:"number"==typeof a?.createdAt?a.createdAt:Date.now(),updatedAt:"number"==typeof a?.updatedAt?a.updatedAt:Date.now(),metadata:a?.metadata})]}))}}catch{}return{threads:{}}}function n(e){a().setItem(r,JSON.stringify(e))}function i(e){return{...e,messages:e.messages.map(e=>({...e})),metadata:e.metadata?{...e.metadata}:void 0}}let o=new class{async saveThread(e){let t=Date.now(),r=s(),a=r.threads[e.id],o=a?.createdAt??e.createdAt??t,l=e.updatedAt??t,d={id:e.id,title:e.title,messages:e.messages.map(e=>({...e})),metadata:e.metadata,createdAt:o,updatedAt:l};return r.threads[e.id]=d,n(r),i(d)}async loadThread(e){let t=s().threads[e];return t?i(t):null}async listThreads(e){let t=Object.values(s().threads),r=e?.order??"desc",a=[...t].sort((e,t)=>"asc"===r?e.updatedAt-t.updatedAt:t.updatedAt-e.updatedAt),n=Math.max(0,e?.offset??0),o=e?.limit,l="number"==typeof o&&o>=0?a.slice(n,n+o):a.slice(n);return{total:t.length,threads:l.map(i)}}async deleteThread(e){let t=s();t.threads[e]&&(delete t.threads[e],n(t))}},l={listThreads:async()=>[...(await o.listThreads({order:"desc"})).threads.filter(e=>!0!==e.metadata?.archived)].sort((e,t)=>t.updatedAt-e.updatedAt),async createThread(e){let t="string"==typeof e?.id?e.id.trim():"";if(t){let r=await o.loadThread(t);if(r){let t={...r.metadata??{},...e?.metadata??{},archived:!1,archivedAt:null};return o.saveThread({id:r.id,title:e?.title??r.title,messages:e?.messages?.length?e.messages:r.messages,metadata:t,createdAt:r.createdAt})}}let r={id:t||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:e?.messages?.length?e.messages:[],title:e?.title,metadata:e?.metadata};return o.saveThread(r)},async deleteThread(e){let t=e.trim();if(!t)return;let r=await o.loadThread(t);if(!r)return;let a={...r.metadata??{},archived:!0,archivedAt:Date.now()};await o.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:a,createdAt:r.createdAt})},async renameThread(e,t){let r=e.trim(),a=t.trim();if(!r||!a)return null;let s=await o.loadThread(r);return s?(s.title?.trim()??"")===a?s:o.saveThread({id:s.id,title:a,messages:s.messages,metadata:s.metadata,createdAt:s.createdAt}):null},async saveThreadMessages(e,t){let r=await o.loadThread(e);if(!r)return null;let a=r.title?.trim()||function(e){let t=e.find(e=>"user"===e.role)?.content?.trim();if(!t)return;let r=t.replace(/\s+/g," ");return r.length>60?`${r.slice(0,60).trim()}…`:r}(t);return function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1){let a=e[r],s=t[r];if(a.id!==s.id||a.role!==s.role||a.participantId!==s.participantId||a.content!==s.content||a.timestamp!==s.timestamp)return!1}return!0}(r.messages,t)&&(r.title?.trim()||void 0)===a?r:o.saveThread({id:r.id,title:a,messages:t,metadata:r.metadata,createdAt:r.createdAt})}},d="agx-chat:last-thread";function c(){return void 0!==window.localStorage}function u(){if(c())try{window.localStorage.removeItem(d)}catch{}}let h=e=>[...e].sort((e,t)=>t.updatedAt-e.updatedAt);function f(){let e=(0,t.useRef)(!0),[r,a]=(0,t.useState)([]),[s,n]=(0,t.useState)(null),[i,o]=(0,t.useState)(!0),[f,p]=(0,t.useState)(!0),[m,x]=(0,t.useState)(!1),[g,b]=(0,t.useState)(null),[j,v]=(0,t.useState)(null),y=(0,t.useRef)(!1),w=(0,t.useCallback)(e=>{n(e)},[]);(0,t.useEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),(0,t.useEffect)(()=>{let t=!1;return(async()=>{try{let r,s=await l.listThreads();if(t||!e.current)return;a(s);let i=function(){if(!c())return null;try{return window.localStorage.getItem(d)}catch{return null}}(),{threadId:o,shouldClearSavedId:h,restoredFromStorage:f}=(r=s[0]?.id??null,i?s.some(e=>e.id===i)?{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:r,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:r,shouldClearSavedId:!1,restoredFromStorage:!1});h&&u(),y.current||(y.current=!0),f&&o?w(o):o?n(e=>e??o):n(null)}catch(e){console.error("Failed to load threads",e)}finally{e.current&&(o(!1),p(!1))}})(),()=>{t=!0}},[w]),(0,t.useEffect)(()=>{if(y.current)if(s){if(c())try{window.localStorage.setItem(d,s)}catch{}}else u()},[s]);let k=(0,t.useCallback)(async t=>{x(!0);try{let r=await l.createThread(t);if(!e.current)return r;return a(e=>h([...e.filter(e=>e.id!==r.id),r])),n(r.id),r}catch(e){throw console.error("Failed to create thread",e),e}finally{e.current&&x(!1)}},[]),C=(0,t.useCallback)(async t=>{if(t){b(t);try{if(await l.deleteThread(t),!e.current)return;let r=[];a(e=>r=h(e.filter(e=>e.id!==t))),n(e=>e===t?r[0]?.id??null:e)}catch(e){throw console.error("Failed to delete thread",e),e}finally{e.current&&b(null)}}},[]),N=(0,t.useCallback)(async(t,r)=>{let s=t.trim(),n=r.trim();if(s&&n){v(s);try{let t=await l.renameThread(s,n);if(!t||!e.current)return;a(e=>h(e.map(e=>e.id===t.id?t:e)))}catch(e){throw console.error("Failed to rename thread",e),e}finally{e.current&&v(e=>e===s?null:e)}}},[]),_=(0,t.useCallback)(async(t,r)=>{if(t)try{let s=await l.saveThreadMessages(t,r);if(!s||!e.current)return;a(e=>h(e.map(e=>e.id===s.id?s:e)))}catch(e){console.error("Failed to update thread messages",e)}},[]),S=null!==s&&g===s;return{threads:r,activeThreadId:s,selectThread:w,createThread:k,deleteThread:C,isLoading:i,isRestoringActiveThread:f,isCreating:m,deletingThreadId:g,renamingThreadId:j,isDeletingActiveThread:S,updateThreadMessages:_,renameThread:N}}e.s(["useThreadState",()=>f],89934)},64152,e=>{"use strict";var t=e.i(72218),r=e.i(34285),a=e.i(63558),s=e.i(61606),n=e.i(95459),i=e.i(10971),o=e.i(59853),l=e.i(23362),d=e.i(66638),c=e.i(89934),u=e.i(92463);function h({children:e,params:h}){let{projects:f,isLoading:p,createProject:m}=(0,r.useProjects)(),{threads:x}=(0,c.useThreadState)(),g=[...x].sort((e,t)=>(e.title??"").localeCompare(t.title??"")),b=(0,a.useRouter)();(0,a.usePathname)();let[j,v]=(0,n.useState)(!1),[y,w]=(0,n.useState)(!0),[k,C]=(0,n.useState)(!1),N=(0,u.useProjectFormState)(),_=()=>{N.resetForm(),C(!1)},S=async()=>{if(!N.form.name.trim())return void N.setFormError("Project name is required");let e=N.repos.find(e=>e.name.trim()&&!e.path.trim());if(e)return void N.setFormError(`Local path is required for repository "${e.name}"`);N.setFormError(null),N.setIsSubmitting(!0);try{await m((0,u.createProjectPayload)(N.form,N.repos)),_()}catch(e){N.setFormError(e instanceof Error?e.message:"Failed to create project")}finally{N.setIsSubmitting(!1)}},P=(0,n.useMemo)(()=>f.find(e=>e.slug===h.slug),[f,h.slug]);if(p)return(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})});if(!P)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,t.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,t.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",h.slug,"” does not exist or you do not have access to it."]}),(0,t.jsx)("button",{onClick:()=>b.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]});let T=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"thread-sidebar__brand",children:[(0,t.jsx)("div",{className:"flex items-center justify-center mr-2","aria-hidden":"true",children:(0,t.jsxs)("svg",{width:"64",height:"38",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})}),(0,t.jsx)("button",{type:"button",onClick:()=>w(!1),"aria-label":"Hide sidebar",title:"Hide sidebar",className:"ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-slate-400 transition-all hover:bg-slate-100 hover:text-slate-600 md:inline-flex hidden",children:(0,t.jsx)(i.PanelLeftClose,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,t.jsxs)("div",{className:"thread-sidebar__content",children:[(0,t.jsxs)("nav",{className:"thread-sidebar__section",children:[(0,t.jsx)("div",{className:"thread-sidebar__section-header",children:(0,t.jsx)(s.default,{href:"/",className:"thread-sidebar__section-label hover:text-slate-700 transition-colors cursor-pointer",onClick:()=>v(!1),children:"Workspace"})}),g.map(e=>{let r=e.title?.trim()||"Untitled workspace";return(0,t.jsx)("div",{className:"thread-sidebar__workspace-item group",children:(0,t.jsxs)(s.default,{href:"/",onClick:()=>v(!1),className:"thread-sidebar__nav-item thread-sidebar__workspace-nav-item",children:[(0,t.jsx)(o.Hash,{size:18}),(0,t.jsx)("span",{className:"thread-sidebar__workspace-title",children:r})]})},e.id)})]}),(0,t.jsxs)("nav",{className:"thread-sidebar__section mt-4",children:[(0,t.jsxs)("div",{className:"thread-sidebar__section-header",children:[(0,t.jsx)(s.default,{href:"/projects",className:"thread-sidebar__section-label hover:text-slate-700 transition-colors cursor-pointer",onClick:()=>v(!1),children:"Projects"}),(0,t.jsx)("div",{className:"thread-sidebar__header-actions",children:(0,t.jsx)("button",{type:"button",onClick:()=>{N.resetForm(),C(!0)},className:"thread-sidebar__action","aria-label":"Add project",title:"Add project",children:(0,t.jsx)(d.Plus,{size:14})})})]}),(0,t.jsx)("div",{className:"thread-sidebar__workspace-list",children:f.map(e=>{let r=e.slug===h.slug;return(0,t.jsx)("div",{className:"thread-sidebar__workspace-item group",children:(0,t.jsxs)(s.default,{href:`/projects/${e.slug}`,onClick:()=>v(!1),className:`thread-sidebar__nav-item thread-sidebar__workspace-nav-item flex items-center gap-3 ${r?"thread-sidebar__nav-item--active thread-sidebar__workspace-nav-item--active":""}`,children:[(0,t.jsx)(l.Minus,{size:16,className:`flex-shrink-0 ${r?"text-indigo-600":"text-slate-400"}`}),(0,t.jsx)("span",{className:"thread-sidebar__workspace-title",children:e.name})]})},e.slug)})})]})]}),(0,t.jsx)("div",{className:"mt-auto p-3",children:(0,t.jsxs)("a",{href:"https://discord.gg/y77e9Euz",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full px-3 py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:[(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})})]});return(0,t.jsxs)("div",{className:"flex h-full min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,t.jsxs)("div",{className:"fixed top-0 left-0 right-0 z-40 h-12 bg-white border-b border-slate-200 flex items-center px-3 gap-3 md:hidden",children:[(0,t.jsx)("button",{onClick:()=>v(!0),className:"p-2 rounded-lg hover:bg-slate-100 transition-colors","aria-label":"Open menu",children:(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),(0,t.jsx)("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),(0,t.jsx)("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})}),(0,t.jsx)("div",{className:"flex items-center justify-center","aria-hidden":"true",children:(0,t.jsxs)("svg",{width:"40",height:"24",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})}),(0,t.jsx)("span",{className:"font-bold text-sm tracking-tight italic text-slate-900",children:P?.name||"AGX"})]}),j&&(0,t.jsxs)("div",{className:"fixed inset-0 z-50 md:hidden",onClick:()=>v(!1),children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm"}),(0,t.jsx)("aside",{className:"absolute left-0 top-0 bottom-0 thread-sidebar shadow-xl animate-slide-in-left",onClick:e=>e.stopPropagation(),children:T})]}),y?(0,t.jsx)("aside",{className:"thread-sidebar hidden md:flex",onClick:e=>e.stopPropagation(),children:T}):(0,t.jsxs)("aside",{className:"thread-sidebar thread-sidebar--collapsed hidden md:flex",children:[(0,t.jsx)("div",{className:"thread-sidebar__brand",children:(0,t.jsx)("button",{type:"button",onClick:()=>w(!0),className:"p-0 bg-transparent hover:bg-transparent border-none outline-none transition-transform hover:scale-105","aria-label":"Show sidebar",title:"Show sidebar",children:(0,t.jsxs)("svg",{width:"64",height:"38",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})})}),(0,t.jsx)("div",{className:"mt-auto p-3 flex justify-center",children:(0,t.jsx)("a",{href:"https://discord.gg/y77e9Euz",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-8 h-8 rounded-lg text-white transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",title:"Join Discord",children:(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full pt-12 md:pt-0 overflow-hidden",children:e}),(0,t.jsx)(u.default,{isOpen:k,onClose:_,onSubmit:S,editingProject:null,form:N.form,repos:N.repos,isSubmitting:N.isSubmitting,formError:N.formError,onFieldChange:(e,t)=>N.setForm(r=>({...r,[e]:t})),onRepoChange:N.handleRepoChange,onAddRepo:N.addRepo,onRemoveRepo:N.removeRepo})]})}function f({children:e,params:r}){let a=(0,n.use)(r);return(0,t.jsx)(n.Suspense,{fallback:(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}),children:(0,t.jsx)(h,{params:a,children:e})})}e.s(["default",()=>f])}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,56631,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},72431,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={assign:function(){return l},searchParamsToUrlQuery:function(){return n},urlQueryToSearchParams:function(){return o}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});function n(e){let t={};for(let[r,a]of e.entries()){let e=t[r];void 0===e?t[r]=a:Array.isArray(e)?e.push(a):t[r]=[e,a]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e))if(Array.isArray(a))for(let e of a)t.append(r,i(e));else t.set(r,i(a));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,a]of r.entries())e.append(t,a)}return e}},43910,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return o},formatWithValidation:function(){return d},urlObjectKeys:function(){return l}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(42690)._(e.r(72431)),i=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,a=e.protocol||"",s=e.pathname||"",o=e.hash||"",l=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||i.test(a))&&!1!==d?(d="//"+(d||""),s&&"/"!==s[0]&&(s="/"+s)):d||(d=""),o&&"#"!==o[0]&&(o="#"+o),c&&"?"!==c[0]&&(c="?"+c),s=s.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${a}${d}${s}${c}${o}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return o(e)}},95267,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let a=e.r(95459);function s(e,t){let r=(0,a.useRef)(null),s=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=n(e,a)),t&&(s.current=n(t,a))},[e,t])}function n(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)},44643,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return j},SP:function(){return m},ST:function(){return x},WEB_VITALS:function(){return n},execOnce:function(){return i},getDisplayName:function(){return u},getLocationOrigin:function(){return d},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return h},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return w}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>o.test(e);function d(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=d();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function h(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&h(r))return a;if(!a)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}let m="u">typeof performance,x=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class b extends Error{}class j extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y 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})}},53284,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let a=e.r(44643),s=e.r(68817);function n(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},26100,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},61606,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return g},useLinkStatus:function(){return j}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(42690),i=e.r(72218),o=n._(e.r(95459)),l=e.r(43910),d=e.r(92821),c=e.r(95267),u=e.r(44643),h=e.r(36202);e.r(56631);let f=e.r(23807),p=e.r(53284),m=e.r(94840);function x(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function g(t){var r;let a,s,n,[l,g]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),j=(0,o.useRef)(null),{href:v,as:y,children:w,prefetch:k=null,passHref:C,replace:N,shallow:_,scroll:S,onClick:P,onMouseEnter:T,onTouchStart:A,legacyBehavior:E=!1,onNavigate:M,ref:O,unstable_dynamicOnHover:L,...R}=t;a=w,E&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let F=o.default.useContext(d.AppRouterContext),I=!1!==k,$=!1!==k?null===(r=k)||"auto"===r?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:U,as:z}=o.default.useMemo(()=>{let e=x(v);return{href:e,as:y?x(y):e}},[v,y]);if(E){if(a?.$$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});s=o.default.Children.only(a)}let D=E?s&&"object"==typeof s&&s.ref:O,B=o.default.useCallback(e=>(null!==F&&(j.current=(0,f.mountLinkInstance)(e,U,F,$,I,g)),()=>{j.current&&((0,f.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,f.unmountPrefetchableInstance)(e)}),[I,U,F,$,g]),W={ref:(0,c.useMergedRef)(B,D),onClick(t){E||"function"!=typeof P||P(t),E&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!F||t.defaultPrevented||function(t,r,a,s,n,i,l){if("u">typeof window){let d,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(20263);o.default.startTransition(()=>{u(a||r,n?"replace":"push",i??!0,s.current)})}}(t,U,z,j,N,S,M)},onMouseEnter(e){E||"function"!=typeof T||T(e),E&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),F&&I&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)},onTouchStart:function(e){E||"function"!=typeof A||A(e),E&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),F&&I&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)}};return(0,u.isAbsoluteUrl)(z)?W.href=z:E&&!C&&("a"!==s.type||"href"in s.props)||(W.href=(0,h.addBasePath)(z)),n=E?o.default.cloneElement(s,W):(0,i.jsx)("a",{...R,...W,children:a}),(0,i.jsx)(b.Provider,{value:l,children:n})}e.r(26100);let b=(0,o.createContext)(f.IDLE_LINK_STATUS),j=()=>(0,o.useContext)(b);("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)},63558,(e,t,r)=>{t.exports=e.r(97131)},34285,e=>{"use strict";var t=e.i(95459);function r(){let[e,r]=(0,t.useState)([]),[a,s]=(0,t.useState)(!1),[n,i]=(0,t.useState)(null),o=(0,t.useCallback)(async()=>{s(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),i(null)}catch(e){i(e instanceof Error?e:Error("Unknown error"))}finally{s(!1)}},[]);(0,t.useEffect)(()=>{o()},[o]);let l=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:n,refetch:o,createProject:l,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let s=(await a.json()).project;return r(t=>t.map(t=>t.id===e?s:t)),s},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}}e.s(["useProjects",()=>r])},41157,e=>{"use strict";var t=e.i(95459);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=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 s={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 n=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:n=2,absoluteStrokeWidth:i,className:o="",children:l,iconNode:d,...c},u)=>(0,t.createElement)("svg",{ref:u,...s,width:a,height:a,stroke:e,strokeWidth:i?24*Number(n)/Number(a):n,className:r("lucide",o),...!l&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...d.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(l)?l:[l]])),i=(e,s)=>{let i=(0,t.forwardRef)(({className:i,...o},l)=>(0,t.createElement)(n,{ref:l,iconNode:s,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...o}));return i.displayName=a(e),i};e.s(["default",()=>i],41157)},66638,e=>{"use strict";let t=(0,e.i(41157).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],66638)},92463,e=>{"use strict";var t=e.i(72218),r=e.i(95459);let a={name:"",description:""},s={name:"",path:"",notes:""};function n(){let[e,t]=(0,r.useState)(a),[n,i]=(0,r.useState)([s]),[o,l]=(0,r.useState)(!1),[d,c]=(0,r.useState)(null),u=(0,r.useCallback)((e,t,r)=>{i(a=>a.map((a,s)=>s===e?{...a,[t]:r}:a))},[]),h=(0,r.useCallback)(()=>{i(e=>[...e,{...s}])},[]),f=(0,r.useCallback)(e=>{i(t=>t.filter((t,r)=>r!==e))},[]),p=(0,r.useCallback)(()=>{t(a),i([s]),c(null)},[]),m=(0,r.useCallback)(e=>{t({name:e.name||"",description:e.description||""}),e.repos&&e.repos.length>0?i(e.repos.map(e=>({name:e.name||"",path:e.path||"",notes:e.notes||""}))):i([s]),c(null)},[]);return{form:e,setForm:t,repos:n,handleRepoChange:u,addRepo:h,removeRepo:f,resetForm:p,hydrateFromProject:m,isSubmitting:o,setIsSubmitting:l,formError:d,setFormError:c}}function i(e,t){let r=t.filter(e=>e.name.trim()&&e.path.trim()).map(e=>({name:e.name.trim(),path:e.path.trim(),notes:e.notes.trim()||void 0}));return{name:e.name.trim(),description:e.description.trim()||void 0,repos:r.length?r:void 0}}function o({form:e,repos:r,isSubmitting:a,onFieldChange:s,onRepoChange:n,onAddRepo:i,onRemoveRepo:o}){return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,t.jsx)("input",{value:e.name,onChange:e=>s("name",e.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:a})]})}),(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,t.jsx)("textarea",{value:e.description,onChange:e=>s("description",e.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:a})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Repositories"}),(0,t.jsx)("button",{type:"button",onClick:i,className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:a,children:"+ Add Repository"})]}),(0,t.jsx)("div",{className:"space-y-4",children:r.map((e,s)=>(0,t.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Repo #",s+1]}),r.length>1&&(0,t.jsx)("button",{type:"button",onClick:()=>o(s),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:a,children:"Remove"})]}),(0,t.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,t.jsx)("input",{value:e.name,onChange:e=>n(s,"name",e.target.value),placeholder:"Name (e.g. Frontend)",className:"input text-sm",disabled:a}),(0,t.jsx)("input",{value:e.path,onChange:e=>n(s,"path",e.target.value),placeholder:"Local path (mandatory)",className:"input text-sm",disabled:a}),(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)("input",{value:e.notes,onChange:e=>n(s,"notes",e.target.value),placeholder:"Notes/Instructions",className:"input text-sm w-full",disabled:a})})]})]},s))})]})]})}function l({isOpen:e,onClose:r,onSubmit:a,editingProject:s,form:n,repos:i,isSubmitting:l,formError:d,onFieldChange:c,onRepoChange:u,onAddRepo:h,onRemoveRepo:f}){return e?(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-bold",children:s?"Edit Project":"Create New Project"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:s?"Update your project settings and repositories.":"Define a new project and connect repositories."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[(0,t.jsx)(o,{form:n,repos:i,isSubmitting:l,onFieldChange:c,onRepoChange:u,onAddRepo:h,onRemoveRepo:f}),d&&(0,t.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:d})]}),(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,t.jsx)("button",{onClick:a,disabled:l,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:l?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):s?"Save Changes":"Create Project"})]})]})}):null}e.s(["createProjectPayload",()=>i,"default",()=>l,"useProjectFormState",()=>n])},10971,e=>{"use strict";let t=(0,e.i(41157).default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>t],10971)},59853,23362,e=>{"use strict";var t=e.i(41157);let r=(0,t.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);e.s(["Hash",()=>r],59853);let a=(0,t.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["Minus",()=>a],23362)},89934,e=>{"use strict";var t=e.i(95459);let r="agx-chat:threads";function a(){let e=globalThis.localStorage;if(!e)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return e}function s(){let e=a().getItem(r);if(!e)return{threads:{}};try{let t=JSON.parse(e);if(t&&"object"==typeof t&&t.threads&&"object"==typeof t.threads)return{threads:Object.fromEntries(Object.entries(t.threads).map(([e,t])=>{var r,a;return[e,(r=e,a=t,{id:r,title:a?.title,messages:Array.isArray(a?.messages)?[...a.messages]:[],createdAt:"number"==typeof a?.createdAt?a.createdAt:Date.now(),updatedAt:"number"==typeof a?.updatedAt?a.updatedAt:Date.now(),metadata:a?.metadata})]}))}}catch{}return{threads:{}}}function n(e){a().setItem(r,JSON.stringify(e))}function i(e){return{...e,messages:e.messages.map(e=>({...e})),metadata:e.metadata?{...e.metadata}:void 0}}let o=new class{async saveThread(e){let t=Date.now(),r=s(),a=r.threads[e.id],o=a?.createdAt??e.createdAt??t,l=e.updatedAt??t,d={id:e.id,title:e.title,messages:e.messages.map(e=>({...e})),metadata:e.metadata,createdAt:o,updatedAt:l};return r.threads[e.id]=d,n(r),i(d)}async loadThread(e){let t=s().threads[e];return t?i(t):null}async listThreads(e){let t=Object.values(s().threads),r=e?.order??"desc",a=[...t].sort((e,t)=>"asc"===r?e.updatedAt-t.updatedAt:t.updatedAt-e.updatedAt),n=Math.max(0,e?.offset??0),o=e?.limit,l="number"==typeof o&&o>=0?a.slice(n,n+o):a.slice(n);return{total:t.length,threads:l.map(i)}}async deleteThread(e){let t=s();t.threads[e]&&(delete t.threads[e],n(t))}},l={listThreads:async()=>[...(await o.listThreads({order:"desc"})).threads.filter(e=>!0!==e.metadata?.archived)].sort((e,t)=>t.updatedAt-e.updatedAt),async createThread(e){let t="string"==typeof e?.id?e.id.trim():"";if(t){let r=await o.loadThread(t);if(r){let t={...r.metadata??{},...e?.metadata??{},archived:!1,archivedAt:null};return o.saveThread({id:r.id,title:e?.title??r.title,messages:e?.messages?.length?e.messages:r.messages,metadata:t,createdAt:r.createdAt})}}let r={id:t||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:e?.messages?.length?e.messages:[],title:e?.title,metadata:e?.metadata};return o.saveThread(r)},async deleteThread(e){let t=e.trim();if(!t)return;let r=await o.loadThread(t);if(!r)return;let a={...r.metadata??{},archived:!0,archivedAt:Date.now()};await o.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:a,createdAt:r.createdAt})},async renameThread(e,t){let r=e.trim(),a=t.trim();if(!r||!a)return null;let s=await o.loadThread(r);return s?(s.title?.trim()??"")===a?s:o.saveThread({id:s.id,title:a,messages:s.messages,metadata:s.metadata,createdAt:s.createdAt}):null},async saveThreadMessages(e,t){let r=await o.loadThread(e);if(!r)return null;let a=r.title?.trim()||function(e){let t=e.find(e=>"user"===e.role)?.content?.trim();if(!t)return;let r=t.replace(/\s+/g," ");return r.length>60?`${r.slice(0,60).trim()}…`:r}(t);return function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1){let a=e[r],s=t[r];if(a.id!==s.id||a.role!==s.role||a.participantId!==s.participantId||a.content!==s.content||a.timestamp!==s.timestamp)return!1}return!0}(r.messages,t)&&(r.title?.trim()||void 0)===a?r:o.saveThread({id:r.id,title:a,messages:t,metadata:r.metadata,createdAt:r.createdAt})}},d="agx-chat:last-thread";function c(){return void 0!==window.localStorage}function u(){if(c())try{window.localStorage.removeItem(d)}catch{}}let h=e=>[...e].sort((e,t)=>t.updatedAt-e.updatedAt);function f(){let e=(0,t.useRef)(!0),[r,a]=(0,t.useState)([]),[s,n]=(0,t.useState)(null),[i,o]=(0,t.useState)(!0),[f,p]=(0,t.useState)(!0),[m,x]=(0,t.useState)(!1),[g,b]=(0,t.useState)(null),[j,v]=(0,t.useState)(null),y=(0,t.useRef)(!1),w=(0,t.useCallback)(e=>{n(e)},[]);(0,t.useEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),(0,t.useEffect)(()=>{let t=!1;return(async()=>{try{let r,s=await l.listThreads();if(t||!e.current)return;a(s);let i=function(){if(!c())return null;try{return window.localStorage.getItem(d)}catch{return null}}(),{threadId:o,shouldClearSavedId:h,restoredFromStorage:f}=(r=s[0]?.id??null,i?s.some(e=>e.id===i)?{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:r,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:r,shouldClearSavedId:!1,restoredFromStorage:!1});h&&u(),y.current||(y.current=!0),f&&o?w(o):o?n(e=>e??o):n(null)}catch(e){console.error("Failed to load threads",e)}finally{e.current&&(o(!1),p(!1))}})(),()=>{t=!0}},[w]),(0,t.useEffect)(()=>{if(y.current)if(s){if(c())try{window.localStorage.setItem(d,s)}catch{}}else u()},[s]);let k=(0,t.useCallback)(async t=>{x(!0);try{let r=await l.createThread(t);if(!e.current)return r;return a(e=>h([...e.filter(e=>e.id!==r.id),r])),n(r.id),r}catch(e){throw console.error("Failed to create thread",e),e}finally{e.current&&x(!1)}},[]),C=(0,t.useCallback)(async t=>{if(t){b(t);try{if(await l.deleteThread(t),!e.current)return;let r=[];a(e=>r=h(e.filter(e=>e.id!==t))),n(e=>e===t?r[0]?.id??null:e)}catch(e){throw console.error("Failed to delete thread",e),e}finally{e.current&&b(null)}}},[]),N=(0,t.useCallback)(async(t,r)=>{let s=t.trim(),n=r.trim();if(s&&n){v(s);try{let t=await l.renameThread(s,n);if(!t||!e.current)return;a(e=>h(e.map(e=>e.id===t.id?t:e)))}catch(e){throw console.error("Failed to rename thread",e),e}finally{e.current&&v(e=>e===s?null:e)}}},[]),_=(0,t.useCallback)(async(t,r)=>{if(t)try{let s=await l.saveThreadMessages(t,r);if(!s||!e.current)return;a(e=>h(e.map(e=>e.id===s.id?s:e)))}catch(e){console.error("Failed to update thread messages",e)}},[]),S=null!==s&&g===s;return{threads:r,activeThreadId:s,selectThread:w,createThread:k,deleteThread:C,isLoading:i,isRestoringActiveThread:f,isCreating:m,deletingThreadId:g,renamingThreadId:j,isDeletingActiveThread:S,updateThreadMessages:_,renameThread:N}}e.s(["useThreadState",()=>f],89934)},64152,e=>{"use strict";var t=e.i(72218),r=e.i(34285),a=e.i(63558),s=e.i(61606),n=e.i(95459),i=e.i(10971),o=e.i(59853),l=e.i(23362),d=e.i(66638),c=e.i(89934),u=e.i(92463);function h({children:e,params:h}){let{projects:f,isLoading:p,createProject:m}=(0,r.useProjects)(),{threads:x}=(0,c.useThreadState)(),g=[...x].sort((e,t)=>(e.title??"").localeCompare(t.title??"")),b=(0,a.useRouter)();(0,a.usePathname)();let[j,v]=(0,n.useState)(!1),[y,w]=(0,n.useState)(!0),[k,C]=(0,n.useState)(!1),N=(0,u.useProjectFormState)(),_=()=>{N.resetForm(),C(!1)},S=async()=>{if(!N.form.name.trim())return void N.setFormError("Project name is required");let e=N.repos.find(e=>e.name.trim()&&!e.path.trim());if(e)return void N.setFormError(`Local path is required for repository "${e.name}"`);N.setFormError(null),N.setIsSubmitting(!0);try{await m((0,u.createProjectPayload)(N.form,N.repos)),_()}catch(e){N.setFormError(e instanceof Error?e.message:"Failed to create project")}finally{N.setIsSubmitting(!1)}},P=(0,n.useMemo)(()=>f.find(e=>e.slug===h.slug),[f,h.slug]);if(p)return(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})});if(!P)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,t.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,t.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",h.slug,"” does not exist or you do not have access to it."]}),(0,t.jsx)("button",{onClick:()=>b.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]});let T=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"thread-sidebar__brand",children:[(0,t.jsx)("div",{className:"flex items-center justify-center mr-2","aria-hidden":"true",children:(0,t.jsxs)("svg",{width:"64",height:"38",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})}),(0,t.jsx)("button",{type:"button",onClick:()=>w(!1),"aria-label":"Hide sidebar",title:"Hide sidebar",className:"ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-slate-400 transition-all hover:bg-slate-100 hover:text-slate-600 md:inline-flex hidden",children:(0,t.jsx)(i.PanelLeftClose,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,t.jsxs)("div",{className:"thread-sidebar__content",children:[(0,t.jsxs)("nav",{className:"thread-sidebar__section",children:[(0,t.jsx)("div",{className:"thread-sidebar__section-header",children:(0,t.jsx)(s.default,{href:"/",className:"thread-sidebar__section-label hover:text-slate-700 transition-colors cursor-pointer",onClick:()=>v(!1),children:"Workspace"})}),g.map(e=>{let r=e.title?.trim()||"Untitled workspace";return(0,t.jsx)("div",{className:"thread-sidebar__workspace-item group",children:(0,t.jsxs)(s.default,{href:"/",onClick:()=>v(!1),className:"thread-sidebar__nav-item thread-sidebar__workspace-nav-item",children:[(0,t.jsx)(o.Hash,{size:18}),(0,t.jsx)("span",{className:"thread-sidebar__workspace-title",children:r})]})},e.id)})]}),(0,t.jsxs)("nav",{className:"thread-sidebar__section mt-4",children:[(0,t.jsxs)("div",{className:"thread-sidebar__section-header",children:[(0,t.jsx)(s.default,{href:"/projects",className:"thread-sidebar__section-label hover:text-slate-700 transition-colors cursor-pointer",onClick:()=>v(!1),children:"Projects"}),(0,t.jsx)("div",{className:"thread-sidebar__header-actions",children:(0,t.jsx)("button",{type:"button",onClick:()=>{N.resetForm(),C(!0)},className:"thread-sidebar__action","aria-label":"Add project",title:"Add project",children:(0,t.jsx)(d.Plus,{size:14})})})]}),(0,t.jsx)("div",{className:"thread-sidebar__workspace-list",children:f.map(e=>{let r=e.slug===h.slug;return(0,t.jsx)("div",{className:"thread-sidebar__workspace-item group",children:(0,t.jsxs)(s.default,{href:`/projects/${e.slug}`,onClick:()=>v(!1),className:`thread-sidebar__nav-item thread-sidebar__workspace-nav-item flex items-center gap-3 ${r?"thread-sidebar__nav-item--active thread-sidebar__workspace-nav-item--active":""}`,children:[(0,t.jsx)(l.Minus,{size:16,className:`flex-shrink-0 ${r?"text-indigo-600":"text-slate-400"}`}),(0,t.jsx)("span",{className:"thread-sidebar__workspace-title",children:e.name})]})},e.slug)})})]})]}),(0,t.jsx)("div",{className:"mt-auto p-3",children:(0,t.jsxs)("a",{href:"https://discord.gg/y77e9Euz",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full px-3 py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:[(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})})]});return(0,t.jsxs)("div",{className:"flex h-full min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,t.jsxs)("div",{className:"fixed top-0 left-0 right-0 z-40 h-12 bg-white border-b border-slate-200 flex items-center px-3 gap-3 md:hidden",children:[(0,t.jsx)("button",{onClick:()=>v(!0),className:"p-2 rounded-lg hover:bg-slate-100 transition-colors","aria-label":"Open menu",children:(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),(0,t.jsx)("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),(0,t.jsx)("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})}),(0,t.jsx)("div",{className:"flex items-center justify-center","aria-hidden":"true",children:(0,t.jsxs)("svg",{width:"40",height:"24",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})}),(0,t.jsx)("span",{className:"font-bold text-sm tracking-tight italic text-slate-900",children:P?.name||"AGX"})]}),j&&(0,t.jsxs)("div",{className:"fixed inset-0 z-50 md:hidden",onClick:()=>v(!1),children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm"}),(0,t.jsx)("aside",{className:"absolute left-0 top-0 bottom-0 thread-sidebar shadow-xl animate-slide-in-left",onClick:e=>e.stopPropagation(),children:T})]}),y?(0,t.jsx)("aside",{className:"thread-sidebar hidden md:flex",onClick:e=>e.stopPropagation(),children:T}):(0,t.jsxs)("aside",{className:"thread-sidebar thread-sidebar--collapsed hidden md:flex",children:[(0,t.jsx)("div",{className:"thread-sidebar__brand",children:(0,t.jsx)("button",{type:"button",onClick:()=>w(!0),className:"p-0 bg-transparent hover:bg-transparent border-none outline-none transition-transform hover:scale-105","aria-label":"Show sidebar",title:"Show sidebar",children:(0,t.jsxs)("svg",{width:"64",height:"38",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,t.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,t.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,t.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,t.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,t.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})})}),(0,t.jsx)("div",{className:"mt-auto p-3 flex justify-center",children:(0,t.jsx)("a",{href:"https://discord.gg/y77e9Euz",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-8 h-8 rounded-lg text-white transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",title:"Join Discord",children:(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full pt-12 md:pt-0 overflow-hidden",children:e}),(0,t.jsx)(u.default,{isOpen:k,onClose:_,onSubmit:S,editingProject:null,form:N.form,repos:N.repos,isSubmitting:N.isSubmitting,formError:N.formError,onFieldChange:(e,t)=>N.setForm(r=>({...r,[e]:t})),onRepoChange:N.handleRepoChange,onAddRepo:N.addRepo,onRemoveRepo:N.removeRepo})]})}function f({children:e,params:r}){let a=(0,n.use)(r);return(0,t.jsx)(n.Suspense,{fallback:(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}),children:(0,t.jsx)(h,{params:a,children:e})})}e.s(["default",()=>f])}]);
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState, useCallback } from "react";
|
|
4
|
+
import { useRouter } from "next/navigation";
|
|
5
|
+
import { ChatPreview } from "@/components/chat-ui/ChatPreview";
|
|
6
|
+
|
|
7
|
+
type ReadyState = "checking" | "ready" | "needs-setup" | "error";
|
|
8
|
+
|
|
9
|
+
export default function WelcomePage() {
|
|
10
|
+
const router = useRouter();
|
|
11
|
+
const [readyState, setReadyState] = useState<ReadyState>("checking");
|
|
12
|
+
|
|
13
|
+
// Silent daemon auto-start
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
let cancelled = false;
|
|
16
|
+
void (async () => {
|
|
17
|
+
try {
|
|
18
|
+
// Check providers
|
|
19
|
+
const statusRes = await fetch("/api/status");
|
|
20
|
+
if (cancelled) return;
|
|
21
|
+
if (!statusRes.ok) {
|
|
22
|
+
setReadyState("error");
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const statusData = await statusRes.json();
|
|
26
|
+
const cliServices = (statusData.services || []).filter(
|
|
27
|
+
(s: { name: string; status: string }) => s.name.startsWith("cli:")
|
|
28
|
+
);
|
|
29
|
+
const hasProvider = cliServices.some(
|
|
30
|
+
(s: { status: string }) => s.status === "ok"
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
if (!hasProvider) {
|
|
34
|
+
setReadyState("needs-setup");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Auto-start daemon
|
|
39
|
+
const daemonRes = await fetch("/api/daemon");
|
|
40
|
+
if (cancelled) return;
|
|
41
|
+
const daemonData = await daemonRes.json();
|
|
42
|
+
if (daemonData.running) {
|
|
43
|
+
setReadyState("ready");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
await fetch("/api/daemon", {
|
|
48
|
+
method: "POST",
|
|
49
|
+
headers: { "Content-Type": "application/json" },
|
|
50
|
+
body: JSON.stringify({ workers: 1 }),
|
|
51
|
+
});
|
|
52
|
+
if (!cancelled) setReadyState("ready");
|
|
53
|
+
} catch {
|
|
54
|
+
if (!cancelled) setReadyState("error");
|
|
55
|
+
}
|
|
56
|
+
})();
|
|
57
|
+
return () => {
|
|
58
|
+
cancelled = true;
|
|
59
|
+
};
|
|
60
|
+
}, []);
|
|
61
|
+
|
|
62
|
+
const handleJoin = useCallback(() => {
|
|
63
|
+
router.push("/");
|
|
64
|
+
}, [router]);
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<div className="h-screen w-full flex flex-col bg-[#FAFAFA]">
|
|
68
|
+
{/* Identity line */}
|
|
69
|
+
<div className="text-center pt-10 pb-2 px-4">
|
|
70
|
+
<h1 className="text-[15px] font-medium text-slate-400 tracking-wide">
|
|
71
|
+
Chat with a team of AI agents
|
|
72
|
+
</h1>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
{/* Chat preview */}
|
|
76
|
+
<ChatPreview />
|
|
77
|
+
|
|
78
|
+
{/* CTA + status */}
|
|
79
|
+
<div className="pb-10 pt-4 flex flex-col items-center gap-3 px-4">
|
|
80
|
+
<button
|
|
81
|
+
type="button"
|
|
82
|
+
onClick={handleJoin}
|
|
83
|
+
disabled={readyState === "needs-setup"}
|
|
84
|
+
className="inline-flex items-center gap-2 px-8 py-3.5 bg-slate-900 text-white text-[15px] font-semibold rounded-xl hover:bg-slate-800 transition-all duration-200 shadow-lg shadow-slate-900/10 hover:-translate-y-0.5 disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:translate-y-0"
|
|
85
|
+
>
|
|
86
|
+
Join the conversation
|
|
87
|
+
</button>
|
|
88
|
+
|
|
89
|
+
{/* Status line */}
|
|
90
|
+
<div className="text-[13px] font-medium">
|
|
91
|
+
{readyState === "checking" && (
|
|
92
|
+
<span className="text-slate-400">Checking system...</span>
|
|
93
|
+
)}
|
|
94
|
+
{readyState === "ready" && (
|
|
95
|
+
<span className="text-emerald-600 flex items-center gap-1.5">
|
|
96
|
+
<span className="w-1.5 h-1.5 rounded-full bg-emerald-500" />
|
|
97
|
+
Ready
|
|
98
|
+
</span>
|
|
99
|
+
)}
|
|
100
|
+
{readyState === "needs-setup" && (
|
|
101
|
+
<a
|
|
102
|
+
href="https://github.com/anthropics/claude-code"
|
|
103
|
+
target="_blank"
|
|
104
|
+
rel="noopener noreferrer"
|
|
105
|
+
className="text-amber-600 hover:text-amber-700 transition-colors"
|
|
106
|
+
>
|
|
107
|
+
⚠ Setup needed (2 min) →
|
|
108
|
+
</a>
|
|
109
|
+
)}
|
|
110
|
+
{readyState === "error" && (
|
|
111
|
+
<span className="text-slate-400">Could not check system status</span>
|
|
112
|
+
)}
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
);
|
|
117
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useState, useEffect, useRef } from "react";
|
|
4
|
+
import { DEMO_MESSAGES, DEMO_PARTICIPANTS } from "@/lib/demo-threads";
|
|
5
|
+
import { agentAvatarUrl } from "./ParticipantBar";
|
|
6
|
+
import { Markdown } from "./Markdown";
|
|
7
|
+
import { User } from "lucide-react";
|
|
8
|
+
|
|
9
|
+
const STAGGER_MS = 400;
|
|
10
|
+
|
|
11
|
+
export function ChatPreview() {
|
|
12
|
+
const [visibleCount, setVisibleCount] = useState(0);
|
|
13
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
14
|
+
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (visibleCount >= DEMO_MESSAGES.length) return;
|
|
17
|
+
const timer = setTimeout(() => {
|
|
18
|
+
setVisibleCount((c) => c + 1);
|
|
19
|
+
}, visibleCount === 0 ? 300 : STAGGER_MS);
|
|
20
|
+
return () => clearTimeout(timer);
|
|
21
|
+
}, [visibleCount]);
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
containerRef.current?.scrollTo({
|
|
25
|
+
top: containerRef.current.scrollHeight,
|
|
26
|
+
behavior: "smooth",
|
|
27
|
+
});
|
|
28
|
+
}, [visibleCount]);
|
|
29
|
+
|
|
30
|
+
const participantMap = Object.fromEntries(
|
|
31
|
+
DEMO_PARTICIPANTS.map((p) => [p.id, p])
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
ref={containerRef}
|
|
37
|
+
className="flex-1 overflow-y-auto px-4 py-6"
|
|
38
|
+
>
|
|
39
|
+
<div className="max-w-2xl mx-auto space-y-4">
|
|
40
|
+
{DEMO_MESSAGES.slice(0, visibleCount).map((msg, i) => {
|
|
41
|
+
const isUser = msg.role === "user";
|
|
42
|
+
const p = msg.participantId ? participantMap[msg.participantId] : null;
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<div
|
|
46
|
+
key={msg.id}
|
|
47
|
+
className="flex gap-3 animate-in fade-in slide-in-from-bottom-2 duration-300"
|
|
48
|
+
style={{ animationDelay: `${i * 50}ms` }}
|
|
49
|
+
>
|
|
50
|
+
<div className="w-8 h-8 rounded-full overflow-hidden border border-slate-100 shadow-sm shrink-0 mt-0.5 flex items-center justify-center bg-slate-100">
|
|
51
|
+
{isUser ? (
|
|
52
|
+
<User className="w-4 h-4 text-slate-400" />
|
|
53
|
+
) : p ? (
|
|
54
|
+
<img
|
|
55
|
+
src={agentAvatarUrl(p.id, 32, p.color)}
|
|
56
|
+
alt={p.name}
|
|
57
|
+
className="w-full h-full object-cover"
|
|
58
|
+
/>
|
|
59
|
+
) : null}
|
|
60
|
+
</div>
|
|
61
|
+
<div className="flex-1 min-w-0">
|
|
62
|
+
<div className="flex items-baseline gap-2">
|
|
63
|
+
<span
|
|
64
|
+
className="text-[12px] font-bold tracking-wide uppercase"
|
|
65
|
+
style={{ color: isUser ? "#334155" : (p?.color || "#64748b") }}
|
|
66
|
+
>
|
|
67
|
+
{isUser ? "You" : (p?.name || "Agent")}
|
|
68
|
+
</span>
|
|
69
|
+
{!isUser && p?.model && (
|
|
70
|
+
<span className="text-[10px] text-slate-400 font-medium">
|
|
71
|
+
{p.model}
|
|
72
|
+
</span>
|
|
73
|
+
)}
|
|
74
|
+
</div>
|
|
75
|
+
<div className="text-[14px] text-slate-700 leading-relaxed mt-0.5">
|
|
76
|
+
<Markdown content={msg.content} isUser={isUser} />
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
})}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { GroupMessage, Participant } from "@/lib/types";
|
|
2
|
+
|
|
3
|
+
export const DEMO_PARTICIPANTS: Participant[] = [
|
|
4
|
+
{ id: "jane", name: "Jane", provider: "claude", model: "claude-opus-4-6", color: "#6366f1" },
|
|
5
|
+
{ id: "cody", name: "Cody", provider: "claude", model: "gpt-5.3", color: "#f59e0b" },
|
|
6
|
+
{ id: "flint", name: "Flint", provider: "ollama", model: "gemini-3.1-pro", color: "#10b981" },
|
|
7
|
+
{ id: "jewel", name: "Jewel", provider: "claude", model: "glm-5", color: "#ec4899" },
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
const now = Date.now();
|
|
11
|
+
|
|
12
|
+
export const DEMO_MESSAGES: GroupMessage[] = [
|
|
13
|
+
{
|
|
14
|
+
id: "demo-0",
|
|
15
|
+
role: "user",
|
|
16
|
+
participantId: null,
|
|
17
|
+
content: "We're losing 40% of users at the onboarding config screen. How should we fix this?",
|
|
18
|
+
timestamp: now - 9000,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "demo-1",
|
|
22
|
+
role: "assistant",
|
|
23
|
+
participantId: "jane",
|
|
24
|
+
content: "The core problem is we're asking for setup before showing value. Users don't know *why* they need an API key yet. Flip the order — let them see the product working first, then ask for config when they actually need it.",
|
|
25
|
+
timestamp: now - 8000,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "demo-2",
|
|
29
|
+
role: "assistant",
|
|
30
|
+
participantId: "cody",
|
|
31
|
+
content: "We can prove that with a zero-config starter task: detect `package.json` or `.git` on load, run a local project analysis. No API key needed, instant result. That alone should cut the drop-off significantly.",
|
|
32
|
+
timestamp: now - 7000,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "demo-3",
|
|
36
|
+
role: "assistant",
|
|
37
|
+
participantId: "flint",
|
|
38
|
+
content: "Risk: if we defer config entirely, the *second* interaction fails when there's no provider configured. We'd just move the drop-off from step 1 to step 2. Need to handle that transition carefully.",
|
|
39
|
+
timestamp: now - 6000,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "demo-4",
|
|
43
|
+
role: "assistant",
|
|
44
|
+
participantId: "jewel",
|
|
45
|
+
content: "Graduated fidelity solves this. First task is local-only and always succeeds. When they trigger something that needs an LLM, prompt for the key *inline* — right where they need it, not on a separate page. Context-sensitive setup.",
|
|
46
|
+
timestamp: now - 5000,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "demo-5",
|
|
50
|
+
role: "assistant",
|
|
51
|
+
participantId: "jane",
|
|
52
|
+
content: "Exactly. Setup instructions are only useful at the moment you need them. Front-loading them is just anxiety. I'd also suggest we track `welcome_view → first_action → first_result` to measure the actual impact.",
|
|
53
|
+
timestamp: now - 4000,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "demo-6",
|
|
57
|
+
role: "assistant",
|
|
58
|
+
participantId: "cody",
|
|
59
|
+
content: "Here's a concrete implementation plan:\n1. Add framework detection on page load\n2. Show \"Map this project\" as default starter task\n3. Run it client-side with zero dependencies\n4. Persist the result so they land in a live session, not a blank page",
|
|
60
|
+
timestamp: now - 3000,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "demo-7",
|
|
64
|
+
role: "assistant",
|
|
65
|
+
participantId: "flint",
|
|
66
|
+
content: "One more thing — keep state from that first task. When they transition to the real workspace, they should land mid-session. Starting over after the demo kills momentum and trust.",
|
|
67
|
+
timestamp: now - 2000,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "demo-8",
|
|
71
|
+
role: "assistant",
|
|
72
|
+
participantId: "jewel",
|
|
73
|
+
content: "Summary: land → see agents working → join with one click → first task runs instantly → setup happens only when needed. Every step earns the next. Shall I draft the implementation spec?",
|
|
74
|
+
timestamp: now - 1000,
|
|
75
|
+
},
|
|
76
|
+
];
|
package/cloud-runtime/standalone/Projects/Agents/agx-cloud/scripts/fix-turbopack-externals.mjs
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Turbopack renames serverExternalPackages to <name>-<hash> in the bundled
|
|
4
|
+
* output, but the standalone node_modules only contains the real package name.
|
|
5
|
+
* This script scans the standalone build for hashed external references and
|
|
6
|
+
* creates symlinks so Node can resolve them at runtime.
|
|
7
|
+
*/
|
|
8
|
+
import { readdirSync, symlinkSync, existsSync, readFileSync } from "fs";
|
|
9
|
+
import { join, resolve } from "path";
|
|
10
|
+
import { globSync } from "fs";
|
|
11
|
+
|
|
12
|
+
const STANDALONE_DIR = resolve(".next/standalone");
|
|
13
|
+
const EXTERNALS = ["better-sqlite3"];
|
|
14
|
+
|
|
15
|
+
// Pattern: <package>-<hex hash>
|
|
16
|
+
const HASH_RE = /^(.+)-([0-9a-f]{16})$/;
|
|
17
|
+
|
|
18
|
+
function findHashedReferences() {
|
|
19
|
+
const refs = new Map();
|
|
20
|
+
|
|
21
|
+
// Scan .next/server for require() calls with hashed names
|
|
22
|
+
const serverDir = join(STANDALONE_DIR, ".next/server");
|
|
23
|
+
if (!existsSync(serverDir)) return refs;
|
|
24
|
+
|
|
25
|
+
function scanDir(dir) {
|
|
26
|
+
let entries;
|
|
27
|
+
try {
|
|
28
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
29
|
+
} catch {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
const full = join(dir, entry.name);
|
|
34
|
+
if (entry.isDirectory()) {
|
|
35
|
+
scanDir(full);
|
|
36
|
+
} else if (entry.name.endsWith(".js")) {
|
|
37
|
+
try {
|
|
38
|
+
const content = readFileSync(full, "utf-8");
|
|
39
|
+
for (const pkg of EXTERNALS) {
|
|
40
|
+
// Match require("better-sqlite3-<hash>") or from "better-sqlite3-<hash>"
|
|
41
|
+
const re = new RegExp(`["']${pkg.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}-([0-9a-f]{8,})["']`, "g");
|
|
42
|
+
let m;
|
|
43
|
+
while ((m = re.exec(content)) !== null) {
|
|
44
|
+
refs.set(`${pkg}-${m[1]}`, pkg);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
} catch {
|
|
48
|
+
// skip unreadable files
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
scanDir(serverDir);
|
|
55
|
+
return refs;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function findNodeModulesDir() {
|
|
59
|
+
// Standalone copies node_modules into .next/standalone/node_modules
|
|
60
|
+
const candidate = join(STANDALONE_DIR, "node_modules");
|
|
61
|
+
if (existsSync(candidate)) return candidate;
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const refs = findHashedReferences();
|
|
66
|
+
if (refs.size === 0) {
|
|
67
|
+
console.log("[fix-turbopack-externals] No hashed external references found — nothing to do.");
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const nodeModules = findNodeModulesDir();
|
|
72
|
+
if (!nodeModules) {
|
|
73
|
+
console.error("[fix-turbopack-externals] Could not find standalone node_modules directory.");
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let created = 0;
|
|
78
|
+
for (const [hashed, real] of refs) {
|
|
79
|
+
const target = join(nodeModules, hashed);
|
|
80
|
+
const source = join(nodeModules, real);
|
|
81
|
+
if (existsSync(target)) {
|
|
82
|
+
console.log(`[fix-turbopack-externals] ${hashed} already exists, skipping.`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (!existsSync(source)) {
|
|
86
|
+
console.warn(`[fix-turbopack-externals] ${real} not found in node_modules, skipping.`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
symlinkSync(real, target);
|
|
90
|
+
console.log(`[fix-turbopack-externals] Symlinked ${hashed} -> ${real}`);
|
|
91
|
+
created++;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
console.log(`[fix-turbopack-externals] Done. Created ${created} symlink(s).`);
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[57624,(a,b,c)=>{"use strict";b.exports=a.r(28489).vendored.contexts.AppRouterContext},55070,(a,b,c)=>{"use strict";b.exports=a.r(28489).vendored["react-ssr"].ReactServerDOMTurbopackClient},40811,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},61669,a=>{"use strict";var b=a.i(58917);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={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 f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],61669)},73165,a=>{"use strict";var b=a.i(58917);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}a.s(["useProjects",()=>c])},24732,a=>{"use strict";let b=(0,a.i(61669).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"}]]);a.s(["XCircle",()=>b],24732)},52948,a=>{"use strict";let b=(0,a.i(61669).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",()=>b],52948)},21306,a=>{"use strict";let b=(0,a.i(61669).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],21306)},51307,a=>{"use strict";let b=(0,a.i(61669).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>b],51307)},57172,a=>{"use strict";let b=(0,a.i(61669).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],57172)},18274,a=>{"use strict";let b=(0,a.i(61669).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],18274)},69703,a=>{"use strict";let b=(0,a.i(61669).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["CheckCircle2",()=>b],69703)},20471,a=>{"use strict";let b=(0,a.i(61669).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);a.s(["Clock",()=>b],20471)},12671,a=>{"use strict";let b=(0,a.i(61669).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",()=>b],12671)},37112,a=>{"use strict";let b=(0,a.i(61669).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],37112)},98077,(a,b,c)=>{"use strict";var d=a.r(58917);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},50084,(a,b,c)=>{"use strict";b.exports=a.r(98077)},90455,(a,b,c)=>{"use strict";var d=a.r(58917),e=a.r(50084),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},44504,(a,b,c)=>{"use strict";b.exports=a.r(90455)},37260,a=>{"use strict";var b=a.i(58917);let c="agx-chat:threads";function d(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function e(){let a=d().getItem(c);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata})]}))}}catch{}return{threads:{}}}function f(a){d().setItem(c,JSON.stringify(a))}function g(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let h=new class{async saveThread(a){let b=Date.now(),c=e(),d=c.threads[a.id],h=d?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i};return c.threads[a.id]=j,f(c),g(j)}async loadThread(a){let b=e().threads[a];return b?g(b):null}async listThreads(a){let b=Object.values(e().threads),c=a?.order??"desc",d=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),f=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?d.slice(f,f+h):d.slice(f);return{total:b.length,threads:i.map(g)}}async deleteThread(a){let b=e();b.threads[a]&&(delete b.threads[a],f(b))}},i={listThreads:async()=>[...(await h.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await h.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return h.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return h.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await h.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await h.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await h.loadThread(c);return e?(e.title?.trim()??"")===d?e:h.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async saveThreadMessages(a,b){let c=await h.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:h.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}};function j(){}let k=a=>[...a].sort((a,b)=>b.updatedAt-a.updatedAt);function l(){let a=(0,b.useRef)(!0),[c,d]=(0,b.useState)([]),[e,f]=(0,b.useState)(null),[g,h]=(0,b.useState)(!0),[l,m]=(0,b.useState)(!0),[n,o]=(0,b.useState)(!1),[p,q]=(0,b.useState)(null),[r,s]=(0,b.useState)(null),t=(0,b.useRef)(!1),u=(0,b.useCallback)(a=>{f(a)},[]);(0,b.useEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]),(0,b.useEffect)(()=>{let b=!1;return(async()=>{try{let c,e=await i.listThreads();if(b||!a.current)return;d(e);let{threadId:g,shouldClearSavedId:h,restoredFromStorage:k}=(c=e[0]?.id??null,{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});h&&j(),t.current||(t.current=!0),k&&g?u(g):g?f(a=>a??g):f(null)}catch(a){console.error("Failed to load threads",a)}finally{a.current&&(h(!1),m(!1))}})(),()=>{b=!0}},[u]),(0,b.useEffect)(()=>{t.current&&(e||j())},[e]);let v=(0,b.useCallback)(async b=>{o(!0);try{let c=await i.createThread(b);if(!a.current)return c;return d(a=>k([...a.filter(a=>a.id!==c.id),c])),f(c.id),c}catch(a){throw console.error("Failed to create thread",a),a}finally{a.current&&o(!1)}},[]),w=(0,b.useCallback)(async b=>{if(b){q(b);try{if(await i.deleteThread(b),!a.current)return;let c=[];d(a=>c=k(a.filter(a=>a.id!==b))),f(a=>a===b?c[0]?.id??null:a)}catch(a){throw console.error("Failed to delete thread",a),a}finally{a.current&&q(null)}}},[]),x=(0,b.useCallback)(async(b,c)=>{let e=b.trim(),f=c.trim();if(e&&f){s(e);try{let b=await i.renameThread(e,f);if(!b||!a.current)return;d(a=>k(a.map(a=>a.id===b.id?b:a)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{a.current&&s(a=>a===e?null:a)}}},[]),y=(0,b.useCallback)(async(b,c)=>{if(b)try{let e=await i.saveThreadMessages(b,c);if(!e||!a.current)return;d(a=>k(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),z=null!==e&&p===e;return{threads:c,activeThreadId:e,selectThread:u,createThread:v,deleteThread:w,isLoading:g,isRestoringActiveThread:l,isCreating:n,deletingThreadId:p,renamingThreadId:r,isDeletingActiveThread:z,updateThreadMessages:y,renameThread:x}}a.s(["useThreadState",()=>l],37260)},10972,34541,a=>{"use strict";var b=a.i(61669);let c=(0,b.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);a.s(["Hash",()=>c],10972);let d=(0,b.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);a.s(["Minus",()=>d],34541)},75371,a=>{"use strict";let b=(0,a.i(61669).default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);a.s(["PanelLeftClose",()=>b],75371)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=Projects_Agents_agx-cloud_37dc866e._.js.map
|