@mndrk/agx 2.0.22 → 2.0.24
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/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/.next/app-path-routes-manifest.json +1 -0
- package/cloud-runtime/standalone/.next/build-manifest.json +6 -6
- package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/.next/routes-manifest.json +6 -0
- package/cloud-runtime/standalone/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/_global-error/page.js +2 -2
- package/cloud-runtime/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/_not-found/page.js +6 -5
- package/cloud-runtime/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +11 -11
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/agents/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/agents.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js +7 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js.map +5 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/.next/server/app/api/providers/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/status/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/automations/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/automations.rsc +11 -11
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +11 -11
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +5 -5
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/board/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/board/page.js +6 -6
- package/cloud-runtime/standalone/.next/server/app/board/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/board.rsc +8 -8
- package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +8 -8
- package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/index.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +13 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/projects.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/settings/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/settings/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/settings.rsc +9 -9
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +9 -9
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/status/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/status/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/status/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/status.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome/page/build-manifest.json +4 -4
- package/cloud-runtime/standalone/.next/server/app/welcome/page.js +5 -5
- package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.html +14 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +10 -10
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +4 -4
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +1 -0
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__60ba5058._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__621dcb4a._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__babd2675._.js → [root-of-the-server]__82d76712._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d36da34d._.js → [root-of-the-server]__c2767ca5._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/_next-internal_server_app_api_filesystem_browse_route_actions_8e268170.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/lib_history-store_ts_2e721df2._.js +4 -4
- package/cloud-runtime/standalone/.next/server/chunks/lib_history-store_ts_74d1c060._.js +6 -6
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__fb05a385._.js → [root-of-the-server]__056cdf7d._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__113d6767._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__8d1af2c9._.js → [root-of-the-server]__11e33b9b._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__296a25b5._.js → [root-of-the-server]__19cd257e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__226f8a19._.js +13 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__51980630._.js → [root-of-the-server]__26d669c2._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__47caef59._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a103abc._.js → [root-of-the-server]__4ebf5947._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ffa2883._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__6a9d3855._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__942ca438._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__c45c7360._.js → [root-of-the-server]__a667191a._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1cfbd715._.js → [root-of-the-server]__aa28d46f._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bd4d5430._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ab36b420._.js → [root-of-the-server]__bde5bc78._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__cde88183._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce3b51aa._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__2503b467._.js → [root-of-the-server]__d36dd8bc._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b77ae83d._.js → [root-of-the-server]__dac5ab29._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__3405b8e4._.js → [root-of-the-server]__e87ba2b0._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b9356576._.js → [root-of-the-server]__f62d412e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__756711b8._.js → [root-of-the-server]__f63d6594._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__46de03a9._.js → [root-of-the-server]__febbd0b8._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89c70d6f._.js → [root-of-the-server]__ff22a10e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a19a362a._.js → _02c78cac._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{node_modules_next_dist_08570d7f._.js → _0b36c9d6._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_0ff7c687._.js +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_0ffd2660._.js +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_37435df3._.js → _173da79d._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_4fe611fe._.js → _1c58ab2d._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a88b4884._.js → _222af282._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_27cb3359._.js +95 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_8ebf36f6._.js → _3aa32c11._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_43472af3._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_4b5d7c9b._.js +95 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_c52176ad._.js → _4d4ba84b._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_194cda6c._.js → _50d04b8f._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a8eaf6bc._.js → _629dc55c._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_6a367524._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_93914ecd._.js +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_94effa0f._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_a696e9b3._.js +95 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_ae20456d._.js +4 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_c838f593._.js +95 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_cd5e154b._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_d021529a._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_fc18d7b5._.js → _e04b4053._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_e1769638._.js +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_b9d3574c._.js → _f1465cc8._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_d4878ef1._.js → _f2a7beb1._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_fbced30b._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_8d8836a8._.js → _fc1aaf9e._.js} +3 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_agents_[id]_page_tsx_9c49d8c8._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_agents_page_tsx_f5f08ed8._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_automations_page_tsx_3d732184._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_execution-graph_page_tsx_f854185a._.js +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_global-error_tsx_9170b7a0._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_page_tsx_e0fabf6e._.js +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +5 -5
- package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_next_dist_03ec2107._.js +4 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_d92e159d.js → node_modules_next_dist_esm_build_templates_app-page_61c49327.js} +3 -3
- package/cloud-runtime/standalone/.next/server/middleware-build-manifest.js +4 -4
- package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/.next/server/pages/404.html +13 -1
- package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/{785cb91c31bb3303.js → 09f9eeea393db0fd.js} +3 -3
- package/cloud-runtime/standalone/.next/static/chunks/1184bf1bfdf97666.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/2acd153dc5252e88.js +30 -0
- package/cloud-runtime/standalone/.next/static/chunks/2deeba875ec50761.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/45b4d0ee5c92d45b.js +93 -0
- package/cloud-runtime/standalone/.next/static/chunks/5ace4b4f4475962a.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/616d66dbec9e4b8b.js +93 -0
- package/cloud-runtime/standalone/.next/static/chunks/64f812259cf8c243.js +18 -0
- package/cloud-runtime/standalone/.next/static/chunks/6dbf5940e30fa9c7.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/7d4c1d97169c8522.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/7f13efe9329d3f97.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/80219bbddcf65109.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{47ef8bb2118ea917.js → 86ace6febb11ad71.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/{90c7dbc004f59a42.js → 88e24940a5d5d386.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/9d50c2514f72d926.css +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/b079c677d9b39f98.js +5 -0
- package/cloud-runtime/standalone/.next/static/chunks/b4e298542d366e31.js +93 -0
- package/cloud-runtime/standalone/.next/static/chunks/b88352740262931f.js +6 -0
- package/cloud-runtime/standalone/.next/static/chunks/bd6c5b5b4fbd6413.css +2 -0
- package/cloud-runtime/standalone/.next/static/chunks/c5609fd2abb65850.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{7ca3e4f9ed7425a8.js → d95cd010361834be.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/da434b1ad885d636.js +30 -0
- package/cloud-runtime/standalone/.next/static/chunks/e44264686aa5ecbf.js +93 -0
- package/cloud-runtime/standalone/.next/static/chunks/eab1c7d0246592f8.js +8 -0
- package/cloud-runtime/standalone/.next/static/chunks/f7bbf5cfcfed8ba9.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{turbopack-92401168917c21f2.js → turbopack-5b5918f610666d2d.js} +1 -1
- package/cloud-runtime/standalone/README.md +15 -3
- package/cloud-runtime/standalone/app/agents/[id]/page.tsx +147 -147
- package/cloud-runtime/standalone/app/agents/page.tsx +115 -310
- package/cloud-runtime/standalone/app/api/filesystem/browse/route.ts +39 -0
- package/cloud-runtime/standalone/app/api/status/route.ts +1 -1
- package/cloud-runtime/standalone/app/api/threads/route.ts +4 -5
- package/cloud-runtime/standalone/app/automations/page.tsx +1 -1
- package/cloud-runtime/standalone/app/execution-graph/page.tsx +86 -86
- package/cloud-runtime/standalone/app/global-error.tsx +54 -0
- package/cloud-runtime/standalone/app/globals.css +165 -59
- package/cloud-runtime/standalone/app/layout.tsx +17 -0
- package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +1 -1
- package/cloud-runtime/standalone/app/projects/[slug]/page.tsx +58 -58
- package/cloud-runtime/standalone/app/status/page.tsx +20 -20
- package/cloud-runtime/standalone/app/welcome/page.tsx +20 -15
- package/cloud-runtime/standalone/components/AutomationsBoard.tsx +1 -1
- package/cloud-runtime/standalone/components/ClientOnly.tsx +17 -0
- package/cloud-runtime/standalone/components/ConsentToggle/index.tsx +3 -3
- package/cloud-runtime/standalone/components/ContextMenu.tsx +123 -0
- package/cloud-runtime/standalone/components/DaemonBar.tsx +9 -9
- package/cloud-runtime/standalone/components/DirectoryBrowser.tsx +140 -0
- package/cloud-runtime/standalone/components/FirstRunModal/index.tsx +10 -10
- package/cloud-runtime/standalone/components/KanbanBoard.tsx +9 -9
- package/cloud-runtime/standalone/components/OfflineIndicator.tsx +149 -0
- package/cloud-runtime/standalone/components/ProjectModal.tsx +32 -8
- package/cloud-runtime/standalone/components/TaskCard.tsx +3 -3
- package/cloud-runtime/standalone/components/WorkspaceRootsList/index.tsx +57 -35
- package/cloud-runtime/standalone/components/chat-ui/AttachmentTray.tsx +7 -7
- package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +218 -121
- package/cloud-runtime/standalone/components/chat-ui/ChatPreview.tsx +4 -4
- package/cloud-runtime/standalone/components/chat-ui/CommandPopover.tsx +4 -4
- package/cloud-runtime/standalone/components/chat-ui/Composer.tsx +65 -29
- package/cloud-runtime/standalone/components/chat-ui/FileMentionPopover.tsx +4 -4
- package/cloud-runtime/standalone/components/chat-ui/FileMentionPopoverItem.tsx +9 -9
- package/cloud-runtime/standalone/components/chat-ui/LogPanel.tsx +5 -5
- package/cloud-runtime/standalone/components/chat-ui/Markdown.tsx +11 -11
- package/cloud-runtime/standalone/components/chat-ui/MentionPopover.tsx +11 -11
- package/cloud-runtime/standalone/components/chat-ui/MessageAttachments.tsx +5 -5
- package/cloud-runtime/standalone/components/chat-ui/MessageBubble.tsx +6 -6
- package/cloud-runtime/standalone/components/chat-ui/MessageList.tsx +60 -135
- package/cloud-runtime/standalone/components/chat-ui/ParticipantBar.tsx +507 -263
- package/cloud-runtime/standalone/components/chat-ui/ProjectPicker.tsx +17 -17
- package/cloud-runtime/standalone/components/chat-ui/ReactionChip.tsx +1 -1
- package/cloud-runtime/standalone/components/chat-ui/SearchResults.tsx +14 -14
- package/cloud-runtime/standalone/components/chat-ui/StatusIndicator.tsx +7 -7
- package/cloud-runtime/standalone/components/chat-ui/TaskDraftCard.tsx +14 -14
- package/cloud-runtime/standalone/components/chat-ui/TaskStatusCard.tsx +10 -10
- package/cloud-runtime/standalone/components/chat-ui/ThreadMentionPopover.tsx +8 -8
- package/cloud-runtime/standalone/components/chat-ui/ThreadView.tsx +36 -33
- package/cloud-runtime/standalone/components/chat-ui/TypingIndicator.tsx +7 -7
- package/cloud-runtime/standalone/components/errors/StartupGuardWrapper.tsx +96 -0
- package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +173 -193
- package/cloud-runtime/standalone/fix-primary.js +30 -0
- package/cloud-runtime/standalone/fix-theme.js +78 -0
- package/cloud-runtime/standalone/hooks/useKeyboardShortcuts.ts +131 -0
- package/cloud-runtime/standalone/lib/history-store.ts +6 -1
- package/cloud-runtime/standalone/lib/storage/thread-adapter.ts +3 -3
- package/cloud-runtime/standalone/state/windowState.ts +179 -0
- package/cloud-runtime/standalone/styles/workspaceSidebar.css +89 -94
- package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__3fe0b1a1._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ea3dff5._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__931817d6._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__e68a6e30._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__fad8b80a._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_181427d4._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_2da02644._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_60f7e403._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_7dbc349d._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_a17cabe8._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_d743f11d._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_e05b04a5._.js +0 -4
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_f2970e5f._.js +0 -4
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_001a8448._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +0 -3
- package/cloud-runtime/standalone/.next/static/chunks/047593c886feba72.css +0 -2
- package/cloud-runtime/standalone/.next/static/chunks/0c589ec8063c3a1f.js +0 -30
- package/cloud-runtime/standalone/.next/static/chunks/1826707bd2f73ca6.js +0 -8
- package/cloud-runtime/standalone/.next/static/chunks/1f1b912fe2e3d5bd.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/32f13ace6661115d.js +0 -93
- package/cloud-runtime/standalone/.next/static/chunks/3b0a3b913dd15028.js +0 -30
- package/cloud-runtime/standalone/.next/static/chunks/4b3358c52d01a3f9.css +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/4ee6151684568990.js +0 -93
- package/cloud-runtime/standalone/.next/static/chunks/5488a71a8515e8b2.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/5aad4adabb65cd20.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/5ce01dbd17ce3bb2.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/5f5ae2ea4fa2b8f0.js +0 -12
- package/cloud-runtime/standalone/.next/static/chunks/6bb1ecbc3b80922c.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/7657d70cc0c40c81.js +0 -6
- package/cloud-runtime/standalone/.next/static/chunks/7f2513325b592f25.js +0 -18
- package/cloud-runtime/standalone/.next/static/chunks/8b658ccf17b771b9.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b39122b85655e5b0.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b649593a57df218f.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b8ca4cb386211980.js +0 -5
- package/cloud-runtime/standalone/.next/static/chunks/e103488c85a7b445.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/e355ac901e70f43d.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/ebebe08434070698.js +0 -93
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → Rn0z3Af30mHwrHLLwgKlz}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → Rn0z3Af30mHwrHLLwgKlz}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → Rn0z3Af30mHwrHLLwgKlz}/_ssgManifest.js +0 -0
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
Pencil,
|
|
15
15
|
Plus,
|
|
16
16
|
Share2,
|
|
17
|
-
Trash2,
|
|
18
17
|
Upload,
|
|
19
18
|
Users,
|
|
20
19
|
X,
|
|
@@ -65,23 +64,15 @@ export default function AgentLibraryPage() {
|
|
|
65
64
|
const {
|
|
66
65
|
projects,
|
|
67
66
|
createProject,
|
|
68
|
-
deleteProject,
|
|
69
|
-
renameProject,
|
|
70
67
|
addAgent: addAgentToProject,
|
|
71
68
|
removeAgent: removeAgentFromProject,
|
|
72
69
|
refresh: refreshProjects,
|
|
73
70
|
} = useProjectsWithAgents();
|
|
74
71
|
|
|
75
72
|
const [expandedProjects, setExpandedProjects] = useState<Set<string>>(new Set());
|
|
76
|
-
const [createModal, setCreateModal] = useState(false);
|
|
77
|
-
const [createName, setCreateName] = useState("");
|
|
78
|
-
const [createAgents, setCreateAgents] = useState<Set<string>>(new Set());
|
|
79
|
-
const [createWorkspaces, setCreateWorkspaces] = useState<Set<string>>(new Set());
|
|
80
73
|
const [addAgentModal, setAddAgentModal] = useState<{ projectId: string } | null>(null);
|
|
81
74
|
const [addAgentSelection, setAddAgentSelection] = useState<Set<string>>(new Set());
|
|
82
75
|
const [creatingNewAgent, setCreatingNewAgent] = useState(false);
|
|
83
|
-
const [renameModal, setRenameModal] = useState<{ projectId: string; currentName: string } | null>(null);
|
|
84
|
-
const [renameValue, setRenameValue] = useState("");
|
|
85
76
|
|
|
86
77
|
// Edit agent state
|
|
87
78
|
const [editAgent, setEditAgent] = useState<Participant | null>(null);
|
|
@@ -151,24 +142,6 @@ export default function AgentLibraryPage() {
|
|
|
151
142
|
});
|
|
152
143
|
};
|
|
153
144
|
|
|
154
|
-
const handleCreateSubmit = async () => {
|
|
155
|
-
if (!createName.trim()) return;
|
|
156
|
-
const wsIds = Array.from(createWorkspaces);
|
|
157
|
-
const project = await createProject(createName.trim(), wsIds.length > 0 ? wsIds : undefined);
|
|
158
|
-
if (project) {
|
|
159
|
-
for (const agentId of createAgents) {
|
|
160
|
-
await addAgentToProject(project.id, agentId);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
setCreateModal(false);
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
const handleRenameSubmit = async () => {
|
|
167
|
-
if (!renameModal || !renameValue.trim()) return;
|
|
168
|
-
await renameProject(renameModal.projectId, renameValue.trim());
|
|
169
|
-
setRenameModal(null);
|
|
170
|
-
};
|
|
171
|
-
|
|
172
145
|
// ── Outbound (Share / Export) ──────────────────────────────────────
|
|
173
146
|
|
|
174
147
|
const openOutboundModal = () => {
|
|
@@ -378,7 +351,7 @@ export default function AgentLibraryPage() {
|
|
|
378
351
|
// ── Checkbox helper ─────────────────────────────────────────────────────
|
|
379
352
|
|
|
380
353
|
const Checkbox = ({ checked }: { checked: boolean }) => (
|
|
381
|
-
<div className={`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${checked ? "bg-
|
|
354
|
+
<div className={`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${checked ? "bg-[var(--foreground)] border-[var(--foreground)]" : "border-[var(--app-shell-soft-text)]"}`}>
|
|
382
355
|
{checked && (
|
|
383
356
|
<svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 5l2 2 4-4" stroke="white" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/></svg>
|
|
384
357
|
)}
|
|
@@ -386,21 +359,21 @@ export default function AgentLibraryPage() {
|
|
|
386
359
|
);
|
|
387
360
|
|
|
388
361
|
return (
|
|
389
|
-
<div className="min-h-screen bg-
|
|
362
|
+
<div className="min-h-screen bg-[var(--secondary)] p-6">
|
|
390
363
|
<div className="max-w-6xl mx-auto">
|
|
391
364
|
<div className="flex items-center gap-3 mb-6">
|
|
392
365
|
<Link
|
|
393
366
|
href="/"
|
|
394
|
-
className="inline-flex items-center gap-1 text-sm text-
|
|
367
|
+
className="inline-flex items-center gap-1 text-sm text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors"
|
|
395
368
|
>
|
|
396
369
|
<ArrowLeft size={16} />
|
|
397
370
|
Back
|
|
398
371
|
</Link>
|
|
399
|
-
<h1 className="text-2xl font-semibold text-
|
|
372
|
+
<h1 className="text-2xl font-semibold text-[var(--foreground)]">Manage Agents</h1>
|
|
400
373
|
<div className="ml-auto flex items-center gap-2">
|
|
401
374
|
<button
|
|
402
375
|
type="button"
|
|
403
|
-
className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-
|
|
376
|
+
className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 transition-colors"
|
|
404
377
|
onClick={() => setCreatingNewAgent(true)}
|
|
405
378
|
>
|
|
406
379
|
<Plus size={13} />
|
|
@@ -442,23 +415,23 @@ export default function AgentLibraryPage() {
|
|
|
442
415
|
|
|
443
416
|
{/* Agent Grid */}
|
|
444
417
|
{participants.length === 0 ? (
|
|
445
|
-
<p className="text-
|
|
418
|
+
<p className="text-[var(--muted-foreground)] text-sm">No agents configured yet.</p>
|
|
446
419
|
) : (
|
|
447
420
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4">
|
|
448
421
|
{participants.map((p) => (
|
|
449
422
|
<div
|
|
450
423
|
key={p.id}
|
|
451
|
-
className="bg-
|
|
424
|
+
className="bg-[var(--card-bg)] rounded-xl border border-[var(--border)] p-4 hover:shadow-md transition-shadow text-left group"
|
|
452
425
|
>
|
|
453
426
|
<div className="flex items-start gap-3 mb-3">
|
|
454
427
|
<img
|
|
455
428
|
src={agentAvatarUrl(p.id, 48, p.color)}
|
|
456
429
|
alt={p.name}
|
|
457
|
-
className="w-12 h-12 rounded-full bg-
|
|
430
|
+
className="w-12 h-12 rounded-full bg-[var(--secondary)]"
|
|
458
431
|
/>
|
|
459
432
|
<div className="min-w-0 flex-1">
|
|
460
|
-
<h3 className="font-medium text-
|
|
461
|
-
<p className="text-xs text-
|
|
433
|
+
<h3 className="font-medium text-[var(--foreground)] truncate">{p.name}</h3>
|
|
434
|
+
<p className="text-xs text-[var(--app-shell-soft-text)] truncate mt-0.5">{p.model}</p>
|
|
462
435
|
{workingAgents.has(p.id) && (
|
|
463
436
|
<span className="inline-flex items-center gap-1 mt-1 text-[10px] font-medium text-emerald-600">
|
|
464
437
|
<span className="w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse" />
|
|
@@ -479,15 +452,15 @@ export default function AgentLibraryPage() {
|
|
|
479
452
|
</span>
|
|
480
453
|
))}
|
|
481
454
|
{p.skills.length > 3 && (
|
|
482
|
-
<span className="text-[10px] px-1.5 py-0.5 rounded bg-
|
|
455
|
+
<span className="text-[10px] px-1.5 py-0.5 rounded bg-[var(--secondary)] text-[var(--app-shell-soft-text)]">
|
|
483
456
|
+{p.skills.length - 3}
|
|
484
457
|
</span>
|
|
485
458
|
)}
|
|
486
459
|
</div>
|
|
487
460
|
)}
|
|
488
461
|
|
|
489
|
-
<div className="flex items-center justify-between pt-2 border-t border-
|
|
490
|
-
<span className="text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-
|
|
462
|
+
<div className="flex items-center justify-between pt-2 border-t border-[var(--border)]">
|
|
463
|
+
<span className="text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-[var(--secondary)] text-[var(--muted-foreground)] uppercase tracking-wide">
|
|
491
464
|
{p.provider}
|
|
492
465
|
</span>
|
|
493
466
|
<div className="flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity">
|
|
@@ -495,14 +468,14 @@ export default function AgentLibraryPage() {
|
|
|
495
468
|
type="button"
|
|
496
469
|
title="Edit"
|
|
497
470
|
onClick={() => setEditAgent(p)}
|
|
498
|
-
className="p-1.5 text-
|
|
471
|
+
className="p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors"
|
|
499
472
|
>
|
|
500
473
|
<Pencil size={13} />
|
|
501
474
|
</button>
|
|
502
475
|
<Link
|
|
503
476
|
href={`/agents/${p.id}`}
|
|
504
477
|
title="View profile"
|
|
505
|
-
className="p-1.5 text-
|
|
478
|
+
className="p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors"
|
|
506
479
|
>
|
|
507
480
|
<Eye size={13} />
|
|
508
481
|
</Link>
|
|
@@ -515,27 +488,15 @@ export default function AgentLibraryPage() {
|
|
|
515
488
|
|
|
516
489
|
{/* Projects Section */}
|
|
517
490
|
<div className="mt-10">
|
|
518
|
-
<div className="
|
|
519
|
-
<h2 className="text-lg font-semibold text-
|
|
520
|
-
<
|
|
521
|
-
type="button"
|
|
522
|
-
className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 transition-colors"
|
|
523
|
-
onClick={() => {
|
|
524
|
-
setCreateName("");
|
|
525
|
-
setCreateAgents(new Set());
|
|
526
|
-
setCreateWorkspaces(new Set());
|
|
527
|
-
setCreateModal(true);
|
|
528
|
-
}}
|
|
529
|
-
>
|
|
530
|
-
<Plus size={13} />
|
|
531
|
-
Add project
|
|
532
|
-
</button>
|
|
491
|
+
<div className="mb-4">
|
|
492
|
+
<h2 className="text-lg font-semibold text-[var(--foreground)]">Project assignments</h2>
|
|
493
|
+
<p className="mt-1 text-sm text-[var(--app-shell-soft-text)]">Assign agents to existing projects.</p>
|
|
533
494
|
</div>
|
|
534
495
|
|
|
535
496
|
{nonDefaultProjects.length === 0 ? (
|
|
536
|
-
<p className="text-sm text-
|
|
497
|
+
<p className="text-sm text-[var(--app-shell-soft-text)]">No projects available for assignment.</p>
|
|
537
498
|
) : (
|
|
538
|
-
<div className="bg-
|
|
499
|
+
<div className="bg-[var(--card-bg)] rounded-xl border border-[var(--border)] divide-y divide-[var(--border)]">
|
|
539
500
|
{nonDefaultProjects.map((project) => {
|
|
540
501
|
const isExpanded = expandedProjects.has(project.id);
|
|
541
502
|
const threadNames = (project.thread_ids ?? [])
|
|
@@ -551,13 +512,13 @@ export default function AgentLibraryPage() {
|
|
|
551
512
|
onClick={() => toggleProject(project.id)}
|
|
552
513
|
>
|
|
553
514
|
{isExpanded ? (
|
|
554
|
-
<ChevronDown size={16} className="text-
|
|
515
|
+
<ChevronDown size={16} className="text-[var(--app-shell-soft-text)] flex-shrink-0" />
|
|
555
516
|
) : (
|
|
556
|
-
<ChevronRight size={16} className="text-
|
|
517
|
+
<ChevronRight size={16} className="text-[var(--app-shell-soft-text)] flex-shrink-0" />
|
|
557
518
|
)}
|
|
558
|
-
<Users size={16} className="text-
|
|
559
|
-
<span className="font-medium text-
|
|
560
|
-
<span className="text-xs text-
|
|
519
|
+
<Users size={16} className="text-[var(--app-shell-soft-text)] flex-shrink-0" />
|
|
520
|
+
<span className="font-medium text-[var(--foreground)] text-sm">{project.name}</span>
|
|
521
|
+
<span className="text-xs text-[var(--app-shell-soft-text)]">
|
|
561
522
|
{project.agents.length} {project.agents.length === 1 ? "agent" : "agents"}
|
|
562
523
|
{threadNames.length > 0 && ` · ${threadNames.length} ${threadNames.length === 1 ? "thread" : "threads"}`}
|
|
563
524
|
</span>
|
|
@@ -565,33 +526,15 @@ export default function AgentLibraryPage() {
|
|
|
565
526
|
<div className="flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity">
|
|
566
527
|
<button
|
|
567
528
|
type="button"
|
|
568
|
-
className="
|
|
569
|
-
title="Add
|
|
529
|
+
className="inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]"
|
|
530
|
+
title="Add agents"
|
|
570
531
|
onClick={() => {
|
|
571
532
|
setAddAgentSelection(new Set());
|
|
572
533
|
setAddAgentModal({ projectId: project.id });
|
|
573
534
|
}}
|
|
574
535
|
>
|
|
575
536
|
<Plus size={14} />
|
|
576
|
-
|
|
577
|
-
<button
|
|
578
|
-
type="button"
|
|
579
|
-
className="p-1.5 text-slate-400 hover:text-slate-600 rounded hover:bg-slate-50 transition-colors"
|
|
580
|
-
title="Rename project"
|
|
581
|
-
onClick={() => {
|
|
582
|
-
setRenameValue(project.name);
|
|
583
|
-
setRenameModal({ projectId: project.id, currentName: project.name });
|
|
584
|
-
}}
|
|
585
|
-
>
|
|
586
|
-
<Pencil size={13} />
|
|
587
|
-
</button>
|
|
588
|
-
<button
|
|
589
|
-
type="button"
|
|
590
|
-
className="p-1.5 text-slate-400 hover:text-red-500 rounded hover:bg-slate-50 transition-colors"
|
|
591
|
-
title="Delete project"
|
|
592
|
-
onClick={() => void deleteProject(project.id)}
|
|
593
|
-
>
|
|
594
|
-
<Trash2 size={13} />
|
|
537
|
+
Add agents
|
|
595
538
|
</button>
|
|
596
539
|
</div>
|
|
597
540
|
</div>
|
|
@@ -599,7 +542,7 @@ export default function AgentLibraryPage() {
|
|
|
599
542
|
{isExpanded && (
|
|
600
543
|
<div className="px-5 pb-4 pt-1 ml-9 flex flex-col gap-1">
|
|
601
544
|
{project.agents.length === 0 && (
|
|
602
|
-
<p className="text-xs text-
|
|
545
|
+
<p className="text-xs text-[var(--app-shell-soft-text)] py-1">No agents in this project.</p>
|
|
603
546
|
)}
|
|
604
547
|
{project.agents.map((ta) => {
|
|
605
548
|
const agent = participants.find((p) => p.id === ta.agent_id);
|
|
@@ -613,13 +556,13 @@ export default function AgentLibraryPage() {
|
|
|
613
556
|
alt=""
|
|
614
557
|
className="w-6 h-6 rounded-full flex-shrink-0"
|
|
615
558
|
/>
|
|
616
|
-
<span className="text-sm text-
|
|
559
|
+
<span className="text-sm text-[var(--secondary-foreground)] truncate flex-1">
|
|
617
560
|
{agent?.name ?? ta.agent_id}
|
|
618
561
|
</span>
|
|
619
|
-
<span className="text-[10px] text-
|
|
562
|
+
<span className="text-[10px] text-[var(--app-shell-soft-text)]">{agent?.model}</span>
|
|
620
563
|
<button
|
|
621
564
|
type="button"
|
|
622
|
-
className="opacity-0 group-hover/agent:opacity-100 text-
|
|
565
|
+
className="opacity-0 group-hover/agent:opacity-100 text-[var(--app-shell-soft-text)] hover:text-red-500 transition-opacity"
|
|
623
566
|
onClick={() => void removeAgentFromProject(project.id, ta.agent_id)}
|
|
624
567
|
title="Remove from project"
|
|
625
568
|
>
|
|
@@ -629,9 +572,21 @@ export default function AgentLibraryPage() {
|
|
|
629
572
|
);
|
|
630
573
|
})}
|
|
631
574
|
|
|
575
|
+
<button
|
|
576
|
+
type="button"
|
|
577
|
+
className="mt-2 inline-flex items-center gap-1.5 self-start rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]"
|
|
578
|
+
onClick={() => {
|
|
579
|
+
setAddAgentSelection(new Set());
|
|
580
|
+
setAddAgentModal({ projectId: project.id });
|
|
581
|
+
}}
|
|
582
|
+
>
|
|
583
|
+
<Plus size={12} />
|
|
584
|
+
Add agents
|
|
585
|
+
</button>
|
|
586
|
+
|
|
632
587
|
{threadNames.length > 0 && (
|
|
633
|
-
<div className="mt-2 pt-2 border-t border-
|
|
634
|
-
<p className="text-[10px] font-medium text-
|
|
588
|
+
<div className="mt-2 pt-2 border-t border-[var(--border)]">
|
|
589
|
+
<p className="text-[10px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-1">Threads</p>
|
|
635
590
|
<div className="flex flex-wrap gap-1.5">
|
|
636
591
|
{threadNames.map((name, i) => (
|
|
637
592
|
<span
|
|
@@ -662,12 +617,12 @@ export default function AgentLibraryPage() {
|
|
|
662
617
|
onClick={() => setOutboundModal(false)}
|
|
663
618
|
>
|
|
664
619
|
<div
|
|
665
|
-
className="bg-
|
|
620
|
+
className="bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col"
|
|
666
621
|
onClick={(e) => e.stopPropagation()}
|
|
667
622
|
>
|
|
668
|
-
<div className="flex items-center justify-between px-5 py-3.5 border-b border-
|
|
669
|
-
<h3 className="text-sm font-medium text-
|
|
670
|
-
<button type="button" className="text-
|
|
623
|
+
<div className="flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]">
|
|
624
|
+
<h3 className="text-sm font-medium text-[var(--foreground)]">Share Agents</h3>
|
|
625
|
+
<button type="button" className="text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]" onClick={() => setOutboundModal(false)}>
|
|
671
626
|
<X size={16} />
|
|
672
627
|
</button>
|
|
673
628
|
</div>
|
|
@@ -675,20 +630,20 @@ export default function AgentLibraryPage() {
|
|
|
675
630
|
{shareCode ? (
|
|
676
631
|
<div className="px-5 py-6 flex flex-col items-center gap-4">
|
|
677
632
|
<div className="text-center">
|
|
678
|
-
<p className="text-sm text-
|
|
633
|
+
<p className="text-sm text-[var(--muted-foreground)] mb-3">Share this code with the recipient:</p>
|
|
679
634
|
<div className="flex items-center justify-center gap-3">
|
|
680
|
-
<span className="text-3xl font-mono font-bold tracking-[0.3em] text-
|
|
681
|
-
<button type="button" className="p-2 text-
|
|
635
|
+
<span className="text-3xl font-mono font-bold tracking-[0.3em] text-[var(--foreground)]">{shareCode}</span>
|
|
636
|
+
<button type="button" className="p-2 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] transition-colors" onClick={copyCode}>
|
|
682
637
|
{codeCopied ? <Check size={18} className="text-green-500" /> : <Copy size={18} />}
|
|
683
638
|
</button>
|
|
684
639
|
</div>
|
|
685
640
|
</div>
|
|
686
641
|
{shareExpiresAt && (
|
|
687
|
-
<p className="text-[11px] text-
|
|
642
|
+
<p className="text-[11px] text-[var(--app-shell-soft-text)]">Expires {new Date(shareExpiresAt).toLocaleTimeString()}</p>
|
|
688
643
|
)}
|
|
689
644
|
<button
|
|
690
645
|
type="button"
|
|
691
|
-
className="px-4 py-2 text-xs font-medium text-
|
|
646
|
+
className="px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors"
|
|
692
647
|
onClick={() => setOutboundModal(false)}
|
|
693
648
|
>
|
|
694
649
|
Done
|
|
@@ -699,8 +654,8 @@ export default function AgentLibraryPage() {
|
|
|
699
654
|
<div className="overflow-y-auto flex-1">
|
|
700
655
|
{/* Projects as quick-select presets */}
|
|
701
656
|
{nonDefaultProjects.length > 0 && (
|
|
702
|
-
<div className="border-b border-
|
|
703
|
-
<p className="text-[11px] font-medium text-
|
|
657
|
+
<div className="border-b border-[var(--border)] px-5 py-3">
|
|
658
|
+
<p className="text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-2">Select by project</p>
|
|
704
659
|
<div className="flex flex-wrap gap-1.5">
|
|
705
660
|
{nonDefaultProjects.map((t) => {
|
|
706
661
|
const projectAgentIds = t.agents.map((a) => a.agent_id);
|
|
@@ -712,10 +667,10 @@ export default function AgentLibraryPage() {
|
|
|
712
667
|
type="button"
|
|
713
668
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-[11px] font-medium transition-colors ${
|
|
714
669
|
allSelected
|
|
715
|
-
? "bg-
|
|
670
|
+
? "bg-[var(--foreground)] text-white"
|
|
716
671
|
: someSelected
|
|
717
|
-
? "bg-
|
|
718
|
-
: "bg-
|
|
672
|
+
? "bg-[var(--app-shell-soft-text)] text-[var(--secondary-foreground)]"
|
|
673
|
+
: "bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"
|
|
719
674
|
}`}
|
|
720
675
|
onClick={() => {
|
|
721
676
|
setOutboundAgents((prev) => {
|
|
@@ -732,7 +687,7 @@ export default function AgentLibraryPage() {
|
|
|
732
687
|
>
|
|
733
688
|
<Users size={10} />
|
|
734
689
|
{t.name}
|
|
735
|
-
<span className={`text-[10px] ${allSelected ? "text-
|
|
690
|
+
<span className={`text-[10px] ${allSelected ? "text-[var(--app-shell-soft-text)]" : "text-[var(--app-shell-soft-text)]"}`}>
|
|
736
691
|
{t.agents.length}
|
|
737
692
|
</span>
|
|
738
693
|
</button>
|
|
@@ -743,12 +698,12 @@ export default function AgentLibraryPage() {
|
|
|
743
698
|
)}
|
|
744
699
|
|
|
745
700
|
{/* Agents selection */}
|
|
746
|
-
<div className="border-b border-
|
|
701
|
+
<div className="border-b border-[var(--border)]">
|
|
747
702
|
<div className="px-5 pt-3 pb-1 flex items-center justify-between">
|
|
748
|
-
<p className="text-[11px] font-medium text-
|
|
703
|
+
<p className="text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide">Agents</p>
|
|
749
704
|
<button
|
|
750
705
|
type="button"
|
|
751
|
-
className="text-[11px] text-
|
|
706
|
+
className="text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]"
|
|
752
707
|
onClick={() => {
|
|
753
708
|
if (outboundAgents.size === participants.length) setOutboundAgents(new Set());
|
|
754
709
|
else setOutboundAgents(new Set(participants.map((p) => p.id)));
|
|
@@ -763,7 +718,7 @@ export default function AgentLibraryPage() {
|
|
|
763
718
|
<button
|
|
764
719
|
key={p.id}
|
|
765
720
|
type="button"
|
|
766
|
-
className={`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${selected ? "bg-
|
|
721
|
+
className={`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${selected ? "bg-[var(--secondary)] text-[var(--foreground)]" : "text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`}
|
|
767
722
|
onClick={() => {
|
|
768
723
|
setOutboundAgents((prev) => {
|
|
769
724
|
const next = new Set(prev);
|
|
@@ -776,7 +731,7 @@ export default function AgentLibraryPage() {
|
|
|
776
731
|
<Checkbox checked={selected} />
|
|
777
732
|
<img src={agentAvatarUrl(p.id, 24, p.color)} alt="" className="w-6 h-6 rounded-full flex-shrink-0" />
|
|
778
733
|
<span className="truncate text-xs font-medium flex-1">{p.name}</span>
|
|
779
|
-
<span className="text-[10px] text-
|
|
734
|
+
<span className="text-[10px] text-[var(--app-shell-soft-text)]">{p.provider}</span>
|
|
780
735
|
</button>
|
|
781
736
|
);
|
|
782
737
|
})}
|
|
@@ -786,7 +741,7 @@ export default function AgentLibraryPage() {
|
|
|
786
741
|
<div className="px-5 py-3">
|
|
787
742
|
<button
|
|
788
743
|
type="button"
|
|
789
|
-
className={`flex items-center gap-3 w-full px-3 py-2 rounded-lg text-sm transition-colors ${outboundIncludeSelf ? "bg-
|
|
744
|
+
className={`flex items-center gap-3 w-full px-3 py-2 rounded-lg text-sm transition-colors ${outboundIncludeSelf ? "bg-[var(--secondary)] text-[var(--foreground)]" : "text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`}
|
|
790
745
|
onClick={() => setOutboundIncludeSelf(!outboundIncludeSelf)}
|
|
791
746
|
>
|
|
792
747
|
<Checkbox checked={outboundIncludeSelf} />
|
|
@@ -795,15 +750,15 @@ export default function AgentLibraryPage() {
|
|
|
795
750
|
</div>
|
|
796
751
|
</div>
|
|
797
752
|
|
|
798
|
-
<div className="px-5 py-3 border-t border-
|
|
799
|
-
<span className="text-[11px] text-
|
|
753
|
+
<div className="px-5 py-3 border-t border-[var(--border)] flex items-center justify-between">
|
|
754
|
+
<span className="text-[11px] text-[var(--app-shell-soft-text)]">
|
|
800
755
|
{outboundAgents.size} {outboundAgents.size === 1 ? "agent" : "agents"}
|
|
801
756
|
</span>
|
|
802
757
|
<div className="flex gap-2">
|
|
803
758
|
<button
|
|
804
759
|
type="button"
|
|
805
760
|
disabled={outboundAgents.size === 0 || outboundBusy}
|
|
806
|
-
className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-
|
|
761
|
+
className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--card-bg)] border border-[var(--border)] rounded-lg hover:bg-[var(--item-hover-bg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
|
807
762
|
onClick={() => void handleExportToFile()}
|
|
808
763
|
>
|
|
809
764
|
<Download size={12} />
|
|
@@ -820,7 +775,7 @@ export default function AgentLibraryPage() {
|
|
|
820
775
|
</button>
|
|
821
776
|
<button
|
|
822
777
|
type="button"
|
|
823
|
-
className="px-3 py-1.5 text-xs text-
|
|
778
|
+
className="px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors"
|
|
824
779
|
onClick={() => setOutboundModal(false)}
|
|
825
780
|
>
|
|
826
781
|
Cancel
|
|
@@ -833,115 +788,6 @@ export default function AgentLibraryPage() {
|
|
|
833
788
|
</div>
|
|
834
789
|
)}
|
|
835
790
|
|
|
836
|
-
{/* ── Create Project Modal ──────────────────────────────────────────── */}
|
|
837
|
-
{createModal && (
|
|
838
|
-
<div
|
|
839
|
-
className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
|
|
840
|
-
onClick={() => setCreateModal(false)}
|
|
841
|
-
>
|
|
842
|
-
<div
|
|
843
|
-
className="bg-white rounded-xl shadow-xl border border-slate-200 w-[420px] max-h-[80vh] flex flex-col"
|
|
844
|
-
onClick={(e) => e.stopPropagation()}
|
|
845
|
-
>
|
|
846
|
-
<div className="flex items-center justify-between px-5 py-3.5 border-b border-slate-100">
|
|
847
|
-
<h3 className="text-sm font-medium text-slate-900">Create project</h3>
|
|
848
|
-
<button type="button" className="text-slate-400 hover:text-slate-600" onClick={() => setCreateModal(false)}>
|
|
849
|
-
<X size={16} />
|
|
850
|
-
</button>
|
|
851
|
-
</div>
|
|
852
|
-
|
|
853
|
-
<div className="overflow-y-auto flex-1">
|
|
854
|
-
<div className="px-5 py-3 border-b border-slate-100">
|
|
855
|
-
<label className="text-[11px] font-medium text-slate-400 uppercase tracking-wide block mb-1.5">Name</label>
|
|
856
|
-
<input
|
|
857
|
-
autoFocus
|
|
858
|
-
type="text"
|
|
859
|
-
value={createName}
|
|
860
|
-
onChange={(e) => setCreateName(e.target.value)}
|
|
861
|
-
placeholder="e.g. Frontend Crew"
|
|
862
|
-
className="w-full px-3 py-2 text-sm border border-slate-200 rounded-lg outline-none focus:border-slate-400 focus:ring-1 focus:ring-slate-200 transition-all"
|
|
863
|
-
/>
|
|
864
|
-
</div>
|
|
865
|
-
|
|
866
|
-
<div className="px-5 py-3 border-b border-slate-100">
|
|
867
|
-
<label className="text-[11px] font-medium text-slate-400 uppercase tracking-wide block mb-1.5">Threads</label>
|
|
868
|
-
{threads.length === 0 ? (
|
|
869
|
-
<p className="text-xs text-slate-400">No threads available.</p>
|
|
870
|
-
) : (
|
|
871
|
-
<div className="flex flex-col gap-0.5">
|
|
872
|
-
{threads.map((ws) => {
|
|
873
|
-
const selected = createWorkspaces.has(ws.id);
|
|
874
|
-
const title = ws.title?.trim() || "Untitled";
|
|
875
|
-
return (
|
|
876
|
-
<button
|
|
877
|
-
key={ws.id}
|
|
878
|
-
type="button"
|
|
879
|
-
className={`flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm transition-colors ${selected ? "bg-indigo-50 text-indigo-700" : "text-slate-600 hover:bg-slate-50"}`}
|
|
880
|
-
onClick={() => {
|
|
881
|
-
setCreateWorkspaces((prev) => {
|
|
882
|
-
const next = new Set(prev);
|
|
883
|
-
if (next.has(ws.id)) next.delete(ws.id);
|
|
884
|
-
else next.add(ws.id);
|
|
885
|
-
return next;
|
|
886
|
-
});
|
|
887
|
-
}}
|
|
888
|
-
>
|
|
889
|
-
<div className={`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${selected ? "bg-indigo-600 border-indigo-600" : "border-slate-300"}`}>
|
|
890
|
-
{selected && (
|
|
891
|
-
<svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 5l2 2 4-4" stroke="white" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/></svg>
|
|
892
|
-
)}
|
|
893
|
-
</div>
|
|
894
|
-
<Hash size={13} className="flex-shrink-0 text-slate-400" />
|
|
895
|
-
<span className="truncate text-xs font-medium">{title}</span>
|
|
896
|
-
</button>
|
|
897
|
-
);
|
|
898
|
-
})}
|
|
899
|
-
</div>
|
|
900
|
-
)}
|
|
901
|
-
</div>
|
|
902
|
-
|
|
903
|
-
<div className="py-1">
|
|
904
|
-
<p className="px-5 py-1.5 text-[11px] font-medium text-slate-400 uppercase tracking-wide">Agents</p>
|
|
905
|
-
{participants.map((p) => {
|
|
906
|
-
const selected = createAgents.has(p.id);
|
|
907
|
-
return (
|
|
908
|
-
<button
|
|
909
|
-
key={p.id}
|
|
910
|
-
type="button"
|
|
911
|
-
className={`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${selected ? "bg-slate-100 text-slate-900" : "text-slate-700 hover:bg-slate-50"}`}
|
|
912
|
-
onClick={() => {
|
|
913
|
-
setCreateAgents((prev) => {
|
|
914
|
-
const next = new Set(prev);
|
|
915
|
-
if (next.has(p.id)) next.delete(p.id);
|
|
916
|
-
else next.add(p.id);
|
|
917
|
-
return next;
|
|
918
|
-
});
|
|
919
|
-
}}
|
|
920
|
-
>
|
|
921
|
-
<Checkbox checked={selected} />
|
|
922
|
-
<img src={agentAvatarUrl(p.id, 24, p.color)} alt="" className="w-6 h-6 rounded-full flex-shrink-0" />
|
|
923
|
-
<span className="truncate text-xs font-medium">{p.name}</span>
|
|
924
|
-
</button>
|
|
925
|
-
);
|
|
926
|
-
})}
|
|
927
|
-
</div>
|
|
928
|
-
</div>
|
|
929
|
-
|
|
930
|
-
<div className="px-5 py-3 border-t border-slate-100 flex justify-end gap-2">
|
|
931
|
-
<button type="button" className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors" onClick={() => setCreateModal(false)}>Cancel</button>
|
|
932
|
-
<button
|
|
933
|
-
type="button"
|
|
934
|
-
disabled={!createName.trim()}
|
|
935
|
-
className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
|
936
|
-
onClick={() => void handleCreateSubmit()}
|
|
937
|
-
>
|
|
938
|
-
Create
|
|
939
|
-
</button>
|
|
940
|
-
</div>
|
|
941
|
-
</div>
|
|
942
|
-
</div>
|
|
943
|
-
)}
|
|
944
|
-
|
|
945
791
|
{/* ── Add Agent to Project Modal ────────────────────────────────────── */}
|
|
946
792
|
{addAgentModal && !creatingNewAgent && (
|
|
947
793
|
<div
|
|
@@ -949,24 +795,24 @@ export default function AgentLibraryPage() {
|
|
|
949
795
|
onClick={() => setAddAgentModal(null)}
|
|
950
796
|
>
|
|
951
797
|
<div
|
|
952
|
-
className="bg-
|
|
798
|
+
className="bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col"
|
|
953
799
|
onClick={(e) => e.stopPropagation()}
|
|
954
800
|
>
|
|
955
|
-
<div className="flex items-center justify-between px-4 py-3 border-b border-
|
|
956
|
-
<h3 className="text-sm font-medium text-
|
|
957
|
-
<button type="button" className="text-
|
|
801
|
+
<div className="flex items-center justify-between px-4 py-3 border-b border-[var(--border)]">
|
|
802
|
+
<h3 className="text-sm font-medium text-[var(--foreground)]">Add to {addAgentModalProject?.name ?? "project"}</h3>
|
|
803
|
+
<button type="button" className="text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]" onClick={() => setAddAgentModal(null)}><X size={16} /></button>
|
|
958
804
|
</div>
|
|
959
805
|
<div className="overflow-y-auto py-1 flex-1">
|
|
960
806
|
<button
|
|
961
807
|
type="button"
|
|
962
|
-
className="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-
|
|
808
|
+
className="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)] transition-colors border-b border-[var(--border)]"
|
|
963
809
|
onClick={() => setCreatingNewAgent(true)}
|
|
964
810
|
>
|
|
965
|
-
<Plus size={14} className="text-
|
|
811
|
+
<Plus size={14} className="text-[var(--app-shell-soft-text)]" />
|
|
966
812
|
<span className="text-xs font-medium">Create new agent</span>
|
|
967
813
|
</button>
|
|
968
814
|
{addAgentModalAvailable.length === 0 ? (
|
|
969
|
-
<p className="px-4 py-6 text-xs text-
|
|
815
|
+
<p className="px-4 py-6 text-xs text-[var(--app-shell-soft-text)] text-center">All agents are already in this project</p>
|
|
970
816
|
) : (
|
|
971
817
|
addAgentModalAvailable.map((p) => {
|
|
972
818
|
const selected = addAgentSelection.has(p.id);
|
|
@@ -974,7 +820,7 @@ export default function AgentLibraryPage() {
|
|
|
974
820
|
<button
|
|
975
821
|
key={p.id}
|
|
976
822
|
type="button"
|
|
977
|
-
className={`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${selected ? "bg-
|
|
823
|
+
className={`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${selected ? "bg-[var(--secondary)] text-[var(--foreground)]" : "text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)]"}`}
|
|
978
824
|
onClick={() => {
|
|
979
825
|
setAddAgentSelection((prev) => {
|
|
980
826
|
const next = new Set(prev);
|
|
@@ -995,12 +841,12 @@ export default function AgentLibraryPage() {
|
|
|
995
841
|
)}
|
|
996
842
|
</div>
|
|
997
843
|
{addAgentModalAvailable.length > 0 && (
|
|
998
|
-
<div className="px-4 py-3 border-t border-
|
|
999
|
-
<button type="button" className="px-3 py-1.5 text-xs text-
|
|
844
|
+
<div className="px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2">
|
|
845
|
+
<button type="button" className="px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors" onClick={() => setAddAgentModal(null)}>Cancel</button>
|
|
1000
846
|
<button
|
|
1001
847
|
type="button"
|
|
1002
848
|
disabled={addAgentSelection.size === 0}
|
|
1003
|
-
className="px-3 py-1.5 text-xs font-medium text-white bg-
|
|
849
|
+
className="px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
|
1004
850
|
onClick={() => {
|
|
1005
851
|
for (const agentId of addAgentSelection) {
|
|
1006
852
|
void addAgentToProject(addAgentModal.projectId, agentId);
|
|
@@ -1105,47 +951,6 @@ export default function AgentLibraryPage() {
|
|
|
1105
951
|
/>
|
|
1106
952
|
)}
|
|
1107
953
|
|
|
1108
|
-
{/* ── Rename Project Modal ──────────────────────────────────────────── */}
|
|
1109
|
-
{renameModal && (
|
|
1110
|
-
<div
|
|
1111
|
-
className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
|
|
1112
|
-
onClick={() => setRenameModal(null)}
|
|
1113
|
-
>
|
|
1114
|
-
<div
|
|
1115
|
-
className="bg-white rounded-xl shadow-xl border border-slate-200 w-80 flex flex-col"
|
|
1116
|
-
onClick={(e) => e.stopPropagation()}
|
|
1117
|
-
>
|
|
1118
|
-
<div className="flex items-center justify-between px-4 py-3 border-b border-slate-100">
|
|
1119
|
-
<h3 className="text-sm font-medium text-slate-900">Rename project</h3>
|
|
1120
|
-
<button type="button" className="text-slate-400 hover:text-slate-600" onClick={() => setRenameModal(null)}><X size={16} /></button>
|
|
1121
|
-
</div>
|
|
1122
|
-
<form
|
|
1123
|
-
className="px-4 py-4 flex flex-col gap-3"
|
|
1124
|
-
onSubmit={(e) => { e.preventDefault(); void handleRenameSubmit(); }}
|
|
1125
|
-
>
|
|
1126
|
-
<input
|
|
1127
|
-
autoFocus
|
|
1128
|
-
type="text"
|
|
1129
|
-
value={renameValue}
|
|
1130
|
-
onChange={(e) => setRenameValue(e.target.value)}
|
|
1131
|
-
placeholder="Project name"
|
|
1132
|
-
className="w-full px-3 py-2 text-sm border border-slate-200 rounded-lg outline-none focus:border-slate-400 focus:ring-1 focus:ring-slate-200 transition-all"
|
|
1133
|
-
/>
|
|
1134
|
-
<div className="flex justify-end gap-2">
|
|
1135
|
-
<button type="button" className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors" onClick={() => setRenameModal(null)}>Cancel</button>
|
|
1136
|
-
<button
|
|
1137
|
-
type="submit"
|
|
1138
|
-
disabled={!renameValue.trim() || renameValue.trim() === renameModal.currentName}
|
|
1139
|
-
className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
|
1140
|
-
>
|
|
1141
|
-
Save
|
|
1142
|
-
</button>
|
|
1143
|
-
</div>
|
|
1144
|
-
</form>
|
|
1145
|
-
</div>
|
|
1146
|
-
</div>
|
|
1147
|
-
)}
|
|
1148
|
-
|
|
1149
954
|
{/* ── Inbound Modal (Import: Pull from Hub / Upload File) ────────── */}
|
|
1150
955
|
{inboundModal && (
|
|
1151
956
|
<div
|
|
@@ -1153,12 +958,12 @@ export default function AgentLibraryPage() {
|
|
|
1153
958
|
onClick={() => setInboundModal(false)}
|
|
1154
959
|
>
|
|
1155
960
|
<div
|
|
1156
|
-
className="bg-
|
|
961
|
+
className="bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col"
|
|
1157
962
|
onClick={(e) => e.stopPropagation()}
|
|
1158
963
|
>
|
|
1159
|
-
<div className="flex items-center justify-between px-5 py-3.5 border-b border-
|
|
1160
|
-
<h3 className="text-sm font-medium text-
|
|
1161
|
-
<button type="button" className="text-
|
|
964
|
+
<div className="flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]">
|
|
965
|
+
<h3 className="text-sm font-medium text-[var(--foreground)]">Import Agents</h3>
|
|
966
|
+
<button type="button" className="text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]" onClick={() => setInboundModal(false)}>
|
|
1162
967
|
<X size={16} />
|
|
1163
968
|
</button>
|
|
1164
969
|
</div>
|
|
@@ -1168,31 +973,31 @@ export default function AgentLibraryPage() {
|
|
|
1168
973
|
<div className="px-5 py-6 flex flex-col gap-3">
|
|
1169
974
|
<button
|
|
1170
975
|
type="button"
|
|
1171
|
-
className="flex items-center gap-3 px-4 py-3.5 rounded-lg border border-
|
|
976
|
+
className="flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-violet-300 hover:bg-violet-50 transition-colors text-left"
|
|
1172
977
|
onClick={() => setInboundMode("pull")}
|
|
1173
978
|
>
|
|
1174
979
|
<div className="w-9 h-9 rounded-lg bg-violet-100 flex items-center justify-center flex-shrink-0">
|
|
1175
980
|
<Download size={16} className="text-violet-600" />
|
|
1176
981
|
</div>
|
|
1177
982
|
<div>
|
|
1178
|
-
<p className="text-sm font-medium text-
|
|
1179
|
-
<p className="text-[11px] text-
|
|
983
|
+
<p className="text-sm font-medium text-[var(--foreground)]">Pull from Hub</p>
|
|
984
|
+
<p className="text-[11px] text-[var(--app-shell-soft-text)]">Enter a share code to import agents</p>
|
|
1180
985
|
</div>
|
|
1181
986
|
</button>
|
|
1182
987
|
<button
|
|
1183
988
|
type="button"
|
|
1184
|
-
className="flex items-center gap-3 px-4 py-3.5 rounded-lg border border-
|
|
989
|
+
className="flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-[var(--border)] hover:bg-[var(--item-hover-bg)] transition-colors text-left"
|
|
1185
990
|
onClick={() => {
|
|
1186
991
|
setInboundMode("file");
|
|
1187
992
|
setTimeout(() => fileInputRef.current?.click(), 100);
|
|
1188
993
|
}}
|
|
1189
994
|
>
|
|
1190
|
-
<div className="w-9 h-9 rounded-lg bg-
|
|
1191
|
-
<Upload size={16} className="text-
|
|
995
|
+
<div className="w-9 h-9 rounded-lg bg-[var(--secondary)] flex items-center justify-center flex-shrink-0">
|
|
996
|
+
<Upload size={16} className="text-[var(--muted-foreground)]" />
|
|
1192
997
|
</div>
|
|
1193
998
|
<div>
|
|
1194
|
-
<p className="text-sm font-medium text-
|
|
1195
|
-
<p className="text-[11px] text-
|
|
999
|
+
<p className="text-sm font-medium text-[var(--foreground)]">Upload File</p>
|
|
1000
|
+
<p className="text-[11px] text-[var(--app-shell-soft-text)]">Import from a .agent.json bundle</p>
|
|
1196
1001
|
</div>
|
|
1197
1002
|
</button>
|
|
1198
1003
|
</div>
|
|
@@ -1201,7 +1006,7 @@ export default function AgentLibraryPage() {
|
|
|
1201
1006
|
{inboundMode === "pull" && !inboundBundle && (
|
|
1202
1007
|
/* ── Enter code ── */
|
|
1203
1008
|
<div className="px-5 py-5 flex flex-col gap-3">
|
|
1204
|
-
<label className="text-sm text-
|
|
1009
|
+
<label className="text-sm text-[var(--muted-foreground)]">Enter share code:</label>
|
|
1205
1010
|
<input
|
|
1206
1011
|
autoFocus
|
|
1207
1012
|
type="text"
|
|
@@ -1209,14 +1014,14 @@ export default function AgentLibraryPage() {
|
|
|
1209
1014
|
onChange={(e) => setPullCode(e.target.value.toUpperCase())}
|
|
1210
1015
|
placeholder="e.g. A3X9K2"
|
|
1211
1016
|
maxLength={6}
|
|
1212
|
-
className="w-full px-3 py-2.5 text-center text-2xl font-mono font-bold tracking-[0.3em] border border-
|
|
1017
|
+
className="w-full px-3 py-2.5 text-center text-2xl font-mono font-bold tracking-[0.3em] border border-[var(--border)] rounded-lg outline-none focus:border-violet-400 focus:ring-1 focus:ring-violet-200 transition-all bg-[var(--card-bg)] text-[var(--foreground)]"
|
|
1213
1018
|
onKeyDown={(e) => { if (e.key === "Enter") void handlePullFetch(); }}
|
|
1214
1019
|
/>
|
|
1215
1020
|
{inboundError && (
|
|
1216
1021
|
<p className="text-xs text-red-500">{inboundError}</p>
|
|
1217
1022
|
)}
|
|
1218
1023
|
<div className="flex justify-end gap-2 mt-1">
|
|
1219
|
-
<button type="button" className="px-3 py-1.5 text-xs text-
|
|
1024
|
+
<button type="button" className="px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors" onClick={() => { setInboundMode("choice"); setInboundError(null); }}>
|
|
1220
1025
|
Back
|
|
1221
1026
|
</button>
|
|
1222
1027
|
<button
|
|
@@ -1234,10 +1039,10 @@ export default function AgentLibraryPage() {
|
|
|
1234
1039
|
{inboundMode === "file" && !inboundBundle && (
|
|
1235
1040
|
/* ── Waiting for file ── */
|
|
1236
1041
|
<div className="px-5 py-6 flex flex-col items-center gap-3">
|
|
1237
|
-
<p className="text-sm text-
|
|
1042
|
+
<p className="text-sm text-[var(--muted-foreground)]">Select a .agent.json file to import</p>
|
|
1238
1043
|
<button
|
|
1239
1044
|
type="button"
|
|
1240
|
-
className="inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium text-
|
|
1045
|
+
className="inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors"
|
|
1241
1046
|
onClick={() => fileInputRef.current?.click()}
|
|
1242
1047
|
>
|
|
1243
1048
|
<Upload size={13} />
|
|
@@ -1246,7 +1051,7 @@ export default function AgentLibraryPage() {
|
|
|
1246
1051
|
{inboundError && (
|
|
1247
1052
|
<p className="text-xs text-red-500">{inboundError}</p>
|
|
1248
1053
|
)}
|
|
1249
|
-
<button type="button" className="text-xs text-
|
|
1054
|
+
<button type="button" className="text-xs text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] mt-1" onClick={() => { setInboundMode("choice"); setInboundError(null); }}>
|
|
1250
1055
|
Back
|
|
1251
1056
|
</button>
|
|
1252
1057
|
</div>
|
|
@@ -1258,22 +1063,22 @@ export default function AgentLibraryPage() {
|
|
|
1258
1063
|
<div className="overflow-y-auto flex-1">
|
|
1259
1064
|
{/* Bundle info */}
|
|
1260
1065
|
{inboundBundle.exportedAt && (
|
|
1261
|
-
<div className="px-5 py-3 border-b border-
|
|
1262
|
-
<p className="text-[11px] text-
|
|
1066
|
+
<div className="px-5 py-3 border-b border-[var(--border)] bg-[var(--secondary)]">
|
|
1067
|
+
<p className="text-[11px] text-[var(--app-shell-soft-text)]">
|
|
1263
1068
|
Exported {new Date(inboundBundle.exportedAt).toLocaleDateString()} · {inboundBundle.agents.length} agents{getBundleProjects(inboundBundle).length > 0 ? `, ${getBundleProjects(inboundBundle).length} projects` : ""}
|
|
1264
1069
|
</p>
|
|
1265
1070
|
</div>
|
|
1266
1071
|
)}
|
|
1267
1072
|
|
|
1268
1073
|
{/* Agents */}
|
|
1269
|
-
<div className="border-b border-
|
|
1074
|
+
<div className="border-b border-[var(--border)]">
|
|
1270
1075
|
<div className="px-5 pt-3 pb-1 flex items-center justify-between">
|
|
1271
|
-
<p className="text-[11px] font-medium text-
|
|
1076
|
+
<p className="text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide">
|
|
1272
1077
|
{inboundBundle.agents.length} agent{inboundBundle.agents.length === 1 ? "" : "s"} found
|
|
1273
1078
|
</p>
|
|
1274
1079
|
<button
|
|
1275
1080
|
type="button"
|
|
1276
|
-
className="text-[11px] text-
|
|
1081
|
+
className="text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]"
|
|
1277
1082
|
onClick={() => {
|
|
1278
1083
|
if (inboundAgents.size === inboundBundle.agents.length) setInboundAgents(new Set());
|
|
1279
1084
|
else setInboundAgents(new Set(inboundBundle.agents.map((a) => a.id)));
|
|
@@ -1289,7 +1094,7 @@ export default function AgentLibraryPage() {
|
|
|
1289
1094
|
<button
|
|
1290
1095
|
key={a.id}
|
|
1291
1096
|
type="button"
|
|
1292
|
-
className={`w-full flex items-center gap-3 px-5 py-2.5 text-sm transition-colors ${selected ? "bg-
|
|
1097
|
+
className={`w-full flex items-center gap-3 px-5 py-2.5 text-sm transition-colors ${selected ? "bg-[var(--secondary)] text-[var(--foreground)]" : "text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`}
|
|
1293
1098
|
onClick={() => {
|
|
1294
1099
|
setInboundAgents((prev) => {
|
|
1295
1100
|
const next = new Set(prev);
|
|
@@ -1303,7 +1108,7 @@ export default function AgentLibraryPage() {
|
|
|
1303
1108
|
<img src={agentAvatarUrl(a.id, 24, a.color)} alt="" className="w-6 h-6 rounded-full flex-shrink-0" />
|
|
1304
1109
|
<div className="min-w-0 flex-1 text-left">
|
|
1305
1110
|
<div className="truncate text-xs font-medium">{a.name}</div>
|
|
1306
|
-
<div className="truncate text-[10px] text-
|
|
1111
|
+
<div className="truncate text-[10px] text-[var(--app-shell-soft-text)]">{a.provider}{a.model ? ` · ${a.model}` : ""}</div>
|
|
1307
1112
|
</div>
|
|
1308
1113
|
{existing && (
|
|
1309
1114
|
<span className="text-[10px] px-1.5 py-0.5 rounded bg-amber-50 text-amber-600 flex-shrink-0">
|
|
@@ -1316,7 +1121,7 @@ export default function AgentLibraryPage() {
|
|
|
1316
1121
|
</span>
|
|
1317
1122
|
)}
|
|
1318
1123
|
{a.self && (
|
|
1319
|
-
<span className="text-[10px] text-
|
|
1124
|
+
<span className="text-[10px] text-[var(--muted-foreground)] flex-shrink-0">+ self.md</span>
|
|
1320
1125
|
)}
|
|
1321
1126
|
</button>
|
|
1322
1127
|
);
|
|
@@ -1327,7 +1132,7 @@ export default function AgentLibraryPage() {
|
|
|
1327
1132
|
{getBundleProjects(inboundBundle).length > 0 && (
|
|
1328
1133
|
<div>
|
|
1329
1134
|
<div className="px-5 pt-3 pb-1">
|
|
1330
|
-
<p className="text-[11px] font-medium text-
|
|
1135
|
+
<p className="text-[11px] font-medium text-[var(--muted-foreground)] uppercase tracking-wide">Projects</p>
|
|
1331
1136
|
</div>
|
|
1332
1137
|
{getBundleProjects(inboundBundle).map((project) => {
|
|
1333
1138
|
const selected = inboundProjects.has(project.name);
|
|
@@ -1335,7 +1140,7 @@ export default function AgentLibraryPage() {
|
|
|
1335
1140
|
<button
|
|
1336
1141
|
key={project.name}
|
|
1337
1142
|
type="button"
|
|
1338
|
-
className={`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${selected ? "bg-
|
|
1143
|
+
className={`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${selected ? "bg-[var(--app-shell-subtle)] text-[var(--foreground)]" : "text-[var(--muted-foreground)] hover:bg-[var(--app-shell-subtle)]"}`}
|
|
1339
1144
|
onClick={() => {
|
|
1340
1145
|
setInboundProjects((prev) => {
|
|
1341
1146
|
const next = new Set(prev);
|
|
@@ -1346,9 +1151,9 @@ export default function AgentLibraryPage() {
|
|
|
1346
1151
|
}}
|
|
1347
1152
|
>
|
|
1348
1153
|
<Checkbox checked={selected} />
|
|
1349
|
-
<Users size={14} className="text-
|
|
1154
|
+
<Users size={14} className="text-[var(--muted-foreground)] flex-shrink-0" />
|
|
1350
1155
|
<span className="truncate text-xs font-medium flex-1">{project.name}</span>
|
|
1351
|
-
<span className="text-[10px] text-
|
|
1156
|
+
<span className="text-[10px] text-[var(--muted-foreground)]">{project.agentIds.length} agents</span>
|
|
1352
1157
|
</button>
|
|
1353
1158
|
);
|
|
1354
1159
|
})}
|
|
@@ -1362,14 +1167,14 @@ export default function AgentLibraryPage() {
|
|
|
1362
1167
|
</div>
|
|
1363
1168
|
)}
|
|
1364
1169
|
|
|
1365
|
-
<div className="px-5 py-3 border-t border-
|
|
1366
|
-
<span className="text-[11px] text-
|
|
1170
|
+
<div className="px-5 py-3 border-t border-[var(--border)] flex items-center justify-between">
|
|
1171
|
+
<span className="text-[11px] text-[var(--muted-foreground)]">
|
|
1367
1172
|
{inboundAgents.size} {inboundAgents.size === 1 ? "agent" : "agents"}{inboundProjects.size > 0 ? `, ${inboundProjects.size} ${inboundProjects.size === 1 ? "project" : "projects"}` : ""}
|
|
1368
1173
|
</span>
|
|
1369
1174
|
<div className="flex gap-2">
|
|
1370
1175
|
<button
|
|
1371
1176
|
type="button"
|
|
1372
|
-
className="px-3 py-1.5 text-xs text-
|
|
1177
|
+
className="px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors"
|
|
1373
1178
|
onClick={() => { setInboundBundle(null); setInboundAgents(new Set()); setInboundProjects(new Set()); }}
|
|
1374
1179
|
>
|
|
1375
1180
|
Back
|