@sleep2agi/agent-network-dashboard 0.6.3-preview.0 → 0.6.3-preview.2
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/.next/BUILD_COMMIT +1 -0
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +3 -0
- package/.next/build/chunks/{0eys_0hzxj57._.js → 0emd_0_wlp72._.js} +167 -167
- package/.next/build/chunks/0emd_0_wlp72._.js.map +47 -0
- package/.next/build/chunks/{[root-of-the-server]__0jzknqm._.js → [root-of-the-server]__0cyvgtf._.js} +7 -7
- package/.next/build/chunks/{[root-of-the-server]__0jzknqm._.js.map → [root-of-the-server]__0cyvgtf._.js.map} +2 -2
- package/.next/build/chunks/{[root-of-the-server]__02~~60i._.js → [root-of-the-server]__0z.4hvh._.js} +3 -3
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0ji7sn2._.js +13 -0
- package/.next/build/postcss.js +4 -4
- package/.next/build-manifest.json +8 -8
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +168 -168
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +2 -2
- package/.next/required-server-files.json +2 -2
- package/.next/routes-manifest.json +18 -0
- package/.next/server/app/_global-error/page/build-manifest.json +5 -5
- package/.next/server/app/_global-error/page.js +9 -9
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +8 -8
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
- package/.next/server/app/_global-error.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +5 -5
- package/.next/server/app/_not-found/page/next-font-manifest.json +1 -1
- package/.next/server/app/_not-found/page.js +12 -12
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +13 -13
- package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin/page/build-manifest.json +5 -5
- package/.next/server/app/admin/page/next-font-manifest.json +1 -1
- package/.next/server/app/admin/page.js +13 -13
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +15 -15
- package/.next/server/app/admin.segments/_full.segment.rsc +15 -15
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +8 -8
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
- package/.next/server/app/api/anet/config/route.js +6 -6
- package/.next/server/app/api/anet/config/route.js.nft.json +1 -1
- package/.next/server/app/api/anet/node-config/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/anet/node-config/route/build-manifest.json +9 -0
- package/.next/server/app/api/anet/node-config/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/anet/node-config/route.js +7 -0
- package/.next/server/app/api/anet/node-config/route.js.map +5 -0
- package/.next/server/app/api/anet/node-config/route.js.nft.json +1 -0
- package/.next/server/app/api/anet/node-config/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/anet/node-create/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/anet/node-create/route/build-manifest.json +9 -0
- package/.next/server/app/api/anet/node-create/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/anet/node-create/route.js +7 -0
- package/.next/server/app/api/anet/node-create/route.js.map +5 -0
- package/.next/server/app/api/anet/node-create/route.js.nft.json +1 -0
- package/.next/server/app/api/anet/node-create/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/anet/node-lifecycle/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/anet/node-lifecycle/route/build-manifest.json +9 -0
- package/.next/server/app/api/anet/node-lifecycle/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/anet/node-lifecycle/route.js +7 -0
- package/.next/server/app/api/anet/node-lifecycle/route.js.map +5 -0
- package/.next/server/app/api/anet/node-lifecycle/route.js.nft.json +1 -0
- package/.next/server/app/api/anet/node-lifecycle/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/auth/login/route.js +7 -7
- package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/logout/route.js +7 -7
- package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/v3/route.js +7 -7
- package/.next/server/app/api/auth/v3/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/audit-log/route.js +6 -6
- package/.next/server/app/api/hub/audit-log/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/auth/route.js +7 -7
- package/.next/server/app/api/hub/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/broadcast/route.js +6 -6
- package/.next/server/app/api/hub/broadcast/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/events/route.js +6 -6
- package/.next/server/app/api/hub/events/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/health/route.js +6 -6
- package/.next/server/app/api/hub/health/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/inbox/route.js +6 -6
- package/.next/server/app/api/hub/inbox/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/messages/route.js +6 -6
- package/.next/server/app/api/hub/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/networks/route.js +6 -6
- package/.next/server/app/api/hub/networks/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/nodes/route.js +6 -6
- package/.next/server/app/api/hub/nodes/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/register/route.js +6 -6
- package/.next/server/app/api/hub/register/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/send/route.js +6 -6
- package/.next/server/app/api/hub/send/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/server/[hostname]/agents/route.js +6 -6
- package/.next/server/app/api/hub/server/[hostname]/agents/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/server/[hostname]/health/route.js +6 -6
- package/.next/server/app/api/hub/server/[hostname]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/server-logs/route.js +6 -6
- package/.next/server/app/api/hub/server-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/servers/route.js +6 -6
- package/.next/server/app/api/hub/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/session/route.js +6 -6
- package/.next/server/app/api/hub/session/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/stats/route.js +6 -6
- package/.next/server/app/api/hub/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/status/route.js +6 -6
- package/.next/server/app/api/hub/status/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/task-events/route.js +6 -6
- package/.next/server/app/api/hub/task-events/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/tasks/route.js +6 -6
- package/.next/server/app/api/hub/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/tmux/route.js +6 -6
- package/.next/server/app/api/hub/tmux/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/tokens/route.js +6 -6
- package/.next/server/app/api/hub/tokens/route.js.nft.json +1 -1
- package/.next/server/app/api/hub/upload/route.js +6 -6
- package/.next/server/app/api/hub/upload/route.js.nft.json +1 -1
- package/.next/server/app/favicon.ico/route.js +6 -6
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +15 -15
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +8 -8
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page/build-manifest.json +5 -5
- package/.next/server/app/login/page/next-font-manifest.json +1 -1
- package/.next/server/app/login/page.js +13 -13
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +15 -15
- package/.next/server/app/login.segments/_full.segment.rsc +15 -15
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +8 -8
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/.next/server/app/logs/page/build-manifest.json +5 -5
- package/.next/server/app/logs/page/next-font-manifest.json +1 -1
- package/.next/server/app/logs/page.js +13 -13
- package/.next/server/app/logs/page.js.nft.json +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +15 -15
- package/.next/server/app/logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
- package/.next/server/app/manifest.webmanifest/route.js +6 -6
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/messages/page/build-manifest.json +5 -5
- package/.next/server/app/messages/page/next-font-manifest.json +1 -1
- package/.next/server/app/messages/page.js +13 -13
- package/.next/server/app/messages/page.js.nft.json +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +15 -15
- package/.next/server/app/messages.segments/_full.segment.rsc +15 -15
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +8 -8
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
- package/.next/server/app/node/page/build-manifest.json +5 -5
- package/.next/server/app/node/page/next-font-manifest.json +1 -1
- package/.next/server/app/node/page.js +13 -13
- package/.next/server/app/node/page.js.nft.json +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +15 -15
- package/.next/server/app/node.segments/_full.segment.rsc +15 -15
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +8 -8
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/node.segments/node.segment.rsc +3 -3
- package/.next/server/app/nodes/page/build-manifest.json +5 -5
- package/.next/server/app/nodes/page/next-font-manifest.json +1 -1
- package/.next/server/app/nodes/page.js +13 -13
- package/.next/server/app/nodes/page.js.nft.json +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +15 -15
- package/.next/server/app/nodes.segments/_full.segment.rsc +15 -15
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +8 -8
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
- package/.next/server/app/page/build-manifest.json +5 -5
- package/.next/server/app/page/next-font-manifest.json +1 -1
- package/.next/server/app/page.js +13 -13
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page/build-manifest.json +5 -5
- package/.next/server/app/server-logs/page/next-font-manifest.json +1 -1
- package/.next/server/app/server-logs/page.js +13 -13
- package/.next/server/app/server-logs/page.js.nft.json +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +15 -15
- package/.next/server/app/server-logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
- package/.next/server/app/servers/page/build-manifest.json +5 -5
- package/.next/server/app/servers/page/next-font-manifest.json +1 -1
- package/.next/server/app/servers/page.js +13 -13
- package/.next/server/app/servers/page.js.nft.json +1 -1
- package/.next/server/app/servers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/servers.html +2 -2
- package/.next/server/app/servers.rsc +15 -15
- package/.next/server/app/servers.segments/_full.segment.rsc +15 -15
- package/.next/server/app/servers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/servers.segments/_index.segment.rsc +8 -8
- package/.next/server/app/servers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/servers.segments/servers.segment.rsc +3 -3
- package/.next/server/app/settings/networks/page/build-manifest.json +5 -5
- package/.next/server/app/settings/networks/page/next-font-manifest.json +1 -1
- package/.next/server/app/settings/networks/page.js +13 -13
- package/.next/server/app/settings/networks/page.js.nft.json +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +15 -15
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings/page/build-manifest.json +5 -5
- package/.next/server/app/settings/page/next-font-manifest.json +1 -1
- package/.next/server/app/settings/page.js +13 -13
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page/build-manifest.json +5 -5
- package/.next/server/app/settings/tokens/page/next-font-manifest.json +1 -1
- package/.next/server/app/settings/tokens/page.js +13 -13
- package/.next/server/app/settings/tokens/page.js.nft.json +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +15 -15
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +15 -15
- package/.next/server/app/settings.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/tasks/[id]/page/build-manifest.json +5 -5
- package/.next/server/app/tasks/[id]/page/next-font-manifest.json +1 -1
- package/.next/server/app/tasks/[id]/page.js +13 -13
- package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page/build-manifest.json +5 -5
- package/.next/server/app/tasks/page/next-font-manifest.json +1 -1
- package/.next/server/app/tasks/page.js +13 -13
- package/.next/server/app/tasks/page.js.nft.json +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +15 -15
- package/.next/server/app/tasks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
- package/.next/server/app-paths-manifest.json +3 -0
- package/.next/server/chunks/0emd_next_0zjoz0g._.js +10 -0
- package/.next/server/chunks/0emd_next_0zjoz0g._.js.map +1 -0
- package/.next/server/chunks/0emd_next_dist_07_njzq._.js +18 -0
- package/.next/server/chunks/0emd_next_dist_07_njzq._.js.map +1 -0
- package/.next/server/chunks/0emd_next_dist_esm_build_templates_app-route_0ze.4~8.js +3 -0
- package/.next/server/chunks/0emd_next_dist_esm_build_templates_app-route_0ze.4~8.js.map +1 -0
- package/.next/server/chunks/0eys__next-internal_server_app_api_anet_node-config_route_actions_0vpbqmt.js +3 -0
- package/.next/server/chunks/0eys__next-internal_server_app_api_anet_node-create_route_actions_0ack5_x.js +3 -0
- package/.next/server/chunks/0eys__next-internal_server_app_api_anet_node-lifecycle_route_actions_13z6pk9.js +3 -0
- package/.next/server/chunks/0eys__next-internal_server_app_api_hub_server-logs_route_actions_13k0lzq.js +3 -0
- package/.next/server/chunks/0eys__next-internal_server_app_api_hub_task-events_route_actions_0eayccx.js +3 -0
- package/.next/server/chunks/0eys__next-internal_server_app_manifest_webmanifest_route_actions_03s5neg.js +3 -0
- package/.next/server/chunks/0raa_next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0q9dcjz.js +3 -0
- package/.next/server/chunks/0raa_next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0s8k6m..js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0-jphjp._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__0-jphjp._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0-po71t._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0-po71t._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0.5kg~w._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0.5kg~w._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0._v9vf._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__01cxv~5._.js.map → [root-of-the-server]__0._v9vf._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__00gb0kv._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0fk~j-f._.js.map → [root-of-the-server]__00gb0kv._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__013ptvb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__013ptvb._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__03c6cit._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03c6cit._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__04a200m._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0p77uu0._.js.map → [root-of-the-server]__04a200m._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__05494tj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05494tj._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__065pywy._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__065pywy._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__07kt6aj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07kt6aj._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__07x377i._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07x377i._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0anx8ak._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0anx8ak._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0dqs1t5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dqs1t5._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0efa-e~._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0efa-e~._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0eonvri._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0eonvri._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0f5-nhl._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0t-zv8i._.js.map → [root-of-the-server]__0f5-nhl._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0f~mkgn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0f~mkgn._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0go6s0b._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0r.6ku0._.js.map → [root-of-the-server]__0go6s0b._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0ixnvi-._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0ncl1y5._.js.map → [root-of-the-server]__0ixnvi-._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0jlzmrm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0jlzmrm._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0k-0~jy._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0k-0~jy._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0kalz0~._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0kalz0~._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0ksm0bm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ksm0bm._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0lcdg4r._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0lcdg4r._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0lud1_2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0lud1_2._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0n__sw5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0n__sw5._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0ocd-7~._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ocd-7~._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0osz.5l._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__117_h7d._.js.map → [root-of-the-server]__0osz.5l._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0uc.~eb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0uc.~eb._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0z~3-vx._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0z~3-vx._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0z~50bw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0z~50bw._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__10z4o-.._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__10z4o-.._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__11swhm2._.js +20 -0
- package/.next/server/chunks/[root-of-the-server]__11swhm2._.js.map +1 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_anet_config_route_actions_0eb-2a9.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_auth_login_route_actions_0_0zk8~.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_auth_logout_route_actions_0yy6u4n.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_auth_v3_route_actions_09dg3rk.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_audit-log_route_actions_03wia4o.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_auth_route_actions_0k.l0a-.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_broadcast_route_actions_02wotps.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_events_route_actions_0i1zyq~.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_health_route_actions_0fe6lsz.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_inbox_route_actions_0iup.xe.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_messages_route_actions_0syf65m.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_networks_route_actions_04dtp_m.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_nodes_route_actions_0aghuq9.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_register_route_actions_04g3.gx.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_send_route_actions_01m4__p.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_servers_route_actions_10lz59w.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_session_route_actions_03ce57x.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_stats_route_actions_0~xcq1-.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_status_route_actions_0slss8r.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_tasks_route_actions_0yvhaa_.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_tmux_route_actions_0_f8h.h.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_tokens_route_actions_0ke~8y8.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_api_hub_upload_route_actions_02jnx8r.js +3 -0
- package/.next/server/chunks/dash-main-prep__next-internal_server_app_favicon_ico_route_actions_09bgfok.js +3 -0
- package/.next/server/chunks/ssr/0emd_047jqdj._.js +33 -0
- package/.next/server/chunks/ssr/0emd_047jqdj._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_06kedq-._.js +3 -0
- package/.next/server/chunks/ssr/0emd_06kedq-._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_0_26t76._.js +3 -0
- package/.next/server/chunks/ssr/0emd_0_26t76._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_13t5_lo._.js +3 -0
- package/.next/server/chunks/ssr/0emd_13t5_lo._.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_0_~e226._.js → 0emd_next_0bnhxgq._.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_0bnhxgq._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_00jgl6k._.js +6 -0
- package/.next/server/chunks/ssr/0emd_next_dist_00jgl6k._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_00j7vwk._.js +3 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_00j7vwk._.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_forbidden_1087x.v.js +3 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_forbidden_1087x.v.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_global-error_0qrbd.p.js +3 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_global-error_0qrbd.p.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_unauthorized_0~qxw.r.js +3 -0
- package/.next/server/chunks/ssr/0emd_next_dist_client_components_builtin_unauthorized_0~qxw.r.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_038w~o4.js → 0emd_next_dist_esm_build_templates_app-page_0.3fpy_.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0.3fpy_.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0gg19s6.js → 0emd_next_dist_esm_build_templates_app-page_016_j7..js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_016_j7..js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0q4gvif.js → 0emd_next_dist_esm_build_templates_app-page_06x82hl.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_06x82hl.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0unqv4v.js → 0emd_next_dist_esm_build_templates_app-page_0c0fklb.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0c0fklb.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0j5dp2i.js +4 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0j5dp2i.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0kgge41.js +4 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0kgge41.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_097i4vb.js → 0emd_next_dist_esm_build_templates_app-page_0ospxq4.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0ospxq4.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0otan.0.js → 0emd_next_dist_esm_build_templates_app-page_0oz02hy.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0oz02hy.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0g0ea16.js → 0emd_next_dist_esm_build_templates_app-page_0r4~r~z.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0r4~r~z.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0ikgf-7.js → 0emd_next_dist_esm_build_templates_app-page_0rjp8.q.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0rjp8.q.js.map +1 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0tqydx2.js +4 -0
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0tqydx2.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0s.as54.js → 0emd_next_dist_esm_build_templates_app-page_0u.fjk1.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0u.fjk1.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_10~-.q1.js → 0emd_next_dist_esm_build_templates_app-page_0v3so27.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0v3so27.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0t88_uc.js → 0emd_next_dist_esm_build_templates_app-page_0xikgs1.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_0xikgs1.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0xry76m.js → 0emd_next_dist_esm_build_templates_app-page_10jwiid.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_10jwiid.js.map +1 -0
- package/.next/server/chunks/ssr/{0eys_next_dist_esm_build_templates_app-page_0fy2_ot.js → 0emd_next_dist_esm_build_templates_app-page_133cpo2.js} +3 -3
- package/.next/server/chunks/ssr/0emd_next_dist_esm_build_templates_app-page_133cpo2.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00c-m~h._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00c-m~h._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00t8yko._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00t8yko._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__02e9x~u._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__02e9x~u._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0337u7~._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0337u7~._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0.bq9qd._.js → [root-of-the-server]__0342o.i._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0342o.i._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03mvbey._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03mvbey._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0_nj.h9._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0_nj.h9._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0a..bh5._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0a..bh5._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0bhrs1j._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0bhrs1j._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0c1te6d._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0c1te6d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0cbfccb._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0cbfccb._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dog1cm._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dog1cm._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ei826c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ei826c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0es3uv3._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0es3uv3._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0j5c4hr._.js +8 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0j5c4hr._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0otzd58._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0otzd58._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ppvi5_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ppvi5_._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0p~jybs._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0p~jybs._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0utp0~w._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0utp0~w._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0x7j2o1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0x7j2o1._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0yacr~n._.js +6 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0xsrxaq._.js.map → [root-of-the-server]__0yacr~n._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0~jfwze._.js +19 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0~jfwze._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0~zzavb._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0~zzavb._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__12oz5~2._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__12oz5~2._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__13ti3mc._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__13ti3mc._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_03jozqe._.js → dash-main-prep_04jom44._.js} +3 -3
- package/.next/server/chunks/ssr/dash-main-prep_04jom44._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app__global-error_page_actions_07kk3nm.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app__not-found_page_actions_0cb6n8e.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_admin_page_actions_0whq~om.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_login_page_actions_0lfb5vh.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_logs_page_actions_0a9g2gh.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_messages_page_actions_0_0a~oj.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_node_page_actions_0nt83da.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_nodes_page_actions_001898j.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_page_actions_10t6_cb.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_server-logs_page_actions_10i2y0v.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_servers_page_actions_0yfsnrz.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_settings_networks_page_actions_0.6z6e9.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_settings_page_actions_0t_etc1.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_settings_tokens_page_actions_0g~ilh~.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_settings_tokens_page_actions_0g~ilh~.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_tasks_[id]_page_actions_0jc~43n.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_tasks_[id]_page_actions_0jc~43n.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_tasks_page_actions_0k0da_-.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep__next-internal_server_app_tasks_page_actions_0k0da_-.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0-ei3ea._.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0-ei3ea._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_01r5cp-._.js → dash-main-prep_app_00xe5ww._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_00xe5ww._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_0heiqx4._.js → dash-main-prep_app_02jbzgm._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_02jbzgm._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_0r.6wo3._.js → dash-main-prep_app_0_8.j.9._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_0_8.j.9._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0em9eg-._.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0em9eg-._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_0415ugh._.js → dash-main-prep_app_0l5pr3q._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_0l5pr3q._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0vx7mgv._.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_0vx7mgv._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_07ks..b._.js → dash-main-prep_app_0z7jy81._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_0z7jy81._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_0.xbj-j._.js → dash-main-prep_app_0~~c86p._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_0~~c86p._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_0ict6f_._.js → dash-main-prep_app_105mjhx._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_105mjhx._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_components_0l8tz~8._.js → dash-main-prep_app_components_0p9bpx_._.js} +3 -3
- package/.next/server/chunks/ssr/dash-main-prep_app_components_0p9bpx_._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_nodes_page_tsx_0k20g4a._.js +3 -0
- package/.next/server/chunks/ssr/dash-main-prep_app_nodes_page_tsx_0k20g4a._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_servers_page_tsx_0gjg_-r._.js → dash-main-prep_app_servers_page_tsx_0zrm2-z._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_servers_page_tsx_0zrm2-z._.js.map +1 -0
- package/.next/server/chunks/ssr/{p248-dash-release_app_tasks_page_tsx_0qdyj8l._.js → dash-main-prep_app_tasks_page_tsx_013t47c._.js} +2 -2
- package/.next/server/chunks/ssr/dash-main-prep_app_tasks_page_tsx_013t47c._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +8 -8
- package/.next/server/middleware.js +3 -3
- package/.next/server/middleware.js.nft.json +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +15 -15
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0..6bvayc~2v_.js +31 -0
- package/.next/static/chunks/0.4it~9-lgmdc.js +7 -0
- package/.next/static/chunks/008f8y0vjzx6q.js +1 -0
- package/.next/static/chunks/026_lvbjd5ehm.js +1 -0
- package/.next/static/chunks/038w1~wz8c.b_.js +1 -0
- package/.next/static/chunks/04ab~m7-c0hma.js +1 -0
- package/.next/static/chunks/05n6g8whg1rnw.js +4 -0
- package/.next/static/chunks/074qn1p5esp6v.js +1 -0
- package/.next/static/chunks/{11c-24vhb~5d5.js → 0_eh6-xnv.vas.js} +1 -1
- package/.next/static/chunks/0_q1lcvifkup1.js +4 -0
- package/.next/static/chunks/0cj3regqtbzgi.js +1 -0
- package/.next/static/chunks/{0u6y82jjwp2k_.js → 0e.5fp53g~gjx.js} +1 -1
- package/.next/static/chunks/{0f1nxmo-ba2au.js → 0fval~_yhzi56.js} +1 -1
- package/.next/static/chunks/0g76.rws7jb6p.js +4 -0
- package/.next/static/chunks/0lfg~2g8_-82b.js +1 -0
- package/.next/static/chunks/{0e~mf5-e4dl_e.js → 0n5d~z6jskv75.js} +1 -1
- package/.next/static/chunks/{0655qv_ed4zqk.js → 0nvbpp15hjh1k.js} +1 -1
- package/.next/static/chunks/0p..-4gjx~ua~.css +1 -0
- package/.next/static/chunks/{0td.dx.r1h_nl.js → 0r5q0e.lci5bj.js} +2 -2
- package/.next/static/chunks/0u5kv-8r.53y_.js +1 -0
- package/.next/static/chunks/0uroeke.37_qr.js +1 -0
- package/.next/static/chunks/0w66-7icvft37.js +2 -0
- package/.next/static/chunks/0w8djdzyh1ar0.js +1 -0
- package/.next/static/chunks/0wikbewneplt6.js +1 -0
- package/.next/static/chunks/0zozgpnx9_ex_.js +1 -0
- package/.next/static/chunks/135hvx8t2m~5~.js +1 -0
- package/.next/static/chunks/turbopack-1071etkj.k-n~.js +1 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +4 -1
- package/.next/types/validator.ts +27 -0
- package/app/api/anet/node-config/route.ts +140 -0
- package/app/api/anet/node-create/route.ts +174 -0
- package/app/api/anet/node-lifecycle/route.ts +108 -0
- package/app/components/AgentCard.tsx +33 -3
- package/app/components/CreateNodeWizard.tsx +288 -0
- package/app/components/NodeSettingsPanel.tsx +695 -0
- package/app/lib/hub-mcp.ts +94 -0
- package/app/nodes/page.tsx +17 -1
- package/package.json +2 -1
- package/.next/build/chunks/0eys_0hzxj57._.js.map +0 -47
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0f_tr7e._.js +0 -13
- package/.next/server/chunks/0ctr__next-internal_server_app_api_anet_config_route_actions_0vfnpq~.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_auth_logout_route_actions_0mnkdb1.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_audit-log_route_actions_01da9km.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_broadcast_route_actions_0-mzp~m.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_messages_route_actions_0yqdey-.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_networks_route_actions_08zwxgz.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_register_route_actions_059ib7..js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_server-logs_route_actions_0.lpvmu.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_servers_route_actions_0n9er6w.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_session_route_actions_0clahzh.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_api_hub_task-events_route_actions_0eupv~7.js +0 -3
- package/.next/server/chunks/0ctr__next-internal_server_app_manifest_webmanifest_route_actions_0zwabxo.js +0 -3
- package/.next/server/chunks/0eys_next_0qdv7h5._.js +0 -10
- package/.next/server/chunks/0eys_next_0qdv7h5._.js.map +0 -1
- package/.next/server/chunks/0eys_next_dist_0k3eipb._.js +0 -18
- package/.next/server/chunks/0eys_next_dist_0k3eipb._.js.map +0 -1
- package/.next/server/chunks/0eys_next_dist_esm_build_templates_app-route_0squ2oo.js +0 -3
- package/.next/server/chunks/0eys_next_dist_esm_build_templates_app-route_0squ2oo.js.map +0 -1
- package/.next/server/chunks/0n8__next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0td~w-3.js +0 -3
- package/.next/server/chunks/0n8__next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0-cx2k4.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0030c3d._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0030c3d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__006ofg~._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__006ofg~._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__00hv4s.._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__00hv4s.._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__01cxv~5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__03kos9q._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__03kos9q._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__03oze7j._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__03oze7j._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__04cd_-f._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__04cd_-f._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__04g4e2s._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__04g4e2s._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__06gsfmz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__06gsfmz._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__06ze71n._.js +0 -6
- package/.next/server/chunks/[root-of-the-server]__06ze71n._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0afgpqa._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0afgpqa._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0c36sc~._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0c36sc~._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0ef15nv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0ef15nv._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0fk~j-f._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0jd4sw5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0jd4sw5._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0kp05ch._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0kp05ch._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0ncl1y5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0p77uu0._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0q5wxvv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0q5wxvv._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0q9lm4b._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0q9lm4b._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0qygdtt._.js +0 -20
- package/.next/server/chunks/[root-of-the-server]__0qygdtt._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0r.6ku0._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0r9rxeu._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0r9rxeu._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0sk08ba._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0sk08ba._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0t-zv8i._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0ucvqha._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0ucvqha._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0wrd5yg._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0wrd5yg._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0xyksgx._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0xyksgx._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0zy55xw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0zy55xw._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0~7jz1t._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0~7jz1t._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__117_h7d._.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_auth_login_route_actions_0p0o8hb.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_auth_v3_route_actions_0gygcdb.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_auth_route_actions_0qldbc..js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_events_route_actions_0dif~y4.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_health_route_actions_006d2v..js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_inbox_route_actions_0hzbelp.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_nodes_route_actions_0.v335w.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_send_route_actions_0-c6c80.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_stats_route_actions_10r2dnb.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_status_route_actions_029-bam.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_tasks_route_actions_03j_ebz.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_tmux_route_actions_0w~1rqo.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_tokens_route_actions_0u1pfzb.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_api_hub_upload_route_actions_0n4mpaq.js +0 -3
- package/.next/server/chunks/p248-dash-release__next-internal_server_app_favicon_ico_route_actions_0upntbn.js +0 -3
- package/.next/server/chunks/ssr/0ctr__next-internal_server_app_settings_networks_page_actions_0722nti.js +0 -3
- package/.next/server/chunks/ssr/0eys_0.9fypy._.js +0 -3
- package/.next/server/chunks/ssr/0eys_0.9fypy._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_0cilv2n._.js +0 -3
- package/.next/server/chunks/ssr/0eys_0cilv2n._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_0o_uhv8._.js +0 -33
- package/.next/server/chunks/ssr/0eys_0o_uhv8._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_0v03z7d._.js +0 -3
- package/.next/server/chunks/ssr/0eys_0v03z7d._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_0_~e226._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_0temmfx._.js +0 -6
- package/.next/server/chunks/ssr/0eys_next_dist_0temmfx._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_0j3h5if._.js +0 -3
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_0j3h5if._.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_forbidden_0h3lxo-.js +0 -3
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_forbidden_0h3lxo-.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_global-error_05on~t..js +0 -3
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_global-error_05on~t..js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_unauthorized_0jjp4gf.js +0 -3
- package/.next/server/chunks/ssr/0eys_next_dist_client_components_builtin_unauthorized_0jjp4gf.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0-rhsex.js +0 -4
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0-rhsex.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_038w~o4.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_097i4vb.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0fy2_ot.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0g0ea16.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0gg19s6.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0ikgf-7.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0otan.0.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0q4gvif.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0s.as54.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0t88_uc.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0unqv4v.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0vrz6hg.js +0 -4
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0vrz6hg.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0xb3.u..js +0 -4
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0xb3.u..js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_0xry76m.js.map +0 -1
- package/.next/server/chunks/ssr/0eys_next_dist_esm_build_templates_app-page_10~-.q1.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0.bq9qd._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0.p4.9p._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0.p4.9p._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__02e2~_p._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__02e2~_p._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__07iv~-v._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__07iv~-v._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__08c1l7e._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__08c1l7e._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__09tg-yx._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__09tg-yx._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__09wz11l._.js +0 -19
- package/.next/server/chunks/ssr/[root-of-the-server]__09wz11l._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0c0po7z._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0c0po7z._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0c~slby._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0c~slby._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0dhdbz9._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0dhdbz9._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0j_fyz7._.js +0 -33
- package/.next/server/chunks/ssr/[root-of-the-server]__0j_fyz7._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0jsgoje._.js +0 -33
- package/.next/server/chunks/ssr/[root-of-the-server]__0jsgoje._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0k2x-ou._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0k2x-ou._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0mwy~nq._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0mwy~nq._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ni6cq0._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ni6cq0._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ny5rkb._.js +0 -8
- package/.next/server/chunks/ssr/[root-of-the-server]__0ny5rkb._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0oj.su5._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0oj.su5._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0q0h5.4._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0q0h5.4._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0se0pbf._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0se0pbf._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0tb8onm._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0tb8onm._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0wm_kxh._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0wm_kxh._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0wt_.5g._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0wt_.5g._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xmwsru._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0xmwsru._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xsrxaq._.js +0 -6
- package/.next/server/chunks/ssr/[root-of-the-server]__0z12w52._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0z12w52._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_03jozqe._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app__global-error_page_actions_0-_psx0.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app__not-found_page_actions_0ab90fb.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_admin_page_actions_0-3dd6g.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_login_page_actions_0cxgr5r.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_logs_page_actions_13ncn5w.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_messages_page_actions_03eny7a.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_node_page_actions_01g~v8e.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_nodes_page_actions_0rp9d.z.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_page_actions_12.zc2x.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_server-logs_page_actions_12.~xmh.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_servers_page_actions_01fbube.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_settings_page_actions_049o_zl.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_settings_tokens_page_actions_0kwlo85.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_tasks_[id]_page_actions_0gaayz2.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release__next-internal_server_app_tasks_page_actions_05-6rq9.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release_app_0.xbj-j._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_01r5cp-._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0415ugh._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_07ks..b._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_08-_z~z._.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release_app_08-_z~z._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0heiqx4._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0ict6f_._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0m1nag5._.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release_app_0m1nag5._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0me0gyz._.js +0 -3
- package/.next/server/chunks/ssr/p248-dash-release_app_0me0gyz._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_0r.6wo3._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_components_0l8tz~8._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_servers_page_tsx_0gjg_-r._.js.map +0 -1
- package/.next/server/chunks/ssr/p248-dash-release_app_tasks_page_tsx_0qdyj8l._.js.map +0 -1
- package/.next/static/chunks/0-.8ljnci668r.js +0 -4
- package/.next/static/chunks/0-wn37qh25iv8.js +0 -4
- package/.next/static/chunks/01rl0zgit9fpi.js +0 -1
- package/.next/static/chunks/03hid7at2hts9.js +0 -1
- package/.next/static/chunks/04z~zcny7e-hu.js +0 -1
- package/.next/static/chunks/097dcrj-frket.js +0 -1
- package/.next/static/chunks/0_b1~xhhddi_..js +0 -2
- package/.next/static/chunks/0cip10~ax7ih8.js +0 -1
- package/.next/static/chunks/0fgpa9eurf21a.js +0 -4
- package/.next/static/chunks/0fjr78ak.7m7k.js +0 -1
- package/.next/static/chunks/0hy~u-wxdvw2u.js +0 -1
- package/.next/static/chunks/0i_zf1gx2iz9e.js +0 -1
- package/.next/static/chunks/0kgcx1x2p~.3f.js +0 -31
- package/.next/static/chunks/0my4koa~eoc3m.js +0 -1
- package/.next/static/chunks/0oa_op0qrdcyz.js +0 -1
- package/.next/static/chunks/0po5q8_1xmof_.js +0 -1
- package/.next/static/chunks/0t_ctpqz4qkkt.css +0 -1
- package/.next/static/chunks/105_kfixakoke.js +0 -7
- package/.next/static/chunks/137i49j2u~mpw.js +0 -1
- package/.next/static/chunks/1529ngs_24ts..js +0 -1
- package/.next/static/chunks/turbopack-0yv4qlj-3gvbg.js +0 -1
- package/bun.lock +0 -1663
- /package/.next/build/chunks/{[root-of-the-server]__02~~60i._.js.map → [root-of-the-server]__0z.4hvh._.js.map} +0 -0
- /package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_0f_tr7e._.js.map → [turbopack-node]_transforms_postcss_ts_0ji7sn2._.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_anet_config_route_actions_0vfnpq~.js.map → 0eys__next-internal_server_app_api_anet_node-config_route_actions_0vpbqmt.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_auth_logout_route_actions_0mnkdb1.js.map → 0eys__next-internal_server_app_api_anet_node-create_route_actions_0ack5_x.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_audit-log_route_actions_01da9km.js.map → 0eys__next-internal_server_app_api_anet_node-lifecycle_route_actions_13z6pk9.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_broadcast_route_actions_0-mzp~m.js.map → 0eys__next-internal_server_app_api_hub_server-logs_route_actions_13k0lzq.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_messages_route_actions_0yqdey-.js.map → 0eys__next-internal_server_app_api_hub_task-events_route_actions_0eayccx.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_networks_route_actions_08zwxgz.js.map → 0eys__next-internal_server_app_manifest_webmanifest_route_actions_03s5neg.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_register_route_actions_059ib7..js.map → 0raa_next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0q9dcjz.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_server-logs_route_actions_0.lpvmu.js.map → 0raa_next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0s8k6m..js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_servers_route_actions_0n9er6w.js.map → dash-main-prep__next-internal_server_app_api_anet_config_route_actions_0eb-2a9.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_session_route_actions_0clahzh.js.map → dash-main-prep__next-internal_server_app_api_auth_login_route_actions_0_0zk8~.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_api_hub_task-events_route_actions_0eupv~7.js.map → dash-main-prep__next-internal_server_app_api_auth_logout_route_actions_0yy6u4n.js.map} +0 -0
- /package/.next/server/chunks/{0ctr__next-internal_server_app_manifest_webmanifest_route_actions_0zwabxo.js.map → dash-main-prep__next-internal_server_app_api_auth_v3_route_actions_09dg3rk.js.map} +0 -0
- /package/.next/server/chunks/{0n8__next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0td~w-3.js.map → dash-main-prep__next-internal_server_app_api_hub_audit-log_route_actions_03wia4o.js.map} +0 -0
- /package/.next/server/chunks/{0n8__next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0-cx2k4.js.map → dash-main-prep__next-internal_server_app_api_hub_auth_route_actions_0k.l0a-.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_auth_login_route_actions_0p0o8hb.js.map → dash-main-prep__next-internal_server_app_api_hub_broadcast_route_actions_02wotps.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_auth_v3_route_actions_0gygcdb.js.map → dash-main-prep__next-internal_server_app_api_hub_events_route_actions_0i1zyq~.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_auth_route_actions_0qldbc..js.map → dash-main-prep__next-internal_server_app_api_hub_health_route_actions_0fe6lsz.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_events_route_actions_0dif~y4.js.map → dash-main-prep__next-internal_server_app_api_hub_inbox_route_actions_0iup.xe.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_health_route_actions_006d2v..js.map → dash-main-prep__next-internal_server_app_api_hub_messages_route_actions_0syf65m.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_inbox_route_actions_0hzbelp.js.map → dash-main-prep__next-internal_server_app_api_hub_networks_route_actions_04dtp_m.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_nodes_route_actions_0.v335w.js.map → dash-main-prep__next-internal_server_app_api_hub_nodes_route_actions_0aghuq9.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_send_route_actions_0-c6c80.js.map → dash-main-prep__next-internal_server_app_api_hub_register_route_actions_04g3.gx.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_stats_route_actions_10r2dnb.js.map → dash-main-prep__next-internal_server_app_api_hub_send_route_actions_01m4__p.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_status_route_actions_029-bam.js.map → dash-main-prep__next-internal_server_app_api_hub_servers_route_actions_10lz59w.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_tasks_route_actions_03j_ebz.js.map → dash-main-prep__next-internal_server_app_api_hub_session_route_actions_03ce57x.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_tmux_route_actions_0w~1rqo.js.map → dash-main-prep__next-internal_server_app_api_hub_stats_route_actions_0~xcq1-.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_tokens_route_actions_0u1pfzb.js.map → dash-main-prep__next-internal_server_app_api_hub_status_route_actions_0slss8r.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_api_hub_upload_route_actions_0n4mpaq.js.map → dash-main-prep__next-internal_server_app_api_hub_tasks_route_actions_0yvhaa_.js.map} +0 -0
- /package/.next/server/chunks/{p248-dash-release__next-internal_server_app_favicon_ico_route_actions_0upntbn.js.map → dash-main-prep__next-internal_server_app_api_hub_tmux_route_actions_0_f8h.h.js.map} +0 -0
- /package/.next/server/chunks/{ssr/0ctr__next-internal_server_app_settings_networks_page_actions_0722nti.js.map → dash-main-prep__next-internal_server_app_api_hub_tokens_route_actions_0ke~8y8.js.map} +0 -0
- /package/.next/server/chunks/{ssr/p248-dash-release__next-internal_server_app__global-error_page_actions_0-_psx0.js.map → dash-main-prep__next-internal_server_app_api_hub_upload_route_actions_02jnx8r.js.map} +0 -0
- /package/.next/server/chunks/{ssr/p248-dash-release__next-internal_server_app__not-found_page_actions_0ab90fb.js.map → dash-main-prep__next-internal_server_app_favicon_ico_route_actions_09bgfok.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_admin_page_actions_0-3dd6g.js.map → dash-main-prep__next-internal_server_app__global-error_page_actions_07kk3nm.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_login_page_actions_0cxgr5r.js.map → dash-main-prep__next-internal_server_app__not-found_page_actions_0cb6n8e.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_logs_page_actions_13ncn5w.js.map → dash-main-prep__next-internal_server_app_admin_page_actions_0whq~om.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_messages_page_actions_03eny7a.js.map → dash-main-prep__next-internal_server_app_login_page_actions_0lfb5vh.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_node_page_actions_01g~v8e.js.map → dash-main-prep__next-internal_server_app_logs_page_actions_0a9g2gh.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_nodes_page_actions_0rp9d.z.js.map → dash-main-prep__next-internal_server_app_messages_page_actions_0_0a~oj.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_page_actions_12.zc2x.js.map → dash-main-prep__next-internal_server_app_node_page_actions_0nt83da.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_server-logs_page_actions_12.~xmh.js.map → dash-main-prep__next-internal_server_app_nodes_page_actions_001898j.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_servers_page_actions_01fbube.js.map → dash-main-prep__next-internal_server_app_page_actions_10t6_cb.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_settings_page_actions_049o_zl.js.map → dash-main-prep__next-internal_server_app_server-logs_page_actions_10i2y0v.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_settings_tokens_page_actions_0kwlo85.js.map → dash-main-prep__next-internal_server_app_servers_page_actions_0yfsnrz.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_tasks_[id]_page_actions_0gaayz2.js.map → dash-main-prep__next-internal_server_app_settings_networks_page_actions_0.6z6e9.js.map} +0 -0
- /package/.next/server/chunks/ssr/{p248-dash-release__next-internal_server_app_tasks_page_actions_05-6rq9.js.map → dash-main-prep__next-internal_server_app_settings_page_actions_0t_etc1.js.map} +0 -0
- /package/.next/static/{88n5t5Pxmw08hbmLba3jI → aIXvzZuknEQ-phwB09c_j}/_buildManifest.js +0 -0
- /package/.next/static/{88n5t5Pxmw08hbmLba3jI → aIXvzZuknEQ-phwB09c_j}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{88n5t5Pxmw08hbmLba3jI → aIXvzZuknEQ-phwB09c_j}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../dash-main-prep/app/nodes/page.tsx","../../../../../dash-main-prep/app/components/CreateNodeWizard.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { timeAgo } from '../components/utils';\nimport { useSessions, useHealth } from '../lib/hooks';\nimport { TaskChatPanel } from '../components/TaskChatPanel';\nimport { CreateNodeWizard } from '../components/CreateNodeWizard';\nimport { EmptyState, NodesEmptyState } from '../components/EmptyState';\nimport { AliasAvatar } from '../components/AliasAvatar';\nimport { useCollapsibleSearch } from '../components/CollapsibleSearch';\nimport type { Session } from '../components/types';\nimport { SESSION_STATUS_CHIP_CLASS as STATUS_COLORS } from '../lib/status';\nimport { useChatUnread } from '../lib/chat-unread';\n\n/** Round 81: shorten long server hostnames (Alibaba `iZ…oyZ` style)\n * for table display. Returns the original string unchanged when ≤12\n * chars. Full value should stay in `title=` for hover + screen-readers. */\nfunction shortServer(server: string | null | undefined): string {\n if (!server) return '—';\n return server.length > 12 ? `${server.slice(0, 8)}…` : server;\n}\n\ntype ViewMode = 'list' | 'grid';\ntype SessionRow = Session & { online: boolean };\n\nexport default function NodesPage() {\n const { sessions, isLoading: loading } = useSessions();\n const { health } = useHealth();\n const { hasUnread } = useChatUnread();\n const sseMap = health?.sse_sessions || {};\n // SSE keys are `network_id:alias` since server v0.7+. Look up with the\n // composite key first, fall back to alias-only for legacy hubs.\n const sseFor = (s: { alias: string; network_id?: string }) =>\n (s.network_id ? sseMap[`${s.network_id}:${s.alias}`] : undefined) ?? sseMap[s.alias];\n const [filterStatus, setFilterStatus] = useState('');\n const [search, setSearch] = useState('');\n const [viewMode, setViewMode] = useState<ViewMode>('list');\n const [chatAlias, setChatAlias] = useState<string | null>(null);\n const [showCreate, setShowCreate] = useState(false);\n // #209 R32→R34: the WeChat-style magnifier-toggle search was hand-rolled\n // inline in R32. R34 extracted it to a shared hook so /nodes, /messages,\n // and any future search surface stay visually + behaviourally identical.\n // The hook returns a Button (place in header) + Row (place after header).\n const searchCtl = useCollapsibleSearch({\n value: search,\n onChange: setSearch,\n placeholder: 'Search nodes…',\n label: 'Search nodes',\n enabled: sessions.length > 0,\n });\n\n const filtered: SessionRow[] = sessions\n .map(s => ({ ...s, online: !!sseFor(s) }))\n .filter(s => {\n if (filterStatus === 'online') return s.online;\n if (filterStatus === 'offline') return !s.online;\n if (filterStatus && filterStatus !== s.status) return false;\n return true;\n })\n .filter(s => !search || s.alias.toLowerCase().includes(search.toLowerCase()) || (s.agent || '').toLowerCase().includes(search.toLowerCase()))\n .sort((a, b) => (b.online ? 1 : 0) - (a.online ? 1 : 0) || (b.status === 'working' ? 1 : 0) - (a.status === 'working' ? 1 : 0));\n\n const onlineCount = sessions.filter(s => sseFor(s)).length;\n\n return (\n <div className=\"min-h-screen max-w-full overflow-x-hidden bg-[#0b0b0d] text-gray-100 p-4 sm:p-6\">\n {/* #209 R31 (mobile vertical rhythm — goal \"大幅提升移动端体验\",\n extending R28's Overview pattern + R30's /tasks pattern):\n this header row + the status-bar wrapper + the filter row\n below all drop mb-6 → mb-4 sm:mb-6. Three spots × 8 px =\n ~24 px scroll reclaim on /nodes before the first card.\n #209 R32: search affordance moved to top-right magnifier\n button (Vincent WeChat ref msg 563). justify-between makes\n the title cluster hug left, button hugs right. */}\n <div className=\"flex items-center gap-4 mb-4 sm:mb-6\">\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n <h1 className=\"text-2xl font-bold text-white lg:ml-0 ml-10\">Nodes</h1>\n <span className=\"text-xs bg-green-900/30 text-green-400 px-2 py-0.5 rounded-full border border-green-800/30 shrink-0\">\n {onlineCount} online\n </span>\n <span className=\"text-xs bg-gray-900/30 text-gray-400 px-2 py-0.5 rounded-full border border-gray-800/30 shrink-0\">\n {sessions.length} total\n </span>\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n {/* node-lifecycle M2: open the create-node wizard (RFC-026 §3.1 P1). */}\n <button\n type=\"button\"\n onClick={() => setShowCreate(true)}\n aria-label=\"新建节点\"\n className=\"inline-flex items-center gap-1 rounded-lg border border-cyan-700/50 bg-cyan-900/15 px-3 py-1.5 text-sm font-medium text-cyan-300 hover:bg-cyan-900/25 transition-colors\"\n >\n <span aria-hidden className=\"text-base leading-none\">+</span>\n <span className=\"hidden sm:inline\">新建节点</span>\n </button>\n <searchCtl.Button />\n </div>\n </div>\n\n {showCreate && <CreateNodeWizard onClose={() => setShowCreate(false)} />}\n\n {/* #209 R34: shared <CollapsibleSearch> component handles row reveal,\n autofocus, Escape, and Cancel. enabled=sessions.length>0 hides\n everything until there's content to search. */}\n <searchCtl.Row />\n\n {/* #217 D6 (less is more): the status distribution bar + its\n working/idle/offline legend duplicated the header chips\n (N online / N total) and the per-card status pills right\n below. One count display per screen — the bar is gone. */}\n\n {/* Round 74: hide the filter+view chrome when there are no nodes\n anywhere — these controls have nothing to act on, and they only\n push the onboarding CTA further down. When at least one session\n exists, the chrome is back even if the current filter happens\n to hide everything (so users can clear filters). */}\n {sessions.length > 0 && (\n <div className=\"flex flex-wrap gap-3 mb-4 sm:mb-6\">\n {/* R32: the inline search input was moved to the top-right\n magnifier toggle above. The status select + List/Grid\n toggle stay here. */}\n <select\n value={filterStatus}\n onChange={e => setFilterStatus(e.target.value)}\n className=\"bg-[#161618] border border-[#26262b] rounded-lg px-3 py-2 text-base sm:text-sm text-white focus:border-blue-500/50 focus:outline-none\"\n >\n <option value=\"\">All</option>\n <option value=\"online\">Online</option>\n <option value=\"offline\">Offline</option>\n <option value=\"working\">Working</option>\n <option value=\"idle\">Idle</option>\n <option value=\"blocked\">Blocked</option>\n <option value=\"error\">Error</option>\n </select>\n {/* Round 80: List/Grid toggle hidden on mobile — Grid uses\n grid-cols-1 below `md` and List degrades to the same single\n column, so the toggle has no visual effect under sm and only\n steals a row of vertical space. */}\n <div className=\"hidden sm:flex ml-auto rounded-lg border border-[#26262b] bg-[#161618] p-1 text-sm\">\n {(['list', 'grid'] as const).map(mode => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => setViewMode(mode)}\n className={`rounded-md px-3 py-1.5 transition-colors ${\n viewMode === mode\n ? 'bg-cyan-500/10 text-cyan-300'\n : 'text-gray-500 hover:text-gray-200'\n }`}\n >\n {mode === 'list' ? 'List' : 'Grid'}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {loading ? (\n <div className=\"animate-pulse space-y-2\">\n {[1,2,3,4].map(i => <div key={i} className=\"h-16 bg-gray-800/20 rounded-lg\" />)}\n </div>\n ) : filtered.length === 0 ? (\n sessions.length === 0 ? (\n /* Round 73: first-run case — no agents anywhere. Use the same\n onboarding empty state as the Overview (NodesEmptyState\n includes the `npx … init` quickstart command). Previously this\n was the \"No nodes match your filters\" copy, which was wrong\n for new users who have no filters applied. */\n <NodesEmptyState />\n ) : (\n <EmptyState\n variant=\"nodes\"\n title=\"No nodes match your filters\"\n sub=\"Try clearing search or status filters, or wait for an agent to register.\"\n />\n )\n ) : viewMode === 'grid' ? (\n <div className=\"grid min-w-0 grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {filtered.map(s => {\n const statusKey = s.online ? s.status : 'offline';\n const progress = typeof s.progress === 'number' ? s.progress : 0;\n const unread = hasUnread(s.alias);\n\n return (\n <div\n key={s.alias}\n role=\"button\"\n tabIndex={0}\n onClick={() => setChatAlias(s.alias)}\n onKeyDown={e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); setChatAlias(s.alias); } }}\n className={`relative min-w-0 max-w-full overflow-hidden rounded-xl border border-[#26262b] bg-[#161618] p-4 transition-colors hover:border-cyan-500/40 cursor-pointer ${!s.online ? 'opacity-60' : ''}`}\n >\n {!s.online && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <span className=\"rotate-[-20deg] rounded-xl border border-white/10 bg-black/20 px-5 py-2 text-xl font-bold uppercase tracking-[0.35em] text-white/10\">\n Offline\n </span>\n </div>\n )}\n <div className=\"flex items-start gap-3\">\n <div className=\"relative shrink-0\">\n <AliasAvatar alias={s.alias} size={36} />\n {unread && <span className=\"absolute -right-1 -top-1 h-3 w-3 rounded-full border-2 border-[#161618] bg-red-500\" />}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"truncate text-base font-semibold text-white\">{s.alias}</span>\n {unread && <span className=\"shrink-0 rounded-full bg-red-500/15 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-red-300\">New</span>}\n <span className={`shrink-0 rounded-md border px-2 py-0.5 text-[10px] uppercase tracking-wide ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n <div className=\"mt-0.5 truncate text-xs text-gray-500\">\n {(s.agent || '—')}<span className=\"text-gray-700 mx-1.5\">·</span><span title={s.server || ''}>{shortServer(s.server)}</span>\n </div>\n </div>\n <span className=\"hidden shrink-0 rounded-lg border border-cyan-500/15 bg-cyan-500/5 px-2 py-1 text-[10px] text-cyan-300/70 sm:inline\">Tap to chat</span>\n </div>\n\n <div className=\"mt-3 rounded-lg border border-[#1c1c1f] bg-[#0e0e10] px-3 py-2 text-xs\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-[10px] uppercase tracking-wide text-gray-600\">Current task</span>\n <span className=\"text-[10px] text-gray-600\">{timeAgo(s.last_seen_at || s.updated_at)}</span>\n </div>\n <div className={`mt-1 line-clamp-2 ${s.task ? 'text-gray-300' : 'text-gray-600 italic'}`}>\n {s.task || 'No current task'}\n </div>\n </div>\n\n {progress > 0 && progress < 100 && (\n <div className=\"mt-3 h-1.5 overflow-hidden rounded-full bg-gray-800\">\n <div className=\"h-1.5 rounded-full bg-cyan-400 transition-all\" style={{ width: `${progress}%` }} />\n </div>\n )}\n\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"space-y-1 sm:space-y-2\">\n {/* Round 94: AGENT + SERVER merged into one `agent · server`\n cell. Round mobile-command: node row itself opens chat, so\n the old Chat / Send Task action column is gone. */}\n <div className=\"hidden sm:grid sm:grid-cols-10 gap-2 px-4 py-2 text-xs text-gray-600 uppercase\">\n <div className=\"col-span-1\">Status</div>\n <div className=\"col-span-2\">Alias</div>\n <div className=\"col-span-2\">Agent · Server</div>\n <div className=\"col-span-4\">Current Task</div>\n <div className=\"col-span-1\">Updated</div>\n </div>\n {filtered.map(s => {\n const statusKey = s.online ? s.status : 'offline';\n const unread = hasUnread(s.alias);\n\n return (\n <div\n key={s.alias}\n role=\"button\"\n tabIndex={0}\n onClick={() => setChatAlias(s.alias)}\n onKeyDown={e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); setChatAlias(s.alias); } }}\n className={`rounded-lg border border-[#26262b] bg-[#161618] px-3 py-2 sm:px-4 sm:py-3 transition-colors hover:border-cyan-500/40 cursor-pointer ${!s.online ? 'opacity-50' : ''}`}\n >\n <div className=\"hidden sm:grid sm:grid-cols-10 gap-2 items-center\">\n <div className=\"col-span-1\">\n <span className={`text-xs px-2 py-0.5 rounded-md border ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n <div className=\"col-span-2 min-w-0\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <div className=\"relative shrink-0\">\n <AliasAvatar alias={s.alias} size={20} />\n {unread && <span className=\"absolute -right-1 -top-1 h-2.5 w-2.5 rounded-full border border-[#161618] bg-red-500\" />}\n </div>\n <span className=\"truncate text-sm font-medium text-white\">{s.alias}</span>\n {unread && <span className=\"shrink-0 rounded-full bg-red-500/15 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-red-300\">New</span>}\n </div>\n </div>\n <div className=\"col-span-2 truncate text-xs text-gray-400\" title={s.server || ''}>\n <span className=\"truncate\">{s.agent || '--'}<span className=\"text-gray-700 mx-1.5\">·</span>{shortServer(s.server)}</span>\n </div>\n <div className=\"col-span-4 truncate text-xs text-gray-500\" title={s.task || ''}>{s.task || '--'}</div>\n <div className=\"col-span-1 text-xs text-gray-500\">{timeAgo(s.last_seen_at || s.updated_at)}</div>\n </div>\n {/* R7 of #190: mobile node row was ~340px tall × ~150\n rows = the 51k page. Wins this round, in priority\n order: (1) drop the per-row \"Tap anywhere to chat\"\n hint — useful once, redundant 149 times; the cyan\n border on hover/focus still teaches it. (2) tighten\n space-y-2 → space-y-1 so the avatar/task gap is\n 4px tighter on every row. */}\n <div className=\"sm:hidden space-y-1\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"relative shrink-0\">\n <AliasAvatar alias={s.alias} size={28} />\n {unread && <span className=\"absolute -right-1 -top-1 h-3 w-3 rounded-full border-2 border-[#161618] bg-red-500\" />}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <div className=\"truncate text-sm font-medium text-white\">{s.alias}</div>\n {unread && <span className=\"shrink-0 rounded-full bg-red-500/15 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-red-300\">New</span>}\n </div>\n <div className=\"truncate text-[10px] text-gray-500\">{s.agent || '—'} · {timeAgo(s.last_seen_at || s.updated_at)}</div>\n </div>\n <span className={`shrink-0 text-xs px-2 py-0.5 rounded-md border ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n {s.task && <div className=\"truncate text-xs text-gray-500\">{s.task}</div>}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {chatAlias && <TaskChatPanel alias={chatAlias} onClose={() => setChatAlias(null)} />}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { useNetworkId } from '../lib/network-context';\n\n/**\n * Create-node wizard (node-lifecycle UI M2 — RFC-026 §3.1 P1, 本机创建).\n * 5 steps: ① name ② runtime ③ model ④ flags ⑤ confirm → POST /api/anet/node-create.\n *\n * ⚠️ Two contract gaps the submit path depends on (asked 通信龙/工程马):\n * - node_spec.runtime enum: these ids (claude-agent-sdk / codex / grok) follow\n * 通信龙's spec, but the panel's RUNTIME_MODELS keys differ; confirm the exact\n * values the backend expects, then adjust RUNTIMES below.\n * - daemon_node_id: P1 is \"本机\". Until there's a way to resolve the local\n * daemon's node_id, we omit it (the route omits when absent) and surface\n * whatever the hub returns — never a fake success.\n * The route already returns a flagged `unconfirmed` when create_node isn't\n * available (e.g. test hub not on #299), so this UI degrades honestly.\n */\n\nconst RUNTIMES: { id: string; label: string; models: string[] }[] = [\n { id: 'claude-agent-sdk', label: 'Claude Agent SDK', models: ['deepseek-v4-pro', 'MiniMax-M3', 'claude-sonnet-4-6', 'claude-opus-4-x'] },\n { id: 'codex', label: 'Codex', models: ['gpt-5.5'] },\n { id: 'grok', label: 'Grok', models: ['grok-build'] },\n];\nconst PERMISSION_MODES = ['auto', 'default', 'bypassPermissions'];\nconst STEPS = ['名字', 'Runtime', '模型', '参数', '确认'];\n\ntype Phase = 'form' | 'creating' | 'done' | 'unconfirmed' | 'error';\n\nexport function CreateNodeWizard({\n networkId,\n onClose,\n onCreated,\n}: {\n networkId?: string;\n onClose: () => void;\n onCreated?: (result: unknown) => void;\n}) {\n const [step, setStep] = useState(0);\n const [name, setName] = useState('');\n const [runtimeId, setRuntimeId] = useState(RUNTIMES[0].id);\n const [model, setModel] = useState('');\n const [permissionMode, setPermissionMode] = useState('auto');\n const [maxTurns, setMaxTurns] = useState('');\n const [budget, setBudget] = useState('');\n const [timeout, setTimeout] = useState('');\n const [phase, setPhase] = useState<Phase>('form');\n const [msg, setMsg] = useState('');\n const [childUp, setChildUp] = useState(false);\n const { networkId: ctxNetworkId } = useNetworkId();\n const netId = networkId || ctxNetworkId;\n\n // Escape closes the wizard (unless a create is mid-flight, so a stray key\n // can't drop the dialog while the request is settling).\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape' && phase !== 'creating') onClose(); };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [onClose, phase]);\n\n // After dispatch, confirm the child actually came up by watching the node\n // list for it to register (RFC-026 progress signal — get_create_request is\n // daemon-only, so the dashboard confirms via /api/hub/status). Polls ~24s.\n useEffect(() => {\n if (phase !== 'done' || childUp) return;\n let alive = true;\n let tries = 0;\n const want = name.trim();\n const tick = async () => {\n tries += 1;\n try {\n const url = netId ? `/api/hub/status?network_id=${encodeURIComponent(netId)}` : '/api/hub/status';\n const r = await fetch(url, { cache: 'no-store' });\n const d = await r.json().catch(() => ({}));\n const list = Array.isArray(d?.sessions) ? d.sessions : Array.isArray(d) ? d : [];\n if (alive && list.some((s: { alias?: string }) => s?.alias === want)) { setChildUp(true); return; }\n } catch { /* transient — keep polling */ }\n if (alive && tries < 16) window.setTimeout(tick, 1500);\n };\n const t = window.setTimeout(tick, 1200);\n return () => { alive = false; window.clearTimeout(t); };\n }, [phase, childUp, netId, name]);\n\n const runtime = RUNTIMES.find(r => r.id === runtimeId) || RUNTIMES[0];\n const nameValid = name.trim().length > 0;\n const canNext = step !== 0 || nameValid;\n const busy = phase === 'creating';\n\n async function handleCreate() {\n setPhase('creating');\n setMsg('');\n const numOrUndef = (v: string) => (v.trim() === '' ? undefined : Number(v));\n const node_spec = {\n name: name.trim(),\n runtime: runtimeId,\n ...(model ? { model } : {}),\n flags: {\n permissionMode,\n maxTurns: numOrUndef(maxTurns),\n budget: numOrUndef(budget),\n timeout: numOrUndef(timeout),\n },\n };\n try {\n const r = await fetch('/api/anet/node-create', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ node_spec, ...(networkId ? { network_id: networkId } : {}) }),\n });\n const data = await r.json().catch(() => ({}));\n if (r.ok && data?.ok) {\n setPhase('done');\n setMsg('创建请求已下发,节点正在拉起…');\n onCreated?.(data.result);\n } else if (data?.unconfirmed) {\n setPhase('unconfirmed');\n setMsg(`后端 create_node 未就绪:${data?.error || '不可用'}(测试 hub 可能未含 #299)`);\n } else {\n setPhase('error');\n setMsg(data?.error ? `创建失败:${data.error}` : '创建失败');\n }\n } catch (e) {\n setPhase('error');\n setMsg(`创建失败:${e instanceof Error ? e.message : '网络错误'}`);\n }\n }\n\n const inputCls =\n 'w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-gray-200 focus:border-cyan-600 focus:outline-none';\n\n return (\n <>\n <div className=\"fixed inset-0 bg-black/50 z-40\" onClick={onClose} aria-hidden />\n <div\n role=\"dialog\"\n aria-label=\"新建节点\"\n className=\"fixed left-1/2 top-1/2 z-50 w-[min(92vw,440px)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-[#26262b] bg-[#161618] shadow-2xl\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-[#26262b] px-4 py-3\">\n <div className=\"text-sm font-semibold text-white\">新建节点</div>\n <button onClick={onClose} aria-label=\"关闭\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md text-gray-500 hover:bg-white/5 hover:text-white\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" aria-hidden>\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n {/* Step indicator */}\n <div className=\"flex items-center gap-1.5 px-4 pt-3\">\n {STEPS.map((label, i) => (\n <div key={label} className=\"flex flex-1 flex-col items-center gap-1\">\n <div className={`h-1 w-full rounded-full ${i <= step ? 'bg-cyan-500' : 'bg-[#26262b]'}`} />\n <span className={`text-[10px] ${i === step ? 'text-cyan-300' : 'text-gray-600'}`}>{label}</span>\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className=\"min-h-[180px] px-4 py-4\">\n {phase !== 'form' ? (\n <div className=\"flex h-[180px] flex-col items-center justify-center gap-3 text-center\">\n {busy && (\n <svg className=\"h-7 w-7 animate-spin text-cyan-400\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-90\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z\" />\n </svg>\n )}\n <div className={`text-sm ${phase === 'done' ? 'text-green-300' : phase === 'error' ? 'text-red-300' : phase === 'unconfirmed' ? 'text-amber-300' : 'text-gray-300'}`}>\n {busy ? '正在创建…' : phase === 'done' && childUp ? `✓ ${name.trim()} 已上线` : msg}\n </div>\n {/* Real progress: poll the node list for the child to register\n (派单→fork→注册→✓). */}\n {phase === 'done' && (childUp ? (\n <p className=\"text-[11px] text-green-500/80\">节点已注册,已出现在节点列表。</p>\n ) : (\n <p className=\"inline-flex items-center gap-1.5 text-[11px] text-gray-500\">\n <svg className=\"h-3 w-3 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-90\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z\" />\n </svg>\n 正在监测 {name.trim()} 注册…(最长 ~24s)\n </p>\n ))}\n </div>\n ) : (\n <>\n {step === 0 && (\n <label className=\"block space-y-1.5\">\n <span className=\"text-xs text-gray-400\">节点名字</span>\n <input autoFocus value={name} onChange={e => setName(e.target.value)} placeholder=\"例如 my-agent-1\" className={inputCls} />\n {!nameValid && <span className=\"text-[11px] text-gray-600\">名字不能为空</span>}\n </label>\n )}\n {step === 1 && (\n <div className=\"space-y-2\">\n <span className=\"text-xs text-gray-400\">Runtime</span>\n {RUNTIMES.map(r => (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => { setRuntimeId(r.id); setModel(''); }}\n className={`flex w-full items-center justify-between rounded-md border px-3 py-2 text-sm transition-colors ${\n runtimeId === r.id ? 'border-cyan-600 bg-cyan-900/15 text-cyan-200' : 'border-[#26262b] bg-[#0e0e10] text-gray-300 hover:border-[#3a3a41]'\n }`}\n >\n {r.label}\n {runtimeId === r.id && (\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n )}\n </button>\n ))}\n </div>\n )}\n {step === 2 && (\n <label className=\"block space-y-1.5\">\n <span className=\"text-xs text-gray-400\">模型({runtime.label})</span>\n <select value={model} onChange={e => setModel(e.target.value)} className={inputCls}>\n <option value=\"\">默认</option>\n {runtime.models.map(m => <option key={m} value={m}>{m}</option>)}\n </select>\n </label>\n )}\n {step === 3 && (\n <div className=\"space-y-3\">\n <label className=\"block space-y-1.5\">\n <span className=\"text-xs text-gray-400\">permissionMode</span>\n <select value={permissionMode} onChange={e => setPermissionMode(e.target.value)} className={inputCls}>\n {PERMISSION_MODES.map(m => <option key={m} value={m}>{m}</option>)}\n </select>\n </label>\n <div className=\"grid grid-cols-3 gap-2\">\n <label className=\"space-y-1\"><span className=\"text-[11px] text-gray-500\">maxTurns</span><input inputMode=\"numeric\" value={maxTurns} onChange={e => setMaxTurns(e.target.value)} className={inputCls} /></label>\n <label className=\"space-y-1\"><span className=\"text-[11px] text-gray-500\">budget</span><input inputMode=\"numeric\" value={budget} onChange={e => setBudget(e.target.value)} className={inputCls} /></label>\n <label className=\"space-y-1\"><span className=\"text-[11px] text-gray-500\">timeout</span><input inputMode=\"numeric\" value={timeout} onChange={e => setTimeout(e.target.value)} className={inputCls} /></label>\n </div>\n </div>\n )}\n {step === 4 && (\n <div className=\"space-y-2 text-sm\">\n <div className=\"rounded-md border border-[#26262b] bg-[#0e0e10] divide-y divide-[#1c1c1f]\">\n {[['名字', name.trim() || '—'], ['Runtime', runtime.label], ['模型', model || '默认'], ['permissionMode', permissionMode], ['maxTurns / budget / timeout', `${maxTurns || '—'} / ${budget || '—'} / ${timeout || '—'}`]].map(([k, v]) => (\n <div key={k} className=\"flex items-start justify-between gap-3 px-3 py-2\">\n <span className=\"shrink-0 text-gray-500 text-xs\">{k}</span>\n <span className=\"text-right text-gray-200 text-xs break-all\">{v}</span>\n </div>\n ))}\n </div>\n <p className=\"text-[11px] text-gray-600\">P1:创建在本机 daemon(绕过选服务器)。</p>\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Footer nav */}\n {phase === 'form' ? (\n <div className=\"flex items-center justify-between border-t border-[#26262b] px-4 py-3\">\n <button type=\"button\" onClick={() => (step === 0 ? onClose() : setStep(step - 1))} className=\"rounded-md px-3 py-1.5 text-sm text-gray-400 hover:text-gray-200\">\n {step === 0 ? '取消' : '上一步'}\n </button>\n {step < STEPS.length - 1 ? (\n <button type=\"button\" disabled={!canNext} onClick={() => setStep(step + 1)} className={`rounded-md px-4 py-1.5 text-sm font-medium ${canNext ? 'bg-cyan-600 text-white hover:bg-cyan-500' : 'bg-[#1c1c1f] text-gray-600 cursor-not-allowed'}`}>\n 下一步\n </button>\n ) : (\n <button type=\"button\" onClick={handleCreate} className=\"rounded-md bg-green-600 px-4 py-1.5 text-sm font-medium text-white hover:bg-green-500\">\n 创建节点\n </button>\n )}\n </div>\n ) : (\n <div className=\"flex items-center justify-end border-t border-[#26262b] px-4 py-3\">\n <button type=\"button\" onClick={onClose} className=\"rounded-md bg-[#1c1c1f] px-4 py-1.5 text-sm text-gray-200 hover:bg-[#26262b]\">\n {phase === 'done' ? '完成' : '关闭'}\n </button>\n {(phase === 'error' || phase === 'unconfirmed') && (\n <button type=\"button\" onClick={() => setPhase('form')} className=\"ml-2 rounded-md bg-cyan-600 px-4 py-1.5 text-sm text-white hover:bg-cyan-500\">返回修改</button>\n )}\n </div>\n )}\n </div>\n </>\n );\n}\n"],"names":["RUNTIMES","id","label","models","PERMISSION_MODES","STEPS","CreateNodeWizard","networkId","onClose","onCreated","step","setStep","name","setName","runtimeId","setRuntimeId","model","setModel","permissionMode","setPermissionMode","maxTurns","setMaxTurns","budget","setBudget","timeout","setTimeout","phase","setPhase","msg","setMsg","childUp","setChildUp","ctxNetworkId","netId","onKey","e","key","window","addEventListener","removeEventListener","alive","tries","want","trim","tick","url","encodeURIComponent","r","fetch","cache","d","json","catch","list","Array","isArray","sessions","some","s","alias","t","clearTimeout","runtime","find","nameValid","length","canNext","busy","handleCreate","numOrUndef","v","undefined","Number","node_spec","flags","method","headers","body","JSON","stringify","network_id","data","ok","result","unconfirmed","error","Error","message","inputCls","className","onClick","role","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","map","i","cx","cy","autoFocus","value","onChange","target","placeholder","type","strokeLinejoin","m","inputMode","k","disabled"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[
|
|
1
|
+
module.exports=[81575,a=>{"use strict";var b=a.i(27085),c=a.i(82809);a.s(["default",0,function(){return(0,b.jsx)("main",{className:"min-h-screen bg-[#0b0b0d] px-4 py-5 text-gray-100 sm:px-6 lg:px-8",children:(0,b.jsxs)("div",{className:"mx-auto max-w-5xl space-y-5",children:[(0,b.jsxs)("header",{className:"rounded-2xl border border-[#26262b] bg-[#161618] p-4 sm:p-5 shadow-lg shadow-black/20",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 lg:ml-0 ml-10",children:[(0,b.jsxs)("div",{className:"flex items-baseline gap-2 min-w-0",children:[(0,b.jsx)("span",{className:"hidden sm:inline text-[11px] uppercase tracking-[0.18em] text-cyan-300/70 shrink-0",children:"Infrastructure"}),(0,b.jsx)("span",{className:"hidden sm:inline text-gray-700",children:"·"}),(0,b.jsx)("h1",{className:"text-xl sm:text-2xl font-semibold text-white truncate",children:"Servers"})]}),(0,b.jsxs)("div",{className:"shrink-0 rounded-full border border-cyan-500/20 bg-cyan-500/10 px-2.5 py-1 text-[11px] font-mono text-cyan-200 inline-flex items-center gap-1.5",children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:"live · refreshes every 5s"}),(0,b.jsx)("span",{className:"sm:hidden",children:"live"})]})]}),(0,b.jsx)("p",{className:"mt-2 max-w-2xl text-xs sm:text-sm leading-snug sm:leading-6 text-gray-400 truncate sm:whitespace-normal lg:ml-0 ml-10",title:"Host-level health, disk, memory, CPU history, and agent rollups from CommHub telemetry.",children:"Host-level health, disk, memory, CPU history, and agent rollups from CommHub telemetry."})]}),(0,b.jsx)("section",{className:"rounded-2xl border border-[#26262b] bg-[#161618] p-3 shadow-lg shadow-black/20",children:(0,b.jsx)(c.ServersPanel,{className:"max-h-none overflow-visible"})})]})})}])}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=dash-main-prep_app_servers_page_tsx_0zrm2-z._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../dash-main-prep/app/servers/page.tsx"],"sourcesContent":["'use client';\n\nimport { ServersPanel } from '../components/ServersDrawer';\n\nexport default function ServersPage() {\n return (\n <main className=\"min-h-screen bg-[#0b0b0d] px-4 py-5 text-gray-100 sm:px-6 lg:px-8\">\n <div className=\"mx-auto max-w-5xl space-y-5\">\n {/* #209 R37: header card compressed for mobile. Original layout\n stacked 4 things vertically on phones (INFRASTRUCTURE eyebrow,\n big h1, 3-line description, full-width \"live\" chip) eating\n ~50% of the iPhone viewport before any server card appeared.\n New shape:\n row 1: h1 \"Servers\" + tiny live chip (inline on every width)\n row 2: optional desc line, single-truncate on mobile so it\n fits without wrapping; full text via title= on hover.\n eyebrow: kept but inlined with h1 as small uppercase prefix\n (sm: up) — drops out on phones for density.\n p-5 → p-4 sm:p-5 also tightens the inner padding.\n Zero feature removed; the eyebrow + desc still render where\n there is room. */}\n <header className=\"rounded-2xl border border-[#26262b] bg-[#161618] p-4 sm:p-5 shadow-lg shadow-black/20\">\n <div className=\"flex items-center justify-between gap-3 lg:ml-0 ml-10\">\n <div className=\"flex items-baseline gap-2 min-w-0\">\n <span className=\"hidden sm:inline text-[11px] uppercase tracking-[0.18em] text-cyan-300/70 shrink-0\">\n Infrastructure\n </span>\n <span className=\"hidden sm:inline text-gray-700\">·</span>\n <h1 className=\"text-xl sm:text-2xl font-semibold text-white truncate\">Servers</h1>\n </div>\n <div className=\"shrink-0 rounded-full border border-cyan-500/20 bg-cyan-500/10 px-2.5 py-1 text-[11px] font-mono text-cyan-200 inline-flex items-center gap-1.5\">\n <span aria-hidden className=\"inline-block w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse\" />\n <span className=\"hidden sm:inline\">live · refreshes every 5s</span>\n <span className=\"sm:hidden\">live</span>\n </div>\n </div>\n <p\n className=\"mt-2 max-w-2xl text-xs sm:text-sm leading-snug sm:leading-6 text-gray-400 truncate sm:whitespace-normal lg:ml-0 ml-10\"\n title=\"Host-level health, disk, memory, CPU history, and agent rollups from CommHub telemetry.\"\n >\n Host-level health, disk, memory, CPU history, and agent rollups from CommHub telemetry.\n </p>\n </header>\n\n <section className=\"rounded-2xl border border-[#26262b] bg-[#161618] p-3 shadow-lg shadow-black/20\">\n <ServersPanel className=\"max-h-none overflow-visible\" />\n </section>\n </div>\n </main>\n );\n}\n"],"names":["ServersPage","className","title"],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,wBAEe,SAASA,EACtB,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKC,UAAU,6EACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,wCAcb,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAU,kGAChB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,kEACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,8CACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,8FAAqF,mBAGrG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,0CAAiC,MACjD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iEAAwD,eAExE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,4JACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,aAAW,CAAA,CAAA,EAACA,UAAU,oEAC5B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,4BAAmB,8BACnC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,qBAAY,eAGhC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACCA,UAAU,wHACVC,MAAM,mGACP,+FAKH,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CAAQD,UAAU,0FACjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAACA,UAAU,sCAKlC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[71554,a=>{"use strict";var b=a.i(80696),c=a.i(40138),d=a.i(72596),e=a.i(43450),f=a.i(5373),g=a.i(83986);let h={created:"text-gray-400",delivered:"text-blue-400",running:"text-green-400",replied:"text-purple-400",failed:"text-red-400",closed:"text-gray-500"};function i({taskId:a,onClose:d}){let[e,j]=(0,c.useState)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!0);(0,c.useEffect)(()=>{(async()=>{try{let[b,c]=await Promise.all([fetch(`/api/hub/tasks?task_id=${encodeURIComponent(a)}`),fetch(`/api/hub/task-events?task_id=${encodeURIComponent(a)}&limit=50`)]),d=await b.json(),e=await c.json();d.tasks?.[0]&&j(d.tasks[0]),l(e.events||[])}catch{}finally{n(!1)}})()},[a]);let o=e?[{key:"created",label:"Created",time:e.created_at,color:"bg-gray-400"},{key:"delivered",label:"Delivered",time:e.delivered_at,color:"bg-blue-400"},{key:"started",label:"Started",time:e.started_at,color:"bg-green-400"},{key:"completed",label:"Completed",time:e.completed_at,color:"bg-purple-400"}].map(a=>({...a,done:!!a.time})):[],p=o.findIndex(a=>!a.done),q=e&&"completed"!==e.status&&"failed"!==e.status&&"expired"!==e.status&&"cancelled"!==e.status,r=e?.started_at&&e?.completed_at?Math.round((new Date(e.completed_at).getTime()-new Date(e.started_at).getTime())/1e3):null;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-black/30 z-40 anet-fade-in",onClick:d}),(0,b.jsxs)("div",{className:"fixed top-0 right-0 h-[100dvh] w-full lg:w-[500px] bg-[#0b0b0d] border-l border-[#26262b] z-50 flex flex-col shadow-2xl shadow-black/60 overflow-y-auto animate-slide-in",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-[#26262b] bg-[#111113] sticky top-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-semibold text-white",children:"Task Detail"}),(0,b.jsxs)("div",{className:"text-[10px] text-gray-500 mt-0.5",children:[a.slice(0,16),"..."]})]}),(0,b.jsx)("button",{onClick:d,"aria-label":"Close task drawer",className:"inline-flex min-h-[44px] min-w-[44px] items-center justify-center text-gray-500 hover:text-white rounded-lg hover:bg-[#1c1c1f]",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),m?(0,b.jsx)("div",{className:"flex justify-center py-16",children:(0,b.jsx)("div",{className:"w-6 h-6 border-2 border-cyan-500/30 border-t-cyan-500 rounded-full animate-spin"})}):e?(0,b.jsxs)("div",{className:"px-5 py-5 space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("span",{className:`text-lg font-bold ${h[e.status]||"text-gray-400"}`,children:e.status}),"normal"!==e.priority&&(0,b.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${"high"===e.priority?"text-red-300 border-red-500/20":"text-gray-400 border-gray-600/20"}`,children:e.priority}),null!==r&&(0,b.jsxs)("span",{className:"text-xs text-gray-500",children:["⏱ ",r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm flex-wrap",children:[e.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:e.from_name,size:18}),(0,b.jsx)("span",{className:"text-gray-200 font-medium",children:e.from_name||"--"}),(0,b.jsx)("span",{className:"text-gray-600",children:"→"}),e.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:e.to_name,size:18}),(0,b.jsx)("span",{className:"text-gray-200 font-medium",children:e.to_name||"--"})]}),(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase tracking-wide",children:"Timeline"}),null!==r&&(0,b.jsxs)("div",{className:"text-[10px] text-gray-600",children:[r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`," runtime"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:o.map((a,c)=>{let d=q&&c===p,e=!!o[c+1]?.done;return(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsxs)("div",{className:"flex flex-col items-center pt-0.5",children:[(0,b.jsx)("span",{className:`relative w-3 h-3 rounded-full shrink-0 ${a.done?a.color:"bg-gray-700"}`,children:d&&(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute -inset-1 rounded-full border border-current opacity-60 anet-current-step-pulse",style:{borderColor:"currentColor"}})}),c<o.length-1&&(0,b.jsx)("div",{className:`w-0.5 h-5 mt-1 ${a.done&&e?"bg-gray-500":a.done?"bg-gradient-to-b from-gray-500 to-gray-800":"bg-gray-800"}`})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:`text-xs font-medium flex items-center gap-2 ${a.done?"text-gray-200":d?"text-cyan-300":"text-gray-600"}`,children:[(0,b.jsx)("span",{children:a.label}),d&&(0,b.jsx)("span",{className:"text-[9px] uppercase tracking-wide text-cyan-400",children:"in progress"})]}),(0,b.jsx)("div",{className:"text-[10px] text-gray-500",title:a.time||void 0,children:a.time?(0,f.timeAgo)(a.time):d?"—":"Pending"})]})]},a.key)})})]}),(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:"Input"}),(0,b.jsx)("div",{className:"text-sm text-gray-300 whitespace-pre-wrap",children:e.content||"--"})]}),e.result&&(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:"Output"}),(0,b.jsx)("div",{className:"text-sm text-gray-300 whitespace-pre-wrap max-h-64 overflow-y-auto",children:e.result})]}),k.length>0&&(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsxs)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:["Events (",k.length,")"]}),(0,b.jsx)("div",{className:"space-y-1.5 max-h-40 overflow-y-auto",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[11px]",children:[(0,b.jsx)("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${"running"===a.to_status?"bg-green-400":"replied"===a.to_status?"bg-purple-400":"failed"===a.to_status?"bg-red-400":"bg-blue-400"}`}),(0,b.jsx)("span",{className:"text-gray-400",children:a.event_type}),a.from_status&&(0,b.jsxs)("span",{className:"text-gray-600",children:[a.from_status,"→",a.to_status]}),(0,b.jsx)("span",{className:"text-gray-600 ml-auto",children:(0,f.timeAgo)(a.created_at)})]},a.id))})]}),(0,b.jsxs)("div",{className:"text-[10px] text-gray-600 space-y-1",children:[(0,b.jsxs)("div",{children:["Task ID: ",e.task_id]}),e.expires_at&&(0,b.jsxs)("div",{children:["Expires: ",e.expires_at]})]})]}):(0,b.jsx)("div",{className:"text-center py-16 text-gray-500",children:"Task not found"})]})]})}var j=a.i(82959),k=a.i(51384);function l(a){let b=k.STATUS_CHIP_CLASS[a]||"bg-gray-500/10 text-gray-400 border-gray-500/20";return`text-xs px-2 py-0.5 rounded-md border ${b}`}function m(a){return"high"===a?"text-red-400":"low"===a?"text-gray-600":"text-gray-400"}function n(a){if(!a)return"--";let b=Math.floor((Date.now()-new Date(a.replace(" ","T")+"Z").getTime())/1e3);return b<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`}function o(){let a,h,o,p,q=(0,d.useSearchParams)(),{networkId:r}=(0,e.useNetworkId)(),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(0),[w,x]=(0,c.useState)(!0),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)(new Set),[C,D]=(0,c.useState)(q.get("status")||""),[E,F]=(0,c.useState)(""),[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(null),K=a=>{B(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},L=(0,c.useCallback)(async()=>{try{let a=new URLSearchParams;r&&a.set("network_id",r),C&&a.set("status",C),E&&a.set("from_name",E),G&&a.set("to_name",G),a.set("limit","100");let b=await fetch(`/api/hub/tasks?${a.toString()}`);if(401===b.status)return void window.location.assign("/login");let c=await b.json();t(c.tasks||[]),v(c.count??(c.tasks?.length||0)),z("")}catch(a){z(a instanceof Error?a.message:"fetch failed")}finally{x(!1)}},[C,E,G,r]);return(0,c.useEffect)(()=>{x(!0),L();let a=setInterval(L,5e3);return()=>clearInterval(a)},[L]),(0,b.jsxs)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4 mb-4 sm:mb-6",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Tasks"}),s.length<u&&(0,b.jsxs)("span",{className:"text-xs bg-blue-900/30 text-blue-400 px-2 py-0.5 rounded-full border border-blue-800/30 tabular-nums",title:`Showing ${s.length} of ${u} tasks`,children:[s.length," / ",u]})]}),s.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"anet-tabstrip-wrap mb-4",children:(0,b.jsx)("div",{className:"anet-tabstrip flex sm:flex-wrap gap-1 bg-[#161618] rounded-lg border border-[#26262b] p-1 overflow-x-auto sm:overflow-x-visible scrollbar-thin",children:(a={},s.forEach(b=>{a[b.status]=(a[b.status]||0)+1}),["",...k.TASK_STATUSES].map(c=>{let d=""===c?s.length:a[c]||0,e=C===c;return(0,b.jsxs)("button",{onClick:()=>D(c),disabled:0===d&&""!==c&&!e,className:`px-3 py-1.5 rounded-md text-xs transition-colors flex items-center gap-1.5 shrink-0 whitespace-nowrap disabled:opacity-30 disabled:cursor-not-allowed ${e?`${k.STATUS_CHIP_CLASS[c]||"bg-cyan-500/10 text-cyan-300 border-cyan-500/20"} border`:"text-gray-500 hover:text-gray-300 hover:bg-[#1c1c1f]/40"}`,children:[c&&(0,b.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:k.STATUS_DOT_HEX[c]||"#6b7280"}}),(0,b.jsx)("span",{children:c||"All"}),(0,b.jsx)("span",{className:`text-[10px] tabular-nums ${e?"opacity-80":"text-gray-600"}`,children:d})]},c)}))})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-4 sm:mb-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40",children:[(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"From"}),(0,b.jsx)("input",{type:"text",value:E,onChange:a=>F(a.target.value),placeholder:"any node",className:"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40",children:[(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"To"}),(0,b.jsx)("input",{type:"text",value:G,onChange:a=>H(a.target.value),placeholder:"any node",className:"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none"})]}),(C||E||G)&&(0,b.jsx)("button",{type:"button",onClick:()=>{D(""),F(""),H("")},className:"rounded-lg border border-gray-700 px-2.5 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:border-gray-600",children:"Clear filters"})]})]}),s.length>0&&!C&&(h={},s.forEach(a=>{h[a.status]=(h[a.status]||0)+1}),o=s.length||1,(p=k.TASK_STATUSES.map(a=>({key:a,color:k.STATUS_BAR_CLASS[a]})).filter(a=>h[a.key])).length?(0,b.jsx)("div",{className:"mb-6",children:(0,b.jsx)("div",{className:"flex h-2 rounded-full overflow-hidden bg-gray-800",children:p.map(a=>(0,b.jsx)("div",{className:a.color,style:{width:`${h[a.key]/o*100}%`},title:`${a.key}: ${h[a.key]}`},a.key))})}):null),y&&(0,b.jsx)("div",{className:"bg-red-900/20 border border-red-800/40 text-red-300 px-4 py-2 rounded-lg mb-6 text-sm",children:y}),w?(0,b.jsx)("div",{className:"animate-pulse space-y-3",children:[1,2,3,4,5].map(a=>(0,b.jsx)("div",{className:"h-20 bg-gray-800/20 rounded-lg border border-gray-800/40"},a))}):0===s.length?(0,b.jsx)(j.EmptyState,{variant:"tasks",sub:C||E||G?"No tasks match the current filters. Try clearing them.":"Tasks will appear here when agents send them via CommHub."}):(0,b.jsxs)("div",{className:"space-y-1 sm:space-y-2",children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase",children:[(0,b.jsx)("div",{className:"col-span-1",children:"Status"}),(0,b.jsx)("div",{className:"col-span-2",children:"From"}),(0,b.jsx)("div",{className:"col-span-2",children:"To"}),(0,b.jsx)("div",{className:"col-span-4",children:"Content"}),(0,b.jsx)("div",{className:"col-span-1",children:"Priority"}),(0,b.jsx)("div",{className:"col-span-2",children:"Time"})]}),s.map(a=>{let c=A.has(a.task_id);return(0,b.jsxs)("div",{className:`anet-task-row group bg-[#161618] border rounded-lg px-3 py-2 sm:px-4 sm:py-3 transition-all duration-200 cursor-pointer ${c?"border-[#3a3a41] shadow-lg shadow-black/20":"border-[#26262b] hover:border-[#3a3a41] hover:bg-[#15152e]"}`,onClick:()=>K(a.task_id),role:"button",tabIndex:0,"aria-expanded":c,onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),K(a.task_id))},children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 items-center",children:[(0,b.jsx)("div",{className:"col-span-1",children:(0,b.jsx)("span",{className:l(a.status),children:a.status})}),(0,b.jsxs)("div",{className:"col-span-2 flex items-center gap-1.5 min-w-0",title:a.from_name,children:[a.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.from_name,size:18}),(0,b.jsx)("span",{className:"truncate text-sm text-gray-200",children:a.from_name||"--"})]}),(0,b.jsxs)("div",{className:"col-span-2 flex items-center gap-1.5 min-w-0",title:a.to_name,children:[a.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.to_name,size:18}),(0,b.jsx)("span",{className:"truncate text-sm text-gray-200",children:a.to_name||"--"})]}),(0,b.jsx)("div",{className:"col-span-4 text-xs text-gray-400 truncate",title:a.content,children:(0,f.previewContent)(a.content)}),(0,b.jsx)("div",{className:"col-span-1",children:(0,b.jsx)("span",{className:`text-xs ${m(a.priority)}`,children:a.priority||"normal"})}),(0,b.jsxs)("div",{className:"col-span-2 text-xs text-gray-500 flex items-center justify-between gap-2",title:a.created_at,children:[(0,b.jsx)("span",{className:"truncate",children:n(a.created_at)}),(0,b.jsx)("svg",{"aria-hidden":!0,className:`shrink-0 text-gray-600 group-hover:text-gray-400 transition-transform duration-200 ${c?"rotate-180":""}`,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 9l6 6 6-6"})})]})]}),(0,b.jsxs)("div",{className:"sm:hidden space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:l(a.status),children:a.status}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:`text-xs ${m(a.priority)}`,children:a.priority||"normal"}),(0,b.jsx)("svg",{"aria-hidden":!0,className:`text-gray-600 transition-transform duration-200 ${c?"rotate-180":""}`,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 9l6 6 6-6"})})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-gray-300 min-w-0",children:[a.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.from_name,size:16}),(0,b.jsx)("span",{className:"truncate max-w-[35%]",children:a.from_name||"--"}),(0,b.jsx)("span",{className:"text-gray-600",children:"→"}),a.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.to_name,size:16}),(0,b.jsx)("span",{className:"truncate max-w-[35%]",children:a.to_name||"--"}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-[10px] text-gray-600",children:n(a.created_at)})]}),(0,b.jsx)("div",{className:"text-xs text-gray-400 line-clamp-1",title:a.content,children:(0,f.previewContent)(a.content)})]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-out ${c?"grid-rows-[1fr] opacity-100 mt-3":"grid-rows-[0fr] opacity-0"}`,"aria-hidden":!c,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"pt-3 border-t border-[#26262b] space-y-3",children:[a.content&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-xs text-gray-600 mb-1",children:"Content"}),(0,b.jsx)("div",{className:"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f]",children:a.content})]}),a.result&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-xs text-gray-600 mb-1",children:"Result"}),(0,b.jsx)("div",{className:"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f] max-h-48 overflow-y-auto",children:a.result})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[["Created",a.created_at],["Delivered",a.delivered_at],["Started",a.started_at],["Completed",a.completed_at]].map(([a,c])=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("span",{className:"text-gray-600",children:[a,": "]}),(0,b.jsx)("span",{className:"text-gray-400",children:c?n(c):"--"})]},a))}),a.expires_at&&(0,b.jsxs)("div",{className:"text-xs",children:[(0,b.jsx)("span",{className:"text-gray-600",children:"Expires: "}),(0,b.jsx)("span",{className:"text-orange-400",children:a.expires_at})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"text-xs text-gray-600 truncate",title:a.task_id,children:["ID: ",a.task_id]}),(0,b.jsxs)("div",{className:"flex gap-2 shrink-0",children:[("failed"===a.status||"expired"===a.status)&&(0,b.jsx)("button",{onClick:async b=>{b.stopPropagation(),await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:a.to_name,task:a.content,priority:a.priority})}),L()},className:"text-xs text-orange-400 hover:text-orange-300 px-2 py-0.5 rounded border border-orange-500/20 hover:bg-orange-500/10",children:"Retry"}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),J(a.task_id)},className:"text-xs text-cyan-400 hover:text-cyan-300",children:"Detail →"})]})]})]})})})]},a.task_id)})]}),I&&(0,b.jsx)(i,{taskId:I,onClose:()=>J(null)})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:(0,b.jsx)("div",{className:"lg:ml-0 ml-10 text-gray-500 text-sm",children:"Loading tasks…"})}),children:(0,b.jsx)(o,{})})}],71554)}];
|
|
1
|
+
module.exports=[93001,a=>{"use strict";var b=a.i(27085),c=a.i(46710),d=a.i(80875),e=a.i(54438),f=a.i(4230),g=a.i(72293);let h={created:"text-gray-400",delivered:"text-blue-400",running:"text-green-400",replied:"text-purple-400",failed:"text-red-400",closed:"text-gray-500"};function i({taskId:a,onClose:d}){let[e,j]=(0,c.useState)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!0);(0,c.useEffect)(()=>{(async()=>{try{let[b,c]=await Promise.all([fetch(`/api/hub/tasks?task_id=${encodeURIComponent(a)}`),fetch(`/api/hub/task-events?task_id=${encodeURIComponent(a)}&limit=50`)]),d=await b.json(),e=await c.json();d.tasks?.[0]&&j(d.tasks[0]),l(e.events||[])}catch{}finally{n(!1)}})()},[a]);let o=e?[{key:"created",label:"Created",time:e.created_at,color:"bg-gray-400"},{key:"delivered",label:"Delivered",time:e.delivered_at,color:"bg-blue-400"},{key:"started",label:"Started",time:e.started_at,color:"bg-green-400"},{key:"completed",label:"Completed",time:e.completed_at,color:"bg-purple-400"}].map(a=>({...a,done:!!a.time})):[],p=o.findIndex(a=>!a.done),q=e&&"completed"!==e.status&&"failed"!==e.status&&"expired"!==e.status&&"cancelled"!==e.status,r=e?.started_at&&e?.completed_at?Math.round((new Date(e.completed_at).getTime()-new Date(e.started_at).getTime())/1e3):null;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-black/30 z-40 anet-fade-in",onClick:d}),(0,b.jsxs)("div",{className:"fixed top-0 right-0 h-[100dvh] w-full lg:w-[500px] bg-[#0b0b0d] border-l border-[#26262b] z-50 flex flex-col shadow-2xl shadow-black/60 overflow-y-auto animate-slide-in",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-[#26262b] bg-[#111113] sticky top-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-semibold text-white",children:"Task Detail"}),(0,b.jsxs)("div",{className:"text-[10px] text-gray-500 mt-0.5",children:[a.slice(0,16),"..."]})]}),(0,b.jsx)("button",{onClick:d,"aria-label":"Close task drawer",className:"inline-flex min-h-[44px] min-w-[44px] items-center justify-center text-gray-500 hover:text-white rounded-lg hover:bg-[#1c1c1f]",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),m?(0,b.jsx)("div",{className:"flex justify-center py-16",children:(0,b.jsx)("div",{className:"w-6 h-6 border-2 border-cyan-500/30 border-t-cyan-500 rounded-full animate-spin"})}):e?(0,b.jsxs)("div",{className:"px-5 py-5 space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("span",{className:`text-lg font-bold ${h[e.status]||"text-gray-400"}`,children:e.status}),"normal"!==e.priority&&(0,b.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${"high"===e.priority?"text-red-300 border-red-500/20":"text-gray-400 border-gray-600/20"}`,children:e.priority}),null!==r&&(0,b.jsxs)("span",{className:"text-xs text-gray-500",children:["⏱ ",r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm flex-wrap",children:[e.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:e.from_name,size:18}),(0,b.jsx)("span",{className:"text-gray-200 font-medium",children:e.from_name||"--"}),(0,b.jsx)("span",{className:"text-gray-600",children:"→"}),e.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:e.to_name,size:18}),(0,b.jsx)("span",{className:"text-gray-200 font-medium",children:e.to_name||"--"})]}),(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase tracking-wide",children:"Timeline"}),null!==r&&(0,b.jsxs)("div",{className:"text-[10px] text-gray-600",children:[r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`," runtime"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:o.map((a,c)=>{let d=q&&c===p,e=!!o[c+1]?.done;return(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsxs)("div",{className:"flex flex-col items-center pt-0.5",children:[(0,b.jsx)("span",{className:`relative w-3 h-3 rounded-full shrink-0 ${a.done?a.color:"bg-gray-700"}`,children:d&&(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute -inset-1 rounded-full border border-current opacity-60 anet-current-step-pulse",style:{borderColor:"currentColor"}})}),c<o.length-1&&(0,b.jsx)("div",{className:`w-0.5 h-5 mt-1 ${a.done&&e?"bg-gray-500":a.done?"bg-gradient-to-b from-gray-500 to-gray-800":"bg-gray-800"}`})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:`text-xs font-medium flex items-center gap-2 ${a.done?"text-gray-200":d?"text-cyan-300":"text-gray-600"}`,children:[(0,b.jsx)("span",{children:a.label}),d&&(0,b.jsx)("span",{className:"text-[9px] uppercase tracking-wide text-cyan-400",children:"in progress"})]}),(0,b.jsx)("div",{className:"text-[10px] text-gray-500",title:a.time||void 0,children:a.time?(0,f.timeAgo)(a.time):d?"—":"Pending"})]})]},a.key)})})]}),(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:"Input"}),(0,b.jsx)("div",{className:"text-sm text-gray-300 whitespace-pre-wrap",children:e.content||"--"})]}),e.result&&(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:"Output"}),(0,b.jsx)("div",{className:"text-sm text-gray-300 whitespace-pre-wrap max-h-64 overflow-y-auto",children:e.result})]}),k.length>0&&(0,b.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,b.jsxs)("div",{className:"text-xs text-gray-500 uppercase mb-2",children:["Events (",k.length,")"]}),(0,b.jsx)("div",{className:"space-y-1.5 max-h-40 overflow-y-auto",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[11px]",children:[(0,b.jsx)("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${"running"===a.to_status?"bg-green-400":"replied"===a.to_status?"bg-purple-400":"failed"===a.to_status?"bg-red-400":"bg-blue-400"}`}),(0,b.jsx)("span",{className:"text-gray-400",children:a.event_type}),a.from_status&&(0,b.jsxs)("span",{className:"text-gray-600",children:[a.from_status,"→",a.to_status]}),(0,b.jsx)("span",{className:"text-gray-600 ml-auto",children:(0,f.timeAgo)(a.created_at)})]},a.id))})]}),(0,b.jsxs)("div",{className:"text-[10px] text-gray-600 space-y-1",children:[(0,b.jsxs)("div",{children:["Task ID: ",e.task_id]}),e.expires_at&&(0,b.jsxs)("div",{children:["Expires: ",e.expires_at]})]})]}):(0,b.jsx)("div",{className:"text-center py-16 text-gray-500",children:"Task not found"})]})]})}var j=a.i(87249),k=a.i(46584);function l(a){let b=k.STATUS_CHIP_CLASS[a]||"bg-gray-500/10 text-gray-400 border-gray-500/20";return`text-xs px-2 py-0.5 rounded-md border ${b}`}function m(a){return"high"===a?"text-red-400":"low"===a?"text-gray-600":"text-gray-400"}function n(a){if(!a)return"--";let b=Math.floor((Date.now()-new Date(a.replace(" ","T")+"Z").getTime())/1e3);return b<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`}function o(){let a,h,o,p,q=(0,d.useSearchParams)(),{networkId:r}=(0,e.useNetworkId)(),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(0),[w,x]=(0,c.useState)(!0),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)(new Set),[C,D]=(0,c.useState)(q.get("status")||""),[E,F]=(0,c.useState)(""),[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(null),K=a=>{B(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},L=(0,c.useCallback)(async()=>{try{let a=new URLSearchParams;r&&a.set("network_id",r),C&&a.set("status",C),E&&a.set("from_name",E),G&&a.set("to_name",G),a.set("limit","100");let b=await fetch(`/api/hub/tasks?${a.toString()}`);if(401===b.status)return void window.location.assign("/login");let c=await b.json();t(c.tasks||[]),v(c.count??(c.tasks?.length||0)),z("")}catch(a){z(a instanceof Error?a.message:"fetch failed")}finally{x(!1)}},[C,E,G,r]);return(0,c.useEffect)(()=>{x(!0),L();let a=setInterval(L,5e3);return()=>clearInterval(a)},[L]),(0,b.jsxs)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4 mb-4 sm:mb-6",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Tasks"}),s.length<u&&(0,b.jsxs)("span",{className:"text-xs bg-blue-900/30 text-blue-400 px-2 py-0.5 rounded-full border border-blue-800/30 tabular-nums",title:`Showing ${s.length} of ${u} tasks`,children:[s.length," / ",u]})]}),s.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"anet-tabstrip-wrap mb-4",children:(0,b.jsx)("div",{className:"anet-tabstrip flex sm:flex-wrap gap-1 bg-[#161618] rounded-lg border border-[#26262b] p-1 overflow-x-auto sm:overflow-x-visible scrollbar-thin",children:(a={},s.forEach(b=>{a[b.status]=(a[b.status]||0)+1}),["",...k.TASK_STATUSES].map(c=>{let d=""===c?s.length:a[c]||0,e=C===c;return(0,b.jsxs)("button",{onClick:()=>D(c),disabled:0===d&&""!==c&&!e,className:`px-3 py-1.5 rounded-md text-xs transition-colors flex items-center gap-1.5 shrink-0 whitespace-nowrap disabled:opacity-30 disabled:cursor-not-allowed ${e?`${k.STATUS_CHIP_CLASS[c]||"bg-cyan-500/10 text-cyan-300 border-cyan-500/20"} border`:"text-gray-500 hover:text-gray-300 hover:bg-[#1c1c1f]/40"}`,children:[c&&(0,b.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:k.STATUS_DOT_HEX[c]||"#6b7280"}}),(0,b.jsx)("span",{children:c||"All"}),(0,b.jsx)("span",{className:`text-[10px] tabular-nums ${e?"opacity-80":"text-gray-600"}`,children:d})]},c)}))})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-4 sm:mb-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40",children:[(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"From"}),(0,b.jsx)("input",{type:"text",value:E,onChange:a=>F(a.target.value),placeholder:"any node",className:"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40",children:[(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"To"}),(0,b.jsx)("input",{type:"text",value:G,onChange:a=>H(a.target.value),placeholder:"any node",className:"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none"})]}),(C||E||G)&&(0,b.jsx)("button",{type:"button",onClick:()=>{D(""),F(""),H("")},className:"rounded-lg border border-gray-700 px-2.5 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:border-gray-600",children:"Clear filters"})]})]}),s.length>0&&!C&&(h={},s.forEach(a=>{h[a.status]=(h[a.status]||0)+1}),o=s.length||1,(p=k.TASK_STATUSES.map(a=>({key:a,color:k.STATUS_BAR_CLASS[a]})).filter(a=>h[a.key])).length?(0,b.jsx)("div",{className:"mb-6",children:(0,b.jsx)("div",{className:"flex h-2 rounded-full overflow-hidden bg-gray-800",children:p.map(a=>(0,b.jsx)("div",{className:a.color,style:{width:`${h[a.key]/o*100}%`},title:`${a.key}: ${h[a.key]}`},a.key))})}):null),y&&(0,b.jsx)("div",{className:"bg-red-900/20 border border-red-800/40 text-red-300 px-4 py-2 rounded-lg mb-6 text-sm",children:y}),w?(0,b.jsx)("div",{className:"animate-pulse space-y-3",children:[1,2,3,4,5].map(a=>(0,b.jsx)("div",{className:"h-20 bg-gray-800/20 rounded-lg border border-gray-800/40"},a))}):0===s.length?(0,b.jsx)(j.EmptyState,{variant:"tasks",sub:C||E||G?"No tasks match the current filters. Try clearing them.":"Tasks will appear here when agents send them via CommHub."}):(0,b.jsxs)("div",{className:"space-y-1 sm:space-y-2",children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase",children:[(0,b.jsx)("div",{className:"col-span-1",children:"Status"}),(0,b.jsx)("div",{className:"col-span-2",children:"From"}),(0,b.jsx)("div",{className:"col-span-2",children:"To"}),(0,b.jsx)("div",{className:"col-span-4",children:"Content"}),(0,b.jsx)("div",{className:"col-span-1",children:"Priority"}),(0,b.jsx)("div",{className:"col-span-2",children:"Time"})]}),s.map(a=>{let c=A.has(a.task_id);return(0,b.jsxs)("div",{className:`anet-task-row group bg-[#161618] border rounded-lg px-3 py-2 sm:px-4 sm:py-3 transition-all duration-200 cursor-pointer ${c?"border-[#3a3a41] shadow-lg shadow-black/20":"border-[#26262b] hover:border-[#3a3a41] hover:bg-[#15152e]"}`,onClick:()=>K(a.task_id),role:"button",tabIndex:0,"aria-expanded":c,onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),K(a.task_id))},children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 items-center",children:[(0,b.jsx)("div",{className:"col-span-1",children:(0,b.jsx)("span",{className:l(a.status),children:a.status})}),(0,b.jsxs)("div",{className:"col-span-2 flex items-center gap-1.5 min-w-0",title:a.from_name,children:[a.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.from_name,size:18}),(0,b.jsx)("span",{className:"truncate text-sm text-gray-200",children:a.from_name||"--"})]}),(0,b.jsxs)("div",{className:"col-span-2 flex items-center gap-1.5 min-w-0",title:a.to_name,children:[a.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.to_name,size:18}),(0,b.jsx)("span",{className:"truncate text-sm text-gray-200",children:a.to_name||"--"})]}),(0,b.jsx)("div",{className:"col-span-4 text-xs text-gray-400 truncate",title:a.content,children:(0,f.previewContent)(a.content)}),(0,b.jsx)("div",{className:"col-span-1",children:(0,b.jsx)("span",{className:`text-xs ${m(a.priority)}`,children:a.priority||"normal"})}),(0,b.jsxs)("div",{className:"col-span-2 text-xs text-gray-500 flex items-center justify-between gap-2",title:a.created_at,children:[(0,b.jsx)("span",{className:"truncate",children:n(a.created_at)}),(0,b.jsx)("svg",{"aria-hidden":!0,className:`shrink-0 text-gray-600 group-hover:text-gray-400 transition-transform duration-200 ${c?"rotate-180":""}`,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 9l6 6 6-6"})})]})]}),(0,b.jsxs)("div",{className:"sm:hidden space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:l(a.status),children:a.status}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:`text-xs ${m(a.priority)}`,children:a.priority||"normal"}),(0,b.jsx)("svg",{"aria-hidden":!0,className:`text-gray-600 transition-transform duration-200 ${c?"rotate-180":""}`,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 9l6 6 6-6"})})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-gray-300 min-w-0",children:[a.from_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.from_name,size:16}),(0,b.jsx)("span",{className:"truncate max-w-[35%]",children:a.from_name||"--"}),(0,b.jsx)("span",{className:"text-gray-600",children:"→"}),a.to_name&&(0,b.jsx)(g.AliasAvatar,{alias:a.to_name,size:16}),(0,b.jsx)("span",{className:"truncate max-w-[35%]",children:a.to_name||"--"}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-[10px] text-gray-600",children:n(a.created_at)})]}),(0,b.jsx)("div",{className:"text-xs text-gray-400 line-clamp-1",title:a.content,children:(0,f.previewContent)(a.content)})]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-out ${c?"grid-rows-[1fr] opacity-100 mt-3":"grid-rows-[0fr] opacity-0"}`,"aria-hidden":!c,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"pt-3 border-t border-[#26262b] space-y-3",children:[a.content&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-xs text-gray-600 mb-1",children:"Content"}),(0,b.jsx)("div",{className:"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f]",children:a.content})]}),a.result&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-xs text-gray-600 mb-1",children:"Result"}),(0,b.jsx)("div",{className:"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f] max-h-48 overflow-y-auto",children:a.result})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[["Created",a.created_at],["Delivered",a.delivered_at],["Started",a.started_at],["Completed",a.completed_at]].map(([a,c])=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("span",{className:"text-gray-600",children:[a,": "]}),(0,b.jsx)("span",{className:"text-gray-400",children:c?n(c):"--"})]},a))}),a.expires_at&&(0,b.jsxs)("div",{className:"text-xs",children:[(0,b.jsx)("span",{className:"text-gray-600",children:"Expires: "}),(0,b.jsx)("span",{className:"text-orange-400",children:a.expires_at})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"text-xs text-gray-600 truncate",title:a.task_id,children:["ID: ",a.task_id]}),(0,b.jsxs)("div",{className:"flex gap-2 shrink-0",children:[("failed"===a.status||"expired"===a.status)&&(0,b.jsx)("button",{onClick:async b=>{b.stopPropagation(),await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:a.to_name,task:a.content,priority:a.priority})}),L()},className:"text-xs text-orange-400 hover:text-orange-300 px-2 py-0.5 rounded border border-orange-500/20 hover:bg-orange-500/10",children:"Retry"}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),J(a.task_id)},className:"text-xs text-cyan-400 hover:text-cyan-300",children:"Detail →"})]})]})]})})})]},a.task_id)})]}),I&&(0,b.jsx)(i,{taskId:I,onClose:()=>J(null)})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:(0,b.jsx)("div",{className:"lg:ml-0 ml-10 text-gray-500 text-sm",children:"Loading tasks…"})}),children:(0,b.jsx)(o,{})})}],93001)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=dash-main-prep_app_tasks_page_tsx_013t47c._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../dash-main-prep/app/tasks/page.tsx","../../../../../dash-main-prep/app/components/TaskDrawer.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState, useCallback, Suspense } from 'react';\nimport { useSearchParams } from 'next/navigation';\nimport Link from 'next/link';\nimport { useNetworkId } from '../lib/network-context';\nimport { TaskDrawer } from '../components/TaskDrawer';\nimport { EmptyState } from '../components/EmptyState';\nimport { AliasAvatar } from '../components/AliasAvatar';\nimport { previewContent } from '../components/utils';\nimport { TASK_STATUSES, STATUS_CHIP_CLASS, STATUS_DOT_HEX, STATUS_BAR_CLASS } from '../lib/status';\n\ninterface Task {\n task_id: string;\n from_name: string;\n to_name: string;\n status: string;\n priority: string;\n content: string;\n result: string;\n created_at: string;\n updated_at: string;\n delivered_at: string;\n started_at: string;\n completed_at: string;\n expires_at: string;\n}\n\nfunction statusBadge(status: string) {\n const color = STATUS_CHIP_CLASS[status] || 'bg-gray-500/10 text-gray-400 border-gray-500/20';\n return `text-xs px-2 py-0.5 rounded-md border ${color}`;\n}\n\nfunction priorityBadge(priority: string) {\n if (priority === 'high') return 'text-red-400';\n if (priority === 'low') return 'text-gray-600';\n return 'text-gray-400';\n}\n\nfunction timeAgo(dateStr: string): string {\n if (!dateStr) return '--';\n const diff = Date.now() - new Date(dateStr.replace(' ', 'T') + 'Z').getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return `${s}s ago`;\n if (s < 3600) return `${Math.floor(s / 60)}m ago`;\n if (s < 86400) return `${Math.floor(s / 3600)}h ago`;\n return `${Math.floor(s / 86400)}d ago`;\n}\n\nfunction TasksContent() {\n const searchParams = useSearchParams();\n const { networkId } = useNetworkId();\n const [tasks, setTasks] = useState<Task[]>([]);\n const [count, setCount] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState('');\n const [expanded, setExpanded] = useState<Set<string>>(new Set());\n\n const [filterStatus, setFilterStatus] = useState(searchParams.get('status') || '');\n const [filterFrom, setFilterFrom] = useState('');\n const [filterTo, setFilterTo] = useState('');\n const [drawerTaskId, setDrawerTaskId] = useState<string | null>(null);\n\n const toggleExpand = (taskId: string) => {\n setExpanded(prev => {\n const next = new Set(prev);\n if (next.has(taskId)) next.delete(taskId);\n else next.add(taskId);\n return next;\n });\n };\n\n const fetchTasks = useCallback(async () => {\n try {\n const params = new URLSearchParams();\n if (networkId) params.set('network_id', networkId);\n if (filterStatus) params.set('status', filterStatus);\n if (filterFrom) params.set('from_name', filterFrom);\n if (filterTo) params.set('to_name', filterTo);\n params.set('limit', '100');\n\n const res = await fetch(`/api/hub/tasks?${params.toString()}`);\n if (res.status === 401) {\n window.location.assign('/login');\n return;\n }\n const data = await res.json();\n setTasks(data.tasks || []);\n setCount(data.count ?? (data.tasks?.length || 0));\n setError('');\n } catch (e: unknown) {\n setError(e instanceof Error ? e.message : 'fetch failed');\n } finally {\n setLoading(false);\n }\n }, [filterStatus, filterFrom, filterTo, networkId]);\n\n useEffect(() => {\n setLoading(true);\n fetchTasks();\n const interval = setInterval(fetchTasks, 5000);\n return () => clearInterval(interval);\n }, [fetchTasks]);\n\n return (\n <div className=\"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6\">\n {/* Header.\n #209 R30 (mobile vertical rhythm — goal \"大幅提升移动端体验\",\n extending R28's Overview pattern to /tasks): this mb-6 + the\n From/To filter row mb-6 below both drop to mb-4 on phones,\n restoring mb-6 from sm: up. Saves ~16 px per spot = ~32 px of\n scroll reclaim on /tasks before the actual task rows. /tasks\n is the second-most-trafficked page after Overview. */}\n <div className=\"flex items-center gap-4 mb-4 sm:mb-6\">\n <h1 className=\"text-2xl font-bold text-white lg:ml-0 ml-10\">Tasks</h1>\n {/* Round 88 made this chip pagination-aware; #217 D6 hides it\n entirely in the common case — the All tab right below shows\n the same count. It only renders when it carries unique info\n (loaded < total ⇒ the list is a slice). */}\n {tasks.length < count && (\n <span\n className=\"text-xs bg-blue-900/30 text-blue-400 px-2 py-0.5 rounded-full border border-blue-800/30 tabular-nums\"\n title={`Showing ${tasks.length} of ${count} tasks`}\n >\n {tasks.length} / {count}\n </span>\n )}\n </div>\n\n {/* Round 75: hide the status tab strip + From/To filter row when\n there are no tasks at all. Each tab would show \"0\" and the\n filter inputs would have nothing to act on — pure noise above\n the empty-state CTA. When at least one task exists, the chrome\n comes back even if the current filter happens to hide\n everything (so users can clear filters). */}\n {tasks.length > 0 && <>\n {/* Status Tabs — color-coded dots per status family so users can\n scan the row at a glance. Active tab gets full chip styling\n (bg + border + text color), inactive tabs only carry the dot\n + neutral label so the active state remains the strong cue.\n On narrow viewports (<sm) the row scrolls horizontally with\n subtle gradient fade-edges (via .anet-tabstrip-wrap pseudo\n elements) hinting more content. */}\n <div className=\"anet-tabstrip-wrap mb-4\">\n <div className=\"anet-tabstrip flex sm:flex-wrap gap-1 bg-[#161618] rounded-lg border border-[#26262b] p-1 overflow-x-auto sm:overflow-x-visible scrollbar-thin\">\n {(() => {\n // Round 56: compute per-status counts so the tab strip doubles as a\n // status distribution dashboard. Matches Audit Log (r43) + Overview\n // agent filter (r34) chip-with-count pattern.\n const counts: Record<string, number> = {};\n tasks.forEach(t => { counts[t.status] = (counts[t.status] || 0) + 1; });\n return ['', ...TASK_STATUSES].map(s => {\n const count = s === '' ? tasks.length : counts[s] || 0;\n const isActive = filterStatus === s;\n return (\n <button\n key={s}\n onClick={() => setFilterStatus(s)}\n disabled={count === 0 && s !== '' && !isActive}\n className={`px-3 py-1.5 rounded-md text-xs transition-colors flex items-center gap-1.5 shrink-0 whitespace-nowrap disabled:opacity-30 disabled:cursor-not-allowed ${\n isActive\n ? `${STATUS_CHIP_CLASS[s] || 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20'} border`\n : 'text-gray-500 hover:text-gray-300 hover:bg-[#1c1c1f]/40'\n }`}\n >\n {s && (\n <span\n aria-hidden\n className=\"inline-block w-1.5 h-1.5 rounded-full shrink-0\"\n style={{ backgroundColor: STATUS_DOT_HEX[s] || '#6b7280' }}\n />\n )}\n <span>{s || 'All'}</span>\n <span className={`text-[10px] tabular-nums ${isActive ? 'opacity-80' : 'text-gray-600'}`}>{count}</span>\n </button>\n );\n });\n })()}\n </div>\n </div>\n\n {/* From/To Filters — same visual block as the status tabs above.\n R30 (see header above): mb-6 → mb-4 sm:mb-6 mobile-tighten. */}\n <div className=\"flex flex-wrap items-center gap-2 mb-4 sm:mb-6\">\n <div className=\"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40\">\n <span className=\"text-[10px] uppercase tracking-wide text-gray-600\">From</span>\n <input\n type=\"text\"\n value={filterFrom}\n onChange={e => setFilterFrom(e.target.value)}\n placeholder=\"any node\"\n className=\"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none\"\n />\n </div>\n <div className=\"flex items-center gap-1.5 rounded-lg border border-[#26262b] bg-[#161618] px-2.5 py-1.5 focus-within:border-blue-500/40\">\n <span className=\"text-[10px] uppercase tracking-wide text-gray-600\">To</span>\n <input\n type=\"text\"\n value={filterTo}\n onChange={e => setFilterTo(e.target.value)}\n placeholder=\"any node\"\n className=\"w-28 bg-transparent text-base sm:text-sm text-white placeholder-gray-700 focus:outline-none\"\n />\n </div>\n {(filterStatus || filterFrom || filterTo) && (\n <button\n type=\"button\"\n onClick={() => { setFilterStatus(''); setFilterFrom(''); setFilterTo(''); }}\n className=\"rounded-lg border border-gray-700 px-2.5 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:border-gray-600\"\n >\n Clear filters\n </button>\n )}\n </div>\n </>}\n\n {/* Status distribution */}\n {tasks.length > 0 && !filterStatus && (() => {\n const stats: Record<string, number> = {};\n tasks.forEach(t => { stats[t.status] = (stats[t.status] || 0) + 1; });\n const total = tasks.length || 1;\n // Round 67: derive from shared TASK_STATUSES + STATUS_BAR_CLASS in\n // app/lib/status.ts. Adding a new lifecycle status updates badge,\n // tab dots, and bar in one edit.\n const bars = TASK_STATUSES\n .map(key => ({ key, color: STATUS_BAR_CLASS[key] }))\n .filter(b => stats[b.key]);\n if (!bars.length) return null;\n // Round 63: removed the per-status legend row beneath the bar —\n // it duplicated the counts already shown in the tab chip strip\n // since r56. The proportional bar stays because it adds a visual\n // \"shape of workload\" that the chip numbers don't convey.\n return (\n <div className=\"mb-6\">\n <div className=\"flex h-2 rounded-full overflow-hidden bg-gray-800\">\n {bars.map(b => <div key={b.key} className={b.color} style={{ width: `${(stats[b.key]/total)*100}%` }} title={`${b.key}: ${stats[b.key]}`} />)}\n </div>\n </div>\n );\n })()}\n\n {error && (\n <div className=\"bg-red-900/20 border border-red-800/40 text-red-300 px-4 py-2 rounded-lg mb-6 text-sm\">{error}</div>\n )}\n\n {loading ? (\n <div className=\"animate-pulse space-y-3\">\n {[1, 2, 3, 4, 5].map(i => (\n <div key={i} className=\"h-20 bg-gray-800/20 rounded-lg border border-gray-800/40\" />\n ))}\n </div>\n ) : tasks.length === 0 ? (\n <EmptyState\n variant=\"tasks\"\n sub={(filterStatus || filterFrom || filterTo)\n ? 'No tasks match the current filters. Try clearing them.'\n : 'Tasks will appear here when agents send them via CommHub.'}\n />\n ) : (\n <div className=\"space-y-1 sm:space-y-2\">\n {/* Table header */}\n <div className=\"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase\">\n <div className=\"col-span-1\">Status</div>\n <div className=\"col-span-2\">From</div>\n <div className=\"col-span-2\">To</div>\n <div className=\"col-span-4\">Content</div>\n <div className=\"col-span-1\">Priority</div>\n <div className=\"col-span-2\">Time</div>\n </div>\n\n {tasks.map(t => {\n const isOpen = expanded.has(t.task_id);\n return (\n <div\n key={t.task_id}\n className={`anet-task-row group bg-[#161618] border rounded-lg px-3 py-2 sm:px-4 sm:py-3 transition-all duration-200 cursor-pointer ${\n isOpen\n ? 'border-[#3a3a41] shadow-lg shadow-black/20'\n : 'border-[#26262b] hover:border-[#3a3a41] hover:bg-[#15152e]'\n }`}\n onClick={() => toggleExpand(t.task_id)}\n role=\"button\"\n tabIndex={0}\n aria-expanded={isOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggleExpand(t.task_id);\n }\n }}\n >\n {/* Desktop row */}\n <div className=\"hidden sm:grid sm:grid-cols-12 gap-2 items-center\">\n <div className=\"col-span-1\">\n <span className={statusBadge(t.status)}>{t.status}</span>\n </div>\n <div className=\"col-span-2 flex items-center gap-1.5 min-w-0\" title={t.from_name}>\n {t.from_name && <AliasAvatar alias={t.from_name} size={18} />}\n <span className=\"truncate text-sm text-gray-200\">{t.from_name || '--'}</span>\n </div>\n <div className=\"col-span-2 flex items-center gap-1.5 min-w-0\" title={t.to_name}>\n {t.to_name && <AliasAvatar alias={t.to_name} size={18} />}\n <span className=\"truncate text-sm text-gray-200\">{t.to_name || '--'}</span>\n </div>\n <div className=\"col-span-4 text-xs text-gray-400 truncate\" title={t.content}>\n {previewContent(t.content)}\n </div>\n <div className=\"col-span-1\">\n <span className={`text-xs ${priorityBadge(t.priority)}`}>{t.priority || 'normal'}</span>\n </div>\n <div className=\"col-span-2 text-xs text-gray-500 flex items-center justify-between gap-2\" title={t.created_at}>\n <span className=\"truncate\">{timeAgo(t.created_at)}</span>\n <svg\n aria-hidden\n className={`shrink-0 text-gray-600 group-hover:text-gray-400 transition-transform duration-200 ${isOpen ? 'rotate-180' : ''}`}\n width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 9l6 6 6-6\" />\n </svg>\n </div>\n </div>\n\n {/* Mobile layout — R8 of #190 mobile polish: 4-row stack\n → 3-row by inlining timeAgo onto the same row as the\n from→to alias header (it's already 4 small atoms, has\n room), plus space-y-2 → space-y-1 to trim ~4px per\n row × 200 tasks. */}\n <div className=\"sm:hidden space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className={statusBadge(t.status)}>{t.status}</span>\n <div className=\"flex items-center gap-2\">\n <span className={`text-xs ${priorityBadge(t.priority)}`}>{t.priority || 'normal'}</span>\n <svg\n aria-hidden\n className={`text-gray-600 transition-transform duration-200 ${isOpen ? 'rotate-180' : ''}`}\n width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 9l6 6 6-6\" />\n </svg>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 text-xs text-gray-300 min-w-0\">\n {t.from_name && <AliasAvatar alias={t.from_name} size={16} />}\n <span className=\"truncate max-w-[35%]\">{t.from_name || '--'}</span>\n <span className=\"text-gray-600\">→</span>\n {t.to_name && <AliasAvatar alias={t.to_name} size={16} />}\n <span className=\"truncate max-w-[35%]\">{t.to_name || '--'}</span>\n <span className=\"ml-auto shrink-0 text-[10px] text-gray-600\">{timeAgo(t.created_at)}</span>\n </div>\n <div className=\"text-xs text-gray-400 line-clamp-1\" title={t.content}>{previewContent(t.content)}</div>\n </div>\n\n {/* Expanded detail — always mounted; grid-rows 0fr↔1fr trick gives\n content-aware smooth max-height animation without measuring DOM. */}\n <div\n className={`grid transition-all duration-300 ease-out ${\n isOpen ? 'grid-rows-[1fr] opacity-100 mt-3' : 'grid-rows-[0fr] opacity-0'\n }`}\n aria-hidden={!isOpen}\n >\n <div className=\"overflow-hidden\">\n <div className=\"pt-3 border-t border-[#26262b] space-y-3\">\n {t.content && (\n <div>\n <div className=\"text-xs text-gray-600 mb-1\">Content</div>\n <div className=\"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f]\">{t.content}</div>\n </div>\n )}\n {t.result && (\n <div>\n <div className=\"text-xs text-gray-600 mb-1\">Result</div>\n <div className=\"text-xs text-gray-300 whitespace-pre-wrap bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f] max-h-48 overflow-y-auto\">{t.result}</div>\n </div>\n )}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs\">\n {[\n ['Created', t.created_at],\n ['Delivered', t.delivered_at],\n ['Started', t.started_at],\n ['Completed', t.completed_at],\n ].map(([label, val]) => (\n <div key={label as string}>\n <span className=\"text-gray-600\">{label}: </span>\n <span className=\"text-gray-400\">{val ? timeAgo(val as string) : '--'}</span>\n </div>\n ))}\n </div>\n {t.expires_at && (\n <div className=\"text-xs\">\n <span className=\"text-gray-600\">Expires: </span>\n <span className=\"text-orange-400\">{t.expires_at}</span>\n </div>\n )}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"text-xs text-gray-600 truncate\" title={t.task_id}>\n ID: {t.task_id}\n </div>\n <div className=\"flex gap-2 shrink-0\">\n {(t.status === 'failed' || t.status === 'expired') && (\n <button\n onClick={async (e) => {\n e.stopPropagation();\n await fetch('/api/hub/send', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ alias: t.to_name, task: t.content, priority: t.priority }),\n });\n fetchTasks();\n }}\n className=\"text-xs text-orange-400 hover:text-orange-300 px-2 py-0.5 rounded border border-orange-500/20 hover:bg-orange-500/10\"\n >\n Retry\n </button>\n )}\n <button\n onClick={e => { e.stopPropagation(); setDrawerTaskId(t.task_id); }}\n className=\"text-xs text-cyan-400 hover:text-cyan-300\"\n >\n Detail →\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {drawerTaskId && <TaskDrawer taskId={drawerTaskId} onClose={() => setDrawerTaskId(null)} />}\n </div>\n );\n}\n\nexport default function TasksPage() {\n return (\n <Suspense fallback={\n // #209 R30 (playwright mobile-shot caught it): the bare Suspense\n // fallback rendered \"Loading tasks...\" at p-6 with no left-indent,\n // so the fixed top-3 left-3 mobile burger (56 px right-edge) sat\n // right on top of \"Loa\" — the screenshot read as a broken page.\n // Match the loaded layout: p-4 sm:p-6 page padding + ml-10 mobile\n // indent on the text, so the burger clears and the loading state\n // visually maps to the populated page.\n <div className=\"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6\">\n <div className=\"lg:ml-0 ml-10 text-gray-500 text-sm\">Loading tasks…</div>\n </div>\n }>\n <TasksContent />\n </Suspense>\n );\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { timeAgo } from './utils';\nimport Link from 'next/link';\nimport { AliasAvatar } from './AliasAvatar';\n\ninterface TaskDetail {\n task_id: string;\n from_name: string;\n to_name: string;\n status: string;\n priority: string;\n content: string;\n result: string;\n created_at: string;\n delivered_at: string;\n started_at: string;\n completed_at: string;\n expires_at: string;\n}\n\ninterface TaskEvent {\n id: number;\n event_type: string;\n from_status: string;\n to_status: string;\n detail: string;\n created_at: string;\n}\n\nconst STATUS_COLORS: Record<string, string> = {\n created: 'text-gray-400', delivered: 'text-blue-400', running: 'text-green-400',\n replied: 'text-purple-400', failed: 'text-red-400', closed: 'text-gray-500',\n};\n\ninterface TaskDrawerProps {\n taskId: string;\n onClose: () => void;\n}\n\nexport function TaskDrawer({ taskId, onClose }: TaskDrawerProps) {\n const [task, setTask] = useState<TaskDetail | null>(null);\n const [events, setEvents] = useState<TaskEvent[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n (async () => {\n try {\n const [taskRes, eventsRes] = await Promise.all([\n fetch(`/api/hub/tasks?task_id=${encodeURIComponent(taskId)}`),\n fetch(`/api/hub/task-events?task_id=${encodeURIComponent(taskId)}&limit=50`),\n ]);\n const taskData = await taskRes.json();\n const eventsData = await eventsRes.json();\n if (taskData.tasks?.[0]) setTask(taskData.tasks[0]);\n setEvents(eventsData.events || []);\n } catch {} finally { setLoading(false); }\n })();\n }, [taskId]);\n\n /** Timeline steps — same 4 hops every task goes through. `time` is set\n * when the hop has happened; missing time means pending. Round 36 adds\n * `key` for the \"current step\" highlight + the `done` flag for layout. */\n const timeline = task ? [\n { key: 'created', label: 'Created', time: task.created_at, color: 'bg-gray-400' },\n { key: 'delivered', label: 'Delivered', time: task.delivered_at, color: 'bg-blue-400' },\n { key: 'started', label: 'Started', time: task.started_at, color: 'bg-green-400' },\n { key: 'completed', label: 'Completed', time: task.completed_at, color: 'bg-purple-400'},\n ].map(s => ({ ...s, done: !!s.time })) : [];\n\n /** Index of the highest-completed step. The step *after* this index is\n * the \"current\" one (in-progress). When all are done, currentIdx = -1. */\n const currentStepIdx = timeline.findIndex(s => !s.done);\n const isActive = task && task.status !== 'completed' && task.status !== 'failed' && task.status !== 'expired' && task.status !== 'cancelled';\n\n const duration = task?.started_at && task?.completed_at\n ? Math.round((new Date(task.completed_at).getTime() - new Date(task.started_at).getTime()) / 1000)\n : null;\n\n return (\n <>\n <div className=\"fixed inset-0 bg-black/30 z-40 anet-fade-in\" onClick={onClose} />\n <div className=\"fixed top-0 right-0 h-[100dvh] w-full lg:w-[500px] bg-[#0b0b0d] border-l border-[#26262b] z-50 flex flex-col shadow-2xl shadow-black/60 overflow-y-auto animate-slide-in\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-5 py-4 border-b border-[#26262b] bg-[#111113] sticky top-0\">\n <div>\n <div className=\"text-sm font-semibold text-white\">Task Detail</div>\n <div className=\"text-[10px] text-gray-500 mt-0.5\">{taskId.slice(0, 16)}...</div>\n </div>\n {/* R16 of #190: same chat-panel close pattern — was ~32 px\n tap target; lift to a uniform 44 x 44 hit zone. */}\n <button onClick={onClose} aria-label=\"Close task drawer\" className=\"inline-flex min-h-[44px] min-w-[44px] items-center justify-center text-gray-500 hover:text-white rounded-lg hover:bg-[#1c1c1f]\">\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n {loading ? (\n <div className=\"flex justify-center py-16\">\n <div className=\"w-6 h-6 border-2 border-cyan-500/30 border-t-cyan-500 rounded-full animate-spin\" />\n </div>\n ) : !task ? (\n <div className=\"text-center py-16 text-gray-500\">Task not found</div>\n ) : (\n <div className=\"px-5 py-5 space-y-5\">\n {/* Status + Priority */}\n <div className=\"flex items-center gap-3\">\n <span className={`text-lg font-bold ${STATUS_COLORS[task.status] || 'text-gray-400'}`}>{task.status}</span>\n {task.priority !== 'normal' && (\n <span className={`text-xs px-2 py-0.5 rounded border ${task.priority === 'high' ? 'text-red-300 border-red-500/20' : 'text-gray-400 border-gray-600/20'}`}>{task.priority}</span>\n )}\n {duration !== null && (\n <span className=\"text-xs text-gray-500\">⏱ {duration < 60 ? `${duration}s` : `${Math.floor(duration/60)}m ${duration%60}s`}</span>\n )}\n </div>\n\n {/* From → To — round 41: use AliasAvatar so from/to colours\n match the rest of the app instead of the legacy blue/cyan\n hardcode. */}\n <div className=\"flex items-center gap-2 text-sm flex-wrap\">\n {task.from_name && <AliasAvatar alias={task.from_name} size={18} />}\n <span className=\"text-gray-200 font-medium\">{task.from_name || '--'}</span>\n <span className=\"text-gray-600\">→</span>\n {task.to_name && <AliasAvatar alias={task.to_name} size={18} />}\n <span className=\"text-gray-200 font-medium\">{task.to_name || '--'}</span>\n </div>\n\n {/* Timeline — round 36 polish: relative timestamps, current-step\n pulse if task is still in flight, full ISO in title=. */}\n <div className=\"bg-[#161618] border border-[#26262b] rounded-xl p-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"text-xs text-gray-500 uppercase tracking-wide\">Timeline</div>\n {duration !== null && (\n <div className=\"text-[10px] text-gray-600\">\n {duration < 60 ? `${duration}s` : `${Math.floor(duration/60)}m ${duration%60}s`} runtime\n </div>\n )}\n </div>\n <div className=\"space-y-3\">\n {timeline.map((step, i) => {\n const isCurrent = isActive && i === currentStepIdx;\n const isNextDone = !!timeline[i+1]?.done;\n return (\n <div key={step.key} className=\"flex items-start gap-3\">\n <div className=\"flex flex-col items-center pt-0.5\">\n <span\n className={`relative w-3 h-3 rounded-full shrink-0 ${\n step.done ? step.color : 'bg-gray-700'\n }`}\n >\n {isCurrent && (\n <span\n aria-hidden\n className=\"absolute -inset-1 rounded-full border border-current opacity-60 anet-current-step-pulse\"\n style={{ borderColor: 'currentColor' }}\n />\n )}\n </span>\n {i < timeline.length - 1 && (\n <div className={`w-0.5 h-5 mt-1 ${\n step.done && isNextDone ? 'bg-gray-500' : step.done ? 'bg-gradient-to-b from-gray-500 to-gray-800' : 'bg-gray-800'\n }`} />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className={`text-xs font-medium flex items-center gap-2 ${\n step.done ? 'text-gray-200' : isCurrent ? 'text-cyan-300' : 'text-gray-600'\n }`}>\n <span>{step.label}</span>\n {isCurrent && <span className=\"text-[9px] uppercase tracking-wide text-cyan-400\">in progress</span>}\n </div>\n <div className=\"text-[10px] text-gray-500\" title={step.time || undefined}>\n {step.time ? timeAgo(step.time) : isCurrent ? '—' : 'Pending'}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Content */}\n <div className=\"bg-[#161618] border border-[#26262b] rounded-xl p-4\">\n <div className=\"text-xs text-gray-500 uppercase mb-2\">Input</div>\n <div className=\"text-sm text-gray-300 whitespace-pre-wrap\">{task.content || '--'}</div>\n </div>\n\n {/* Result */}\n {task.result && (\n <div className=\"bg-[#161618] border border-[#26262b] rounded-xl p-4\">\n <div className=\"text-xs text-gray-500 uppercase mb-2\">Output</div>\n <div className=\"text-sm text-gray-300 whitespace-pre-wrap max-h-64 overflow-y-auto\">{task.result}</div>\n </div>\n )}\n\n {/* Events */}\n {events.length > 0 && (\n <div className=\"bg-[#161618] border border-[#26262b] rounded-xl p-4\">\n <div className=\"text-xs text-gray-500 uppercase mb-2\">Events ({events.length})</div>\n <div className=\"space-y-1.5 max-h-40 overflow-y-auto\">\n {events.map(e => (\n <div key={e.id} className=\"flex items-center gap-2 text-[11px]\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${\n e.to_status === 'running' ? 'bg-green-400' : e.to_status === 'replied' ? 'bg-purple-400' : e.to_status === 'failed' ? 'bg-red-400' : 'bg-blue-400'\n }`} />\n <span className=\"text-gray-400\">{e.event_type}</span>\n {e.from_status && <span className=\"text-gray-600\">{e.from_status}→{e.to_status}</span>}\n <span className=\"text-gray-600 ml-auto\">{timeAgo(e.created_at)}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Metadata */}\n <div className=\"text-[10px] text-gray-600 space-y-1\">\n <div>Task ID: {task.task_id}</div>\n {task.expires_at && <div>Expires: {task.expires_at}</div>}\n </div>\n </div>\n )}\n </div>\n </>\n );\n}\n"],"names":["STATUS_COLORS","created","delivered","running","replied","failed","closed","TaskDrawer","taskId","onClose","task","setTask","events","setEvents","loading","setLoading","taskRes","eventsRes","Promise","all","fetch","encodeURIComponent","taskData","json","eventsData","tasks","timeline","key","label","time","created_at","color","delivered_at","started_at","completed_at","map","s","done","currentStepIdx","findIndex","isActive","status","duration","Math","round","Date","getTime","className","onClick","slice","fill","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","priority","floor","from_name","alias","size","to_name","step","i","isCurrent","isNextDone","style","borderColor","length","title","undefined","content","result","e","to_status","event_type","from_status","id","task_id","expires_at"],"mappings":"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"}
|
|
@@ -7,15 +7,15 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/aIXvzZuknEQ-phwB09c_j/_buildManifest.js",
|
|
11
|
+
"static/aIXvzZuknEQ-phwB09c_j/_ssgManifest.js",
|
|
12
|
+
"static/aIXvzZuknEQ-phwB09c_j/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
|
-
"static/chunks/
|
|
16
|
-
"static/chunks/
|
|
17
|
-
"static/chunks/
|
|
18
|
-
"static/chunks/
|
|
19
|
-
"static/chunks/turbopack-
|
|
15
|
+
"static/chunks/0..6bvayc~2v_.js",
|
|
16
|
+
"static/chunks/0g76.rws7jb6p.js",
|
|
17
|
+
"static/chunks/0cj3regqtbzgi.js",
|
|
18
|
+
"static/chunks/0w66-7icvft37.js",
|
|
19
|
+
"static/chunks/turbopack-1071etkj.k-n~.js"
|
|
20
20
|
]
|
|
21
21
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var R=require("./chunks/[turbopack]_runtime.js")("server/middleware.js")
|
|
2
2
|
R.c("server/chunks/[externals]__036g1.i._.js")
|
|
3
|
-
R.c("server/chunks/[root-of-the-server]
|
|
4
|
-
R.m(
|
|
5
|
-
module.exports=R.m(
|
|
3
|
+
R.c("server/chunks/[root-of-the-server]__11swhm2._.js")
|
|
4
|
+
R.m(95077)
|
|
5
|
+
module.exports=R.m(95077).exports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/@swc/helpers/package.json","../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/client/components/hooks-server-context.js","../../node_modules/next/dist/client/components/static-generation-bailout.js","../../node_modules/next/dist/client/lib/console.js","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../node_modules/next/dist/compiled/source-map/package.json","../../node_modules/next/dist/compiled/source-map/source-map.js","../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../node_modules/next/dist/compiled/ws/index.js","../../node_modules/next/dist/compiled/ws/package.json","../../node_modules/next/dist/lib/client-and-server-references.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/framework/boundary-constants.js","../../node_modules/next/dist/lib/interop-default.js","../../node_modules/next/dist/lib/is-error.js","../../node_modules/next/dist/lib/picocolors.js","../../node_modules/next/dist/lib/scheduler.js","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../node_modules/next/dist/server/app-render/async-local-storage.js","../../node_modules/next/dist/server/app-render/cache-signal.js","../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../node_modules/next/dist/server/app-render/staged-rendering.js","../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../node_modules/next/dist/server/lib/lru-cache.js","../../node_modules/next/dist/server/lib/parse-stack.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../node_modules/next/dist/server/lib/source-maps.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/load-manifest.external.js","../../node_modules/next/dist/server/node-environment-baseline.js","../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../node_modules/next/dist/server/node-environment-extensions/date.js","../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../node_modules/next/dist/server/node-environment-extensions/random.js","../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../node_modules/next/dist/server/node-environment.js","../../node_modules/next/dist/server/node-polyfill-crypto.js","../../node_modules/next/dist/server/patch-error-inspect.js","../../node_modules/next/dist/server/require-hook.js","../../node_modules/next/dist/server/response-cache/types.js","../../node_modules/next/dist/server/runtime-reacts.external.js","../../node_modules/next/dist/shared/lib/deep-freeze.js","../../node_modules/next/dist/shared/lib/invariant-error.js","../../node_modules/next/dist/shared/lib/is-plain-object.js","../../node_modules/next/dist/shared/lib/is-thenable.js","../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../node_modules/next/dist/shared/lib/server-reference-info.js","../../node_modules/next/package.json","../../node_modules/react/cjs/react.development.js","../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../node_modules/react/package.json","./chunks/[externals]__036g1.i._.js","./chunks/[root-of-the-server]
|
|
1
|
+
{"version":1,"files":["../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/@swc/helpers/package.json","../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/client/components/hooks-server-context.js","../../node_modules/next/dist/client/components/static-generation-bailout.js","../../node_modules/next/dist/client/lib/console.js","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../node_modules/next/dist/compiled/source-map/package.json","../../node_modules/next/dist/compiled/source-map/source-map.js","../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../node_modules/next/dist/compiled/ws/index.js","../../node_modules/next/dist/compiled/ws/package.json","../../node_modules/next/dist/lib/client-and-server-references.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/framework/boundary-constants.js","../../node_modules/next/dist/lib/interop-default.js","../../node_modules/next/dist/lib/is-error.js","../../node_modules/next/dist/lib/picocolors.js","../../node_modules/next/dist/lib/scheduler.js","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../node_modules/next/dist/server/app-render/async-local-storage.js","../../node_modules/next/dist/server/app-render/cache-signal.js","../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../node_modules/next/dist/server/app-render/staged-rendering.js","../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../node_modules/next/dist/server/lib/lru-cache.js","../../node_modules/next/dist/server/lib/parse-stack.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../node_modules/next/dist/server/lib/source-maps.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/load-manifest.external.js","../../node_modules/next/dist/server/node-environment-baseline.js","../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../node_modules/next/dist/server/node-environment-extensions/date.js","../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../node_modules/next/dist/server/node-environment-extensions/random.js","../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../node_modules/next/dist/server/node-environment.js","../../node_modules/next/dist/server/node-polyfill-crypto.js","../../node_modules/next/dist/server/patch-error-inspect.js","../../node_modules/next/dist/server/require-hook.js","../../node_modules/next/dist/server/response-cache/types.js","../../node_modules/next/dist/server/runtime-reacts.external.js","../../node_modules/next/dist/shared/lib/deep-freeze.js","../../node_modules/next/dist/shared/lib/invariant-error.js","../../node_modules/next/dist/shared/lib/is-plain-object.js","../../node_modules/next/dist/shared/lib/is-thenable.js","../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../node_modules/next/dist/shared/lib/server-reference-info.js","../../node_modules/next/package.json","../../node_modules/react/cjs/react.development.js","../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../node_modules/react/package.json","./chunks/[externals]__036g1.i._.js","./chunks/[root-of-the-server]__11swhm2._.js","./chunks/[turbopack]_runtime.js"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/
|
|
1
|
+
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/dash-main-prep/app/_not-found/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/admin/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/login/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/logs/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/messages/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/node/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/nodes/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/server-logs/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/servers/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/settings/networks/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/settings/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/settings/tokens/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/tasks/[id]/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ],\n \"[project]/dash-main-prep/app/tasks/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\n \"static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
|